CN114579079A - 用于常数乘法的集成电路、操作其的方法和包括其的装置 - Google Patents
用于常数乘法的集成电路、操作其的方法和包括其的装置 Download PDFInfo
- Publication number
- CN114579079A CN114579079A CN202110924369.1A CN202110924369A CN114579079A CN 114579079 A CN114579079 A CN 114579079A CN 202110924369 A CN202110924369 A CN 202110924369A CN 114579079 A CN114579079 A CN 114579079A
- Authority
- CN
- China
- Prior art keywords
- seed
- seeds
- table memory
- input
- lookup table
- 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
Links
- 238000000034 method Methods 0.000 title claims abstract description 39
- 230000015654 memory Effects 0.000 claims abstract description 52
- 230000004044 response Effects 0.000 claims description 13
- 238000010586 diagram Methods 0.000 description 37
- 238000010801 machine learning Methods 0.000 description 21
- 238000013528 artificial neural network Methods 0.000 description 11
- 238000013527 convolutional neural network Methods 0.000 description 3
- 238000013139 quantization Methods 0.000 description 3
- 238000004364 calculation method Methods 0.000 description 2
- 238000005065 mining Methods 0.000 description 2
- 239000003990 capacitor Substances 0.000 description 1
- 230000000295 complement effect Effects 0.000 description 1
- 238000003066 decision tree Methods 0.000 description 1
- 230000006870 function Effects 0.000 description 1
- 230000002068 genetic effect Effects 0.000 description 1
- 230000007787 long-term memory Effects 0.000 description 1
- 230000001537 neural effect Effects 0.000 description 1
- 230000000306 recurrent effect Effects 0.000 description 1
- 238000000611 regression analysis Methods 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
- 230000003068 static effect Effects 0.000 description 1
- 238000012706 support-vector machine Methods 0.000 description 1
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/487—Multiplying; Dividing
- G06F7/4876—Multiplying
-
- 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/544—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 for evaluating functions by calculation
- G06F7/552—Powers or roots, e.g. Pythagorean sums
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F7/00—Methods or arrangements for processing data by operating upon the order or content of the data handled
- G06F7/38—Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
- G06F7/48—Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices
- G06F7/52—Multiplying; Dividing
- G06F7/523—Multiplying only
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F1/00—Details not covered by groups G06F3/00 - G06F13/00 and G06F21/00
- G06F1/02—Digital function generators
- G06F1/03—Digital function generators working, at least partly, by table look-up
-
- 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/50—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/544—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 for evaluating functions by calculation
- G06F7/5443—Sum of products
Landscapes
- Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- Pure & Applied Mathematics (AREA)
- Mathematical Analysis (AREA)
- Computational Mathematics (AREA)
- Mathematical Optimization (AREA)
- General Engineering & Computer Science (AREA)
- Computing Systems (AREA)
- Nonlinear Science (AREA)
- Image Processing (AREA)
- Complex Calculations (AREA)
- Memory System (AREA)
Abstract
提供了一种用于常数乘法的集成电路、操作其的方法和包括其的装置。用于生成输入与常数的积的集成电路包括:查找表存储器,被配置为存储与所述常数的倍数对应的种子;处理电路,被配置为生成与从输入提取的多个部分分别对应的多个地址,被配置为基于所述多个地址从查找表存储器接收多个种子,并且被配置为基于所述多个种子生成多个部分积。处理电路被配置为对所述多个部分积进行求和。存储在查找表存储器中的所述多个种子的数量小于所述多个部分乘积的可能值的数量。
Description
本申请基于并要求于2020年12月2日在韩国知识产权局提交的第10-2020-0166966号韩国专利申请的优先权,该韩国专利申请的公开通过引用全部包含于此。
技术领域
发明构思涉及乘法,并且更具体地,涉及用于常数乘法的集成电路、操作其的方法和包括其的装置。
背景技术
在用于处理数字信号的装置中,用于计算被乘数与乘数的积的乘法可以频繁地发生。例如,许多乘积累加(MAC)运算可以发生在被设计为执行机器学习模型的装置中。为了更准确的结果,以低成本和高速度处理乘法的具有增大的大小(例如,位数)的输入(例如,被乘数和/或乘数)可能是重要的。
发明内容
发明构思涉及乘法,并且更具体地,涉及同时具有高性能和效率的用于常数乘法的集成电路以及包括该集成电路的装置。
根据发明构思的一些示例实施例,提供了一种用于生成输入与常数的积的集成电路,所述集成电路包括:查找表存储器,被配置为存储与所述常数的倍数对应的种子;处理电路,被配置为生成与从输入提取的多个部分分别对应的多个地址,被配置为基于所述多个地址从查找表存储器接收多个种子,并且被配置为基于所述多个种子生成多个部分积。处理电路被配置为对所述多个部分积进行求和。存储在查找表存储器中的所述多个种子的数量小于所述多个部分积的可能值的数量。
根据发明构思的一些示例实施例,提供了一种装置,所述装置包括:多个单元,被配置为并行地生成输入与权重的积,权重包括在特征图中。所述多个单元中的每个包括:查找表存储器,被配置为存储与权重的倍数对应的种子;处理电路,被配置为生成与从输入提取的部分对应的地址,并且基于与地址对应的种子生成部分积;以及处理电路被配置为对多个部分积进行求和。存储在查找表存储器中的种子的数量小于部分积的可能值的数量。
根据发明构思的一些示例实施例,提供了一种生成输入与常数的积的方法,所述方法包括:从输入提取多个部分;生成与所述多个部分分别对应的多个地址;从存储与所述常数的倍数对应的种子的查找表存储器获得多个种子,所述获得的步骤基于所述多个地址;基于所述多个种子生成多个部分积;以及对所述多个部分积进行求和。存储在查找表存储器中的种子的数量小于所述多个部分积的可能值的数量。
附图说明
根据以下结合附图的具体实施方式,将更清楚地理解发明构思的一些示例实施例,在附图中:
图1是示出根据一些示例实施例的集成电路的框图;
图2是示出根据一些示例实施例的集成电路的示例的框图;
图3是示出根据一些示例实施例的集成电路的框图,并且图4是示出根据一些示例实施例的包括由图3的集成电路生成的部分积的表的图;
图5是示出根据一些示例实施例的集成电路的框图,并且图6是示出根据一些示例实施例的包括由图5的集成电路生成的部分积的表的图;
图7是示出根据一些示例实施例的集成电路的框图,并且图8是示出根据一些示例实施例的图7的集成电路的操作的示例的图;
图9是示出根据一些示例实施例的集成电路的框图;
图10是示出根据一些示例实施例的用于常数乘法的方法的流程图;
图11是示出根据一些示例实施例的用于常数乘法的方法的流程图;
图12是示出根据一些示例实施例的用于常数乘法的方法的流程图;
图13是示出根据一些示例实施例的用于常数乘法的方法的流程图;
图14是示出根据一些示例实施例的用于常数乘法的方法的流程图;
图15是示出根据一些示例实施例的将种子存储在查找表中的操作的示例的图;
图16A和图16B是示出根据实施例的将种子存储在查找表中的操作的示例的框图;并且
图17是示出根据一些示例实施例的系统的框图。
具体实施方式
图1是示出根据一些示例实施例的集成电路100的框图。更详细地,图1的框图示出了执行常数乘法以通过将输入IN乘以常数来生成输出OUT的集成电路100的一部分。输入IN和输出OUT可以是多位信号或对应于多位信号,并且可以是有符号的或无符号的。在此,假设输入IN、输出OUT和常数是无符号的值,但是示例实施例不限于此。如图1中所示,集成电路100可以包括逻辑电路120、至少一个加法器140和查找表160。在一些示例实施例中,集成电路100可以通过半导体工艺制成/制造,并且逻辑电路120、至少一个加法器140和查找表160可以集成到单个裸片/单个芯片中,或者可以分别集成到两个或更多个裸片/多个芯片中。逻辑电路120和至少一个加法器140可以统称为处理电路。
为了更准确的结果,输入IN的大小(例如,位数)可以增大。例如,在用于从图像识别特征的机器学习模型中,输入图像的大小可以增大,和/或用于应用于移动系统的量化级的数量可以为了高准确度而增加。为了处理增大的大小的输入IN,乘法器中可存在指数增加的成本/指数增加的复杂度扩展(complexity scaling)。例如,当输入IN的位数从8增大2倍到16时,四个8位乘法器可被需要,和/或一个乘法器可被需要执行8位乘法四次。如稍后将参照附图描述的,集成电路100可以具有用于常数乘法的更高效的结构,从而提供高速度和/或低成本乘法和/或改善的可扩展性。可选择地或附加地,由于高性能和高效率的乘法,如神经网络的推断和/或基于工作量证明的区块链中的计算,基于多次乘法的运算的性能和效率两者可以被改善。可选择地或附加地,由于机器学习模型(例如,神经网络)提供改善的性能和效率,因此基于机器学习的应用可以被广泛用在移动系统中。可选择地或附加地,基于区块链的应用可以被更广泛地使用。
参照图1,逻辑电路120可以接收输入IN并且可以访问查找表160。例如,如图1中所示,逻辑电路120可以将地址ADR提供给查找表160并且从查找表160接收种子SD。逻辑电路120可以基于从查找表160接收的种子SD来生成部分积(partial product)PP。在一些示例实施例中,如稍后将参照图2等描述的,逻辑电路120可以从输入IN提取多个部分,并将多个地址提供给查找表160,从而从查找表接收多个种子,并基于多个种子生成多个部分积。在此,从输入IN提取的部分可以被称为输入部分。稍后将参照图2等描述逻辑电路120的示例。
至少一个加法器140可以从逻辑电路120接收部分积PP,并且可以基于部分积PP生成输出OUT。例如,如稍后将参照图2等描述的,至少一个加法器140可以从逻辑电路120接收多个部分积,并且通过对多个部分积进行求和(相加)来生成输出OUT。在此,对部分积进行求和的至少一个加法器140可以被称为至少一个第一加法器。
查找表存储器/查找表160可以被逻辑电路120访问,并且可以存储与乘以输入IN的常数C的倍数对应的种子。常数C可以是整数,例如可以是大于或等于零的整数;然而,示例实施例不限于此。例如,如图1中所示,当n是整数时,查找表160可以存储“n×C”作为种子。逻辑电路120可以基于从输入IN提取的部分的值来生成地址ADR,并且可以基于与地址ADR对应的种子来生成/更容易地生成部分积。因此,输入IN与常数C的积(例如,输出OUT)可以被更高效地计算。在一些示例实施例中,当集成电路100被用在从输入图像识别特征的机器学习模型中并且输入图像的大小从例如513×513增大到4023×3024时,神经网络的特征图的大小从150MB增大到6.2GB,而权重的大小可以从大约20MB增大到30MB。因此,即使输入IN的大小增大,存储权重的倍数/常数的倍数的查找表160的大小的增大也可受到限制。可选择地或附加地,如稍后将参照附图描述的,查找表160可以仅存储部分积的所有可能值(例如,常数的所有可能的倍数)中的一些。例如,存储在查找表160中的种子的数量可以小于部分积的可能值的数量,并且因此,查找表160可以具有减小的大小。例如,存储在查找表160中的种子的数量可以是部分积的可能值的数量的一半,或者可以小于或大于部分积的可能值的数量的一半。
查找表160可以具有存储种子的任何结构。例如,查找表160可以是或可以包括易失性存储器(诸如,静态随机存取存储器(SRAM)、动态随机存取存储器(DRAM)等中的至少一个),和/或可以是或可以包括非易失性存储器(诸如,闪存、电阻式随机存取存储器(RRAM)等)、一次性可编程(OTP)存储器、反熔丝阵列和/或熔丝阵列以及诸如寄存器、触发器等中的至少一个的存储装置。
图2是示出根据一些示例实施例的集成电路200的示例的框图。更详细地,图2的框图示出了通过将16位输入IN[16:1](例如,B01至B16)乘以常数来生成输出OUT的集成电路200。类似于图1的集成电路100,图2的集成电路200可以包括逻辑电路220、至少一个加法器240和查找表260。
逻辑电路220可以包括地址生成器222和算术逻辑224。地址生成器222可以接收16位输入IN[16:1]并且可以生成地址ADR和控制信号CTR。地址生成器222可以从16位输入IN[16:1]提取多个部分。例如,如图2中所示,地址生成器222可以从16位输入IN[16:1]提取第一部分P1至第四部分P4,并且第一部分P1至第四部分P4中的每个可以具有四(4)位的长度。在一些示例实施例中,如稍后将参照图9描述的,地址生成器222可以从16位输入IN[16:1]提取与另一部分共享至少一个位的部分。尽管图2示出了输入IN[16:1]被分成各自长度为四(4)位的四(4)个相等部分,但是示例实施例不限于此。例如,输入IN[16:1]可以被分成不相等的部分,和/或可以被分成少于四(4)个部分或多于四(4)个部分。
地址生成器222可以基于从16位输入IN[16:1]提取的第一部分P1至第四部分P4来生成多个地址ADR和控制信号CTR。在一些示例实施例中,地址生成器222可以根据一个部分生成至少一个地址。在一些示例实施例中,当从16位输入IN[16:1]提取的部分为零时,地址生成器222可以不生成地址。查找表260可以将与多个地址ADR分别对应的多个种子SD提供给逻辑电路220。在一些示例实施例中,多个地址ADR可以并行地被同时提供给查找表260,并且多个种子SD也可以并行且同时地被提供给逻辑电路220。另外,在一些示例实施例中,多个地址ADR可以被顺序地提供给查找表260,并且多个种子SD也可以被顺序地提供给逻辑电路220。
算术逻辑224可以从地址生成器222接收控制信号CTR,并且可以从查找表260接收多个种子SD。算术逻辑224可以被称为或可以对应于算术逻辑单元(ALU),并且可以基于控制信号CTR执行算术运算和/或位移位运算,从而根据多个种子SD生成第一部分积PP1至第四部分积PP4。在此,算术运算和位移位运算可以统称为运算。此外,位移位运算可以简称为移位,并且可以指左移位。在一些示例实施例中,第一部分积PP1至第四部分积PP4可以分别对应于通过将从16位输入IN[16:1]提取的第一部分P1至第四部分P4乘以常数(例如,乘以同一常数)而获得的值。稍后将参照图3、图5、图7和图9等描述算术逻辑224的示例。
至少一个加法器240可以通过对第一部分积PP1至第四部分积PP4进行求和来生成输出OUT。在一些示例实施例中,算术逻辑224可以顺序地输出第一部分积PP1至第四部分积PP4,并且至少一个加法器240可以通过顺序地将第一部分积PP1至第四部分积PP4进行累加来生成输出OUT。至少一个加法器240可以具有用于对第一部分积PP1至第四部分积PP4进行求和的任意结构,并且可以包括三个加法器(例如,在一些示例实施例中,包括半加法器电路和/或全加法器电路的三个加法器)。在下文中,如图2中所示,将主要描述处理16位输入IN[16:1]的示例,但是将理解的是,示例实施例不限于此。
图3是示出根据一些示例实施例的集成电路300的框图。图4是示出根据一些示例实施例的包括由图3的集成电路300生成的部分积的表400的图。具体地,图3的框图示出了生成一个部分积PP的逻辑电路320,并且图4的表400示出了部分积PP的所有可能值如何由图3的集成电路300生成。
参照图3,集成电路300可以包括逻辑电路320和查找表360。查找表360可以存储与常数C的奇数倍数对应的种子,并且可以不存储与常数C的偶数倍数对应的种子。例如,如图3中所示,查找表360可以存储八个种子“C、3C、……、15C”。因此,查找表360可以不存储部分积PP的所有可能值,并且可以仅存储部分积PP的16个可能值中的一半。如稍后将描述的,当部分IN[k+3:k]是奇数时,响应于地址ADR由查找表360提供的种子可以作为部分积PP被输出,而当部分IN[k+3:k]是偶数时,通过将响应于地址ADR由查找表360提供的种子移位至少一次而获得的值可以作为部分积PP被输出。
逻辑电路320可以接收从输入IN提取的特定长度(例如,4位长度)的部分IN[k+3:k](k=1、5、9或13),并且可以生成部分积PP。如图3中所示,集成电路300可以包括地址生成器322和算术逻辑324。地址生成器322可以基于部分IN[k+3:k]生成地址ADR和控制信号CTR。当部分IN[k+3:k]是奇数时,地址生成器322可以生成指示与部分IN[k+3:k]和常数C的积对应的种子被存储的位置的地址ADR。可选择地,当部分IN[k+3:k]是偶数时,地址生成器322可以生成指示能够通过移位生成部分积PP的种子被存储的位置的地址ADR。
算术逻辑324可以包括至少一个移位器324_2和复用器(MUX)324_4。至少一个移位器324_2可以通过基于从地址生成器322接收的控制信号CTR对从查找表360接收的种子SD进行移位来生成移位的种子SD'。当部分IN[k+3:k]是偶数时,地址生成器322可以确定对种子SD进行移位的次数,并且可以基于确定的移位次数来生成控制信号CTR。
MUX 324_4可以基于从地址生成器322接收的控制信号CTR,选择并输出从查找表360提供的种子SD或从至少一个移位器324_2接收的移位的种子SD'作为部分积PP。当部分IN[k+3:k]是奇数时,地址生成器322可以生成用于选择种子SD的控制信号CTR,而当部分IN[k+3:k]是偶数时,地址生成器322可以生成用于选择移位的种子SD'的控制信号CTR。
参照图4,表400表示用于根据部分IN[k+3:k](例如,0000至1111)生成部分积PP的操作(例如,算术运算和/或位移位运算)。如上面参照图3所述,查找表360可以存储常数C的奇数倍数,并且可以不存储常数C的偶数倍数,因此,与奇数值的部分IN[k+3:k]对应的部分积PP可以与种子SD相同。
可以通过将种子SD移位至少一次来生成与偶数值的部分IN[k+3:k]对应的部分积PP。如在此所使用的,操作“<<”可以是或可以对应于移位运算(例如,位移位运算)。例如,可以通过将种子“C”移位/位移位一次(C<<1)来生成部分积“2C”,可以通过将种子“3C”移位/位移位两次(3C<<2)来生成部分积“12C”,并且可以通过将种子“C”移位/位移位3次(C<<3)来生成部分积“8C”。因此,部分积PP的所有16个值可以被生成。
图5是示出根据一些示例实施例的集成电路500的框图。图6是示出根据一些示例实施例的包括由图5的集成电路500生成的部分积的表600的图。更详细地,图5的框图示出了生成一个部分积PP的逻辑电路520,并且图6的表600示出了部分积PP的所有可能值如何由集成电路500生成。
参照图5,集成电路500可以包括逻辑电路520和查找表560。查找表560可以存储两个或更多个种子,并且部分积PP可以基于对至少一个种子的一个或多个操作来生成。例如,如图5中所示,查找表560可以存储两个种子“C、3C”,并且如稍后将描述的,部分积PP可以基于两个种子“C、3C”中的至少一个的操作来生成。当与图3的查找表360相比时,图5的查找表560可以存储更少数量的种子,而当与图3的算术逻辑324相比时,稍后将描述的图5的算术逻辑524还可以包括至少一个加法器524_4。在一些示例实施例中,如下面参照图6所述,查找表560可以存储少量(例如,最小数量)的种子,使得部分积PP通过根据至少一个种子的一次加法和/或至少一次移位来生成。
逻辑电路520可以接收从输入IN提取的具有4位长度的部分IN[k+3:k],并且可以生成部分积PP。如图5中所示,逻辑电路520可以包括地址生成器522和算术逻辑524。地址生成器522可以基于部分IN[k+3:k]生成地址ADR和控制信号CTR。例如,如稍后参照图6所述,地址生成器522可以基于部分IN[k+3:k]生成与两个种子“C、3C”中的至少一个对应的地址ADR,并且可以基于部分IN[k+3:k](并行和/或顺序地)生成与两个种子“C、3C”中的至少一个对应的地址。
算术逻辑524可以包括至少一个移位器524_2和至少一个加法器524_4。至少一个移位器524_2可以基于控制信号CTR来接收从查找表560提供的种子SD和/或可以接收至少一个加法器524_4的输出,并且可以对接收的值进行移位。另外,至少一个加法器524_4可以基于控制信号CTR来接收从查找表560提供的种子SD和/或可以接收至少一个移位器524_2的输出,并且可以基于控制信号CTR来加上或减去接收到的值。在此,包括在算术逻辑524中的至少一个加法器524_4可以被称为至少一个第二加法器。
参照图6,表600表示用于根据部分[k+3:k]生成部分积PP的运算(例如,算术运算和/或位移位运算)。如上面参照图5所述,查找表560可以存储(例如,可以仅存储)两个种子“C、3C”,并且因此,与部分IN[k+3:k](其为1或3)对应的部分积PP可以与种子SD相同。
可以通过对种子SD进行移位来生成部分乘积PP的一些值。例如,如图6中所示,可以通过对两个种子“C、3C”中的一个进行移位来生成四个部分积“2C、4C、8C、12C”,并且可以不使用附加操作来生成这样的部分积。可以通过将种子SD和/或移位的种子与种子SD和/或移位的种子相加来生成部分积PP的一些值。例如,可以通过将通过将种子“3C”移位一次获得的值与通过对种子“C”移位两次获得的值相加来生成部分积“10C”。可以通过从种子SD和/或移位的种子减去种子SD和/或移位的种子来生成部分积PP的一些值。例如,可以通过从通过将种子“C”移位四次获得的值减去种子“C”来生成部分积“15C”。在一些示例实施例中,可以以与图6中所示的方式不同的方式生成部分积PP的一些值。例如,与图6中所示的不同,可以通过将通过将种子“3C”移位一次获得的值与种子“3C”相加来生成部分积“9C”。
图7是示出根据一些示例实施例的集成电路700的框图,并且图8是示出根据一些示例实施例的图7的集成电路700的操作的示例的图。更详细地,图7的框图示出了用于生成一个部分积PP的逻辑电路720,并且图8示出了由逻辑电路720对查找表760进行更新的操作。
参照图7,集成电路700可以包括逻辑电路720和查找表760。查找表760不仅可以存储种子,还可以存储与种子分别对应的有效位。激活的有效位VB可以指示与有效位VB对应的种子SD是有效的,而去激活的有效位VB可以指示与有效位VB对应的种子SD是无效的。例如,如图7中所示,在查找表760中,与常数C对应的激活的有效位VB可以是“1”,而与无效值X对应的去激活的有效位VB可以是“0”。如在此所使用的,激活的有效位VB可以具有值“1”,而去激活的有效位VB可以具有值“0”;然而,示例实施例不限于此。例如,激活的有效位VB可以具有值“0”,而去激活的有效位VB可以具有值“1”。在一些示例实施例中,可以在生成部分积PP的处理中生成种子SD,并且生成的种子SD可以存储在查找表760中,因此,有效位VB可以被激活。参照图8,当在查找表760存储常数C时部分“0110”被接收时,如图8中所示,“3C”可以通过对根据种子“C”移位的值与种子“C”进行求和来生成,并且部分积“6C”可以通过对“3C”进行移位来生成。例如,在生成部分积PP的处理中生成的“3C”可以稍后用作种子,因此,如图8中所示,更新的查找表760'可以存储种子“3C”和指示激活的有效位的“1”。
返回参照图7,逻辑电路720可以接收从输入IN提取的具有4位长度的部分IN[k+3:k],并且计算部分积PP。如图7中所示,逻辑电路720可以包括地址生成器722和算术逻辑724。地址生成器722可以基于部分IN[k+3:k]生成地址ADR和控制信号CTR。地址生成器722可以接收与地址ADR对应的有效位VB,并且可以基于有效位VB来识别种子SD是否有效。例如,当有效位VB被激活(例如,具有值“1”)时,地址生成器722可以识别由算术逻辑724接收的与有效位VB在一起的种子SD是有效的。同时,当有效位VB被去激活(例如,具有值“0”)时,地址生成器722可以识别由算术逻辑724接收的与有效位VB在一起的种子SD是无效的。
地址生成器722可以生成控制信号CTR,使得生成部分积PP所需/所用的种子SD由算术逻辑724响应于去激活的有效位VB而生成。如图7中所示,算术逻辑724可以将生成的种子SD提供给查找表760,并且地址生成器722可以将地址ADR和激活的写入使能信号WE提供给查找表760。因此,由算术逻辑724生成的种子SD可以存储在查找表760中。可选择地或附加地,地址生成器722不仅可以将地址ADR和激活的写入使能信号WE提供给查找表760,而且还可以将激活的有效位VB提供给查找表760,因此,存储在查找表760中的种子SD可以稍后被用于根据部分IN[k+3:k]生成部分积PP。结果,种子SD可以在首次使用时被生成并被存储在查找表760中,并且存储的种子SD可以在稍后生成部分积PP时被使用。
算术逻辑724可以包括至少一个位移位器724_2和至少一个加法器724_4。至少一个移位器724_2可以基于控制信号CTR来接收从查找表760提供的种子SD和/或至少一个加法器724_4的输出,并且可以对接收的值进行移位。另外,至少一个加法器724_4可以基于控制信号CTR来接收从查找表760提供的种子SD和/或至少一个移位器724_2的输出,并且可以基于控制信号CTR来加上或减去接收的值。如上所述,至少一个移位器724_2和至少一个加法器724_4可以用于不仅生成部分积PP,而且还生成首次使用的种子SD。
图9是示出根据一些示例实施例的集成电路900的框图。具体地,图9的框图示出了从输入IN生成第一部分积PP1至第四部分积PP4的逻辑电路920。如图9中所示,集成电路900可以包括逻辑电路920和查找表960。
在一些示例实施例中,可以基于布斯(Booth)算法生成部分积。布斯算法可以指通过基于乘数的部分对被乘数进行编码并对编码的被乘数进行求和来提供减少的计算量的乘法算法。如稍后所述,集成电路900可以通过基于从输入IN提取的部分对常数C进行编码来生成第一部分积PP1至第四部分积PP4。布斯算法可以基于被乘数的二进制补码。
参照图9,逻辑电路920可以包括地址生成器922和算术逻辑924。地址生成器922可以从输入IN提取多个部分,并且多个部分中的每个可以与另一部分共享至少一个位以用于布斯编码。例如,如图9中所示,地址生成器922可以基于基数10(radix-10)布斯乘法从输入IN提取第一部分P1至第四部分P4。第一部分P1可以与第二部分P2共享输入IN的第四位[4],第二部分P2可以与第三部分P3共享输入IN的第八位[8],并且第三部分P3可以与第四部分P4共享输入IN的第12位[12]。可选择地或附加地,第一部分P1可以附加地包括不包括在输入IN中的一个位IN[0]。地址生成器922可以将第一部分P1至第四部分P4提供给算术逻辑924,并且可以基于第一部分P1至第四部分P4中的每个的值来生成多个地址ADR。如上面参照图2等所述,多个地址ADR可以并行地被同时提供到查找表960,或可以被顺序提供到查找表960。如图9中所示,查找表960可以存储三个种子“C、3C、5C”,并且响应于多个地址ADR中的每个,可以输出三个种子“C、3C、5C”中的一个。
算术逻辑924可以包括第一布斯编码器924_1至第四布斯编码器924_4,并且第一布斯编码器924_1至第四布斯编码器924_4可以从地址生成器922分别接收第一部分P1至第四部分P4。第一布斯编码器924_1至第四布斯编码器924_4中的每个可以从查找表960接收种子SD,并且可以基于种子SD分别从第一部分P1至第四部分P4生成第一部分积PP1至第四部分积PP4。根据基数10布斯算法,接收第二部分P2的第二布斯编码器924_2可以通过将编码值移位三次来生成第二部分积PP2,接收第三部分P3的第三布斯编码器924_3可以通过将编码值移位七次来生成第三部分积PP3,并且接收第四部分P4的第四布斯编码器924_4可以通过将编码值移位十一次来生成第四部分积PP4。
图10是示出根据一些示例实施例的用于常数乘法的方法的流程图。如图10中所示,用于常数乘法的方法可以包括多个操作S10、S30、S50、S70和S90。在一些示例实施例中,图10的方法可以由图2的集成电路200执行,并且图10在下面将参照图2描述。
参照图10,在操作S10中,可以从输入IN提取多个部分。例如,地址生成器222可以接收具有16位长度的输入IN,并且从输入IN提取第一部分P1至第四部分P4。多个部分可以是相同的大小,或者可以是不同的大小。
在操作S30中,可以生成多个地址ADR。例如,地址生成器222可以基于第一部分P1至第四部分P4生成多个地址ADR。地址生成器222可以基于从输入IN提取的部分来生成至少一个地址。可选择地或附加地,地址生成器222可以基于第一部分P1至第四部分P4生成控制信号CTR。在一些示例实施例中,当从输入IN提取的部分为零时,地址生成器222可以不生成地址,并且可以生成控制信号CTR,使得对应的部分积为零。
在操作S50中,可以从查找表260获得多个种子SD。例如,查找表260可以存储种子,并且可以响应于从地址生成器222并行或顺序地接收的多个地址ADR而同时或顺序地输出多个种子SD。
在操作S70中,可以生成多个部分积。例如,算术逻辑224可以基于从地址生成器222提供的控制信号CTR,根据多个种子SD生成多个部分积(例如,第一部分积PP1至第四部分积PP4)。第一部分积PP1至第四部分积PP4可以分别对应于通过将第一部分P1至第四部分P4乘以常数而获得的值。由于在操作S50中提供的多个种子SD,因此第一部分积PP1至第四部分积PP4可以基于减少的计算量更容易地生成。
在操作S90中,可以对多个部分积进行求和(例如,可以对多个部分乘积进行累加)。例如,至少一个加法器240可以从算术逻辑224接收第一部分积PP1至第四部分积PP4,并且通过对第一部分积PP1至第四部分积PP4进行求和来生成输出OUT。
图11是示出根据一些示例实施例的用于常数乘法的方法的流程图。具体地,图11的流程图示出了图10的操作S70的示例。如上面参照图10所述,可以在图11的操作S70'中生成多个部分积。如图11中所示,操作S70'可以包括多个操作S71、S72和S73。在一些示例实施例中,操作S70'可以由图3的集成电路300执行,并且图11在下面将参照图3描述。
参照图11,在操作S71中,可以将从输入IN提取的部分确定为偶数。例如,地址生成器322可以接收从输入IN提取的具有4位长度的部分IN[k+3:k],并且可以确定部分IN[k+3:k]的最低有效位(LSB)(例如,输入IN的第k位IN[k])是否为零。如上面参照图3和图4所描述的,查找表360可以存储常数C的奇数倍数,并且算术逻辑324可以从查找表360接收与常数C的奇数倍数对应的种子SD。如图11中所示,当部分IN[k+3:k]是奇数(例如,具有最低有效位“1”)时,操作S70'可以结束,并且从查找表360接收的种子SD可以作为部分积PP被输出。
当部分IN[k+3:k]是偶数(例如,在最低有效位中具有“0”)时,在操作S72中,可以对种子SD进行移位。例如,当部分IN[k+3:k]是偶数时,地址生成器322可以生成控制信号CTR,使得种子SD被算术逻辑324的至少一个移位器324_2移位。至少一个移位器324_2可以响应于控制信号CTR而对种子SD进行移位。
在操作S73中,可以将索引k增大1,并且随后可以基于增大的索引k来执行操作S71。如上参照图4所述,当部分IN[k+3:k]具有与4的倍数对应的值(例如,4C、12C)时,种子SD可以是或被要求移位两次,并且当部分IN[k+3:k]具有与8的倍数对应的值(例如,8C)时,种子SD可以是或被要求移位三次。因此,如图11中所示,种子SD可以根据部分IN[k+3:k]的LSB移位连续零的数量。为了便于说明,在图11中示出了种子SD被顺序地移位的示例,但是在一些示例实施例中,地址生成器322可以识别部分IN[k+3:k]的从LSB起的连续零的数量,并且基于识别的数量生成控制信号CTR,并且至少一个移位器324_2可以基于控制信号CTR将种子SD移位一次或多次。
图12是示出根据一些示例实施例的用于常数乘法的方法的流程图。具体地,图12的流程图示出了基于两个或更多个种子的运算生成部分积的方法。如图12中所示,用于常数乘法的方法可以包括操作S37、操作S55和操作S77,并且操作S37、操作S57和操作S77可以分别包括在图9的操作S30、操作S50和操作S70中。在一些示例实施例中,图12的方法可以由图5的集成电路500执行,并且图12在下面将参照图5描述。
参照图12,在操作S37中,可以生成至少两个地址。例如,地址生成器522可以基于从输入IN提取的部分IN[k+3:k]的值来生成至少两个地址。如上面参照图5所述,查找表560可以存储种子“C”以及种子“3C”,并且地址生成器522可以生成与生成部分积PP所需的至少两个种子分别对应的至少两个地址。例如,如上面参照图6所述,当部分“0101”被接收时,地址生成器522可以生成与种子“C”和种子“3C”分别对应的两个地址。
在操作S57中,可以从查找表560获得至少两个种子。例如,查找表560可以响应于在操作S37中提供的至少两个地址而输出至少两个种子,并且算术逻辑524可以从查找表560接收至少两个种子。
在操作S77中,可以基于至少两个种子的运算来生成部分积PP。例如,在操作S37中,地址生成器522不仅可以生成至少两个地址,而且还可以生成控制信号CTR,并且算术逻辑524可以基于从地址生成器522提供的控制信号CTR,基于至少两个种子的运算来生成部分积PP。算术逻辑524可以包括至少一个移位器524_2和至少一个加法器524_4,并且如上面参照图6所描述的,可以基于加法、减法和/或移位根据至少两个种子生成部分积PP。
图13是示出根据一些示例实施例的用于常数乘法的方法的流程图。具体地,图13的流程图示出了图10的操作S50的示例。如上面参照图10所述,在图13的操作S50'中,可以从查找表获得多个种子。如图13中所示,操作S50'可以包括多个操作S51至S56。在一些示例实施例中,操作S50'可以由图7的集成电路700执行,并且图13在下面将参照图7描述。
参照图13,在操作S51中,可以获得与地址ADR对应的有效位VB。例如,查找表760可以存储种子和与种子分别对应的有效位,并且每个有效位可以指示与有效位对应的种子是否有效。地址生成器722可以通过将地址ADR提供给查找表760来接收有效位VB。
在操作S52中,可以确定有效位VB是否被激活。例如,当从查找表760接收的有效位VB的值为“1”时,地址生成器722可以确定有效位VB被激活,而当有效位VB的值为“0”时,地址生成器722可以确定有效位VB被去激活。如图13中所示,当有效位VB被激活时,可以提供与地址ADR对应的种子SD以用于在操作S56中生成部分积PP。
当有效位VB被去激活时,在操作S53中,可以计算种子SD。例如,如上面参照图8所述,算术逻辑724可以在基于从地址生成器722提供的控制信号CTR生成部分积PP的处理中生成种子SD。然后,在操作S54中,可以提供计算的种子SD以用于生成部分积PP。
在操作S55中,可以将计算的种子SD和激活的有效位VB存储在查找表760中。例如,算术逻辑724可以将在操作S53中计算的种子SD提供给查找表760,并且地址生成器722可以将激活的有效位VB和激活的写入使能信号WE提供给查找表760。查找表760可以响应于激活的写入使能信号WE而存储从地址生成器722接收的激活的有效位VB和从算术逻辑724接收的种子SD。
图14是示出根据一些示例实施例的用于常数乘法的方法的流程图。具体地,图14的流程图示出了基于布斯算法执行常数乘法的方法。如图14中所示,用于常数乘法的方法可以包括操作S18、操作S38、操作S58和操作S78,并且操作S18、操作S38、操作S58和操作S78可以分别包括在图10的操作S10、操作S30、操作S50和操作S70中。在一些示例实施例中,图14的方法可以由图9的集成电路900执行,并且图14在下面将参照图9被描述。
参照图14,在操作S18中,可以从输入IN提取与另一部分共享至少一个位的部分。例如,地址生成器922可以基于基数10布斯乘法从输入IN提取第一部分P1至第四部分P4,并且第一部分P1至第四部分P4中的每个可以与另一部分共享至少一个位。
在操作S38中,可以生成至少一个地址。例如,地址生成器922可以生成至少一个地址,以从查找表960接收根据在操作S18中提取的部分基于布斯乘法生成部分积所需的至少一个种子。
在操作S58中,可以从查找表960获得至少一个种子。例如,地址生成器922可以将在操作S38中生成的至少一个地址提供给查找表960,并且查找表960可以响应于至少一个地址而将至少一个种子提供给算术逻辑924。
在操作S78中,可以生成布斯编码的部分积。例如,算术逻辑924可以包括第一布斯编码器924_1至第四布斯编码器924_4,并且第一布斯编码器924_1至第四布斯编码器924_4可以基于在操作S58中提供的至少一个种子根据第一部分P1至第四部分P4分别生成第一部分积PP1至第四部分积PP4。
图15是示出根据一些示例实施例的将种子存储在查找表12_2中的操作的示例的图。具体地,图15的左侧示出了将机器学习模型安装在被设计为执行机器学习模型的处理装置10上的操作S1、S3、S5、S7和S9,并且图15的右侧详细示出了操作S9的示例。
机器学习模型可以是或可以指诸如由多个样本训练的任意模型的模型。例如,机器学习模型可以是基于人工神经网络(ANN)、决策树、支持向量机、回归分析、贝叶斯(Bayesian)网络、遗传算法等中的至少一个的模型。在一些示例实施例中,当机器学习模型基于ANN(或简单的神经网络)时,作为非限制性示例,ANN可以包括卷积神经网络(CNN)、区域卷积神经网络(region with convolution neural network,R-CNN)、区域建议网络(region proposal network,RPN)、循环神经网络(RNN)、基于堆叠的深度神经网络(stacking-based deep neural network,S-DNN)、状态空间动态神经网络(state-spacedynamic neural network,S-SDNN)、反卷积网络、深度信念网络(DBN)、受限玻尔兹曼机(RBM)、全卷积网络、长短期记忆(LSTM)网络和分类网络中的至少一个。
处理装置10可以执行机器学习模型。例如,处理装置10可以包括被设计为执行机器学习模型的专用硬件(诸如,神经处理器(NPU)),并且还可以包括可以执行机器学习模型的用于各种目的的硬件(诸如,中央处理器(CPU)、挖掘(mining)加速器、图形处理器(GPU)等)。此外,在一些示例实施例中,处理装置10可以包括存储器内处理器(processor inmemory,PIM)(诸如,计算RAM)。如图15中所示,处理装置10可以包括集成电路12和非易失性存储器(NVM)14,并且集成电路12可以包括查找表12_2、逻辑电路12_4和至少一个加法器12_6。在一些示例实施例中,处理装置10可以包括多个单元(诸如,多个标准单元),多个单元并行地生成输入与包括在特征图中的权重的积,并且多个单元中的每个可以包括查找表12_2、逻辑电路12_4和至少一个加法器12_6。在此,处理装置10可以简称为装置。
参照图15的左侧,在操作S1中,可以准备浮点模型。为了更准确的结果,可以准备通过浮点算术而不是定点算术训练的浮点模型。
在操作S3中,可以执行量化。例如,被设计为执行机器学习模型的处理装置10可以被包括在移动系统中,并且可以包括有限的资源。因此,浮点模型可以被量化,并且量化的模型可以被安装在处理装置10上。如上面参照图1所描述,量化级的数量可以增大以获得更准确的结果。
在操作S5中,可以执行种子计算。在操作S1中完全训练的浮点模型可以包括浮点权重,并且在操作S3中,可以对浮点权重进行量化。如上参照附图所述,预先存储在查找表12_2中的种子可以用于输入与包括在特征图中的权重的乘法,并且在操作S5中将被存储在查找表12_2中的种子可以被计算。因为权重在操作S3中被确定,所以种子可以先验地(例如,在操作S5中预先)被计算,而与通过由处理装置10执行机器学习模型所执行的推断独立。
在操作S7中,可以执行编译。例如,由计算系统执行的编译器可以将在操作S3中量化的模型和在操作S5中计算的种子转换为由处理装置10可执行的形式。
在操作S9中,可以执行供应。例如,如图15的右侧所示,可以将在操作S7中编译的数据DAT提供给处理装置10。如上所述,数据DAT可以包括在操作S5中计算的种子。提供给处理装置10的数据DAT可以被编程到NVM 14,并且查找表12_2可以从NVM 14加载种子SD。结果,在机器学习模型被执行时所需/使用的操作中的一些可以被预先执行,并且机器学习模型的推断可以被更高效地执行。
图16A和图16B是示出根据实施例的将种子存储在查找表22_2a和22_2b中的操作的示例的框图。与图15的示例不同,由编译器编译的数据可以不包括种子,并且种子可以由图16A和图16B的处理装置20a和20b计算。在下文中,图16A和图16B的与图15的描述多余的描述被省略。
参照图16A,处理装置20a可以包括集成电路22a、NVM 24a和种子计算器26a,并且集成电路22a可以包括查找表22_2a、逻辑电路22_4a和至少一个加法器22_6a。如上面参照图15所述,为了将机器学习模型提供给处理装置20a,数据DAT可以被编程在NVM 24a中。
种子计算器26a可以从编程在NVM 24a中的数据DAT之中接收多个权重WT,并且根据多个权重WT生成多个种子SD。如图16A中所示,种子计算器26a可以将多个种子SD提供给NVM 24a,并且多个种子SD可以与数据DAT一起被编程到NVM 24a。因此,当机器学习模型被提供时,多个种子SD可以被计算,并且查找表22_2a可以从NVM 24a加载多个种子SD。
参照图16B,处理装置20b可以包括集成电路22b、NVM 24b和种子计算器26b,并且集成电路22b可以包括查找表22_2b、逻辑电路22_4b和至少一个加法器22_6b。如上面参照图15所述,为了将机器学习模型提供给处理装置20b,数据DAT可以被编程在NVM 24b中。
种子计算器26b可以从NVM 24b接收权重WT,并且可以根据权重WT计算种子SD(例如,至少一个种子SD)以将种子SD提供给查找表12_2b。因此,与图15和图16A的示例不同,种子SD可以不存储在NVM 24b中,并且种子SD可以由种子计算器26b根据权重WT计算,并且在输入与权重WT的乘法被执行之前被提供给查找表12_2b。
图17是示出根据一些示例实施例的系统30的框图。在一些示例实施例中,系统30可以是其中元件被集成在一个芯片(或裸片)中的片上系统,并且可以被称为应用处理器(AP)。如图17中所示,系统30可以包括CPU 31、GPU 32、NPU 33、调制解调器34、存储器35、加速器36、接口37和至少一个传感器38,并且CPU 31、GPU 32、NPU 33、调制解调器34、存储器35、加速器36、接口37和至少一个传感器38可以经由总线39彼此通信。
CPU 31可以执行一系列指令并控制系统30。在一些示例实施例中,CPU 31可以执行操作系统(OS)并且可以执行OS上的多个应用。CPU 31可以包括能够彼此独立地执行指令的多个核,并且可以包括由多个核访问的高速缓冲存储器。在一些实例实施例中,CPU 31可以包括电路(诸如,上面参照附图所描述的用于常数乘法的集成电路)。
GPU 32可以指被设计为处理图形数据的专用硬件,并且NPU 33可以指被设计为执行机器学习模型的专用硬件。在一些示例实施例中,GPU 32和/或NPU 33可以包括彼此并行操作的多个单元,并且多个单元中的每个可以包括上面参照附图描述的用于常数乘法的集成电路。
调制解调器34可以通过对通过有线信道和/或无线信道接收的信号进行解调和/或解码来提取信息。此外,调制解调器34可以通过对信息进行编码和/或调制来生成将在有线信道或无线信道上被发送的信号。存储器35可以由其他元件经由总线39访问,并且可以包括易失性存储器和/或NVM。在一些示例实施例中,存储器35可以存储将被加载到上面参照附图描述的查找表中的种子。加速器36可以指被设计为以高速执行特定功能的硬件。接口37可以提供与系统30的外部装置(例如,输入/输出装置)的接口。至少一个传感器38可以感测或检测物理量(诸如,温度、电压、电流等中的至少一个)。
如在此所使用的,各种描述的示例实施例不一定是相互排斥的。例如,一些示例实施例可以包括参照一个附图描述的特征,并且还可以包括参照另一附图描述的特征。
此外,上述元件中的每个或至少一些可以被实现为处理电路,例如,可以用逻辑门(诸如,包括各种晶体管(诸如,CMOS晶体管)的标准单元)来实现。元件可以被设计为或实现为标准单元(诸如,全加法器、半加法器、复用器、解码器、编码器等)。
上面公开的任何元件和/或功能块可以包括处理电路(诸如,包括逻辑电路的硬件、硬件/软件组合(诸如,执行软件的处理器)或它们的组合)或在处理电路(诸如,包括逻辑电路的硬件、硬件/软件组合(诸如,执行软件的处理器)或它们的组合)中实现。例如,处理电路更具体地可以包括但不限于中央处理器(CPU)、算术逻辑单元(ALU)、数字信号处理器、微型计算机、现场可编程门阵列(FPGA)、片上系统(SoC)、可编程逻辑单元、微处理器、专用集成电路(ASIC)等。处理电路可以包括电子组件(诸如,晶体管、电阻器、电容器等中的至少一个)。处理电路可以包括电子组件(诸如,包括与门、或门、与非门、非门等中的至少一个)。
虽然已经参照发明构思的各种示例实施例具体示出和描述了发明构思,但是将理解的是,在不脱离所附权利要求的精神和/或范围的情况下,可以在其中进行形式和细节上的各种改变。
Claims (20)
1.一种用于生成输入与常数的积的集成电路,所述集成电路包括:
查找表存储器,被配置为存储与所述常数的倍数对应的种子;以及
处理电路,被配置为生成与从输入提取的多个部分分别对应的多个地址,被配置为基于所述多个地址从查找表存储器接收多个种子,并且被配置为基于所述多个种子生成多个部分积,
其中,处理电路被配置为对所述多个部分积进行求和,
其中,存储在查找表存储器中的种子的数量小于所述多个部分积的可能值的数量。
2.如权利要求1所述的集成电路,其中,查找表存储器被配置为存储与所述常数的奇数倍数对应的种子,并且
处理电路被配置为响应于从输入提取的部分是偶数,对从查找表存储器接收的种子进行移位。
3.如权利要求1所述的集成电路,其中,处理电路被配置为:基于从输入提取的部分来生成至少两个地址,基于所述至少两个地址从查找表存储器接收至少两个种子,并且根据所述至少两个种子生成部分积。
4.如权利要求3所述的集成电路,其中,查找表存储器被配置为:存储第一数量的种子,使得部分积通过根据至少一个种子的至少一次移位和一次加法中的至少一个被生成。
5.如权利要求3所述的集成电路,其中,处理电路被配置为执行加法和减法中的至少一个,加法和减法基于从输入提取的部分。
6.如权利要求1所述的集成电路,其中,查找表存储器被配置为存储与种子分别对应的有效位,并且
其中,处理电路被配置为:基于与从输入提取的部分对应的地址来接收第一种子的第一有效位,并且响应于第一有效位被去激活,生成第一种子,将生成的第一种子存储在查找表存储器中,并且将激活的第一有效位存储在查找表存储器中。
7.如权利要求1至权利要求6中的任意一项所述的集成电路,其中,从输入提取的所述多个部分中的每个部分与所述多个部分中的其他部分共享至少一个位,并且
处理电路被配置为:接收从输入提取的部分并基于种子生成部分积,生成部分积的处理基于布斯编码。
8.一种用于生成输入与权重的积的装置,所述装置包括:
多个单元,被配置为并行地生成输入与权重的积,权重包括在特征图中,
其中,所述多个单元中的每个包括:
查找表存储器,被配置为存储与权重的倍数对应的种子;以及
处理电路,被配置为:生成与从输入提取的部分对应的地址,并且基于与地址对应的种子生成部分积;
其中,处理电路被配置为对多个部分乘积进行求和,
其中,存储在查找表存储器中的种子的数量小于部分积的可能值的数量。
9.如权利要求8所述的装置,其中,查找表存储器被配置为存储与权重的奇数倍数对应的种子,并且
处理电路被配置为:通过响应于从输入提取的部分是偶数而对与地址对应的种子进行移位来生成部分积。
10.如权利要求8所述的装置,其中,处理电路被配置为:基于从输入提取的部分来生成至少两个地址,并且基于与所述至少两个地址对应的至少两个种子的运算来生成部分积。
11.如权利要求8所述的装置,其中,查找表存储器被配置为存储与种子分别对应的有效位,并且
响应于与地址对应的第一种子的第一有效位被去激活,处理电路被配置为:生成第一种子,将生成的第一种子存储在查找表存储器中,并且将激活的第一有效位存储在查找表存储器中。
12.如权利要求8所述的装置,其中,处理电路被配置为:从输入提取共享至少一个位的多个部分,并且基于布斯算法根据从输入提取的部分和种子来生成部分积。
13.如权利要求8所述的装置,其中,查找表存储器被配置为:从自所述装置的外部编程的存储器加载种子。
14.如权利要求8至权利要求13中的任一项所述的装置,其中,处理电路被配置为:根据权重计算至少一个种子。
15.如权利要求14所述的装置,还包括:
非易失性存储器,被配置为存储权重和计算的所述至少一个种子,
其中,查找表存储器被配置为:从非易失性存储器加载权重和所述至少一个种子。
16.如权利要求14所述的装置,其中,处理电路被配置为:在计算所述积之前将计算的所述至少一个种子提供给查找表存储器。
17.一种生成输入与常数的积的方法,所述方法包括:
通过处理电路,从输入提取多个部分;
通过处理电路,生成与所述多个部分分别对应的多个地址;
通过处理电路,从存储与所述常数的倍数对应的种子的查找表存储器获得多个种子,获得的步骤基于所述多个地址;
通过处理电路,基于所述多个种子生成多个部分积;以及
通过处理电路,对所述多个部分积进行求和,
其中,存储在查找表存储器中的种子的数量小于所述多个部分积的可能值的数量。
18.如权利要求17所述的方法,其中,查找表存储器存储与所述常数的奇数倍数对应的种子,并且
生成多个部分积的步骤包括:当从输入提取的部分是偶数时,对从查找表存储器获得的种子进行移位。
19.如权利要求17所述的方法,其中,生成多个地址的步骤包括基于从输入提取的部分来生成至少两个地址,
获得多个种子的步骤包括基于所述至少两个地址从查找表存储器获得至少两个种子,并且
生成多个部分积的步骤包括基于所述至少两个种子的运算来生成部分积。
20.如权利要求17至权利要求19中的任意一项所述的方法,其中,查找表存储器存储与种子分别对应的有效位,并且
其中,获得多个种子的步骤还包括:
基于地址从查找表存储器获得第一有效位;
当第一有效位被去激活时,生成与第一有效位对应的第一种子;以及
将生成的第一种子和激活的第一有效位存储在查找表存储器中。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR10-2020-0166966 | 2020-12-02 | ||
KR1020200166966A KR20220077738A (ko) | 2020-12-02 | 2020-12-02 | 상수 승산을 위한 집적 회로 및 이를 포함하는 장치 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN114579079A true CN114579079A (zh) | 2022-06-03 |
Family
ID=81751437
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202110924369.1A Pending CN114579079A (zh) | 2020-12-02 | 2021-08-12 | 用于常数乘法的集成电路、操作其的方法和包括其的装置 |
Country Status (3)
Country | Link |
---|---|
US (1) | US20220171602A1 (zh) |
KR (1) | KR20220077738A (zh) |
CN (1) | CN114579079A (zh) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR20230097893A (ko) * | 2021-12-24 | 2023-07-03 | 에스케이하이닉스 주식회사 | 누산기, 이를 포함하는 연산로직회로 및 프로세싱-인-메모리 장치 |
Family Cites Families (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6279097B1 (en) * | 1998-11-20 | 2001-08-21 | Allied Telesyn International Corporation | Method and apparatus for adaptive address lookup table generator for networking application |
AU3822099A (en) * | 1999-04-14 | 2000-11-14 | Nokia Networks Oy | Digital filter and method for performing a multiplication based on a look-up table |
TWI289992B (en) * | 2003-12-03 | 2007-11-11 | Via Tech Inc | Method and device for sharing MPEG frame buffers |
WO2006132069A1 (ja) * | 2005-06-09 | 2006-12-14 | Sharp Kabushiki Kaisha | 映像信号処理方法、映像信号処理装置、および表示装置 |
US8892621B2 (en) * | 2011-12-19 | 2014-11-18 | Lsi Corporation | Implementation of negation in a multiplication operation without post-incrementation |
-
2020
- 2020-12-02 KR KR1020200166966A patent/KR20220077738A/ko active Search and Examination
-
2021
- 2021-06-25 US US17/358,812 patent/US20220171602A1/en active Pending
- 2021-08-12 CN CN202110924369.1A patent/CN114579079A/zh active Pending
Also Published As
Publication number | Publication date |
---|---|
KR20220077738A (ko) | 2022-06-09 |
US20220171602A1 (en) | 2022-06-02 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11256978B2 (en) | Hyperbolic functions for machine learning acceleration | |
CN108701250B (zh) | 数据定点化方法和装置 | |
US11907719B2 (en) | FPGA specialist processing block for machine learning | |
CN111542826A (zh) | 支持模拟协处理器的数字架构 | |
CN107305484B (zh) | 一种非线性函数运算装置及方法 | |
US10768898B2 (en) | Efficient modulo calculation | |
US11809798B2 (en) | Implementing large multipliers in tensor arrays | |
US11275998B2 (en) | Circuitry for low-precision deep learning | |
CN112925505A (zh) | 算术设备、算术设备的操作方法和神经网络处理器 | |
KR20010052899A (ko) | 데이터 연산 처리 장치 | |
US20220230057A1 (en) | Hyperbolic functions for machine learning acceleration | |
US20220171602A1 (en) | Integrated circuit for constant multiplication and device including the same | |
Arvind et al. | Hardware implementation of hyperbolic tangent activation function for floating point formats | |
CN112052194A (zh) | 三态内容可寻址存储器及其操作方法 | |
CN114267391A (zh) | 机器学习硬件加速器 | |
CN113504892A (zh) | 一种设计乘法器查找表的方法、系统、设备及介质 | |
KR102482728B1 (ko) | 비트 시리얼 연산 방법 및 컴퓨터 기록 매체 | |
US20240134606A1 (en) | Device and method with in-memory computing | |
US9424030B2 (en) | Trailing or leading zero counter having parallel and combinational logic | |
TWI775402B (zh) | 資料處理電路及故障減輕方法 | |
US10037191B2 (en) | Performing a comparison computation in a computer system | |
CN111243640B (zh) | 用于存储器操作的电路和方法 | |
Gener et al. | Semi-and fully-random access LUTs for smooth functions | |
Mohan et al. | Scaling, base extension, sign detection and comparison in RNS | |
CN118036682A (zh) | 加法神经网络的存内计算实现方法、装置、设备及介质 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination |