CN114127717A - 硬件中的使用模数学的矩阵相乘 - Google Patents

硬件中的使用模数学的矩阵相乘 Download PDF

Info

Publication number
CN114127717A
CN114127717A CN202080051872.4A CN202080051872A CN114127717A CN 114127717 A CN114127717 A CN 114127717A CN 202080051872 A CN202080051872 A CN 202080051872A CN 114127717 A CN114127717 A CN 114127717A
Authority
CN
China
Prior art keywords
modulo
matrix
multiplication module
bit
hardware
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
CN202080051872.4A
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.)
Meta Platforms Inc
Original Assignee
Meta Platforms Inc
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 Meta Platforms Inc filed Critical Meta Platforms Inc
Publication of CN114127717A publication Critical patent/CN114127717A/zh
Pending legal-status Critical Current

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/38Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
    • G06F7/48Methods 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/544Methods 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 for evaluating functions by calculation
    • G06F7/5443Sum of products
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F17/00Digital computing or data processing equipment or methods, specially adapted for specific functions
    • G06F17/10Complex mathematical operations
    • G06F17/16Matrix or vector computation, e.g. matrix-matrix or matrix-vector multiplication, matrix factorization
    • 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/38Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
    • G06F7/40Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using contact-making devices, e.g. electromagnetic relay
    • G06F7/44Multiplying; Dividing
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2207/00Indexing scheme relating to methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F2207/38Indexing scheme relating to groups G06F7/38 - G06F7/575
    • G06F2207/3804Details
    • G06F2207/3808Details concerning the type of numbers or the way they are handled
    • G06F2207/3832Less usual number representations

Landscapes

  • Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • Computational Mathematics (AREA)
  • Mathematical Analysis (AREA)
  • Mathematical Optimization (AREA)
  • Pure & Applied Mathematics (AREA)
  • Mathematical Physics (AREA)
  • Computing Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Data Mining & Analysis (AREA)
  • Electromagnetism (AREA)
  • Algebra (AREA)
  • Databases & Information Systems (AREA)
  • Software Systems (AREA)
  • Complex Calculations (AREA)

Abstract

存储第一组取模结果矩阵,该第一组取模结果矩阵对应于由多个模数中的每一个对第一矩阵中的元素进行的取模。存储第二组取模结果矩阵,该第二组取模结果矩阵对应于由多个模数中的每一个对第二矩阵中的元素进行的取模。确定是否可以使用第一硬件乘法模块而不是第二硬件乘法模块来执行第一矩阵与第二矩阵的相乘的元素运算。响应于确定可以使用第一硬件乘法模块执行元素运算,使用第一硬件乘法模块执行元素运算,包括通过将来自第一组取模结果矩阵的一个或更多个对应元素与来自第二组取模结果矩阵的一个或更多个对应元素相乘。

Description

