CN114830136A - 功率高效的近存储器模拟乘法和累加(mac) - Google Patents

功率高效的近存储器模拟乘法和累加(mac) Download PDF

Info

Publication number
CN114830136A
CN114830136A CN202080088382.1A CN202080088382A CN114830136A CN 114830136 A CN114830136 A CN 114830136A CN 202080088382 A CN202080088382 A CN 202080088382A CN 114830136 A CN114830136 A CN 114830136A
Authority
CN
China
Prior art keywords
memory system
near memory
mac circuit
mac
bit
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
CN202080088382.1A
Other languages
English (en)
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.)
Qualcomm Inc
Original Assignee
Qualcomm 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 Qualcomm Inc filed Critical Qualcomm Inc
Publication of CN114830136A publication Critical patent/CN114830136A/zh
Pending legal-status Critical Current

Links

Images

Classifications

    • 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
    • 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
    • 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
    • G06JHYBRID COMPUTING ARRANGEMENTS
    • G06J1/00Hybrid computing arrangements
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/04Architecture, e.g. interconnection topology
    • 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
    • G06N3/065Analogue means
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/08Learning methods
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C11/00Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor
    • G11C11/21Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using electric elements
    • G11C11/34Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using electric elements using semiconductor devices
    • G11C11/40Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using electric elements using semiconductor devices using transistors
    • G11C11/41Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using electric elements using semiconductor devices using transistors forming static cells with positive feedback, i.e. cells not needing refreshing or charge regeneration, e.g. bistable multivibrator or Schmitt trigger
    • G11C11/412Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using electric elements using semiconductor devices using transistors forming static cells with positive feedback, i.e. cells not needing refreshing or charge regeneration, e.g. bistable multivibrator or Schmitt trigger using field-effect transistors only
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C11/00Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor
    • G11C11/21Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using electric elements
    • G11C11/34Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using electric elements using semiconductor devices
    • G11C11/40Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using electric elements using semiconductor devices using transistors
    • G11C11/41Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using electric elements using semiconductor devices using transistors forming static cells with positive feedback, i.e. cells not needing refreshing or charge regeneration, e.g. bistable multivibrator or Schmitt trigger
    • G11C11/413Auxiliary circuits, e.g. for addressing, decoding, driving, writing, sensing, timing or power reduction
    • G11C11/417Auxiliary circuits, e.g. for addressing, decoding, driving, writing, sensing, timing or power reduction for memory cells of the field-effect type
    • G11C11/418Address circuits
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C11/00Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor
    • G11C11/21Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using electric elements
    • G11C11/34Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using electric elements using semiconductor devices
    • G11C11/40Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using electric elements using semiconductor devices using transistors
    • G11C11/41Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using electric elements using semiconductor devices using transistors forming static cells with positive feedback, i.e. cells not needing refreshing or charge regeneration, e.g. bistable multivibrator or Schmitt trigger
    • G11C11/413Auxiliary circuits, e.g. for addressing, decoding, driving, writing, sensing, timing or power reduction
    • G11C11/417Auxiliary circuits, e.g. for addressing, decoding, driving, writing, sensing, timing or power reduction for memory cells of the field-effect type
    • G11C11/419Read-write [R-W] circuits
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C11/00Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor
    • G11C11/54Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using elements simulating biological cells, e.g. neuron
    • 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/48Indexing scheme relating to groups G06F7/48 - G06F7/575
    • G06F2207/4802Special implementations
    • G06F2207/4814Non-logic devices, e.g. operational amplifiers
    • 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/48Indexing scheme relating to groups G06F7/48 - G06F7/575
    • G06F2207/4802Special implementations
    • G06F2207/4818Threshold devices
    • G06F2207/4824Neural networks

Landscapes

  • Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Health & Medical Sciences (AREA)
  • Life Sciences & Earth Sciences (AREA)
  • Biomedical Technology (AREA)
  • Computing Systems (AREA)
  • Biophysics (AREA)
  • General Engineering & Computer Science (AREA)
  • Computer Hardware Design (AREA)
  • Molecular Biology (AREA)
  • General Health & Medical Sciences (AREA)
  • Evolutionary Computation (AREA)
  • Mathematical Physics (AREA)
  • Software Systems (AREA)
  • Microelectronics & Electronic Packaging (AREA)
  • Computational Linguistics (AREA)
  • Data Mining & Analysis (AREA)
  • Artificial Intelligence (AREA)
  • Neurology (AREA)
  • Computational Mathematics (AREA)
  • Mathematical Analysis (AREA)
  • Mathematical Optimization (AREA)
  • Pure & Applied Mathematics (AREA)
  • Automation & Control Theory (AREA)
  • Fuzzy Systems (AREA)
  • Memory System (AREA)

Abstract

提供了一种近存储器***,用于机器学习应用中的层的计算。近存储器***包括用于存储滤波器权重阵列的存储器单元阵列。乘法和累加电路耦合到阵列中的列以形成层的计算。

Description

