CN111221500B - 大规模并行关联乘法器-累加器 - Google Patents

大规模并行关联乘法器-累加器 Download PDF

Info

Publication number
CN111221500B
CN111221500B CN201911164501.2A CN201911164501A CN111221500B CN 111221500 B CN111221500 B CN 111221500B CN 201911164501 A CN201911164501 A CN 201911164501A CN 111221500 B CN111221500 B CN 111221500B
Authority
CN
China
Prior art keywords
bit line
column
multiplier
filter
accumulator
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
CN201911164501.2A
Other languages
English (en)
Other versions
CN111221500A (zh
Inventor
A·奥凯里博
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.)
GSI Technology Inc
Original Assignee
GSI Technology 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 GSI Technology Inc filed Critical GSI Technology Inc
Publication of CN111221500A publication Critical patent/CN111221500A/zh
Application granted granted Critical
Publication of CN111221500B publication Critical patent/CN111221500B/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/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/52Multiplying; Dividing
    • G06F7/523Multiplying only
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C7/00Arrangements for writing information into, or reading information out from, a digital store
    • G11C7/10Input/output [I/O] data interface arrangements, e.g. I/O data control circuits, I/O data buffers
    • G11C7/1006Data managing, e.g. manipulating data before writing or reading out, data bus switches or control circuits therefor
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C7/00Arrangements for writing information into, or reading information out from, a digital store
    • G11C7/12Bit line control circuits, e.g. drivers, boosters, pull-up circuits, pull-down circuits, precharging circuits, equalising circuits, for bit lines
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/76Architectures of general purpose stored program computers
    • G06F15/78Architectures of general purpose stored program computers comprising a single central processing unit
    • G06F15/7807System on chip, i.e. computer system on a single chip; System in package, i.e. computer system on one or more chips in a single package
    • G06F15/7821Tightly coupled to memory, e.g. computational memory, smart memory, processor in memory
    • 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/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/52Multiplying; Dividing
    • G06F7/523Multiplying only
    • G06F7/533Reduction of the number of iteration steps or stages, e.g. using the Booth algorithm, log-sum, odd-even
    • G06F7/5334Reduction of the number of iteration steps or stages, e.g. using the Booth algorithm, log-sum, odd-even by using multiple bit scanning, i.e. by decoding groups of successive multiplier bits in order to select an appropriate precalculated multiple of the multiplicand as a partial product
    • G06F7/5336Reduction of the number of iteration steps or stages, e.g. using the Booth algorithm, log-sum, odd-even by using multiple bit scanning, i.e. by decoding groups of successive multiplier bits in order to select an appropriate precalculated multiple of the multiplicand as a partial product overlapped, i.e. with successive bitgroups sharing one or more bits being recoded into signed digit representation, e.g. using the Modified Booth Algorithm
    • G06F7/5338Reduction of the number of iteration steps or stages, e.g. using the Booth algorithm, log-sum, odd-even by using multiple bit scanning, i.e. by decoding groups of successive multiplier bits in order to select an appropriate precalculated multiple of the multiplicand as a partial product overlapped, i.e. with successive bitgroups sharing one or more bits being recoded into signed digit representation, e.g. using the Modified Booth Algorithm each bitgroup having two new bits, e.g. 2nd order MBA
    • 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
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/30007Arrangements for executing specific machine instructions to perform operations on data operands
    • G06F9/3001Arithmetic instructions
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/06Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons
    • G06N3/063Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons using electronic means
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C16/00Erasable programmable read-only memories
    • G11C16/02Erasable programmable read-only memories electrically programmable
    • G11C16/06Auxiliary circuits, e.g. for writing into memory
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C8/00Arrangements for selecting an address in a digital store
    • G11C8/08Word line control circuits, e.g. drivers, boosters, pull-up circuits, pull-down circuits, precharging circuits, for word lines
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C8/00Arrangements for selecting an address in a digital store
    • G11C8/10Decoders

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)
  • General Engineering & Computer Science (AREA)
  • Computing Systems (AREA)
  • Mathematical Physics (AREA)
  • Software Systems (AREA)
  • Data Mining & Analysis (AREA)
  • Computer Hardware Design (AREA)
  • Life Sciences & Earth Sciences (AREA)
  • Biophysics (AREA)
  • Biomedical Technology (AREA)
  • Health & Medical Sciences (AREA)
  • Databases & Information Systems (AREA)
  • Algebra (AREA)
  • Microelectronics & Electronic Packaging (AREA)
  • Neurology (AREA)
  • Artificial Intelligence (AREA)
  • Computational Linguistics (AREA)
  • Evolutionary Computation (AREA)
  • General Health & Medical Sciences (AREA)
  • Molecular Biology (AREA)
  • Image Processing (AREA)
  • Complex Calculations (AREA)

Abstract

存储器中的乘法器‑累加器包括存储器阵列、多‑位乘法器和多‑位分层加法器。存储器阵列具有多个行和列,每一列被划分为多个位线处理器,并且每一个位线处理器对其相关联的输入值对进行操作。多‑位乘法器利用每一个位线处理器将每一个位线处理器中的相关联的输入值对相乘以生成乘法结果。多‑位分层加法器累积位线处理器的每一列的乘法结果。

Description

大规模并行关联乘法器-累加器
技术领域
本发明总体上涉及乘法器-累加器。
背景技术
在本领域中已知乘法器-累加器(MAC)用于处理求和大量乘法结果的通用运算。这种运算是在图像处理中常见的点积和矩阵乘法的一部分,并且用于在神经网络中常见的卷积。
在数学上,该运算是:
iAiki 等式1
其中Ai和ki是8、16或32位字。在软件代码中,MAC运算是i的循环:
ri+1=ri+(Ai*ki) 等式2
其中ri累加Aiki的变化值。
典型地,MAC将形成为单独的单元,将其输出提供给中央处理单元(CPU)或数字信号处理器(DSP),并且这种单元可以接收来自多个MAC的输出。
每一个MAC都可以包括可以用组合逻辑来实现并且可以接收值Ai和ki的乘法器、在其输入端中的一个输入端处接收乘法器(Aiki)的输出的加法器、以及存储加法器的输出的累加器寄存器。累加器寄存器的输出被反馈回到加法器的第二输入端,以使得加法器将乘法器的当前输出连续添加到其先前添加的输出(即,它实现了等式2)。在每一个时钟周期,乘法器的输出被添加到寄存器。
发明内容
因此,根据本发明的优选实施例,提供了一种存储器中的乘法器-累加器,其包括非破坏性、非易失性存储器阵列和控制器。所述非破坏性、非易失性存储器阵列具有多个行和列,并且每一列都被划分为多个位线处理器,每一个位线处理器对其相关联的输入值对进行操作。所述控制器一次激活所述存储器阵列中的至少两行,以在每一列中并行执行以下运算:每一个所述位线处理器将其所述相关联的输入值对相乘以生成乘法结果,并且累加位线处理器的每一列的乘法结果。
此外,根据本发明的优选实施例,每一个位线处理器都包括存储所述相关联的输入值对的数据部分、中间结果区域以及存储其所述乘法结果的结果部分。
此外,根据本发明的优选实施例,所述累加包括:以金字塔的方式激活所述结果部分的行,以便一次对一列上的两个乘法结果相加。
此外,根据本发明的优选实施例,每一列都存储来自要处理的不同特征集的特征值,并且选定的行集合存储相关联滤波器的滤波器值,以使得每一个位线处理器都保持一个特征值及其相关联的滤波器值作为所述输入值对。
另外,根据本发明的优选实施例,所述存储器阵列在其列中存储所述特征集的至少两个副本。
此外,根据本发明的优选实施例,对于所述特征集的每一个副本而言,不同的滤波器值被存储在其位线处理器中,以使得所述特征集的每一个副本都被不同的滤波器滤波。
此外,根据本发明的优选实施例,所述存储器阵列在其列中存储至少两个特征集。
此外,根据本发明的优选实施例,每一个特征集都是要处理的图像的不同块,并且其中,所述滤波器值是至少一个图像处理滤波器的值。
根据本发明的优选实施例,还提供了一种存储器中的乘法器-累加器,其包括非破坏性、非易失性存储器阵列、多-位乘法器和多-位分层加法器。存储器阵列具有多个行和列,每一列都被划分为多个位线处理器,每一个位线处理器都对其相关联的输入值对进行操作。多-位乘法器利用每一个所述位线处理器将每一个所述位线处理器中的所述相关联的输入值对相乘,以生成乘法结果。所述多-位分层加法器累加所述位线处理器的每一列的乘法结果。
根据本发明的优选实施例,还提供了一种用于存储器中的乘法器-累加器的方法。所述方法包括将具有多个行和列的存储器阵列的列划分为多个位线处理器,每一个位线处理器都对其相关联的输入值对进行操作,以及一次激活所述存储阵列的至少两行,以在每一列中并行执行以下操作——每一个所述位线处理器都将其所述相关的输入值对相乘以生成乘法结果;以及累加所述位线处理器的每一列的乘法结果。
此外,根据本发明的优选实施例,所述累加包括以金字塔的方式激活每一个位线处理器的结果部分的行,以便一次对一列上的两个乘法结果相加。
此外,根据本发明的优选实施例,所述方包括在每一个列中都存储来自要处理的不同特征集的特征值;以及在选定的行集合中存储相关联的滤波器的滤波器值,以使得每一个位线处理器都保持一个特征值及其相关联的滤波器值作为所述输入值对。
此外,根据本发明的优选实施例,所述方法包括在所述存储器阵列的列中存储所述特征集的至少两个副本。
此外,根据本发明的优选实施例,对于所述特征集的每一个副本而言,所述方法包括将不同的相关联滤波器值存储在其位线处理器中,以使得所述特征集的每一个副本都由不同的相关联滤波器进行滤波。
此外,根据本发明的优选实施例,所述方法包括将至少两个特征集存储在所述存储器阵列的列中。
此外,根据本发明的优选实施例,每一个特征集都是要处理的图像的不同块,并且其中,所述滤波器值是至少一个图像处理滤波器的值。
最后,根据本发明的优选实施例,提供了一种用于存储器中的乘法器-累加器的方法。所述方法包括将具有多个行和列的存储器阵列的列划分为多个位线处理器,每一个位线处理器都对其相关联的输入值对进行操作,利用每一个所述位线处理器将每一个所述位线处理器中的所述相关联的输入值对相乘以生成乘法结果,以及累加所述位线处理器的每一个列的乘法结果。
附图说明
在说明书的结论部分中特别指出并明确要求被视为本发明的主题。然而,关于组织和操作方法两者,连同目标、特征及其优点,本发明可能最好在借助附图阅读时通过参考以下详细说明来理解,其中:
图1是根据本发明的优选实施例构造并运行的大规模并行关联乘法-累加单元的示意图;
图2是形成图1的乘法-累加单元的一部分的多-位乘法器的示意图;
图3和图4是形成图1的乘法-累加单元一部分的多-位分层加法器的操作的示意图,其中图3示出了如何在存储器中执行求和运算,并且图4示出了图3的行的金字塔求和运算;
图5、图6和图7是利用图1的乘法-累加单元的图像处理操作的示意图,其中图5示出了图像以及用于处理图像的图像滤波器,图6示出了利用图像滤波器Q的标准图像处理操作,并且图7示出了图1的乘法-累加单元中的实施方式。
应当理解的是,出于说明的简明性及清楚性,附图中所示的元件不一定按比例绘制。例如,为了清楚起见,元件中的一些的尺寸可能相对于其它元件被放大。此外,在认为适当的情况下,可以在附图之间重复附图标号以指示对应或相似的元件。
具体实施方式
在下面的详细描述中,阐述了许多具体细节以便提供对本发明的透彻理解。然而,本领域技术人员应该理解的是,可以实践本发明而无需这些具体细节。在其它情况下,没有详细描述公知的方法、过程和部件,以免模糊本发明。
申请人已经认识到是,由于MAC单元形成了CPU(中央处理单元)或DSP(数字信号处理器)的专用额外单元,因此它们在CPU或DSP芯片上需要额外的空间。由于不总是使用上述单元,因此这是对空间的浪费。此外,如果CPU或DSP必须并行执行多个MAC运算,则CPU或DSP需要包括多个MAC单元,这浪费了更多空间。
申请人已经认识到,可以通过在关联存储器单元(即,还对其中存储的数据执行运算的存储器阵列)中实现MAC来节省空间。这种存储器中的乘法器-累加器单元可以为CPU或DSP芯片提供用于存储并提供大规模的并行MAC运算的存储器,从而提高了操作速度并减少了芯片有效面积。对于关联存储器单元,对并行运算的数量的限制是存储器的大小。例如,具有32K列的存储器阵列可以实现32K MAC单元。
现在参考图1,其示出了根据本发明的优选实施例构建和运行的大规模并行关联MAC单元100。大规模并行关联MAC单元100可以包括存储器阵列110(例如非破坏性、非易失性存储器阵列)、多-位乘法器112和多-位分层加法器114,其中乘法器112和加法器114都可以操作存储器阵列110中的数据。存储器阵列110可以由控制器116控制,该控制器116可以经由行解码器和列解码器访问存储器阵列110以从存储器阵列110读取和对存储器阵列110进行写入。
根据本发明的优选实施例,MAC单元100的每一列都可以执行一个乘法-累加运算。因此,可以通过一次对一个或多个行进行操作来执行多个MAC运算。
MAC单元100的每一列都可以包括沿着存储器阵列110的列对齐的多个位线处理器(BLP)118。每一个位线处理器都可以对其相关联的输入值对Ai和ki进行操作,如在下文中更详细的描述。在名称为“In-Memory Computational Device”的US 9,418,719中描述了示例性的位线处理器,该专利转让给本发明的共同受让人并且通过引用将其并入本文。
根据本发明的优选实施例,控制器116可以激活存储器阵列110的行和列以实现多-位乘法器112,以使得每一个位线处理器118都可以对其相关联的输入值对Ai和ki执行乘法运算,以产生乘法结果Aiki。示例性的关联乘法运算在公开号为US 2019/0278566的标题为“System and Method for Long Addition and Long Multiplication in AssociativeMemory”的US 15/915,113中进行描述,该专利转让给本发明的共同受让人,并且通过引用并入本文。
根据本发明的优选实施例,控制器116可以激活存储器阵列110的行和列以实现多-位分层加法器114,以将来自多个位线处理器118的乘法结果相加在一起。示例性4循环全加器在公开号为US 2018/0157621的US 15/708,181中进行描述,该专利转让给本发明的共同受让人,并且通过引用并入本文。
现在参考图2,其示出了多-位乘法器112及其操作。图2示出了存储器阵列110的一部分,其中列被标记为Col-0、Col-1等,并且利用存储在其中的数据对行进行标记。可以存在N列,每一个MAC运算一列。
图2示出了2个位线处理器,第一位线处理器被标记为118a,用于将A0乘以k0,第二位线处理器被标记为118b,用于将An乘以kn,其中n可以是要由MAC单元100累积的项的数量。例如,n可以是15。
每一个位线处理器118都可以将其要相乘的输入数据存储到数据部分120中,其中图2示出了数据部分120a和120b。例如,第一M行可以存储Ai的位,第二M行可以存储ki的位,其中Ai和ki可以是8位字(即M=8)、16位字(即M=16)等。
控制器116可以激活每一个位线处理器118中的行的组以将Ai乘以ki,例如根据US2019/0278566中描述的关联乘法运算。乘法运算可能需要标记为122的几行,以用于存储中间结果并处理取整运算以将结果取整为M位。这通常可能花费多个周期,但是在每一个位线处理器118中同时发生。因此,在操作结束时,已经生成了所有列的所有乘法结果Aiki。乘法结果Aiki可以存储在另一个m行的(在此标记为124的)结果部分中。
现在参考图3和图4,其示出了多-位分层加法器114的操作。图3示出了A0k0和A1k1的结果部分120。
控制器116可以激活每一个位线处理器118中的行的组以实现多-位分层加法器114。多-位分层加法器114可以根据诸如图4所示并且在下文进行描述的金字塔运算来对Aiki进行相加。
在第一步中,例如根据US 2018/0157621,多-位分层加法器114可以将相邻的偶数和奇数Aiki相加(即,可以相加A0k0+A1k1),并且针对所有偶数i可以将结果存储在奇数位线处理器118的结果部分120(即,在i=1、3、5、7等的位线处理器中)。
在第二步骤中,多-位分层加法器114可以将每第二行(即,每一个奇数行i=1、3等)的Aiki相加,并且可以将结果存储在第四行(即,i=3、7、11等)中。
在第三步骤中,多-位分层加法器114可以将每第四行的Aiki相加(即,i=3、7、11等),并可以将结果存储在第八行(即i=7,15)中。
最后,在第四步骤中,多-位分层加法器114可以将每第八行(即i=7、15)的Aiki相加,并且可以将结果存储在第十六行(即i=15)中。
换句话说,在每一个步骤中,可以以金字塔的方式将最近生成的总和相加到其最近生成的相邻总和中,直到所有数据都已被相加在一起。这在所有列上立刻发生。然后可以将结果作为MAC单元100的乘法-累加运算的结果提供给每一列。
应当理解的是,用于每一个乘法-累加运算的数据在单个列中存储和操作。然而,乘法和加法中的每一个都在阵列的整个行上执行。因此,乘法和加法中的每一个都并行执行。结果是大规模并行乘法-累加运算。
应当理解的是,MAC单元100可以使需要大量MAC运算的所有运算加速,例如卷积、图像处理操作、数字信号处理操作等。
应当理解的是,要被相乘和累加的数据必须像现有技术那样被存储在列中而非行中。
现在参考图5、图6和图7,其示出了可以利用MAC单元100的图像处理操作。图5示出了具有像素210的行和列的图像200以及用于处理图像200的图像滤波器Q。图6示出了具有图像滤波器Q的标准图像处理操作。并且图7示出了其在MAC单元100中的实施方式。
图像滤波器Q可以是3×3矩阵,并且可以与图像200的像素的每一个3×3块Bp进行卷积(图6)。在卷积过程中,图像滤波器Q沿图像200移动,如图6的蛇行箭头220所示。卷积过程创建了较小的结果图像,其中每一个像素都是BpQ的矩阵相乘。然而,卷积过程很耗时,因为必须对每一个块Bp进行矩阵乘法运算。
如图7所示,可以使用MAC单元100在计算上更有效地实现卷积过程。在该示例中,每一列都处理一个块Bp,其中可能存在L个块Bp,并因此存在L个列。根据本发明的优选实施例,可以将图像滤波器Q的9个像素中的每一个像素都提供给每一列,以使得每一个Bp的9个像素中的每一个像素都可以乘以图像滤波器Q的9个像素中的一个相关联像素。图7示出了具有不同块Bp的每一列,以及在每一列重复的图像滤波器Q的每一个元素qi的单独行。
因此,每一个位线处理器118都可以存储来自其块Bp的一个像素的数据,来自图像滤波器Q的一个像素及其得到的的乘法结果,并且每一列的最终位线处理器118都可以在其列上产生乘法-累加运算的结果。
申请人已经认识到,利用足够的列,MAC单元100可以使图像200与多个滤波器Qt进行卷积。为此,MAC单元100可以将列划分为L个列的部分300,其中的每一个都可以将图像200的块存储在列中。为了应用单独的滤波器Qt,MAC单元100可以在每个部分300中存储不同的滤波器数据。因此,部分300a可以存储来自滤波器Q1的元素qi,而部分300b可以存储来自滤波器Q2的元素qi
应当理解的是,利用足够的列,MAC单元100可以在单个大规模并行运算中执行处理图像所需的所有不同类型的卷积。如果图像足够小或如果存在足够的列,则MAC单元100可以一次对多个图像执行图像处理。这可以极大地提高图像处理操作的速度。
应当理解的是,MAC单元100可以用于相似性搜索运算中常见的各种大规模并行矩阵乘法运算以及点积计算。
例如,代替对图像进行操作,MAC单元100可以对任何大的特征集合进行操作。在该实施例中,每一列都存储来自要处理的特征集的值,并且每一滤波器行(图7中示出了qi的行)都存储相关联滤波器的滤波器值,以使得每一个位线处理器都将一个像素值及其相关联的滤波器值保持为输入值对。
除非另有特别声明,如前面的讨论中显而易见的,应当理解的是,在整个说明书中,使用诸如“处理”、“计算”、“估算”、“确定”等术语的讨论是指任何类型的通用计算机(例如客户端/服务器系统、移动计算设备、智能设备或类似电子计算设备)的动作和/或过程,该类似电子计算设备将表示为计算系统的寄存器和/或存储器中的物理(例如电子)量的数据操作和/或转换为类似地表示为计算系统的存储器、寄存器或其它此类信息存储,传输或显示设备中的物理量的其他数据。
本发明的实施例可以包括用于执行本文的操作的装置。该装置可以被专门构造用于期望的目的,或者它可以包括通用计算机或由存储在计算机中的计算机程序选择性地激活或重新配置的客户端/服务器配置。当由软件指示时,所得的装置可以将通用计算机转变为本文所讨论的发明性元件。所述指令可以定义与所期望的计算机平台一起操作的本发明设备。这种计算机程序可以存储在计算机可读存储介质中,例如但不限于任何类型的磁盘(包括光盘、磁光盘、只读存储器(ROM)、易失性和非易失性存储器、随机存取存储器(RAM)、电可编程只读存储器(EPROM)、电可擦除和可编程只读存储器(EEPROM)、磁卡或光卡、闪存、密钥磁盘)或适用于存储电子指令并能够耦合到计算机系统总线的任何其它类型的介质。
本文所呈现的过程和显示与任何特定计算机或其它装置不是固有地相关。各种通用系统可以与根据本文的教导的程序一起使用,或者可以证明构造用于执行期望的方法的更专用装置是方便的。从下面的描述中将呈现各种这些系统的所需结构。另外,没有参考任何特定的编程语言来描述本发明的实施例。应当理解的是,可以使用各种编程语言来实现如本文所描述的本发明的教导。
尽管本文已经示出和描述了本发明的某些特征,但是本领域普通技术人员现在将想到许多修改、替换、改变和等同物。因此,应当理解的是,所附权利要求书旨在涵盖落入本发明的真实精神内的所有这些修改和改变。