硬件中的使用模数学的矩阵相乘
技术领域
本发明涉及一种使用模数学(modular math)在硬件中执行矩阵相乘的系统和方法。
发明背景
矩阵相乘是许多科学和工程计算中使用的许多数值算法的核心运算。例如,矩阵相乘是人工智能计算(诸如推理)中的一个重要组成部分。矩阵相乘是一种计算密集型运算,其经常需要大量的计算机内存、处理器和数据传输资源。两个矩阵的一次相乘可能需要许多算术和逻辑运算。例如,直接应用矩阵相乘的数学定义产生的算法需要n3数量级(大O表示法中的O(n3))的时间来让两个n×n矩阵相乘。存在对硬件和技术的需求以减少矩阵相乘的计算负担。
发明概述
根据本发明的第一方面,提供了一种系统,包括:存储器,该存储器被配置为:存储第一组取模(modulo)结果矩阵,该第一组取模结果矩阵对应于由多个模数(moduli)中的每一个对第一矩阵中的元素进行的取模;并且存储第二组取模结果矩阵,该第二组取模结果矩阵对应于由多个模数中的每一个对第二矩阵中的元素进行的取模;以及集成电路,该集成电路被配置为:确定是否可以使用第一硬件乘法模块而不是第二硬件乘法模块来执行第一矩阵与第二矩阵的相乘的元素运算;以及响应于确定可以使用第一硬件乘法模块执行元素运算,使用第一硬件乘法模块执行元素运算,包括通过将来自第一组取模结果矩阵的一个或更多个对应元素与来自第二组取模结果矩阵的一个或更多个对应元素相乘。
在一些实施例中,多个模数包括数字十三、十五和十六。
在一些实施例中,被配置为存储第一组取模结果矩阵和第二组取模结果矩阵的存储器是随机存取存储器。
在一些实施例中,集成电路被配置为包括通过以下方式来确定第一矩阵与第二矩阵的相乘的元素运算是否可以使用第一硬件乘法模块来执行:通过被配置为确定与元素运算的结果相关联的第一位宽,并将第一位宽与第二位宽进行比较,该第二位宽与等于多个模数彼此相乘的乘积相关联。
在一些实施例中,集成电路被配置为包括通过以下方式来确定第一位宽:通过被配置为确定第一矩阵的元素的位宽和第二矩阵的元素的位宽以及与第一矩阵的元素的位宽和第二矩阵的元素的位宽相关联的上限。
在一些实施例中,集成电路被配置为包括通过以下方式来确定第一矩阵与第二矩阵的相乘的元素运算是否可以使用第一硬件乘法模块来执行:通过被配置为确定是否满足中国余数定理(Chinese remainder theorem)相关条件。
在一些实施例中,第一矩阵与第二矩阵的相乘的元素运算是点积运算。
在一些实施例中,第一硬件乘法模块包括一组四位点积乘法器。
在一些实施例中,第二硬件乘法模块被配置为比第一硬件乘法模块处理更大位宽的数字。
在一些实施例中,集成电路被配置为还包括通过以下方式来使用第一硬件乘法模块执行元素运算:通过在将来自第一组取模结果矩阵的一个或更多个对应元素与来自第二组取模结果矩阵的一个或更多个对应元素相乘之后应用重构(reconstruction)。
在一些实施例中,应用重构包括执行取模运算以确定一组余数,并将该组余数中的每个余数与指定数字组中的对应指定数字相乘。
在一些实施例中,指定数字组中的每个指定数字与多个模数中的对应模数以以下方式相关联:由对应模数对该指定数字取模等于1,而由多个模数中的任何其他模数对该指定数字取模等于0。
在一些实施例中,第一硬件乘法模块包括数字电子电路,该数字电子电路特别适于执行与指定数字组相关联的乘法。
在一些实施例中,集成电路还被配置为通过使用多路复用器来转发第一硬件乘法模块或第二硬件乘法模块的输出。
在一些实施例中,第一矩阵和第二矩阵包括无符号整数元素。
在一些实施例中,第一矩阵和第二矩阵包括八位元素。
在一些实施例中,至少部分基于使用加法器树执行的加法,来确定可以使用第一硬件乘法模块来执行元素运算。
在一些实施例中,第一硬件乘法模块包括数字逻辑门实现,该数字逻辑门实现特别适于执行与多个模数相关联的取模运算。
根据本发明的第二方面,提供了一种方法,包括:存储第一组取模结果矩阵,该第一组取模结果矩阵对应于由多个模数中的每一个对第一矩阵中的元素进行的取模;存储第二组取模结果矩阵,该第二组取模结果矩阵对应于由多个模数中的每一个对第二矩阵中的元素进行的取模;确定是否可以使用第一硬件乘法模块而不是第二硬件乘法模块来执行第一矩阵与第二矩阵的相乘的元素运算;以及响应于确定可以使用第一硬件乘法模块执行元素运算,使用第一硬件乘法模块执行元素运算,包括通过将来自第一组取模结果矩阵的一个或更多个对应元素与来自第二组取模结果矩阵的一个或更多个对应元素相乘。
根据本发明的第三方面,提供了一种计算机程序产品,该计算机程序产品包含在非暂时性计算机可读存储介质中,并且包括用于以下操作的计算机指令:存储第一组取模结果矩阵,该第一组取模结果矩阵对应于由多个模数中的每一个对第一矩阵中的元素进行的取模;存储第二组取模结果矩阵,该第二组取模结果矩阵对应于由多个模数中的每一个对第二矩阵中的元素进行的取模;确定是否可以使用第一硬件乘法模块而不是第二硬件乘法模块来执行第一矩阵与第二矩阵的相乘的元素运算;以及响应于确定可以使用第一硬件乘法模块执行元素运算,使用第一硬件乘法模块执行元素运算,包括通过将来自第一组取模结果矩阵的一个或更多个对应元素与来自第二组取模结果矩阵的一个或更多个对应元素相乘。
应当理解,本文中描述的适于结合到第一方面、第二方面或第三方面的任何特征都旨在可推广到本公开的任何和所有方面和实施例。
附图简述
在以下详细描述和附图中公开了本发明的各种实施例。
图1是示出用于使用模数学在硬件中执行矩阵相乘的系统的实施例的框图。
图2是示出用于使用模数学在硬件中执行矩阵相乘的过程的实施例的流程图。
图3是示出用于确定用来执行与矩阵相乘相关联的元素运算的乘法模块的过程的实施例的流程图。
图4是示出用于使用利用模数学的乘法模块来执行与矩阵相乘相关联的元素运算的过程的实施例的流程图。
详细描述
本发明可以以多种方式实现,包括作为过程;装置;系统;物质的组成;包含在计算机可读存储介质上的计算机程序产品;和/或处理器,例如被配置为执行存储在耦合到处理器的存储器上和/或由该存储器提供的指令的处理器。在本说明书中,这些实现或者本发明可以采取的任何其他形式可以被称为技术。通常,在本发明的范围内,可以改变所公开的过程的步骤顺序。除非另有说明,否则被描述为被配置成执行任务的诸如处理器或存储器的部件可以被实现为在给定时间被临时配置为执行任务的通用部件或者被制造为执行任务的特定部件。如本文所使用的,术语“处理器”指的是被配置为处理数据(诸如计算机程序指令)的一个或更多个设备、电路和/或处理核心。
下面提供了本发明的一个或更多个实施例的详细描述以及说明本发明原理的附图。结合这些实施例描述了本发明,但是本发明不限于任何实施例。本发明的范围仅由权利要求限定,并且本发明包括许多替代、修改和等同物。为了提供对本发明的全面理解,在以下描述中阐述了许多具体细节。这些细节是出于示例的目的而提供的,并且本发明可以根据权利要求来实施,而不需要这些具体细节中的一些或全部。为了清楚起见,没有详细描述与本发明相关的技术领域中已知的技术材料,以免不必要地模糊本发明。
公开了一种用于使用模数学在硬件中执行矩阵相乘的系统。所公开的系统包括存储器,该存储器被配置为:存储第一组取模结果矩阵,该第一组取模结果矩阵对应于由多个模数中的每一个对第一矩阵中的元素进行的取模,以及存储第二组取模结果矩阵,该第二组取模结果矩阵对应于由多个模数中的每一个对第二矩阵中的元素进行的取模。所公开的系统还包括集成电路,该集成电路被配置为确定是否可以使用第一硬件乘法模块而不是第二硬件乘法模块来执行第一矩阵与第二矩阵的相乘的元素运算,并且响应于确定可以使用第一硬件乘法模块来执行元素运算,通过将来自第一组取模结果矩阵的一个或更多个对应元素与来自第二组取模结果矩阵的一个或更多个对应元素相乘来使用第一硬件乘法模块执行元素运算。当执行矩阵相乘时,所公开的系统的实际和技术益处是减少了计算负担和降低了功耗。
两个矩阵A与B的相乘包括计算A的每一行与B的每一列的点积。对于A的每一行和B的每一列,将对应的元素对相乘,并且乘积被相加在一起。如果A和B是n×n的8位整数矩阵,则需要n3次8位乘法。因为A和B中只有n2个元素,所以如果可以使用A和B的预计算值来降低乘法的复杂度,这将是非常有用的。就计算复杂度而言,这可以将矩阵相乘算法的一些O(n3)复杂度转换为O(n2)复杂度,从而提供效率增益。本文描述了实现这种效率增益的硬件和技术。
如本文中进一步详细描述的,在一些实施例中,由一些整数m1、m2、……mk对输入矩阵(例如,矩阵A和B)的每个元素进行取模的余数被预先计算,然后该余数被用于计算由每个整数对点积的取模。因为模数m1、m2、……mk具有比输入矩阵的元素更小的位宽,计算由每个整数对点积的取模比单个全位宽点积的计算成本更低。在各种实施例中,全位宽点积的值由较小位宽点积重构。如本文中进一步详细描述的,准确性由中国余数定理保证。
如本文中进一步详细描述的,在一些实施例中,通过将每个点积取模结果si与指定的选择数(本文中称为“幻数(magic number)”)相乘,将这些结果相加,并应用附加的取模运算,来重构全位宽点积的值。如本文中进一步详细描述的,幻数αi可以被选择为使得αi与1mod mi同余(congruent),并且与0mod所有其他mj同余。选择模数使得M(所有模数彼此相乘的乘积)对于期望的应用足够大。当输入矩阵中的值足够小时就是这种情况。对于许多应用,例如神经网络,用于计算点积的大多数输入在数值上都很小,这意味着M将会足够大。如本文中进一步详细描述的,前导1检测器(leading-one detector)可以用于确定M是否足够大。
下面的数值示例说明了使用较小位宽点积计算全位宽点积结果。假设需要矩阵A的值为(23,1)的行与矩阵B的值为(7,161)的列之间的点积。最终结果Cij预计为23*7+1*161=322。通常,需要8位表示,因为元素之一161的位宽为8。然而,在这个示例中,基于输入模数13、15和16,重构是可能的。输入模数13为:A≡(10,1)mod 13和B≡(7,5)mod 13。换句话说,A输入行与(10,1)mod 13同余,并且B输入列与(7,5)mod 13同余。这是因为A输入行除以13后的余数是(10,1)(23除以13得到余数10,并且1除以13得到余数1),并且B输入列除以13后的余数是(7,5)。输入模数15为:A≡(8,1)mod 15和B≡(7,11)mod 15。输入模数16为:A≡(7,1)mod 16和B≡(7,1)mod 16。在这个示例中,模数{m1,m2,m3}={13,15,16}。
在这个数值示例中,取模点积为:A·B≡(10*7+1*5)=75≡10mod 13,A·B≡(8*7+1*11)=67≡7mod 15,A·B≡(7*7+1*1)=50≡2 mod 16。因此,在这个示例中,余数{r1,r2,r3}={10,7,2}。在该示例中,最终结果Cij可以被计算为Cij=(α1*r12*r23*r3)mod(m1*m2*m3),其中{α123}是幻数{2640,1456,2145}。下面将进一步详细讨论幻数选择标准。因此,Cij=(2640*10+1456*7+2145*2)mod(13*15*16)=322,这等于基于使用8位数字计算点积23*7+1*161的预期结果。模数学方法的优点是仅使用小位输入(例如,4位值),这在计算负担和能量消耗方面成本较低。
如果满足特定条件,中国余数定理保证了模数学方法的准确性。中国余数定理指出,如果未知正整数N与mod m1、m2、......mk的余数r1、r2、......rk同余,其中m1、m2、......mk是互质整数,其乘积
Figure BDA0003474043050000071
N可以在假设N<M的情况下唯一地构造。中国余数定理的条件在上述数值示例(其中N=322,{r1,r2,r3}={10,7,2},{m1,m2,m3}={13,15,16},以及M=13*15*16=3120)中得到满足,因为322≡10 mod 13,322≡7 mod 15,322≡2mod 16,{13,15,16}是互质的,并且322<3120。如本文中进一步详细描述的,模数学方法是否可以用于使用小位输入(例如,4位值)来计算矩阵元素Cij取决于Cij是否小于M。在各种实施例中,Cij是否小于M可以通过使用前导1检测器利用点积输入来估计Cij的位宽来确定。
在一些实施例中,根据以下条件选择幻数αl:如果λ=l,则αlmod mλ=1,如果λ≠l,则αlmod mλ=0。那么Cij可以根据下式重构:
Figure BDA0003474043050000072
注意,(Cij mod ml)是余数r1、r2、......rk。这种重构方法是说明性的,而不是限制性的。从余数重构Cij的其他方式也是可能的。上面的数值示例说明了这种重构的使用及其准确性。从上面的数值示例中可以验证,幻数{α123}={2640,1456,2145}满足上面列出的选择标准。例如,因为2640 mod 13=1,所以α1mod m1=1;因为2640 mod 15=0,所以α1mod m2=0;并且因为2640 mod 16=0,所以α1mod m3=0。上面的数值示例说明了与2×2矩阵相关联的点积。这个数值示例是说明性的,而不是限制性的。对本领域技术人员来说显而易见的是,上述技术通常适用于任何大小的矩阵相乘。
虽然8位整数乘法被用作示例,但是本文中描述的硬件和技术也适用于以其他格式进行的数字矩阵相乘,诸如其他位宽的整数、有符号整数、浮点数、正数等。为了以另一种期望的格式(例如,浮点)执行数字的相乘,输入矩阵的所有元素可以被转换成无符号整数,本文中描述的技术可以被用于无符号整数的相乘,并且然后结果可以被转换成期望的格式(例如,浮点)。
图1是示出使用模数学在硬件中执行矩阵相乘的系统的实施例的框图。矩阵相乘系统100获取输入102并产生输出118。在一些实施例中,输入102是矩阵A的一行和矩阵B的一列,其中A和B要相乘。在各种实施例中,输出118是等于矩阵A的行和矩阵B的列的点积的单值。换句话说,在各种实施例中,矩阵相乘系统100执行点积运算。为了将两个矩阵A和B相乘,需要计算A的行和B的列之间的大量点积。例如,如果A和B是n×n矩阵,则得到的乘积矩阵C也将是n×n,这意味着需要计算n2次点积来确定C。因此,图1所示的系统将被使用n2次,以将两个n×n矩阵相乘。
图1所示的示例包括前导1检测器104、4位乘法模块106、9位乘法模块108和多路复用器116。前导1检测器104接收输入102,并且基于输入102,确定是否可以用小位乘法模块(在这种情况下是4位乘法模块106)而不是大位乘法模块(在这种情况下,9位乘法模块108)来计算点积。图1所示的示例是针对8位整数(有符号或无符号)的矩阵的相乘而配置的。因此,为了得到要求全8位表示的点积,包含一个9位乘法模块(有符号的8位数字需要9位)。图1所示的示例将9位乘法模块与作为小位乘法模块的4位乘法模块配对,该4位乘法模块在前导1检测器104确定可以使用小位乘法模块的情况下,则可以用作替代以实现计算和能量节省。图1的示例是说明性的,而不是限制性的。其他位宽的输入的乘法也是可能的,并且图1所示的系统可以被修改以使用被配置为处理其他位宽的不同乘法模块。
在所示的示例中,前导1检测器104确定矩阵A的一行与矩阵B的一列的点积是否会生成矩阵C的元素Cij,该元素Cij可以使用4位乘法(例如,使用4位乘法模块106)来计算。换句话说,确定Cij是否可以基于4位输入表示(范围从0到15的十个基本值)来准确生成。在一些实施例中,基于取模运算(本文也称为mod运算)的4位余数来生成Cij。例如,可以计算A和B的取模结果矩阵,该取模结果矩阵对应于由模数13、15和16对每个矩阵中的元素进行的取模,在这种情况下,对应于确定Cij是否小于M=13*15*16=3120,来确定是否可以使用4位乘法模块106(根据中国余数定理)。如果不能使用4位乘法模块106,那么将使用9位乘法模块108。因为M=3120的位宽为12,所以如果Cij的位宽不超过11,则Cij将小于M。
在一些实施例中,前导1检测器104通过基于输入102估计Cij的位宽来确定Cij是否是指定的位宽(例如,11)或更小的位宽。例如,前导1检测器104可以首先找到所有输入值的前导1的索引。然后,对于点积中的每个元素AikBkj,前导1检测器104可以使相应的前导1索引相加。如果任何元素AikBkj具有的索引之和大于或等于M的位宽,则可以确定应该使用9位乘法模块108。否则,可以给每个元素AikBkj一个上限,并且这些上限可以(例如,使用加法器树)相加。如果该和的位宽小于M的位宽,则可以确定Cij小于M。
在前面描述的数字示例(点积23*7+1*161=322)中,23*7=161,161的位宽为8。上限可以是最大的8位数字(255)。类似地,1*161的上限也可以是255。这些上限的总和将是510,一个9位的数字,因此指示Cij具有不超过11的位宽(指示Cij小于M)。以上是说明性的,而不是限制性的。确定上限的其他方法是可能的,并且一般来说,其他前导1预测技术也是可能的。上面的示例涉及无符号8位整数。有符号的8位整数可能需要上面的变化(例如,点积元素的不同上限)。
在各种实施例中,使用数字电子电路(例如,印刷在集成电路上的数字逻辑门的组件)来实现前导1检测器104。例如,在一些实施例中,前导1检测器104包括加法器树,以对与点积元素相关联的上限求和。此外,在各种实施例中,前导1检测器104包括控制逻辑(例如,开关或多路复用器),其将输入102转发给4位乘法模块106或9位乘法模块108。在各种实施例中,来自前导1检测器104的控制线(图1中未示出)连接到多路复用器116,以指示多路复用器116在4位乘法模块106被使用时将4位乘法模块106的输出转发到输出118,并且在9位乘法模块108被使用时将9位乘法模块108的输出转发到输出118。换句话说,在各种实施例中,前导1检测器104用数据选通(data gates)多路复用器116。
在所示的示例中,4位乘法模块106包括三个4位点积乘法器的集合110、取模预计算单元112和重构单元114。在所示的示例中,三个4位点积乘法器的集合110被配置为计算三个点积的集合。在一些实施例中,三个4位点积乘法器的集合110计算由取模预计算单元112提供的预先计算的取模值(例如,由13、15和16进行取模)集合的点积。在一些实施例中,取模预计算单元112为行/列对(例如,输入102)生成模值。在一些实施例中,取模预计算单元112预先计算要相乘的整个矩阵A和B的取模值。取模预计算单元112可以接收一个行/列对、多个行/列对、要相乘的整个矩阵A和B等作为输入(取模预计算单元112的输入未在图1中示出)。换句话说,在各种实施例中,预先计算的取模值集合被提供给三个4位点积乘法器的集合110,三个4位点积乘法器的集合110执行实际相乘以及在每次相乘之后的附加mod运算。
上述涉及A的行=(23,1)和B的列=(7,161)的点积的数值示例可以用来说明三个4位点积乘法器的集合110以及取模预计算单元112的运算。取模预计算单元112可以生成由模数13、15和16对(23,1)和(7,161)进行取模的值,这些值将是A≡(10,1)mod 13、B≡(7,5)mod 13、A≡(8,1)mod 15、B≡(7,11)mod 15、A≡(7,1)mod 16和B≡(7,1)mod 16。三个4位点积乘法器的集合110然后将计算由模数13、15和16取模后的点积,它们将分别是10*7+1*5=75、8*7+1*11=67和7*7+1*1=50。三个4位点积乘法器的集合110然后将执行取模运算:75 mod 13=10,67 mod 15=7,以及50 mod 16=2,以产生余数{r1,r2,r3}={10,7,2}。最终的mod运算和/或点积元素的求和可以改为由重构单元114执行。换句话说,为了实现4位乘法模块106,有各种方式在三个4位点积乘法器的集合110和重构单元114之间分配任务。
在所示的示例中,重构单元114从三个4位点积乘法器的集合110的模数学输出重构点积结果Cij(例如,输出118)。在各种实施例中,通过将余数与幻数相乘、对结果求和并执行最终mod运算来执行重构。如上所述,Cij可以根据:
Figure BDA0003474043050000101
来重建,其中αl是特别选择的幻数,(Cij mod ml)是余数r1、r2、......rk,并且M是所有模数m1、m2、......mk彼此相乘的乘积。如上所述,幻数αl可以根据以下条件来选择:如果λ=l,则αlmod mλ=1;如果λ≠l,则αlmod mλ=0。在上面的数字示例中,满足幻数标准的幻数集合是{α123}={2640,1456,2145}、{r1,r2,r3}={10,7,2},以及M=13*15*16=3120。因此,重构的值将是Cij=(2640*10+1456*7+2145*2)mod 3120=322。重构计算负担不高,因为幻数是预先选择的,并且只有三次相乘。
在各种实施例中,使用数字电子电路(例如,印刷在集成电路上的数字逻辑门的组件)来实现4位乘法模块106。在各种实施例中,4位乘法模块106包括各种加法电路(例如,使点积元素相加、使幻数/余数乘积相加等)。这些可以使用基本的数字逻辑门来实现。在所示示例中,需要4位乘法器。4位乘法器可以多种方式实现。例如,对于本领域技术人员来说显而易见的是,每个4位乘法器可以被实现为多个2位乘法器和多个加法器,其中每个2位乘法器和加法器使用基本数字逻辑门来实现。在各种实施例中,取模预计算单元112也使用基本数字逻辑门来实现。如下所述,通过硬件优化,可以简化mod运算的实现,并且可以降低mod运算的计算负担。重构单元114中的乘法可以被实现为专用数字电子电路,该专用数字电子电路被配置为将预选的硬编码幻数与有限的数字的集合(例如,仅4位数)相乘。因此,4位乘法模块106可以针对计算和能量效率进行优化。
取模运算(例如,在4位乘法模块106中使用的那些运算)比相乘在计算上更便宜,并且可以通过适合于特定模数的专用逻辑而变得更有效。例如,由16进行的取模可以通过丢弃数字的高于第4位(23位)的所有位来执行。通过注意到8位数字x可以写成x=16*x1+x2,其中x2是较低的4位部分,并且x1是较高的4位部分,由13和15对8位数字进行的取模可以简化。例如,161(二进制中的10100001)可以写成16*10+1,其中1(二进制中的0001)是x2部分,并且10(二进制中的1010)是x1部分。因此,x mod 15可以写成(16*x1)mod 15+(x2)mod 15,其简化为(1*x1)mod 15+(x2)mod 15(因为16 mod 15=1),其简化为(x1+x2)mod 15(利用mod运算简化到4位相加)。因此,如果x1+x2小于15,结果将是x1+x2。如果x1+x2等于15,则结果为0。如果x1+x2大于4位数字,则可以再次使用将该数字分成较低的4位部分和较高的4位部分的以上技术。类似地,x mod 13可以简化为(3*x1+x2)mod 13,并且可以使用相应的优化来得出结果。类似的简化和优化可以用于其他模数。
在所示的示例中,当前导1检测器104确定不能使用4位乘法模块106时,使用9位乘法模块108。在各种实施例中,使用数字电子电路(例如,印刷在集成电路上的数字逻辑门的组件)来实现9位乘法模块108。本领域已知9位乘法器的各种实现(例如,串行乘法器、管线乘法器、组合乘法器等)。9位乘法模块108比4位乘法模块106中的4位点积乘法器更复杂,并且比4位乘法模块106需要更多的功率。因此,使用模数学来实现低位乘法的优点是降低了功耗。
在所示的示例中,多路复用器116充当开关,允许4位乘法模块106或9位乘法模块108(但不是两者)产生输出118。在各种实施例中,多路复用器116由前导1检测器104控制(图1中未示出连接),该前导1检测器104确定哪个乘法模块用于每个输入102。多路复用器116可以使用基本数字逻辑门来实现,这对于本领域技术人员来说是显而易见的。
尽管图1中所示的示例涉及8位数字的相乘,但是通过对矩阵相乘系统100的直接修改,其他位宽的数字的相乘也是可能的。例如,在一些实施例中,对于10位数字的相乘,使用模数学和10位乘法的6位乘法模块可以被使用(并且类似于上述的技术可以用于实现取模预计算、相乘和重构)。
在图1所示的示例中,示出了部件之间的部分通信路径。可能存在其他通信路径,并且图1的示例已被简化以清楚地说明该示例。例如,如上所述,取模预计算单元112的输入以及前导1检测器104与多路复用器116之间的连接在图1中没有明确示出。尽管为了简化图表,只示出了部件的单一实例,但是图1中示出的任何部件的附加实例都可能存在。图1中所示的部件和连接的数量仅仅是说明性的。例如,可以使用输入、前导1检测器、乘法模块、多路复用器和输出的附加实例来允许更多的并行处理。图1中未示出的部件也可能存在。
图2是示出用于使用模数学在硬件中执行矩阵相乘的过程的实施例的流程图。在一些实施例中,图2的过程由图1的矩阵相乘系统100执行。在各种实施例中,图2的过程包括通过计算与A与B相乘相关联的点积来确定两个矩阵A和B的乘积。
在202,存储第一组取模结果矩阵,该第一组取模结果矩阵例如对应于由多个模数中的每一个对第一矩阵的中元素进行的取模。例如,第一组取模结果矩阵可以对应于由三个模数的集合对矩阵A中的元素进行取模,以用于使用4位点积乘法器来执行模数学(例如,模数13、15和16)。在一些实施例中,第一组取模结果矩阵由图1的取模预计算单元112生成。第一组取模结果矩阵可以存储在存储器中,存储器包括以下任何形式:处理器寄存器、易失性存储器、随机存取存储器(RAM)和/或非易失性存储器,例如闪存RAM。
在204,存储第二组取模结果矩阵,该第二组取模结果矩阵例如对应于由多个模数中的每一个对第二矩阵中的元素进行的取模。例如,第二组取模结果矩阵可以对应于由三个模数的集合对矩阵B中的元素进行取模,以用于使用4位点积乘法器执行模数学(例如,模数13、15和16)。在一些实施例中,第二组取模结果矩阵由图1的取模预计算单元112生成。第二组取模结果矩阵可以存储在存储器中,存储器包括以下任何形式:处理器寄存器、易失性存储器、随机存取存储器(RAM)和/或非易失性存储器,例如闪存RAM。
在206,确定是否可以使用第一硬件乘法模块而不是第二硬件乘法模块来执行第一矩阵与第二矩阵的相乘的元素运算。例如,元素运算可以是通过将第一矩阵的一行与第二矩阵的一列相乘而形成的点积。在一些实施例中,图1的前导1检测器104确定元素运算是否可以由第一硬件乘法模块(例如,诸如图1的4位乘法模块106的小位乘法模块)而不是第二硬件乘法模块(例如,诸如图1的9位乘法模块108的大位乘法模块)来执行。确定用于执行与矩阵相乘相关联的元素运算的乘法模块的过程示例见图3。
如果在206确定可以使用第一硬件乘法模块执行元素运算,则在208,使用第一硬件乘法模块执行元素运算,包括通过将来自第一组取模结果矩阵的一个或更多个对应元素与来自第二组取模结果矩阵的一个或更多个对应元素相乘。在一些实施例中,第一硬件乘法模块(例如,诸如图1的4位乘法模块106的小位乘法模块)将来自第一组取模结果矩阵的行与来自第二组取模结果矩阵的列相乘,以形成取模点积。在一些实施例中,该乘法由图1的三个4位点积乘法器的集合110来执行。在一些实施例中,图1的重构单元114使用三个4位点积乘法器的集合110的结果来重构与第一矩阵与第二矩阵的相乘的元素运算相关联的值。使用第一硬件乘法模块执行元素运算的过程示例见图4。
如果在206确定不能使用第一硬件乘法模块执行元素运算,则在210,使用第二硬件乘法模块执行元素运算。在一些实施例中,第二硬件乘法模块是图1的9位乘法模块108。
图3是示出用于确定用来执行与矩阵相乘相关联的元素运算的乘法模块的过程的实施例的流程图。在一些实施例中,图3的过程由图1的前导1检测器104执行。在一些实施例中,图3的过程的至少一部分在图2的206中执行。
在302,为所有输入值确定前导1索引。在一些实施例中,输入值对应于要相乘以产生点积结果的一行数字和一列数字。例如,数字可以是8位无符号整数。例如,8位整数1和161的行/列对可以相乘以产生点积元素1*161=161。二进制数字分别是00000001和10100001。前导1索引分别是1和8(或者,如果位的位置的计数从零处开始,则分别是0和7)。
在304,对于作为第一值和第二值的乘积的每个点积元素,确定前导1索引的和。在上面的示例中,点积元素1*161=161具有前导1索引1和8或者0和7(取决于位的位置的计数是从1还是0开始)。因此,该点积元素的前导1索引的总和是9或7(取决于位的位置的计数是从1开始还是从0开始)。
在306,确定(任何点积元素的)前导1索引的任意和是否大于或等于指定的位宽。在上面的示例中,1(位宽为1)和161(位宽为8)的位宽之和是9。在一些实施例中,将该求和的位宽与值的位宽进行比较,该值为模数的乘积。例如,模数的该乘积可以是M=关于图1的4位乘法模块106描述的模数13、15和16的乘积。在该示例中,M=3120,这是一个12位的数字。在一些实施例中,不包括步骤306。步骤306可以用作优化,如果一个点积元素非常大,则允许快速确定是否使用大位乘法模块。可以通过执行图3的过程而不用步骤306来确定要使用的乘法模块。
如果在306确定存在点积元素的前导1索引之和大于或等于指定的位宽(例如,对应于M=3120的位宽12),则在314,使用大位乘法模块。这是因为,在上面的示例中,大于或等于12的前导1索引的和可以表示大于M的点积元素值(并且因此是全点积值),这将违反(上述)中国余数定理的条件,该条件用于保证使用基于模数学的小位乘法模块的准确性。在上面的示例中,这可能意味着使用9位乘法模块而不是4位乘法模块。大位乘法模块不依赖于模数学。在一些实施例中,大位乘法模块是图1的9位乘法模块108。
如果在306确定没有点积元素的前导1索引之和大于或等于指定的位宽,则在308确定每个点积元素的上限。确定每个点积元素上限的一个示例方法是将形成每个点积元素的第一值的上限与形成每个点积元素的第二值的上限相加。例如,点积元素1*161=161的上限可以是1(最大的1位数字)+255(最大的8位数字)=256。该示例是说明性的,而不是限制性的。形成上限的其他方式也是可能的。
在310,确定点积元素的上限之和。在一些实施例中,点积元素的上限之和是通过对每个点积元素的各个上限求和来确定的。在上面的示例中,点积元素1*161=161的上限是256。假设,另一个点积元素是23*7=161。使用上面的示例过程来确定点积元素的上限结果为:31(最大的5位数字,对应于23的上限)+7(最大的3位数字,对应于7的上限)=38。本示例中点积元素的上限之和将是256+38=294。
在312,确定上限之和的位宽是否小于指定的位宽(例如,在上面的示例中,对于M=3120,位宽为12)。大于或等于指定位宽(例如,12,对应于上面示例中的M=3120)的上限之和可以表示大于指定值(例如,M)的点积值,这将违反(上述)中国余数定理的条件,该条件用于保证使用基于模数学的小位乘法模块的准确性。如果在312确定上限之和的位宽不小于指定位宽,则在314,使用大位乘法模块。在一些实施例中,大位乘法模块是图1的9位乘法模块108。
如果在312确定上限之和的位宽小于指定位宽,则在316,使用小位乘法模块。在一些实施例中,小位乘法模块是图1的4位乘法模块106。当上限之和小于指定的位宽时,输入值(例如,图1的输入102)的点积小于指定的值(例如,M),这满足(上述)中国余数定理的条件,该条件用于保证使用基于模数学的小位乘法模块的准确性。
图4是示出使用利用模数学的乘法模块来执行与矩阵相乘相关联的元素运算的过程的实施例的流程图。在一些实施例中,图4的过程由图1的4位乘法模块106执行。在一些实施例中,图4的过程的至少一部分在图2的208中执行。
在402,接收第一组取模结果矩阵和第二组取模结果矩阵,第一组取模结果矩阵对应于由多个模数中的每一个对第一矩阵中的元素进行的取模,第二组取模结果矩阵对应于由多个模数中的每一个对第二矩阵中的元素进行的取模。在一些实施例中,第一组取模结果矩阵和第二组取模结果矩阵从存储它们的存储器中检索。在一些实施例中,取模结果矩阵对应于由三个模数的集合(例如,模数13、15和16)对元素进行的取模,以用于使用4位点积乘法器来执行模数学,这意味着取模结果矩阵中的值可以表示为4位数字。在一些实施例中,取模结果矩阵由图1的取模预计算单元112生成。
在404,使用第一组取模结果矩阵和第二组取模结果矩阵来执行运算的集合(包括点积运算),以确定余数的集合。例如,运算的集合可以包括多个4位乘法、4位乘法乘积的相加以及多个mod运算。在各种实施例中,来自第一组取模结果矩阵的取模结果矩阵的一行与来自第二组取模结果矩阵的取模结果矩阵的一列相乘,以形成点积,对该点积应用mod运算来确定余数。在各种实施例中,每组取模结果矩阵中取模结果矩阵的数量是模数的数量(例如,当模数是13、15和16时为3)。这对应于3个余数的集合。在一些实施例中,运算的集合由图1中的三个4位点积乘法器110的集合来执行。
在406,通过对余数的集合执行重构运算的集合(包括与幻数相乘)来重构矩阵相乘元素值。在一些实施例中,矩阵相乘元素值是点积结果(例如,图1的输出118)。在一些实施例中,矩阵相乘元素值是通过将余数的集合中的每个余数与特定幻数(关于如何选择幻数的进一步细节见上文)相乘,对这些乘积求和并应用mod运算来确定的。在一些实施例中,该重构由图1的重构单元114执行。
尽管为了清楚理解的目的已经详细描述了前述实施例,但是本发明不限于所提供的细节。有许多实现本发明的替代方式。所公开的实施例是说明性的,而不是限制性的。