功率高效的近存储器模拟乘法和累加(MAC)
相关申请的交叉引用
本专利申请要求于2019年12月19日提交的题为“POWER EFFICIENT NEAR MEMORYANALOG MULTIPLY-AND-ACCUMULATE(MAC)”的非临时申请No.16/721,819的优先权,该申请已转让给本申请的受让人,并且在本文中通过引用被明确地并入。
技术领域
本申请涉及乘法和累加(multiply-and-accumulate,MAC)电路,更具体地,涉及一种功率高效的近存储器模拟MAC。
背景技术
数据的计算机处理通常使用冯诺依曼(Von Neumann)架构,其中数据从存储器中被检索以在算术和逻辑单元中进行处理。在诸如机器学习的计算密集型应用中,来自和去往存储器的数据流成为处理速度的瓶颈。为了解决这种数据移动瓶颈,已经开发了近存储器架构,其中数据处理硬件邻近存储器单元。
发明内容
根据本发明的第一方面,提供了一种近存储器***,包括:存储器单元阵列,被布置成多个行和多个列,其中每一行被配置为存储用于机器学习应用中的层的多个滤波器权重;以及乘法和累加(MAC)电路,被耦合到每一列,该MAC电路被配置为将来自行中的一存取行的多个滤波器权重与对应的多个输入相乘以提供多个乘积,该MAC电路还被配置为对多个乘积求和以提供层的输出。
根据本发明的第二方面,提供了一种近存储器***,包括:多个存储器单元阵列,其中每个阵列布置成多个行和列,并且其中每个行还被配置为存储用于机器学习应用中的层的多个滤波器权重,并且其中每个存储器单元阵列被细分为多个子阵列;以及多个乘法和累加(MAC)电路,该多个MAC电路对应于多个子阵列,每个MAC电路耦合到对应子阵列中的每一列,每个MAC电路被配置为将来自对应子阵列中的行中的一存取行的多个滤波器权重与对应的多个输入相乘以提供多个乘积,该MAC电路还被配置为对多个乘积求和以提供总和,并且其中每个阵列还包括加法器以将来自阵列的MAC电路的总和相加以形成阵列的输出。
根据本发明的第三方面,提供了一种用于近存储器***的方法,包括:断言用于存储器单元行的字线,以检索针对用于机器学习应用的层中的输出神经元的多个滤波器权重;在被耦合到存储器单元行的乘法和累加电路中,将多个滤波器权重与多个输入神经元相乘以形成多个乘积;以及对多个乘积求和以计算输出神经元的值。
通过以下详细描述可以更好地理解这些和其他有利特征。
附图说明
图1图示了用于神经网络的常规全连接层。
图2A图示了根据本公开的一方面的具有数字乘法和累加(MAC)电路的近存储器***。
图2B图示了根据本公开的一方面的用于近存储器***的位单元和解码器。
图3图示了根据本公开的一方面的分段式近存储器***。
图4图示了根据本公开的一方面的具有模拟MAC电路的近存储器***,其中滤波器权重和输入神经元权重都是单位(single-bit)信号。
图5图示了根据本公开的一方面的具有模拟MAC电路的近存储器***,其中滤波器权重是单位权重并且输入神经元权重是多位(multi-bit)权重。
图6图示了根据本公开的一方面的具有模拟MAC电路的近存储器***,其中滤波器权重和输入神经元权重都是多位权重。
图7是根据本公开的一方面的用于近存储器***的示例性操作方法的流程图。
图8图示了各自包含根据本公开的一方面的近存储器***的一些示例性电子***。
通过参考下面的详细描述,可以最好地理解本公开的实施例及其优势。应当理解,相同的附图标记用于标识一个或多个附图中示出的相同元件。
具体实施方式
一种近存储器架构被提供有乘法和累加(MAC)电路,以用于将来自机器学习应用中的前一层的多个输入神经元与多个滤波器权重相乘以形成多个乘积。MAC电路对乘积求和以计算针对机器学习应用中的层(例如,全连接层)的输出神经元。虽然以下讨论针对机器学习实施例,但是应当理解,可以使用具有如本文中所公开的MAC电路的近存储器来计算其他类型的输入向量与滤波器权重的相乘。图1示出了具有M个输出神经元的示例全连接层100。M个输出神经元的范围从第0个输出神经元到第(M-1)个输出神经元。前一层105包括从第0个输入神经元到第(N-1)个输入神经元的N个输入神经元。通常,整数N基本上大于整数M。为了清楚地说明,针对每个层仅示出了前两个和最后一个神经元。
全连接层100中的每个输出神经元接收前一层105中的每个输入神经元的加权版本。例如,全连接层100中的输入神经元0接收第0个输入神经元的加权版本、第一输入神经元的加权版本、以此类推至第(N-1)个输入神经元的加权版本。因此,全连接层100中的每个输出神经元与用于对来自前一层105的输入神经元进行加权的N个权重相关联。如本文中所使用的,用于全连接层100中的输出神经元的权重被共同表示为滤波器。因此,每个权重也被表示为滤波器权重。本文公开了一种具有位单元阵列的存储器,用于存储对应的滤波器。位单元阵列按行和列来布置。如果每个滤波器权重是一位滤波器权重,则每一行可以与用于输出神经元的滤波器相对应。例如,假设有128个具有一位滤波器权重的输出神经元,则位单元阵列将具有128行。在这样的实施例中,位单元阵列的列数对应于输入神经元的数目。在备选实施例中,滤波器权重可以是多位滤波器权重。因此,在这种多位滤波器权重实施例中,每个滤波器将对应于一组行。每组行中的行数与针对多位滤波器权重实施例的宽度(位数)相对应。在每组行中,每一行将与多位权重中的一位相对应,如本文中将进一步解释的。
为了计算针对输出神经元的值,读取操作发生在一位滤波器权重实施例中的对应行上(或顺序地跨在多位权重实施例中的对应组的行)以存取所存储的滤波器权重。然后将被存取的所存储的滤波器权重乘以对应的输入神经元。来自所存储的滤波器权重与其对应的输入神经元的所有乘法的乘积被求和以形成输出神经元。虽然可以使用存储器中计算位单元来执行所存储的滤波器权重与对应的输入神经元的乘法,但是应注意,在机器学习应用中,全连接层具有大多数权重。存储器中计算位单元明显大于传统的六晶体管(6T)静态随机存取存储器(SRAM)位单元。因此,在用于实现全连接层的存储器中计算架构中存储滤波器权重将需要相对大量的管芯空间(例如,大约是常规6T位单元阵列所需的四倍)。此外,用于存储器中计算实现的读取和写入能量相对较高。
因此,公开了一种在一些实施例中包括按行和列而布置的用于存储滤波器权重的6T位单元阵列的近存储器架构。这些行对应于滤波器,使得针对每个输出神经元存在一行(或在多位滤波器权重实施例中的一组行)位单元。在读取操作中一次存取一行位单元以检索所存储的滤波器权重,以便计算对应的输出神经元。具体地,每一位单元行具有其自己的字线,而每一位单元列具有其由位线和互补位线形成的位线对。为了计算输出神经元,断言用于字线的电压。然后根据在所访问的位单元中存储的权重对每一列的位线对进行充电。为了执行如由列的带电位线对所表示的该所存储的权重的乘法,每一列与MAC电路相关联,该MAC电路执行所存储的权重与对应的输入神经元的乘法。MAC电路对所得乘积求和以完成针对输出神经元的计算。
图2A中示出了用于一位滤波器权重实施例的示例近存储器***200。位单元阵列(例如,六晶体管(6T)位单元)以行和列来布置。每一行与用于输出神经元的滤波器相对应。换言之,跨行的位单元存储用于输出神经元的滤波器权重。每一行在一对一的基础上对应于输出神经元。为了简洁起见,本文也将每个输出神经元表示为输出。类似地,为了简洁起见,本文也将每个输入神经元表示为输入。由于针对每个输入存在滤波器权重,每个位单元列在一对一的基础上对应于一个输入。为了清楚地说明,在图2A中仅标出了第一位单元行(滤波器1)和第二位单元行(滤波器2)。每个位单元列具有由位线(BL)和补位线(BLB)形成的位线对。MAC电路205计算用于输出的滤波器权重与对应输入的乘法。在该乘法中,第一输入乘以第一滤波器权重以形成第一乘积,第二输入乘以第二滤波器权重以形成第二乘积,以此类推。MAC电路对来自被存取行的所得乘积求和,以计算全连接层的对应输出。该计算在逐个滤波器的基础(相当于逐个输出的基础)上进行。为了存取一行被存储的滤波器权重,断言针对该行的字线(未示出)。然后,用于每一列的位线利用用于该位单元的被存储的滤波器权重在该列与所存取的行的相交处被充电。为了根据被存储的滤波器权重来自带电位线对来做出位决策,MAC电路205包括用于每一列的感测放大器(SA)。然而,应注意,在备选实施例中可以删除感测放大器。例如,在备选实施例中,感测放大器可以由锁存器替换。此外,MAC电路205还包括逻辑门,诸如用于每一列的异或非(XNOR)逻辑门。每一列的XNOR门从该列的感测放大器接收被存储的滤波器权重。在备选实施例中,可以使用异或(XOR)门或其他合适的逻辑门来执行二进制乘法。在没有感测放大器的一些实施例中,每个XNOR门直接接收真位线(或补位线)。
为了说明的目的,近存储器***200仅包括八个位单元列。为了清楚地说明,在图2A中仅注明了第一列210。因此,这八个列与范围从输入神经元IN1到输入神经元IN8的八个输入神经元相对应。每个列的XNOR门对该列的被存储的滤波器权重与该列的输入神经元进行XNOR,以计算针对二进制乘法的乘积。MAC电路205包括数字加法器,以将乘积(XNOR门输出信号)相加,来完成针对被存取行的输出神经元的计算。因此,MAC电路205将循序地计算各种输出神经元。这产生了一些时延,但是由于全连接层的输出神经元的数目通常相对较小,所以这是可管理的。
图2B更详细地示出了用于近存储器***200的示例位单元220。在一些实施例中,所存储的滤波器权重由交叉耦合的反相器对215锁存。每个反相器可以由p型金属氧化物半导体(PMOS)晶体管和n型金属氧化物半导体(NMOS)晶体管的串联组合形成。针对反相器中的一个反相器的Q输出节点提供一位滤波器权重。相反,针对反相器中的剩余反相器的QB输出节点提供一位滤波器权重的补码。在用于存取包括位单元220的行的读取操作期间,断言用于字线(WL)的字线电压。字线WL驱动NMOS存取晶体管M1和NMOS存取晶体管M2的栅极。存取晶体管M1耦合在Q输出节点和用于包括位单元220的列的位线BL之间。类似地,存取晶体管M2耦合在QB输出节点与用于该列的补位线BLB之间。当字线WL被断言时,存取晶体管M1和M2接通,使得位线中的一个位线被放电,同时另一个保持其预充电状态。由于交叉耦合的反相器215需要四个晶体管,用于位单元220的晶体管的总数是六个晶体管,这对于SRAM位单元是常规的。诸如解码器225的控制器控制字线WL的断言。控制器的该断言是用于近存储器***200的字线的循序断言的部分。例如,控制器可以断言用于第一行的字线以计算全连接层的第一输出,然后断言用于第二行的字线以计算全连接层的第二输出,依此类推。
尽管输出神经元的数目相对较小,但用于近存储器***200的处理能量可能仍然是显著的。例如,假设有128个位单元行。跨如此多的行延伸的位线可以具有大量的电容。利用这种升高的位线电容,由于位线对中的位线在读操作期间被放电,在针对被存储的滤波器权重的读取操作之后对位线对的充电需要将对应量的电荷放电到接地。为了减少时延并降低功耗,可以如图3所示对用于近存储器***300的位单元阵列进行分段。例如,假设图2的近存储器***200具有128个位单元行。再次参考图1,滤波器存储用于输出神经元的权重。例如,输出神经元0需要N个滤波器权重来乘以N个对应的输入神经元。因此,针对第零个输入神经元存在第零个滤波器权重,针对第一个输入神经元存在第一个滤波器权重,依次类推。每个输入神经元乘以其对应的滤波器权重以形成乘积。对应的输出神经元是所有所得乘积的总和。没有分段,针对128个滤波器和1024个输入神经元的阵列将是128行和1024列的阵列。
这种阵列在近存储器***300中被分段成第一阵列305、第二阵列310、第三阵列315和第四阵列320。由于分段,在近存储器***300中将应形成未被分段实施例中的滤波器的128个位单元的列细分成第一阵列305中的32个位单元的列、第二阵列310中的32个位单元的对应列、第三阵列315中的32个位单元的对应列以及第四阵列320中的32个位单元的对应列。应当理解,分段在备选实施例中可以变化。每个阵列包括以1024列布置的32个位单元行。在一些实施例中,半导体制造工艺不能支持跨这种相对大量的列而延伸的字线。因此,每个位单元阵列可以被细分成32行×128列(32×128)的子阵列。由于存在1024列,对于每个阵列,在近存储器300中每个位单元阵列存在八个子阵列,但是应当理解,在备选实施例中,列的数目和行的数目可以变化。每个子阵列具有其自己的MAC电路。由于将阵列划分成子阵列,来自阵列的每个MAC电路的累加输出由加法器(ADDER)求和,以生成全连接层的输出。
应当理解,可以使用任何合适的存储器技术来构造图3中所示的位单元的分段阵列。例如,阵列305、310、315和320可以是SRAM位单元、铁电RAM(FRAM)位单元、磁性RAM(MRAM)位单元、电阻式RAM(RRAM)位单元或相变存储器(PCM)位单元的阵列。
所得到的阵列(诸如阵列305、310、315和320)的分段在减少时延方面是非常有利的。在每个阵列内,如由诸如关于近存储器***200所论述的控制器控制而循序地发生对行的处理。但是近存储器***300中的分段导致同时处理四行,以便比近存储器***200快四倍。更一般地,如果来自分段的阵列的数目是N,则全连接层的计算将比没有分段的可比较计算快N倍。另外,由于与诸如近存储器***200的非分段架构相比,用于每个阵列的位线跨数目减少的行而延伸,用于存取行的读取能量因分段而减少。应当理解,在备选实施例中,每个加法器的输出可以由量化器(未示出)量化。因为MAC电路在位单元阵列之外,MAC电路容易被修改以支持多位滤波器权重和多位输入神经元。
前述实施例中的MAC电路中的数字处理消耗功率。为了减少此功率消耗,本文公开了利用模拟MAC电路的近存储器***。在图4中示出了具有模拟MAC电路405的一位输入神经元近存储器***400。如针对近存储器***200或300所讨论的,位单元(诸如6T位单元)阵列按行和列来布置。如关于数字MAC电路所讨论的,模拟MAC电路405包括用于每一列的逻辑门(诸如XNOR门)和感测放大器(SA)。模拟MAC电路405包括用于每一列的电容器C,而不是使用数字加法器。每一列的XNOR门驱动对应电容器C的第一板。每个电容器C的第二板被耦合到模数转换器(ADC)的输入。在MAC操作之前,通过将第二板耦合到电源节点同时将第一板接地来对每个第二板充电到电源电压。在一行被存取之后,每个XNOR门的输出将接地或充电到电源电压,这取决于其二进制乘法的结果。在XNOR门驱动第一板的同时,第二板保持被耦合到电源节点。因此,每个电容器C基于对应的XNOR操作被放电或保持充电。模数转换器(ADC)然后转换为电容器C保留的累积电荷以提供输出神经元值。
返回参考近存储器***200和300,应当理解,每个MAC电路可以被实现为模拟MAC电路405。所得到的模拟MAC操作是非常有利的,因为MAC功率消耗在数字MAC电路实施例中占主导地位。但是模拟MAC电路405的使用大幅降低了关于可比较的数字MAC实现的功率消耗。
图5中示出了用于单位滤波器权重和多位输入神经元层的模拟MAC电路500。为了清楚地说明,图5中未示出存储器阵列,因为它如针对近存储器***200、300和400所讨论的以行和列来布置。模拟MAC电路500类似于模拟MAC电路405,其中每一列与感测放大器(SA)、XNOR门和电容器C相关联。每个XNOR门以诸如从最低有效位到最高有效位增加的幅度逐位地循序处理其多位输入神经元。然后,循序累加器505将多位输入神经元的循序处理的结果与对应的滤波器权重相加。在由循序累加器505进行的循序累加中,来自多位输入神经元的每个位的电压根据其重要性被累加。例如,假设多位输入神经元是三位宽。每一位导致电容器C的第二板上的电压,该电压由循序累加器505根据该位的有效性来缩放。然后,循序累加器505将所得电压相加,以提供由ADC转换为输出神经元的数字值的累加电压。
滤波器权重本身可以是多位滤波器权重。图6中示出了用于多位滤波器权重和多位输入神经元层的模拟MAC电路600。为清楚地说明,图6中未示出位单元阵列,但如针对近存储器***200、300和400所讨论的,位单元阵列按行和列来布置。因为滤波器权重是多位的,单个滤波器权重需要用于其位的一组位单元行。根据针对多位滤波器权重的一组行中的行的重要性(诸如从最低有效位到最高有效位)来顺序地断言行。对于多位权重中的每一位,模拟MAC电路600如关于模拟MAC电路500所讨论的那样运行。因此,在模拟MAC电路600中存在用于每一列的感测放大器SA、XNOR门和电容器C以及循序累加器505。在一行被断言的同时,来自多位输入神经元的位由每个XNOR门利用来自多位滤波器权重的位顺序地处理,并且结果由顺序累加器505累加,如针对模拟MAC电路500所类似讨论的。第二循序累加器605(其也可以被指定为权重求和器605)在针对多位权重的一组行中的每一行被存取之后累加结果。累加是权重求和器605根据针对多位权重中的每一位的重要性来缩放以提供输出神经元值。
图7中示出了近存储器***方法的流程图。该方法包括动作700:断言用于存储器单元行的字线以检索针对用于机器学习应用的全连接层中的输出神经元的多个滤波器权重。用于近存储器***200和300中的任一的字线的断言是动作700的示例。类似地,用于包括模拟MAC电路400、500和600中的任何电路的近存储器***的字线的断言是动作700的示例。该方法还包括动作705:在被耦合到该存储器单元行的乘法和累加电路中,将多个滤波器权重与来自机器学习应用中的前一层的多个输入神经元相乘,以形成多个乘积。本文中所公开的MAC逻辑中的乘法是动作705的示例。最后,该方法包括对多个乘积求和以计算针对输出神经元的值的动作710。本文中所公开的MAC电路对多个乘积求和是动作710的示例。
本文中所公开的近存储器***可以有利地被并入任何合适的移动设备或电子***中。例如,如图8所示,蜂窝电话800、膝上型计算机805和平板PC810都可以包括根据本公开的近存储器***。其他示例性电子***(诸如,音乐播放器,视频播放器,通信设备和个人计算机)也可以被配置有根据本公开而构造的近存储器***。
应当理解,在不脱离本发明的范围的情况下,可以对本公开的设备的材料、装置、配置和使用方法进行许多修改、替换和变化。鉴于此,本公开的范围不应限于本文中所示出和描述的特定实施例的范围,因为它们是仅通过其一些示例的方式,而是应与下文所附的权利要求及其功能等校的范围完全相称。