Claims (15)

1.一种存储器中的乘法器-累加器,包括:
非破坏性、非易失性存储器阵列,所述存储器阵列具有多个行和列,每一列都被划分为多个位线处理器,每一个位线处理器都对其相关联的多位输入值对进行操作;以及
控制器,所述控制器用于一次激活所述存储器阵列中的至少两行,以在每一列中并行执行以下运算:
每一个所述位线处理器将其所述相关联的多位输入值对相乘以生成乘法结果;并且
累加所述每一列的位线处理器的乘法结果。
2.根据权利要求1所述的乘法器-累加器,其中每一个所述位线处理器包括存储所述相关联的多位输入值对的数据部分、中间结果区域以及存储其所述乘法结果的结果部分。
3.根据权利要求2所述的乘法器-累加器,其中所述累加包括:以金字塔的方式激活所述结果部分的所述行,以便一次对一列上的两个乘法结果相加。
4.根据权利要求1所述的乘法器-累加器,其中每一列都存储来自要处理的不同特征集的特征值,并且其中选定的行集合存储相关联滤波器的滤波器值,以使得每一个位线处理器都保持一个特征值及其相关联的滤波器值作为所述输入值对。
5.根据权利要求4所述的乘法器-累加器,其中所述存储器阵列在其列中存储所述特征集的至少两个副本。
6.根据权利要求5所述的乘法器-累加器,其中针对所述特征集的每一个副本,不同的滤波器值被存储在其位线处理器中,以使得所述特征集的每一个副本通过不同的滤波器进行滤波。
7.根据权利要求4所述的乘法器-累加器,其中所述存储器阵列在其列中存储至少两个特征集。
8.根据权利要求4所述的乘法器-累加器,其中每一个特征集是要处理的图像的不同块,并且其中所述滤波器值是至少一个图像处理滤波器的值。
9.一种用于存储器中的乘法器-累加器的方法,所述方法包括:
将具有多个行和列的存储器阵列的列划分为多个位线处理器,每一个位线处理器对其相关联的多位输入值对进行操作;以及
一次激活所述存储器阵列的至少两行,以在每一列中并行执行以下操作:
每一个所述位线处理器将其所述相关联的多位输入值对相乘以生成乘法结果;以及
累加所述每一列的位线处理器的乘法结果。
10.根据权利要求9所述的方法,其中所述累加包括以金字塔的方式激活每一个位线处理器的结果部分的行,以便一次对一列上的两个乘法结果相加。
11.根据权利要求9所述的方法,包括在每一个列中存储来自要处理的不同特征集的特征值;以及在选定的行集合中存储相关联的滤波器的滤波器值,以使得每一个位线处理器保持一个特征值及其相关联的滤波器值作为所述输入值对。
12.根据权利要求11所述的方法,包括在所述存储器阵列的列中存储所述特征集的至少两个副本。
13.根据权利要求12所述的方法,其中针对所述特征集的每一个副本,将不同的相关联滤波器值存储在其位线处理器中,以使得所述特征集的每一个副本通过不同的相关联滤波器进行滤波。
14.根据权利要求12所述的方法,包括将至少两个特征集存储在所述存储器阵列的列中。
15.根据权利要求11所述的方法,其中每一个特征集是要处理的图像的不同块,并且其中所述滤波器值是至少一个图像处理滤波器的值。
CN201911164501.2A 2018-11-26 2019-11-25 大规模并行关联乘法器-累加器 Active CN111221500B (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US16/199,258 2018-11-26
US16/199,258 US10891991B2 (en) 2018-11-26 2018-11-26 Massively parallel, associative multiplier accumulator

Publications (2)

Publication Number Publication Date
CN111221500A CN111221500A (zh) 2020-06-02
CN111221500B true CN111221500B (zh) 2022-10-28

Family

ID=70770001

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201911164501.2A Active CN111221500B (zh) 2018-11-26 2019-11-25 大规模并行关联乘法器-累加器

Country Status (3)

Country Link
US (1) US10891991B2 (zh)
KR (1) KR102510924B1 (zh)
CN (1) CN111221500B (zh)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11748100B2 (en) * 2020-03-19 2023-09-05 Micron Technology, Inc. Processing in memory methods for convolutional operations

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8238173B2 (en) * 2009-07-16 2012-08-07 Zikbit Ltd Using storage cells to perform computation
CN103543983A (zh) * 2012-07-11 2014-01-29 世意法(北京)半导体研发有限责任公司 用于提高平衡吞吐量数据路径架构上的fir操作性能的新颖数据访问方法
US9418719B2 (en) * 2013-11-28 2016-08-16 Gsi Technology Israel Ltd. In-memory computational device

Family Cites Families (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20000052725A (ko) * 1996-10-23 2000-08-25 제이. 알. 드로우일래드 비트-시리얼에 근거한 회귀성 뉴로프로세서를 포함하는 차량용 엔진 불발 감지 장치
US6968445B2 (en) * 2001-12-20 2005-11-22 Sandbridge Technologies, Inc. Multithreaded processor with efficient processing for convergence device applications
US6683804B1 (en) * 2002-07-16 2004-01-27 Analog Devices, Inc. Read/write memory arrays and methods with predetermined and retrievable latent-state patterns
US7543013B2 (en) * 2006-08-18 2009-06-02 Qualcomm Incorporated Multi-stage floating-point accumulator
US20100122070A1 (en) * 2008-11-07 2010-05-13 Nokia Corporation Combined associative and distributed arithmetics for multiple inner products
CN109074845B (zh) * 2016-03-23 2023-07-14 Gsi 科技公司 存储器内矩阵乘法及其在神经网络中的使用
US10534836B2 (en) 2016-12-06 2020-01-14 Gsi Technology Inc. Four steps associative full adder

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8238173B2 (en) * 2009-07-16 2012-08-07 Zikbit Ltd Using storage cells to perform computation
CN103543983A (zh) * 2012-07-11 2014-01-29 世意法(北京)半导体研发有限责任公司 用于提高平衡吞吐量数据路径架构上的fir操作性能的新颖数据访问方法
US9418719B2 (en) * 2013-11-28 2016-08-16 Gsi Technology Israel Ltd. In-memory computational device

Also Published As

Publication number Publication date
KR102510924B1 (ko) 2023-03-15
US10891991B2 (en) 2021-01-12
CN111221500A (zh) 2020-06-02
KR20200063077A (ko) 2020-06-04
US20200168257A1 (en) 2020-05-28

Similar Documents

Publication Publication Date Title
CN111465924B (zh) 用于将矩阵输入转换为矩阵处理器的向量化输入的系统和方法
KR102557589B1 (ko) 가속화된 수학 엔진
CN108153512B (zh) 四步关联全加器
US10853448B1 (en) Hiding latency of multiplier-accumulator using partial results
US11934798B2 (en) Counter-based multiplication using processing in memory
CN109426483B (zh) 并发多位加法器
US20120072704A1 (en) "or" bit matrix multiply vector instruction
US20200104669A1 (en) Methods and Apparatus for Constructing Digital Circuits for Performing Matrix Operations
CN111221500B (zh) 大规模并行关联乘法器-累加器
US20240192962A1 (en) Pipeline architecture for bitwise multiplier-accumulator (mac)
CN113485750B (zh) 数据处理方法及数据处理装置
US20080288756A1 (en) "or" bit matrix multiply vector instruction
CN110244932A (zh) 用于关联存储器中的长加法和长乘法的系统和方法
US20210294608A1 (en) Processing in memory methods for convolutional operations
US20230289287A1 (en) Programmable Multi-Level Data Access Address Generator
EP1162545A2 (en) Fast fourier transform (FFT) architecture
US20230244600A1 (en) Process for Generation of Addresses in Multi-Level Data Access
CN111831207B (zh) 一种数据处理方法、装置及其设备
AU2950095A (en) Method and system for storing data in a memory device
WO2020059156A1 (en) Data processing system, method, and program
US11610095B2 (en) Systems and methods for energy-efficient data processing
CN110866597B (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
GR01 Patent grant
GR01 Patent grant