Claims (15)

1.一种系统,包括:
存储器,所述存储器被配置为:
存储第一组取模结果矩阵,所述第一组取模结果矩阵对应于由多个模数中的每一个模数对第一矩阵中的元素进行的取模;和
存储第二组取模结果矩阵,所述第二组取模结果矩阵对应于由所述多个模数中的每一个模数对第二矩阵中的元素进行的取模;和集成电路,所述集成电路被配置为:
确定是否能够使用第一硬件乘法模块而不是第二硬件乘法模块来执行所述第一矩阵与所述第二矩阵的相乘的元素运算;和
响应于确定能够使用所述第一硬件乘法模块执行所述元素运算,使用所述第一硬件乘法模块执行所述元素运算,包括通过将来自所述第一组取模结果矩阵的一个或更多个对应元素与来自所述第二组取模结果矩阵的一个或更多个对应元素相乘。
2.根据权利要求1所述的系统,其中所述多个模数包括数字十三、十五和十六。
3.根据权利要求1或权利要求2所述的系统,其中,被配置为存储所述第一组取模结果矩阵和所述第二组取模结果矩阵的所述存储器是随机存取存储器。
4.根据权利要求1、权利要求2或权利要求3所述的系统,其中,所述集成电路被配置为包括通过以下方式来确定所述第一矩阵与所述第二矩阵的相乘的元素运算是否能够使用所述第一硬件乘法模块来执行:通过被配置为确定与所述元素运算的结果相关联的第一位宽,并将所述第一位宽与第二位宽进行比较,所述第二位宽与等于所述多个模数彼此相乘的乘积相关联;并且优选地,其中所述集成电路被配置为包括通过以下方式来确定所述第一位宽:通过被配置为确定所述第一矩阵的元素的位宽和所述第二矩阵的元素的位宽以及与所述第一矩阵的元素的位宽和所述第二矩阵的元素的位宽相关联的上限。
5.根据权利要求1至4中任一项所述的系统,其中,所述集成电路被配置为包括通过以下方式被配置为确定所述第一矩阵与所述第二矩阵的相乘的元素运算是否能够使用所述第一硬件乘法模块来执行:通过被配置为确定是否满足中国余数定理相关条件。
6.根据权利要求1至5中任一项所述的系统,其中,所述第一矩阵与所述第二矩阵的相乘的所述元素运算是点积运算;和/或优选地,其中所述第一硬件乘法模块包括一组四位点积乘法器;和/或优选地,其中所述第二硬件乘法模块被配置为比所述第一硬件乘法模块处理更大位宽的数字。
7.根据权利要求1至6中任一项所述的系统,其中,所述集成电路被配置为还包括通过以下方式来使用所述第一硬件乘法模块执行所述元素运算:通过在将来自所述第一组取模结果矩阵的一个或更多个对应元素与来自所述第二组取模结果矩阵的一个或更多个对应元素相乘之后应用重构。
8.根据权利要求7所述的系统,其中,应用所述重构包括:执行取模运算以确定一组余数,并将所述一组余数中的每个余数与指定数字组中的对应指定数字相乘;并且优选地,其中所述指定数字组中的每个指定数字与所述多个模数中的对应模数以以下方式相关联:由所述对应模数对该指定数字进行的取模等于1,而由所述多个模数中的任何其他模数对该指定数字进行的取模等于0;和/或优选地,其中所述第一硬件乘法模块包括数字电子电路,所述数字电子电路特别适于执行与所述指定数字组相关联的乘法。
9.根据权利要求1至8中任一项所述的系统,其中,所述集成电路还被配置为通过使用多路复用器来转发所述第一硬件乘法模块或所述第二硬件乘法模块的输出。
10.根据权利要求1至9中任一项所述的系统,其中,所述第一矩阵和所述第二矩阵包括无符号整数元素。
11.根据权利要求1至10中任一项所述的系统,其中,所述第一矩阵和所述第二矩阵包括八位元素。
12.根据权利要求1至11中任一项所述的系统,其中,至少部分地基于使用加法器树执行的加法,确定能够使用所述第一硬件乘法模块来执行所述元素运算。
13.根据权利要求1至12中任一项所述的系统,其中,所述第一硬件乘法模块包括数字逻辑门实现,所述数字逻辑门实现特别适于执行与所述多个模数相关联的取模运算。
14.一种方法,包括:
存储第一组取模结果矩阵,所述第一组取模结果矩阵对应于由多个模数中的每一个模数对第一矩阵中的元素进行的取模;
存储第二组取模结果矩阵,所述第二组取模结果矩阵对应于由所述多个模数中的每一个模数对第二矩阵中的元素进行的取模;
确定是否能够使用第一硬件乘法模块而不是第二硬件乘法模块来执行所述第一矩阵与所述第二矩阵的相乘的元素运算;和
响应于确定能够使用所述第一硬件乘法模块执行所述元素运算,使用所述第一硬件乘法模块执行所述元素运算,包括通过将来自所述第一组取模结果矩阵的一个或更多个对应元素与来自所述第二组取模结果矩阵的一个或更多个对应元素相乘。
15.一种计算机程序产品,所述计算机程序产品包含在非暂时性计算机可读存储介质中,并且包括用于以下操作的计算机指令:
存储第一组取模结果矩阵,所述第一组取模结果矩阵对应于由多个模数中的每一个模数对第一矩阵中的元素进行的取模;
存储第二组取模结果矩阵,所述第二组取模结果矩阵对应于由所述多个模数中的每一个模数对第二矩阵中的元素进行的取模;
确定是否能够使用第一硬件乘法模块而不是第二硬件乘法模块来执行所述第一矩阵与所述第二矩阵的相乘的元素运算;和
响应于确定能够使用所述第一硬件乘法模块执行所述元素运算,使用所述第一硬件乘法模块执行所述元素运算,包括通过将来自所述第一组取模结果矩阵的一个或更多个对应元素与来自所述第二组取模结果矩阵的一个或更多个对应元素相乘。
CN202080051872.4A 2019-07-24 2020-07-17 硬件中的使用模数学的矩阵相乘 Pending CN114127717A (zh)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US16/521,294 US11157594B2 (en) 2019-07-24 2019-07-24 Matrix multiplication in hardware using modular math
US16/521,294 2019-07-24
PCT/US2020/042458 WO2021016058A1 (en) 2019-07-24 2020-07-17 Matrix multiplication in hardware using modular math