Claims (27)

1.一种近存储器***,包括:
存储器单元阵列,被布置成多个行和多个列,其中每一行被配置为存储用于机器学习应用中的层的多个滤波器权重;以及
乘法和累加(MAC)电路,被耦合到每一列,所述MAC电路被配置为将来自所述行中的一存取行的所述多个滤波器权重与所述层的多个输入相乘以提供多个乘积,所述MAC电路还被配置为对所述多个乘积求和以提供所述层的输出。
2.根据权利要求1所述的近存储器***,还包括:
多个字线,所述多个字线对应于所述多个行,每个字线跨越该字线的对应行而延伸;以及
控制器,被配置为:循序地断言所述字线以形成所述行中的所述一存取行。
3.根据权利要求1所述的近存储器***,其中每个存储器单元从由以下构成的组合中选择:静态随机存取存储器(SRAM)位单元、磁性RAM(MRAM)位单元、电阻式RAM(RRAM)位单元、铁电RAM(FRAM)位单元以及相变存储器(PCM)位单元。
4.根据权利要求3所述的近存储器***,其中每个SRAM位单元是六晶体管SRAM位单元。
5.根据权利要求1所述的近存储器***,其中所述MAC电路包括与所述多个列相对应的多个逻辑门,并且其中每个逻辑门被配置为将滤波器权重与输入相乘以形成二进制乘积。
6.根据权利要求5所述的近存储器***,其中每个逻辑门包括异或非(XNOR)门。
7.根据权利要求6所述的近存储器***,其中所述MAC电路还包括数字加法器以将来自每个XNOR门的输出相加。
8.根据权利要求6所述的近存储器***,其中所述MAC电路还包括:
多个电容器,所述多个电容器对应于所述多个XNOR门,并且其中每个XNOR门被配置为驱动用于所述对应电容器的第一板。
9.根据权利要求8所述的近存储器***,其中所述MAC电路还包括模数转换器,所述模数转换器被耦合到用于每个电容器的第二板。
10.根据权利要求8所述的近存储器***,其中每个输入是多位输入,所述MAC电路还包括循序累加器,所述循序累加器被耦合到每个电容器的第二板,其中所述循序累加器被配置为:根据所述多位输入的串行处理来循序地对来自每个第二板的电荷进行累加,以提供累加结果。
11.根据权利要求10所述的近存储器***,其中所述层是全连接层,并且其中所述MAC电路还包括模数转换器,所述模数转换器被配置为将所述累加结果转换为全连接层的输出。
12.一种近存储器***:
多个存储器阵列,其中每个阵列被布置成多个行和列,并且其中每个行被配置为存储用于机器学习应用中的层的多个滤波器权重,并且其中每个存储器单元阵列被细分为多个子阵列;以及
多个乘法和累加(MAC)电路,所述多个MAC电路对应于所述多个子阵列,每个MAC电路被耦合到对应子阵列中的每一列,每个MAC电路被配置为将来自所述对应子阵列中的行中的一存取行的所述多个滤波器权重与对应的多个输入相乘以提供多个乘积,所述MAC电路还被配置为对所述多个乘积求和以提供总和,并且其中每个阵列还包括加法器以将来自所述阵列的MAC电路的所述总和相加以形成所述阵列的输出。
13.根据权利要求12所述的近存储器***,其中每个存储器单元是静态随机存取存储器(SRAM)位单元。
14.根据权利要求13所述的近存储器***,其中每个SRAM位单元是六晶体管SRAM位单元。
15.根据权利要求12所述的近存储器***,其中每个MAC电路包括多个逻辑门,所述多个逻辑门对应于所述对应子阵列中的多个列,并且其中每个逻辑门被配置为将滤波器权重与所述输入中的对应输入相乘以形成二进制乘积。
16.根据权利要求15所述的近存储器***,其中每个逻辑门包括异或非(XNOR)门。
17.根据权利要求16所述的近存储器***,其中每个MAC电路还包括数字加法器以将来自该MAC电路的XNOR门中的每个XNOR门的输出相加。
18.根据权利要求16所述的近存储器***,其中每个MAC电路还包括:
多个电容器,所述多个电容器对应于所述MAC电路中的所述多个XNOR门,并且其中每个XNOR门被配置为驱动用于对应电容器的第一板。
19.根据权利要求18所述的近存储器***,其中每个MAC电路还包括模数转换器,所述模数转换器被耦合到用于所述MAC电路中的每个电容器的第二板。
20.根据权利要求18所述的近存储器***,其中每个输入是多位输入,每个MAC电路还包括循序累加器,所述循序累加器被耦合到所述MAC电路的电容器中的每个电容器的第二板,其中所述MAC电路的循序累加器被配置为:循序地对来自用于所述MAC电路中的每个电容器的每个第二板的电荷进行累加,以用于对所述多位输入的串行处理,以提供累加结果。
21.根据权利要求20所述的近存储器***,其中所述层是全连接层,并且其中每个MAC电路还包括模数转换器,所述模数转换器被配置为将所述累加结果转换为数字值,并且其中每个加法器还被配置为:将来自所述阵列的MAC电路的所述数字值相加,以提供所述全连接层的输出。
22.根据权利要求12所述的近存储器***,其中所述近存储器***被集成到移动设备中。
23.根据权利要求22所述的近存储器***,其中所述移动设备是蜂窝电话。
24.一种用于近存储器***的方法,包括:
断言用于存储器单元行的字线,以检索针对用于机器学习应用的层中的输出神经元的多个滤波器权重;
在被耦合到所述存储器单元行的乘法和累加电路中,将所述多个滤波器权重与多个输入神经元相乘以形成多个乘积;以及
对所述多个乘积求和以计算所述输出神经元的值。
25.根据权利要求24所述的方法,还包括:
循序地断言额外字线,以循序地计算针对所述层中的额外输出神经元的值。
26.根据权利要求24所述的方法,其中对所述多个乘积求和包括:对来自多个电容器的电压进行数字化。
27.根据权利要求24所述的方法,其中对所述多个乘积求和包括数字求和。
CN202080088382.1A 2019-12-19 2020-12-11 功率高效的近存储器模拟乘法和累加(mac) Pending CN114830136A (zh)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US16/721,819 2019-12-19
US16/721,819 US11574173B2 (en) 2019-12-19 2019-12-19 Power efficient near memory analog multiply-and-accumulate (MAC)
PCT/US2020/064630 WO2021126706A1 (en) 2019-12-19 2020-12-11 Power efficient near memory analog multiply-and-accumulate (mac)