Publications (1)

Publication Number Publication Date
CN114127717A true CN114127717A (zh) 2022-03-01

Family

ID=71944418

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202080051872.4A Pending CN114127717A (zh) 2019-07-24 2020-07-17 硬件中的使用模数学的矩阵相乘

Country Status (4)

Country Link
US (1) US11157594B2 (zh)
EP (1) EP4004710A1 (zh)
CN (1) CN114127717A (zh)
WO (1) WO2021016058A1 (zh)

Family Cites Families (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8312072B2 (en) * 2008-09-16 2012-11-13 Lsi Corporation Universal Galois field multiplier
US8683291B2 (en) * 2011-06-16 2014-03-25 Lsi Corporation High throughput frame check sequence module architecture
US9081608B2 (en) 2012-05-19 2015-07-14 Digital System Research Inc. Residue number arithmetic logic unit
IT201700008949A1 (it) 2017-01-27 2018-07-27 St Microelectronics Srl Procedimento di funzionamento di reti neurali, rete, apparecchiatura e prodotto informatico corrispondenti
US10474430B2 (en) 2017-12-29 2019-11-12 Facebook, Inc. Mixed-precision processing elements, systems, and methods for computational models
US20190044699A1 (en) * 2018-06-28 2019-02-07 Intel Corporation Reconfigurable galois field sbox unit for camellia, aes, and sm4 hardware accelerator

Also Published As

Publication number Publication date
EP4004710A1 (en) 2022-06-01
US11157594B2 (en) 2021-10-26
WO2021016058A1 (en) 2021-01-28
US20210026916A1 (en) 2021-01-28

Similar Documents

Publication Publication Date Title
JP7476175B2 (ja) 乗算累積回路
US7716265B2 (en) Data transformation apparatus and method
US10776078B1 (en) Multimodal multiplier systems and methods
KR100591761B1 (ko) 몽고메리 모듈러 곱셈기 및 캐리 저장 가산을 이용한몽고메리 모듈러 곱셈 방법
JP2004326112A (ja) マルチプルモジュラス選択器、累算器、モンゴメリー掛け算器、マルチプルモジュラス発生方法、部分掛け発生方法、累算方法、掛け算方法、モジュラス選択器、およびブースレコーダ
US5261001A (en) Microcircuit for the implementation of RSA algorithm and ordinary and modular arithmetic, in particular exponentiation, with large operands
US20160350078A1 (en) Efficient modulo calculation
Chen et al. A matrix-multiply unit for posits in reconfigurable logic leveraging (open) CAPI
CN112465130A (zh) 数论变换硬件
US20190278566A1 (en) System and method for long addition and long multiplication in associative memory
TWI808259B (zh) 具有壓縮進位之數位電路
CN114341796A (zh) 带符号多字乘法器
JP2006060703A5 (zh)
US6807555B2 (en) Modular arithmetic apparatus and method having high-speed base conversion function
CN109634556B (zh) 一种乘累加器及累加输出方法
CN114127717A (zh) 硬件中的使用模数学的矩阵相乘
KR101136972B1 (ko) 타원곡선 암호 연산 방법
US7607165B2 (en) Method and apparatus for multiplication and/or modular reduction processing
JP2023039419A (ja) 乗算累積器を用いたコンピューティング装置及び方法
US20220075598A1 (en) Systems and Methods for Numerical Precision in Digital Multiplier Circuitry
JP3660075B2 (ja) 除算装置
KR100480997B1 (ko) GF(p)와 GF(2^m)의 유한체 곱셈 연산 장치
JP7023149B2 (ja) 半導体装置
JP6863907B2 (ja) 演算回路
KR100946256B1 (ko) 다정도 캐리 세이브 가산기를 이용한 듀얼필드상의확장성있는 몽고매리 곱셈기

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