Publications (1)

Publication Number Publication Date
CN114830136A true CN114830136A (zh) 2022-07-29

Family

ID=74184872

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202080088382.1A Pending CN114830136A (zh) 2019-12-19 2020-12-11 功率高效的近存储器模拟乘法和累加(mac)

Country Status (4)

Country Link
US (1) US11574173B2 (zh)
EP (1) EP4078460A1 (zh)
CN (1) CN114830136A (zh)
WO (1) WO2021126706A1 (zh)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN118248193A (zh) * 2024-05-27 2024-06-25 安徽大学 基于参考电路动态匹配的高可靠性存内计算电路、芯片

Families Citing this family (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11586896B2 (en) * 2020-03-02 2023-02-21 Infineon Technologies LLC In-memory computing architecture and methods for performing MAC operations
US11823035B2 (en) * 2020-07-07 2023-11-21 Qualcomm Incorporated Power-efficient compute-in-memory pooling
US11551747B2 (en) * 2021-03-25 2023-01-10 Taiwan Semiconductor Manufacturing Company, Ltd. Computation apparatus and method using the same
US11899518B2 (en) 2021-12-15 2024-02-13 Microsoft Technology Licensing, Llc Analog MAC aware DNN improvement
CN114089950B (zh) * 2022-01-20 2022-05-27 中科南京智能技术研究院 一种多比特乘累加运算单元及存内计算装置

Citations (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN107818367A (zh) * 2017-10-30 2018-03-20 中国科学院计算技术研究所 用于神经网络的处理***和处理方法
CN107832081A (zh) * 2016-09-15 2018-03-23 美光科技公司 更新存储器中的寄存器的设备及方法
CN108536422A (zh) * 2017-03-03 2018-09-14 慧与发展有限责任合伙企业 模拟乘法器-累加器
US20190043560A1 (en) * 2018-09-28 2019-02-07 Intel Corporation In-memory multiply and accumulate with global charge-sharing
US20190042199A1 (en) * 2018-09-28 2019-02-07 Intel Corporation Compute in memory circuits with multi-vdd arrays and/or analog multipliers
CN109359269A (zh) * 2018-08-27 2019-02-19 北京大学 进行矩阵向量乘法运算的***及进行神经网络运算方法
US20190065151A1 (en) * 2018-09-28 2019-02-28 Intel Corporation Digital bit-serial multi-multiply-and-accumulate compute in memory
CN109844775A (zh) * 2016-12-02 2019-06-04 国立大学法人东京工业大学 神经网络电路装置、神经网络、神经网络处理方法及神经网络的执行程序
CN109948775A (zh) * 2019-02-21 2019-06-28 山东师范大学 一种可配置神经卷积网络芯片***及其配置方法
CN110209375A (zh) * 2019-05-30 2019-09-06 浙江大学 一种基于radix-4编码和差分权重存储的乘累加电路
CN110363292A (zh) * 2018-04-11 2019-10-22 深圳市九天睿芯科技有限公司 一种混合信号二进制cnn处理器
CN110414677A (zh) * 2019-07-11 2019-11-05 东南大学 一种适用于全连接二值化神经网络的存内计算电路

Family Cites Families (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
TWI705391B (zh) * 2018-05-29 2020-09-21 英屬開曼群島商意騰科技股份有限公司 適用於人工神經元的記憶體內運算記憶體裝置及記憶體內運算記憶體區塊
US20200401414A1 (en) * 2019-06-21 2020-12-24 Flex Logix Technologies, Inc. Multiplier-Accumulator Circuitry and Pipeline using Floating Point Data, and Methods of using Same
US10825536B1 (en) * 2019-08-30 2020-11-03 Qualcomm Incorporated Programmable circuits for performing machine learning operations on edge devices

Patent Citations (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN107832081A (zh) * 2016-09-15 2018-03-23 美光科技公司 更新存储器中的寄存器的设备及方法
CN109844775A (zh) * 2016-12-02 2019-06-04 国立大学法人东京工业大学 神经网络电路装置、神经网络、神经网络处理方法及神经网络的执行程序
CN108536422A (zh) * 2017-03-03 2018-09-14 慧与发展有限责任合伙企业 模拟乘法器-累加器
CN107818367A (zh) * 2017-10-30 2018-03-20 中国科学院计算技术研究所 用于神经网络的处理***和处理方法
CN110363292A (zh) * 2018-04-11 2019-10-22 深圳市九天睿芯科技有限公司 一种混合信号二进制cnn处理器
CN109359269A (zh) * 2018-08-27 2019-02-19 北京大学 进行矩阵向量乘法运算的***及进行神经网络运算方法
US20190043560A1 (en) * 2018-09-28 2019-02-07 Intel Corporation In-memory multiply and accumulate with global charge-sharing
US20190042199A1 (en) * 2018-09-28 2019-02-07 Intel Corporation Compute in memory circuits with multi-vdd arrays and/or analog multipliers
US20190065151A1 (en) * 2018-09-28 2019-02-28 Intel Corporation Digital bit-serial multi-multiply-and-accumulate compute in memory
CN109948775A (zh) * 2019-02-21 2019-06-28 山东师范大学 一种可配置神经卷积网络芯片***及其配置方法
CN110209375A (zh) * 2019-05-30 2019-09-06 浙江大学 一种基于radix-4编码和差分权重存储的乘累加电路
CN110414677A (zh) * 2019-07-11 2019-11-05 东南大学 一种适用于全连接二值化神经网络的存内计算电路

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
孔鑫 等: "一种面向卷积神经网络加速器的高性能乘累加器", 西安电子科技大学学报, vol. 47, no. 04, 19 March 2020 (2020-03-19), pages 55 - 63 *
陶常勇等: "人工神经网络加速方法综述与研究", 天津科技, no. 1, 15 December 2019 (2019-12-15), pages 28 - 30 *

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN118248193A (zh) * 2024-05-27 2024-06-25 安徽大学 基于参考电路动态匹配的高可靠性存内计算电路、芯片

Also Published As

Publication number Publication date
US11574173B2 (en) 2023-02-07
WO2021126706A1 (en) 2021-06-24
EP4078460A1 (en) 2022-10-26
US20210192324A1 (en) 2021-06-24

Similar Documents

Publication Publication Date Title
Liu et al. Parallelizing SRAM arrays with customized bit-cell for binary neural networks
US11574173B2 (en) Power efficient near memory analog multiply-and-accumulate (MAC)
Sun et al. Fully parallel RRAM synaptic array for implementing binary neural network with (+ 1,− 1) weights and (+ 1, 0) neurons
Chou et al. Cascade: Connecting rrams to extend analog dataflow in an end-to-end in-memory processing paradigm
Patil et al. An MRAM-based deep in-memory architecture for deep neural networks
TW202147320A (zh) 低功率記憶體內計算位元格
Sun et al. Computing-in-memory with SRAM and RRAM for binary neural networks
Chen et al. Partition SRAM and RRAM based synaptic arrays for neuro-inspired computing
US11996137B2 (en) Compute in memory (CIM) memory array
US20220269483A1 (en) Compute in memory accumulator
US11693560B2 (en) SRAM-based cell for in-memory computing and hybrid computations/storage memory architecture
KR20220110090A (ko) 컴퓨트 인 메모리
Mu et al. SRAM-based in-memory computing macro featuring voltage-mode accumulator and row-by-row ADC for processing neural networks
KR20220150895A (ko) 시간-공유 컴퓨트-인-메모리 비트셀
US20210343343A1 (en) Voltage offset for compute-in-memory architecture
Chen et al. MC 2-RAM: An in-8T-SRAM computing macro featuring multi-bit charge-domain computing and ADC-reduction weight encoding
JP2024510970A (ja) 三進活性化を用いたコンピュートインメモリ
Yu et al. A 4-bit mixed-signal MAC array with swing enhancement and local kernel memory
Cheon et al. A 2941-TOPS/W charge-domain 10T SRAM compute-in-memory for ternary neural network
Sehgal et al. Trends in analog and digital intensive compute-in-SRAM designs
CN115210810A (zh) 存储器内计算动态随机存取存储器
Wang et al. An 8T SRAM based digital compute-in-memory macro for multiply-and-accumulate accelerating
CN115424645A (zh) 计算器件、存储器控制器和执行存储器中计算的方法
Bharti et al. Compute-in-memory using 6T SRAM for a wide variety of workloads
Kim et al. SRAM-Based Processing-in-Memory (PIM)

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