掌桥专利:专业的专利平台
掌桥专利
首页

可配置的存储器内计算引擎、平台、位单元及其布局

文献发布时间:2023-06-19 10:22:47


可配置的存储器内计算引擎、平台、位单元及其布局

相关申请的交叉引用

本申请要求于2018年6月18日提交的美国临时专利申请序列号62/686,296、于2018年7月24日提交的美国临时专利申请序列号62/702,629、于2018年11月2日提交的美国临时专利申请序列号62/754,805和于2018年11月7日提交的62/756,951的权益,这些申请通过引用整体并入本文。

技术领域

本发明涉及存储器内计算(in-memory computing:存内计算、内存内计算、存算一体化、计算存储一体化)和矩阵向量乘法的领域。

背景技术

电荷域存储器内计算最近作为一种鲁棒的且可扩展的进行存储器内计算的方式出现。在这里,存储器位单元内的计算运算提供将结果作为电荷,典型地使用经由电容器的电压至电荷的转换进行。因此,位单元电路涉及给定位单元中的局部(local,局域、本地)电容器的适当切换,其中该局部电容器也适当地耦合到其他位单元电容器,以产生跨耦合的位单元的汇总计算结果。存储器内计算非常适合于实现矩阵向量乘法,其中矩阵元素存储在存储器阵列中,以及向量元素以并行方式在存储器阵列上广播。

发明内容

通过提供可编程或预编程的存储器内计算运算的系统、方法、架构、机构或设备来解决现有技术中的各种不足。

一个实施方式提供了一种存储器内计算架构,包括:整形(reshape,重塑、重组)缓冲区,其被配置为对接收到的数据字的序列进行整形以形成大规模并行的按位输入信号;位单元的存储器内计算(CIM)阵列,其被配置为通过第一CIM阵列维数接收大规模并行的按位输入信号,以及通过第二CIM阵列维数接收一个或更多个累加(accumulation,累积)信号,其中,与公共累加信号相关联的多个位单元中的每一个位单元形成被配置为提供相应输出信号的相应CIM通道;模数转换器(ADC)电路,其被配置为处理多个CIM通道输出信号,以由此提供多位输出字的序列;控制电路,其被配置为使CIM阵列使用单个位内部电路和信号来对输入信号和累加信号执行多位计算运算;以及近存储器计算路径,其被配置为提供多位输出字的序列作为计算结果。

本发明的其他目的、优点和新颖特征将在下面的描述中部分地被阐述,并且将在本领域技术人员考察下面的内容后对本领域技术人员而言部分地变得明显,或者可以通过本发明的实践被了解。本发明的目的和优点可以通过在所附权利要求中特别指出的手段和组合来实现和达到。

附图说明

并入本说明书并构成本说明书一部分的附图例示了本发明的实施方式,并与上面给出的对本发明的大体描述以及下面给出的对实施方式的详细描述一起用于解释本发明的原理。

图1描绘了一种存储器内计算架构的典型结构;

图2描绘了根据一实施方式的示例性架构的高层框图;

图3描绘了适合在图2的架构中使用的示例性存储器内计算单元(CIMU)的高层框图;

图4描绘了根据一实施方式并适合在图2的架构中使用的输入激活向量整形缓冲区(IA BUFF)的高层框图;

图5描绘了根据一实施方式并适合在图2的架构中使用的CIMA读/写缓冲区的高层框图;

图6描绘了根据一实施方式并适合在图2的架构中使用的近存储器数据路径(NMD)模块的高层框图;

图7描绘了根据一实施方式并适合在图2的架构中使用的直接存储器访问(DMA)模块的高层框图;

图8A至图8B描绘了适合在图2的架构中使用的不同实施方式的CIMA通道数字化/加权的高层框图;

图9描绘了根据一实施方式的方法的流程图;

图10描绘了乘法位单元的电路图;

图11描绘了被配置为执行XNOR功能的三个M-BC的电路图;

图12描绘了根据一实施方式的M-BC的电路图;

图13描绘了图13的M-BC的示例性IC;

图14A至图14B描绘了分别具有基于开关的耦合结构和无开关的耦合结构的位单元的框图;

图15描绘了根据一实施方式的具有无开关的耦合结构的位单元电路的电路图;以及

图16描绘了根据一实施方式的位单元布局的2路交错的电路图。

应当理解的是,附图不一定是按比例绘制的,呈现的是说明本发明基本原理的不同特征的某种简化表示。本文所公开的运算顺序的具体设计特征——包括例如各种图示部件的具体尺寸、定向、位置和形状——将部分地由特定的预期应用和使用环境确定。例示的实施方式的某些特征已经相对于其他特征被放大或变形,以便于形象化和清楚的理解。特别地,例如,为了清晰或例示,薄的特征可以被加厚。

具体实施方式

在进一步详细描述本发明之前,应理解的是,本发明并不限于所描述的特定实施方式,因为这样的实施方式当然可以变化。还应理解的是,本文使用的术语仅是为了描述特定的实施方式,而不是意在是限制性的,因为本发明的范围将仅由所附权利要求限制。

在提供了数值范围的情况下,要理解的是,在该范围以及任何其他阐明范围的上限和下限之间的每个中间值——除非上下文另有明确规定否则到下限的单位的十分之一——或该阐明范围内的中间值都包括在本发明内。这些较小范围的上限和下限可以独立地被包括在较小范围内,这也被包含在本发明内,但要经受规定范围中任何明确排除的界限。在规定范围包括界限中的一个或两个界限的情况下,排除这些包括的界限中的一个或两个的范围也被包括在本发明内。

除非另有定义,否则本文使用的所有技术和科学术语具有与本发明所属技术领域的普通技术人员通常理解的相同含义。尽管任何与本文描述的方法和材料相似或等同的方法和材料也可以用于本发明的实践或测试,但本文描述了有限数量的示例性方法和材料。必须注意的是,如本文和所附权利要求中所使用的,单数形式“一”、“一个”和“该”包括复数指代,除非上下文清楚地说明。

所公开的实施方式包括实现用于调制解调器VLSI实现的高效率线性代数计算架构的可编程性的系统和方法。本文所公开的计算架构被称为“存储器内计算”,并且该架构的可编程性将使得其能够在一系列应用中广泛使用,特别是用于机器学习和人工智能。所公开的方法引入了一系列围绕存储器内计算阵列的可配置性特征,这也使得其能够集成在可编程平台中,以解决目前针对广泛的机器学习和人工智能应用的能量和通量。

线性代数运算——最显著的是矩阵向量乘法——在新兴的工作负载中,特别是来自机器学习(ML)和人工智能(AI)的工作负载中,已经变得非常突出。往往矩阵和向量的维数可以相当大(通常>100)。由于元素在此类运算中的重用方式,元素通常存储在嵌入式或片外存储器中(取决于必须存储的元素数量)。在调制解调器VLSI技术中的实现已经表明,事实上,从这样的存储器中访问数据的能量和延迟大幅超过对数据进行实际计算的能量和延迟。这限制了常规加速器所能实现的能量/延迟的减少,该常规加速器将存储器和计算分开,并促使了存储器内计算的范式。在存储器内计算系统的环境中,不是从存储器中访问原始数据,而是访问在许多原始数据位上的计算结果,从而摊分(amortize,摊还、摊销)访问能量和延迟。

由此,所公开的系统、方法及其部分实现了用于调制解调器VLSI实现等的高效率线性代数计算架构的可配置性和可编程性,从而得到集成电路实现。本文所公开的计算架构可以广义地称为“存储器内计算”,并且该架构的可编程性实现了在一系列应用中的广泛使用,包括诸如如机器学习、人工智能和其他应用中使用的矩阵向量计算等。在不同的实施方式中,所公开的系统、方法及其部分使用采用并行和串行运算的混合模拟/数字计算方案实现了存储器内计算架构的可配置性和可编程性。

尽管所公开的方法在其执行计算的方式方面会造成特定形式的量化噪声,但这通过本文所公开的若干架构特征得以控制,在一个情况下,实现了表现如标准整数定点精密计算中的量化噪声的运算。

所公开的系统及其部分已被实现为集成电路,并且其不同特征已被实现为现场可编程门阵列(FPGA)以及使用Verilog/晶体管级仿真进行仿真。

所公开的方法可以应用于一系列存储器内计算架构,包括于2017年9月8日提交的临时专利申请序列号62/555,959“Analog Switched-Capacitor Neural Network”中公开的架构,该专利申请通过引用整体并入本文,如本文中完整阐述那样。

所公开的方法实现了被证明是线性代数计算的高能量效率方法的存储器内计算的可配置性和可编程性。这样的配置性和可编程性使得所公开的架构能够在广泛的应用中使用。

进一步公开的实施方式提供了一种用于多位存储器内计算的位并行/位串行方法。具体地,本文还公开了存储器内计算架构,其中存储器位单元在l-b操作数上执行计算,并且硬件被扩展成使用位并行/位串行(BP/BS)方案在多位操作数上实现运算,其中一个操作数的多个位被映射到并行位单元,以及另一操作数的多个位被串行地输入。所公开的方法允许:下述存储器内计算,在该存储器内计算中,计算输出位单元被数字化,然后被送入进一步的计算,可能在时间和空间上跨不同的位单元输出计算;下述存储器内计算,在该存储器内计算中,在数字化输出上以位并行/位串行(BP/BS)的方式执行多位操作数计算;下述存储器内计算,在该存储器内计算中,BP/BS方法使用二进制补码表示,例如,通过经由位单元采用按位AND(AND:“与”逻辑关系)计算;以及下述存储器内计算,在该存储器内计算中,BP/BS方法使用不同的数字表示,例如,其中1/0位在数学上取值为+1/-1,使得能够通过位单元使用XNOR(XNOR:“异或非”逻辑关系)计算。

不同的实施方式都涉及围绕存储器内计算加速器的集成可配置性和硬件支持,以实现拓宽到实际应用所需的可编程性和虚拟化。一般地,存储器内计算实现矩阵向量乘法,其中矩阵元素存储在存储器阵列中,以及向量元素以并行方式在存储器阵列上广播。该实施方式的几个方面涉及实现这样的架构的可编程性和可配置性。

存储器内计算通常涉及矩阵元素、向量元素或两者的l-b表示。这是因为存储器将数据存储在独立的位单元中,对于该独立的位单元,广播是以并行同质的方式进行的,而没有在多位计算所需的位之间提供不同的二进制加权耦合。在本发明中,通过位并行/位串行(BPBS)方案实现对多位矩阵和向量元素的扩展。

为了实现往往围绕矩阵向量乘法的常见计算运算,包括了高可可配置的/可编程的近存储器计算数据路径。这既实现了从存储器内计算的按位计算扩展到多位计算所需的计算,而且一般来说,这支持多位运算,不再受制于存储器内计算所固有的l-b表示。由于可编程的/可配置的且多位的计算在数字域中更有效,因此在本发明中,在存储器内计算之后执行模数转换,以及在特定的实施方式中,可配置的数据路径在八个ADC/存储器内计算通道之间多路复用,不过可以采用其他的多路复用比例。这也与用于多位矩阵元素支持的BPBS方案很好地对齐,其中在实施方式中提供了最多达8-b操作数的支持。

由于输入向量稀疏性在许多线性代数应用中很常见,因此本发明集成了支持以实现能量比例稀疏性控制。这是通过掩蔽来自输入向量的对应于零值元素的位的广播来实现的(对位串行过程中的所有位都进行了这样的掩蔽)。这不但节省了存储器阵列内的广播能量和计算能量。

考虑到用于存储器内计算的内部按位计算架构以及典型微处理器的外部数字字架构,数据整形硬件既用于输入向量通过其被提供的计算接口,又用于矩阵元素通过其被写入和读取的存储器接口。

图1描绘了一种存储器内计算架构的典型结构。由存储器阵列(可以基于标准位单元或改进的位单元)构成的存储器内计算涉及两组额外的“垂直”的信号;即(1)输入线;和(2)累加线。参照图1,可以看到的是,描绘了位单元的二维阵列,其中多个存储器内计算通道110中的每一者都包括相应的位单元列,其中位单元中的每一者,通道与公共累加线和位线(列)以及相应的输入线和字线(行)相关联。要注意的是,信号的列和行在本文中被表示为相对于彼此“垂直”,以简单地指示在位单元阵列诸如图1中描绘的位单元的二维阵列的环境中的行/列关系。本文使用的术语“垂直”并不意在表达任何特定的几何关系。

信号的输入/位组和累加/位组可以与存储器内的现有信号(例如,字线、位线)物理结合或可以是分开的。对于实现矩阵向量乘法,首先在存储器单元中加载矩阵元素。然后,通过输入线立即应用多个输入向量元素(可能是全部)。这使得在每个存储器位单元处发生局部计算运算,通常是某种形式的乘法。然后,计算运算的结果被驱动到共享的累加线上。通过这个方式,累加线代表了由输入向量元素激活的多个位单元上的计算结果。这与标准存储器访问形成对比,在标准存储器访问中,位单元通过位线被一次一个地访问,并由单个字线激活。

所述的存储器内计算具有若干重要属性。首先,计算典型地是模拟的。这是因为存储器和位单元的受约束结构要求比简单的基于数字开关的抽象所启用的计算模型更丰富。其次,位单元处的本地运算典型地涉及利用存储在位单元中的l-b表示的计算。这是因为标准存储器阵列中的位单元并不以任何二进制加权的方式彼此耦合;任何这样的耦合都必须通过从外围设备访问/读出位单元的方法来实现。下面,描述本发明提出的关于存储器内计算的扩展。

虽然存储器内计算具有以常规的数字加速做的不够好的方式解决矩阵向量乘法的潜力,但典型的计算流水线将涉及一系列围绕矩阵向量乘法的其他运算。典型地,这样的运算被常规的数字加速很好地处理;然而,将这样的加速硬件放置在存储器内计算硬件附近、位于适当的架构中以处理与存储器内计算相关联的并行性质、高通量(并且因此需要高通信带宽出/入)以及一般的计算模式,可能具有很高的价值。由于许多周围运算将优选在数字域中进行,因此通过ADC的模数转换被包括在存储器内计算累加线中的每一个之后,因此我们将其称为存储器内计算通道。主要的挑战是将ADC硬件集成在每个存储器内计算通道的间距中,但本发明中采取的适当的布局方法实现了这一点。

在每个计算通道之后引入ADC实现了分别通过位并行/位串行(BPBS)计算扩展存储器内计算以支持多位矩阵和向量元素的有效方式。位并行计算涉及在不同的存储器内计算列中加载不同的矩阵元素位。然后对来自不同列的ADC输出进行适当的位移位,以表示对应的位加权,并对所有列执行数字累加,以产生多位矩阵元素计算结果。另一方面,位串行计算涉及一次一个地应用向量元素的每个位,每次存储ADC输出,以及在与和后续输入向量位对应的下一输出进行数字累加之前,对所存储的输出进行适当的位移位。实现了模拟计算和数字计算的混合的此BPBS方法效率很高,因为其利用了模拟(l-b)的高效率低精度流型(regime:制度、体制)与数字(多位)的高效率高精度流型,同时克服了与常规存储器运算相关联的访问成本。

虽然可以考虑一系列的近存储器计算硬件,但下面将描述集成在本发明的当前实施方式中的硬件的细节。为了方便这样的多位数字硬件的物理布局,八个存储器内计算通道被多路复用到每个近存储器计算通道。我们注意到,这使得存储器内计算的高并行运算与数字近存储器计算的高频运算通量相匹配(高并行的模拟存储器内计算在低于数字近存储器计算的时钟频率处运行)。每个近存储器计算通道则包括数字桶式移位器、乘法器、乘法器、以及查找表(LUT)和固定非线性函数实现。另外,与近存储器计算硬件相关联的可配置有限状态机(FSM)被集成以通过硬件来控制计算。

为了将存储器内计算与可编程微处理器集成,必须将内部按位运算和表示与典型微处理器架构中采用的外部多位表示适当地接合。因此,在输入向量接口和存储器读/写接口两者处都包括了数据整形缓冲区,矩阵元素通过该缓冲区被存储在存储器阵列中。下面描述本发明实施方式所采用的设计的细节。数据整形缓冲区实现了输入向量元素的位宽度可扩展性,同时保持了到存储器内计算硬件的数据传输——在该存储器内计算硬件与外部存储器以及其他架构块之间——的最大带宽。数据整形缓冲区由充当线缓冲区的寄存器文件构成,该线缓冲区针对输入向量逐个元素地接收传入的并行多位数据,并为所有向量元素提供传出的并行单个位数据。

除了按字/按位接合之外,还包括用于应用给输入向量的卷积运算的硬件支持。这样的运算在卷积神经网络(CNN)中非常突出。在这个情况下,仅利用需要被提供的新向量元素的子集(其他输入向量元素被存储在缓冲区中,并且适当地进行了简单移位)来执行矩阵向量乘法。这减轻了将数据获取到高通量存储器内计算硬件的带宽限制。在本发明实施方式中,必须对多位输入向量元素执行适当的位串行排序的卷积支持硬件是在专门的缓冲区内实现的,其输出读出使用于可配置卷积步幅的数据适当地移位。

对于可编程性,硬件必须解决两个额外的考虑:(1)矩阵/向量尺寸在不同的应用中可以是可变的;以及(2)在许多应用中,向量将是稀疏的。

关于维数,存储器内计算硬件往往集成控制以启用/禁用阵列的分片式部分,以仅针对应用中所期望的维数水平消耗能量。但是,在所采用的BPBS方法中,输入向量维数对计算能量和SNR有重要影响。关于SNR,在每个存储器内计算通道中进行按位计算的情况下,假设每个输入(在输入线上提供)与存储在位单元中的数据之间的计算产生一个位输出,则累加线上可能的不同水平的数量等于N+l,其中N是输入向量维数。这表明需要log2(N+l)位ADC。然而,ADC的能量成本与位的数量紧密相关。因此,在ADC中支持非常大的N但少于log2(N+l)位以减少ADC能量的相对贡献是有益的。这样做的结果是,计算运算的信号量化噪声比(SQNR)与标准的固定精度计算不同,并且随着ADC位的数量而减少。因此,为了支持不同的应用水平维数和SQNR要求,以及相应的能量消耗,对可配置输入向量维数的硬件支持是必不可少的。例如,如果可以容忍减少的SQNR,就应该支持大维数的输入向量段;另一方面,如果必须保持高的SQNR,就应该支持较低维数的输入向量段,其中多个输入向量段的内积结果可以从不同的存储器内计算库中组合出来(特别地,输入向量维数可以因此减少到由ADC位的数量设定的水平,以确保计算与标准的固定精度运算理想地匹配)。本发明中所采取的混合模拟/数字方法实现了这一点。即,可以对输入向量元素进行掩蔽,以将广播过滤到仅所期望的维数。这与输入向量维数成比例地节省了广播能量和位单元计算能量。

关于稀疏性,可以在整个位串行运算中应用相同的掩蔽方法,以防止对应于零值元素的所有输入向量元素位的广播。我们注意到,所采用的BPBS方法对此特别有利。这是因为,尽管非零元素的预期数量在稀疏线性代数应用中往往是已知的,但输入向量维数可以很大。因此,BPBS方法允许我们增加输入向量的维数,同时仍然确保需要在累加线上支持的水平数在ADC分辨率内,从而确保高计算SQNR。尽管预期的非零元素的数量是已知的,但仍然必须支持可变数量的实际非零元素,这可能因输入向量而异。这在混合模拟/数字方法中很容易实现,因为在BPBS运算后的数字域中,掩蔽硬件只需计算用于给定向量的零值元素的数量,然后将对应的偏移应用到最终的内积结果。

图2描绘了根据一实施方式的示例性架构的高层框图。具体地,图2的示例性架构被实现为集成电路,该集成电路使用VLSI制造技术使用特定的部件和功能元件,以测试本文的不同实施方式。将理解的是,发明人预期具有不同部件(例如,较大或较强大的CPU、存储器元件、处理元件等)的其他实施方式在本公开内容的范围内。

如图2所示,架构200包括:中央处理单元(CPU)210(例如,32位RISC-VCPU);程序存储器(PMEM)220(例如,128KB程序存储器);数据存储器(DMEM)230(例如,128KB数据存储器);外部存储器接口235(例如,被配置为例示性地访问一个或更多个32位外部存储器装置(未示出)以由此扩展可访问的存储器);引导加载程序模块240(例如,被配置为访问8KB片外EEPROM(未示出));存储器内计算单元(CIMU)300,其包括不同配置寄存器255并被配置为根据本文所述的实施方式执行存储器内计算和不同的其他功能;直接存储器访问(DMA)模块260,其包括不同的配置寄存器265;以及不同的支持/外围模块,诸如用于接收/传输数据的通用异步接收器/发送器(UART)模块271、通用输入/输出(GPIO)模块273、不同的定时器274等。本文未描绘的其它元件也可以被包括在图2的架构200中,诸如SoC配置模块(未示出)等。

CIMU300非常适合于矩阵向量乘法等;然而,其他类型的计算/演算可能更合适由非CIMU计算设备执行。因此,在不同的实施方式中,提供了在CIMU300和近存储器之间的极为贴近的耦合,从而可以控制对承担特定计算和/或功能的计算设备的选择,以提供更有效的计算功能。

图3描绘了适合在图2的架构中使用的示例性存储器内计算单元(CIMU)300的高层框图。下面的讨论涉及图2的架构200以及涉及适合在该架构200的背景下使用的示例性CIMU300。

一般而言,CIMU300包括不同的结构元素,该结构元素包括例示性地经由不同配置寄存器配置以提供由此可编程性存储器内计算功能诸如矩阵向量乘法等的位单元的存储器内计算阵列(CIMA)。特别地,示例性的CIMU300被配置为590kb、16存储体的CIMU,其任务是将输入矩阵A乘以输入向量A以产生输出矩阵Y。

参照图3,CIMU300被描绘为包括存储器内计算阵列(CIMA)310、输入激活向量整形缓冲区(IA BUFF)320、稀疏性/AND逻辑控制器330、存储器读/写接口340、行解码器/WL驱动器350、多个A/D转换器360和近存储器计算的乘法移位累加数据路径(NMD)370。

例示性存储器内计算阵列(CIMA)310包括256x(3x3x256)的存储器内计算阵列,该存储器内计算阵列被布置为4x4的可时钟闸控的64x(3x3x64)的存储器内计算阵列,因此具有总共256个存储器内计算通道(例如,存储器列),其中还包括256个ADC360以支持存储器内计算通道。

IA BUFF 320运行以接收例示性的32位数据字的序列,并将这些32位数据字整形为适合由CIMA 310处理的高维数向量的序列。要注意的是,32位、64位或任何其他宽度的数据字可以被整形以符合存储器内计算阵列310的可用或选定的大小,该阵列本身被配置为在高维数向量上运行以及包括可以是2-8位、1-8位或一些其他大小的元素,并且在整个阵列中并行地应用它们。还要注意的是,本文描述的矩阵向量乘法运算被描绘为利用了CIMA310的全部;然而,在不同的实施方式中,仅使用CIMA 310的一部分。另外,在不同的其他实施方式中,CIMA 310和相关联的逻辑电路被调整为提供交错的矩阵向量乘法运算,其中矩阵的并行部分同时由CIMA 310的相应部分处理。

特别地,IA BUFF 320将32位数据字的序列整形为高并行的数据结构,这些数据结构可以一次(或至少以较大的分块)添加到CIMA 310中,并以位串行的方式适当地进行排序。例如,具有八个向量元素的四位计算可以与超过2000个n位数据元素的高维数向量相关联。IA BUFF 320形成这个数据结构。

如本文所描述的,IA BUFF 320被配置为将输入矩阵A接收为例示性的32位数据字的序列,并根据CIMA 310的大小调整所接收的数据字的序列的大小/位置,例示性地以提供包括2303个n位数据元素的数据结构。这些2303个n位数据元素中的每一个以及相应的掩蔽位,从IA BUFF 320被传达给稀疏性/AND逻辑控制器330。

稀疏性/AND逻辑控制器330被配置为接收例示性的2303个n位数据元素和相应的掩蔽位,并响应地调用稀疏性函数,其中零值数据元素(诸如由相应的掩蔽位指示)不传播到CIMA 310进行处理。以这个方式,本来由CIMA 310处理这些位所必须的能量得以保存。

在运行中,CPU 210通过以标准方式实现的直接数据路径来读取PMEM 220和引导加载程序240。CPU 210可以通过以标准方式实现的直接数据路径来访问PMEM 220、IA BUFF320和存储器读/写缓冲区340。所有这些存储器模块/缓冲区、CPU 210和DMA模块260通过AXI总线281连接。芯片配置模块和其他外围模块由APB总线282分组,该APB总线作为从装置附接到AXI总线281。CPU 210被配置为通过AXI总线281向PMEM 220写入。DMA模块260被配置为通过专用数据路径来访问PMEM 220、IA BUFF 320、存储器读/写缓冲区340和NMD 370,并通过AXI/APB总线诸如每一个DMA控制器265来访问所有其他可访问的存储器空间。CIMU300执行上述的BPBS矩阵向量乘法。下面提供这些和其他实施方式的进一步细节。

因此,在不同的实施方式中,CIMA以位串行位并行(BSBP)的方式运行,以接收向量信息,执行矩阵向量乘法,并提供数字化输出信号(即,Y=AX),该输出信号可以由另一个计算函数适当地进一步处理以提供复合矩阵向量乘法函数。

一般来说,本文所述的实施方式提供了一种存储器内计算架构,包括:整形缓冲区,其被配置为对接收到的数据字的序列进行整形以形成大规模并行的按位输入信号;位单元的存储器内计算(CIM)阵列,其被配置为通过第一CIM阵列维数接收大规模并行的按位输入信号,并通过第二CIM阵列维数接收一个或更多个累加信号,其中,与公共累加信号相关联的多个位单元中的每一个形成被配置为提供相应的输出信号的相应CIM通道;模数转换器(ADC)电路,其被配置为处理多个CIM通道输出信号,以由此提供多位输出字的序列;控制电路,其被配置为使得CIM阵列使用单个位内部电路和信号来对输入信号和累加信号执行多位计算运算;以及近存储器计算路径,其被配置为提供多位输出字的序列作为计算结果。

由于CPU 210被配置为直接访问IA BUFF 320和存储器读/写缓冲区340,从用户程序的角度以及在延迟和能量方面,特别是对于结构化数据诸如阵列/矩阵数据等,这两个存储器空间看起来类似于PMEM 220。在不同的实施方式中,当存储器内计算特征未被激活或被部分激活时,存储器读/写缓冲区340和CIMA 310可以被用作正常的数据存储器。

图4描绘了根据一实施方式并适合在图2的架构中使用的输入激活向量整形缓冲区(IA BUFF)320的高层框图。所描绘的IA BUFF 320支持具有从1位至8位的元素精度的输入激活向量;在不同的实施方式中也可以容纳其它精度。根据本文所讨论的位串行流机构,输入激活向量中的所有元素的特定位被一次广播到CIMA 310,以进行矩阵向量乘法运算。然而,该运算的高并行性质要求为高维数输入激活向量的元素提供最大带宽和最小能量,否则将无法利用存储器内计算的通量和能量效率优势。为了实现这一点,输入激活整形缓冲区(IA BUFF)320可以如下构建,从而可以将存储器内计算集成在微处理器的32位(或其它位宽度)架构中,由此用于对应的32位数据传输的硬件被最大限度地用于存储器内计算的高并行内部组织。

参照图4,IA BUFF 320接收32位输入信号,其可以包含位精度从1至8位的输入向量元素。因此,32位输入信号首先存储在4x8-b寄存器410中,其中总共有24个(在本文表示为寄存器410-0至410-23)。这些寄存器410将它们的内容提供给8个寄存器文件(表示为寄存器文件420-0至420-8),每个寄存器文件具有96列,并且其中具有最高达3x3x256=2304的维数的输入向量被布置成其元素为并行列的方式。这在输入元素为8-b的情况下是通过提供跨越寄存器文件420之一的96个并行输出的24个4x8-b寄存器410来完成的,在输入元素为l-b的情况下是通过提供跨越全部8个寄存器文件420的1536个并行输出的24个4x8-b寄存器410(或者对于其它位精度通过中间配置)来完成的。每个寄存器文件列的高度为2x4x8-b,这允许每个输入向量(其元素精度最高达8位)被存储在4段中,并且对于所有输入向量元素都要被加载的情况,实现了双缓冲。另一方面,对于只有三分之一的输入向量元素要被加载的情况(即,步幅为1的CNN),每四个寄存器文件列中有1个充当缓冲区,这允许来自其他3个列的数据向前传播到CIMU以进行计算。

因此,在每个寄存器文件420输出的96列中,只有72列被相应的环形桶式移位接口430选择,从而一次在8个寄存器文件420上总共给出576个输出。这些输出对应于存储在寄存器文件中的四个输入向量段中的一个。因此,在l-b个寄存器内,需要四个循环将所有的输入向量元素加载到稀疏性/AND逻辑控制器330中。

为了利用输入激活向量中的稀疏性,在CPU 210或DMA 260向整形缓冲区320中写入的同时,为每个数据元素生成掩蔽位。被掩蔽的输入激活防止了CIMA 310中基于电荷的计算运算,这节省了计算能量。掩蔽向量也存储在SRAM块中,该块类似于输入激活向量被组织,但具有一位表示。

4至3桶式移位器430被用于支持VGG风格(3x3滤波器)的CNN计算。在移至下一个滤波操作(卷积重用)时,只需要更新三个输入激活向量中的一个,这节省了能量并提高了通量。

图5描绘了根据一实施方式并适合在图2的架构中使用的CIMA读/写缓冲区340的高层框图。所描绘的CIMA读/写缓冲区340被组织为例示性的768位宽的静态随机访问存储器(SRAM)块510,而在本示例中,所描绘的CPU的字宽度为32位;读/写缓冲区340被用于在其间进行接合。

所描绘的读/写缓冲区340包含768位写寄存器511和768位读寄存器512。读/写缓冲区340通常充当CIMA 310中的宽SRAM块的缓存;然而,一些细节是不同的。例如,读/写缓冲区340仅在CPU 210写到不同的行时才回写到CIMA 310,而读取不同的行不会触发回写。当读地址与写寄存器的标签相匹配时,写寄存器511中被修改的字节(用污染位表示)会被绕过到读寄存器512,而不是从CIMA 310读取。

累加线模数转换器(ADC)。来自CIMA 310的累加线分别具有8位SAR ADC,其适配存储器内计算通道的间距。为了节省面积,控制SAR ADC位循环的有限状态机(FSM)在每个存储器内计算分片所需的64个ADC之间共享。FSM控制逻辑由8+2个移位寄存器构成,从而产生脉冲以循环通过复位、采样、然后是8个位决定阶段。移位寄存器脉冲被广播到64个ADC,在那里它们被本地缓冲,以用于触发本地比较器判定,将对应的位判定存储在本地ADC代码寄存器中,然后触发下一个电容器DAC配置。可以使用高精度的金属氧化物金属(MOM)电容来实现每个ADC的电容器阵列的小尺寸。

图6描绘了根据一实施方式并适合在图2的架构中使用的近存储器数据路径(NMD)模块600的高层框图,不过可以采用具有其它特征的数字近存储器计算。在图6中描绘的所描绘的NMD模块600示出了ADC输出之后的数字计算数据路径,该路径通过BPBS方案支持多位矩阵乘法。

在特定的实施方式中,对于数字计算流,256个ADC输出被组织为8组。这使得能够支持最多达8位的矩阵元素配置。因此,NMD模块600包含32个相同的NMD单元。每个NMD单元由以下构成:多路复用器610/620,以从8个ADC输出610和对应的偏置621中选择被乘数622/623、移位数624;以及累加寄存器;加法器631,其具有8位无符号输入和9位有符号输入,以减去全局偏置和掩蔽数;有符号加法器632,以计算用于神经网络任务的局部偏置;定点乘法器633,以执行缩放;桶式移位器634,以计算被乘数的指数并对加权元素中的不同位执行移位;32位有符号加法器635,以执行累加;八个32位累加寄存器640,以支持具有1、2、4和8位配置的权重;以及用于神经网络应用的ReLU单元650。

图7描绘了根据一实施方式并适合在图2的架构中使用的直接存储器访问(DMA)模块700的高层框图。所描绘的DMA模块700例示性地包括:两个通道以支持同时来自/去往不同硬件资源的数据传输,以及分别来自/去往DMEM、IA BUFF、CIMU R/W BUFF、NMD结果和AXI4总线的5个独立数据路径。

用于多位MVM

按位AND可以支持用于多位矩阵和输入向量元素的标准二进制补码表示。这涉及在ADC之后的数字域中,对与最高有效位(MSB)元素相对应的列计算适当地应用负号,之后将数字化输出添加到其他列计算中的那些。

按位XNOR需要稍微修改数字表示。即,元素位映射到+1/-1而不是1/0,从而需要具有等效LSB加权的两个位来正确表示零。这是如下完成的。首先,每个B位操作数(在标准的二进制补码表示中)被分解成B+l位的有符号整数。例如,y分解为B+l加/减一个位

在将l/0值的位映射到+1/-1的数学值的情况下,可以通过逻辑XNOR运算来实现按位存储器内计算乘法。因此,使用用于输入向量元素的差分信号来执行逻辑XNOR的M-BC可以通过位加权以及从列计算添加数字化输出来实现有符号的多位乘法。

尽管基于AND的M-BC乘法和基于XNOR的M-BC乘法提出了两个选项,但通过使用在M-BC中逻辑运算可能的适当数表示,其他选项也是可能的。这样的替代性选择是有益的。例如,基于XNOR的M-BC乘法对于二值化(l-b)计算来说是优选的,而基于AND的M-BC乘法实现了较标准的数字表示,以促进数字架构内的集成。另外地,这两个方法产生略有不同的信号量化噪声比(SQNR),因此其可以基于应用需求来进行选择。

本文描述的不同实施方式预期了电荷域存储器内计算的不同方面,其中位单元(或倍增的位单元,M-BC)将对应于计算结果的输出电压驱动到局部电容器上。然后,来自存储器内计算通道(列)的电容器被耦合以通过电荷再分配产生累加。如上所述,这样的电容器可以使用非常容易复制的特定几何形状诸如在VLSI工艺中诸如通过简单地彼此靠近并因此通过电场耦合的线形成。因此,形成作为电容器的局部位单元存储了代表1或0的电荷,而将若干这些电容器或位单元中的所有电荷加起来能够局部地实现乘法和累加/求和的功能,这是矩阵向量乘法中的核心运算。

上述不同的实施方式有利地提供了改进的基于位单元的架构、计算引擎和平台。矩阵向量乘法是一种不通过标准、数字处理或数字加速有效地执行的运算。因此,在存储器中进行这一种类型的计算比现有的数字设计具有巨大的优势。然而,不同的其他类型的运算使用数字设计有效地执行。

不同的实施方式预期了用于将这些基于位单元的架构、计算引擎、平台等与较常规的数字计算架构和平台连接/接合以便形成异构计算架构的机构。以这个方式,那些很适合于位单元架构处理(例如,矩阵向量处理)的计算运算如上所述进行处理,而那些很适合于常规计算机处理的其他计算运算则通过常规计算机架构进行处理。也就是说,不同的实施方式提供了一种包括如本文所述的高并行处理机构的计算架构,其中该机构连接到多个接口,使得它可以外部耦合到较常规的数字计算架构。以这个方式,数字计算架构可以直接且有效地与存储器内计算架构对准,从而允许将二者放置成极为靠近,以最小化它们之间的数据移动开销。例如,尽管机器学习应用可能包括80%至90%的矩阵向量计算,但仍有10%至20%的其它类型的计算/运算需要执行。通过将本文所讨论的存储器内计算与在架构上较常规的近存储器计算相结合,所得到的系统提供了优异的可配置性以执行许多类型的处理。因此,不同的实施方式预期近存储器数字计算与本文所述的存储器内计算相结合。

本文所讨论的存储器内计算是大规模地并行的但单个位的运算。例如,在位单元中只可以存储一个位。一或者零。被驱动到位单元的信号典型地是输入向量(即,在2D向量乘法运算中,每个矩阵元素与每个向量元素相乘)。向量元素被放在下述信号上,所述信号同样是数字的并且是仅一个位,使得向量元素也是一个位。

不同的实施方式使用位并行/位串行方法将矩阵/向量从一个位元素扩展到多个位元素。

图8A至图8B描绘了适合在图2的架构中使用的CIMA通道数字化/加权的不同实施方式的高层框图。具体地,图8A描绘了与上述相对于不同的其它附图类似的数字二进制加权与求和的实施方式。图8B描绘了模拟二进制加权与求和的实施方式,其中对不同电路元件进行了修改,从而能够使用比图8A的实施方式和/或本文描述的其他实施方式较少的模数转换器。

如先前所讨论的,不同的实施方式预期将位单元的存储器内计算(CIM)阵列配置为通过第一CIM阵列维数(例如,2D CIM阵列的行)接收大规模并行的按位输入信号,并通过第二CIM阵列维数(例如,2D CIM阵列的列)接收一个或更多个累加信号,其中,与公共累加信号相关联的多个位单元中的每一个(描绘为例如,位单元的列)形成被配置为提供相应的输出信号的相应的CIM通道。模数转换器(ADC)电路被配置为处理多个CIM通道输出信号,以由此提供多位输出字的序列。控制电路被配置为使CIM阵列使用单个位内部电路和信号对输入和累加信号执行多位计算运算,从而可操作地接合的近存储器计算路径由此可以被配置为提供多位输出字的序列作为计算结果。

参照图8A,描绘了执行ADC电路功能的数字二进制加权与求和的实施方式。特别地,二维CIMA 810A在第一(行)维处接收矩阵输入值(即,通过多个缓冲区805)以及在第二(列)维处接收向量输入值,其中,CIMA 810A根据控制电路等(未示出)运行以提供不同的通道输出信号CH-OUT。

图8A的ADC电路为每个CIM通道提供:相应的ADC 760,其被配置为将CIM通道输出信号CH-OUT数字化;以及相应的移位寄存器865,其被配置为对经数字化的CIM通道输出信号CH-OUT赋予相应的二进制加权,以由此形成多位输出字870的相应部分。

参照图8B,描绘了执行ADC电路功能的模拟二进制加权与求和的实施方式。特别地,二维CIMA 810B在第一(行)维处接收矩阵输入值(即,通过多个缓冲区805)以及在第二(列)维处接收向量输入值,其中,CIMA 810B根据控制电路等(未示出)运行以提供不同的通道输出信号CH-OUT。

图8B的ADC电路提供了CIMA 810B内的开关815-1、815-2等的四个可控(或预设)存储体(bank,存储库),其运行以使其中形成的电容器耦合和/或去耦合,以由此为通道的一个或更多个子集中的每一个实现模拟二进制加权方案,其中,每个通道子集提供单个输出信号,从而只需要一个ADC 860B来对CIM通道的相应子集的CIM通道输出信号的经加权的模拟求和进行数字化,以由此形成多位输出字的相应部分。

图9描绘了根据一实施方式的方法的流程图。具体地,图9的方法900涉及由本文所述的架构、系统等实现的不同的处理操作,其中输入矩阵/向量被扩展为以位并行/位串行的方法被计算。

在步骤910,将矩阵和向量数据加载到适当的存储器位置。

在步骤920,按顺序处理向量位(MSB至LSB)中的每一个。具体地,将向量的MSB与矩阵的MSB相乘,将向量的MSB与矩阵的MSB-1相乘,将向量的MSB与矩阵的MSB-2相乘,以此类推直至将向量的MSB与矩阵的LSB相乘。然后对于MSB至LSB向量乘法中的每一个,对得到的模拟电荷结果进行数字化以得到被锁存的结果。对向量MSB-l、向量MSB-2等至向量LSB重复此过程,直到向量MSB-LSB中的每一个都已经与矩阵的MSB-LSB元素中的每一个相乘为止。

在步骤930,对位进行移位以应用适当的加权,并将结果加在一起。要注意的是,在使用模拟加权的一些实施方式中,步骤930的移位操作是不必要的。

不同的实施方式使得能够在用于将数据存储在密集存储器中的电路内执行高稳定性和鲁棒性的计算。另外,不同的实施方式通过实现存储器位单元电路的较高的密度来推进本文所述的计算引擎和平台。该密度可以由于较紧凑的布局以及由于该布局与用于存储器电路的高激进设计规则(即,推规则)的增强的兼容性这两者而增加。不同的实施方式大幅增强了用于机器学习以及其它线性代数的处理器的性能。

公开了一种可以在存储器内计算架构内使用的位单元电路。所公开的方法使得高稳定性/鲁棒性的计算能够在用于将数据存储在密集存储器中的电路内执行。所公开的用于鲁棒性的存储器内计算的方法使得存储器位单元电路的密度比已知方法高。该密度可以由于较紧凑的布局以及由于该布局与用于存储器电路的高激进设计规则(即,推规则)的增强的兼容性这两者而较高。所公开的装置可以使用标准CMOS集成电路加工来制造。

存储器访问主导着许多计算工作负载中的能量和延迟。存储器能量和延迟的产生是因为在标准存储器中,原始数据是逐行访问的,从而产生了将数据从存储点移动到在存储器阵列之外的计算点的通信成本。另一方面,存储器内计算架构在跨行存储的许多数据位上访问计算结果,从而一次访问许多行并摊分了通信成本。

尽管这样的摊分以乘数因子(即大致同时访问的行数)减少了能量和延迟,但主要的挑战是计算信噪比(SNR)也以对应的因子减少了。这是因为,在大量位上的计算典型地增加了所需的动态范围;但是,将其适配在存储器中现有位线的有限摆动范围内会挤压SNR。具体地,存储器内架构的计算噪声是由位单元执行的计算运算的变化和非线性所主导的。在标准存储器中,位单元提供了输出电流。这使得电流域计算成为存储器内计算架构的自然选择,其目的是使标准使用的高密度位单元的变化最小化。

然而,位单元电流受到影响位单元晶体管的高电平变化和非线性的影响。这限制了存储器内计算的SNR,从而限制了存储器内计算的可扩展性。改进是根据使用电荷域计算的不同的实施方式获得的。这里,来自位单元的计算输出被存储作为电容器上的电荷。例如,不同的实施方式预期使用布局在位单元晶体管上方的金属指状电容器;这样的电容器不会产生额外的面积,由此使位单元能够保持致密结构。对于计算SNR来说重要的是,这样的电容器还表现出非常好的线性,以及在存在工艺和温度变化时的高稳定性。这大幅增加了存储器内计算的可扩展性。

虽然金属指状电容可以布局在位单元的上方,但对于开关电容电荷域计算来说,位单元内部的一些电路变化是必要的。本发明聚集于用以在静态随机访问存储器(SRAM)中实现高密度的电荷域位单元计算的电路和布局。特别地,描述了增强与用于SRAM位单元的激进推设计规则的兼容性的电路和布局。

图10描绘了乘法位单元的电路图。图9的位单元900执行操作诸如l-b数据的存储、写入和读取,并且还实现在所存储的l-b数据与l-b IA/IAb信号(差分)之间的乘法。因此,该结构被称为乘法位单元(M-BC)。要注意的是,l-b乘法对应于逻辑XNOR运算。为了实现这一点,添加PMOS晶体管,将其耦合到位单元存储节点并由IA/IAb信号驱动,如图10所示。

图11描绘了被配置为执行XNOR功能的三个M-BC的电路图。具体地,对于三个M-BC,图10的电路的操作包括:(1)通过使电容器短路开关(TSHORT/TSHORTb)和放电NMOS晶体管(PRE)有效(assert:生效、起作用),来使M-BC电容器无条件地放电;(2)使TSHORT/TSHORTb无效(de-assert:清零),并驱动IA/IAb,从而将M-BC的XNOR输出存储在局部M-BC电容器上;(3)使IA/IAb无效,并使TSHORT有效,从而将来自所有XNOR结果的电荷累加以给出乘法累加计算。需要注意的是,除了8个M-BC晶体管外,每个M-BC还需要两个额外的NMOS/PMOS晶体管以用于TSHORT/TSHORTb实现。在以前的设计中,这些NMOS/PMOS晶体管被布局在每个M-BC外,一起用于三个M-BC,因为这使得能够有效地共享节点。

图11A至图11B描绘了在8晶体管M-BC(图11A)——其旁边是标准SRAM位单元(图11B)——上的示例性集成电路(IC)的布局。通过视察可以看到两种类型的位单元之间的PCB大小和复杂性的差异。

图12描绘了一组3个M-BC(及其叠加的金属指状电容器)和TSHORT NMOS/PMOS的示例性IC布局。要注意的是,用于位单元计算的PMOS晶体管致使NMOS和PMOS晶体管在M-BC内的平衡使用,从而得到与标准6晶体管(6T)SRAM位单元的IC布局非常不同的IC布局。这影响了推规则兼容性的潜力。

不同的实施方式预期了为位单元计算增加NMOS晶体管的新M-BC电路。以这个方式,这些实施方式提供了既较密集又较接近标准6T位单元并且还增强了推规则的兼容性的IC布局。

图13描绘了根据一实施方式的M-BC的电路图。具体地,图13的M-BC1300使用NMOS晶体管实现了l-b电荷域乘法(XNOR)。这里,NMOS输入IA/IAb在局部电容器的无条件放电期间为低,然后差分地驱动以进行计算。

图14描绘了图13的M-BC的示例性布局。具体地,图14的布局预期将NMOS/PMOSTSHORT开关紧凑地包括在单个M-BC内(金属指状电容器被布局在位单元的上方)。在图14的布局1400中,信号WL、IA/IAb水平地运行,而信号BL、Blab、PA、VDD、GND竖向地运行。这个布局具有大致标准6T单元的2倍面积,并且利用了与周围的M-BC共享几个节点的机会。

尽管所公开的方法比标准存储器位单元电路占用较多的面积,但位单元的大部分已经用推规则进行了演示,并且对其进行的扩展类似于已经成功使用推规则的其他结构。所公开的方法大幅增强了用于机器学习以及其他线性代数的处理器的性能。这样的收益已经为早期的架构进行了实验性演示,并且所公开的方法大幅推进了该架构。

如前所述,存储器位单元内的计算运算提供其结果为电荷,典型地使用通过电容器的电压到电荷转换。因此,位单元电路涉及给定位单元中的局部电容器的适当切换,其中该局部电容器也适当地耦合到其它位单元电容器,以产生跨耦合位单元的汇总计算结果。

本文公开了用于可重构电荷域存储器内计算的电荷注入式鲁棒性的位单元和位单元布局。所公开的装置,特别是位单元电路,可以在存储器内计算架构内使用。所公开的方法使得高稳定性/鲁棒性的计算以及可重构计算能够在用于将数据存储在密集存储器中的电路内执行。与先前的方法相比,所公开的方法实现了存储器内计算的较大的鲁棒性和可配置性。所公开的装置可以使用标准的CMOS集成电路处理来制造。所公开的方法将对半导体行业具有重大的实用性,因为它可以大幅增强用于机器学习以及其他线性代数的处理器的性能。

本文所公开的方法涉及位单元电路的两个新方面:(1)一种配置,在该配置中,可以实现跨位单元电容器的耦合而不需要明确的开关(无开关的耦合结构);以及(2)一种物理布局,在该物理布局中,耦合的位单元与其他耦合的位单元交错(交错布局)。

无开关耦合结构涉及在电容器板之一上提供其计算结果的位单元,并且其中,通过另一电容器板来实现跨电容器的耦合。这与基于开关的耦合结构形成对比,在该基于开关的耦合结构中,位单元电路在相同的电容器板上提供计算结果,该相同的电容器板通常通过开关最终耦合到其他电容器。

图15A描绘了具有基于开关的耦合结构的位单元的框图,而图15B描绘了具有无开关的耦合结构的位单元的框图。在这两个情况下,首先需要诸如通过使电容器被耦合处的输出节点短路对耦合的电容器进行复位(去除其上的电荷)。然后,在位单元中局部地执行计算运算f(.)。这针对两个操作数a&b进行了说明,其中一个操作数存储在位单元中,以及一个操作数从位单元阵列外围外部地提供;然而,一般而言,具有更多操作数的结构是可能的。然后,计算运算驱动局部电容器的板,该局部电容器通过采样板上的开关与其他电容器耦合(基于开关的耦合结构),或者与其他电容器耦合而在其他板上没有开关(无开关的耦合结构)。有利地,图15B的无开关耦合结构避免了位单元中对耦合开关的需要,并且还有可能减少电荷注入误差的影响,诸如开关,当由MOSFET实现时,可能导致可变量的电荷由MOSFET吸收/释放(取决于电压水平),由此稍微破坏电荷域计算。

图16描绘了根据一实施方式的具有无开关的耦合结构的位单元电路的电路图。要注意的是,在所公开的实施方式的背景下,该电路的其它变型也是可能的。图16的位单元1600能够实现存储数据W/Wb(在由MN1-3/MP1-2形成的6晶体管交叉耦合电路内)与输入数据IA/IAb之间的XNOR或AND运算。例如,对于XNOR运算,在复位后,IA/IAb可以以补足的方式被驱动,使得局部电容器的底板根据IA XNOR W被上拉/下拉。另一方面,对于AND运算,在复位后,可以只驱动IA(并且IAb保持低),使得局部电容器的底板根据IA AND W被上拉/下拉。有利地,这个结构使得由于在所有耦合电容器之间产生一系列串行上拉/下拉充电结构而能够降低电容器的总切换能量,以及由于消除了输出节点处的耦合开关而能够降低开关电荷注入误差的影响。

图17描绘了根据一实施方式的位单元布局的2路交错的电路图。具体地,位单元的交错布局涉及其中电容器可以以两组或更多组耦合在一起的布局。尽管图17示出了针对2路交错的情况的布局说明,但在不同的实施方式中也预期了较高的交错。另外,尽管电容器被示出为布局在列侧上,但要注意的是,在实践中,它们也可以被布局在位单元晶体管的上方和/或位单元晶体管附近的其它位置。这个结构的好处是,除其他之外,增强的可配置性。即,耦合A和B可以用于实现单独的计算,因为输出是在两个不同的节点上提供的。或者,耦合A和B可以用于通过适当地组合在不同节点上的输出来实现联合计算,例如通过适当的外围电路。

将理解的是,本文所描绘和描述的功能可以在硬件中或在软件与硬件的组合中实现,例如,使用通用计算机、一个或更多个特定应用集成电路(ASIC)或任何其他硬件等效物。可以预期的是,本文所讨论的一些步骤可以在硬件中实现,例如,实现为与处理器协作以执行不同的方法步骤的电路。本文所述的部分功能/元件可以实现为计算机程序产品,其中计算机指令在由计算装置处理时改编计算装置的操作,使得本文所述的方法或技术被调用或以其他方式被提供。用于调用本发明方法的指令可以存储在有形的和非暂时性的计算机可读介质中,诸如固定的或可移动的介质或存储器中,或者存储在根据指令运行的计算装置内的存储器内。

可以关于不同的附图对本文所述的系统、方法、设备、机构、技术及其部分进行不同的修改,这些修改被预期是在本发明的范围内。例如,尽管在本文所述的不同实施方式中提出了步骤的特定顺序或功能元件的排列,但在不同实施方式的背景下可以利用步骤或功能元件的不同的其它顺序/排列。另外地,尽管可以单独讨论对实施方式的修改,但不同实施方式可以同时或依次使用多个修改、使用复合修改等。

尽管已经如上文所讨论的那样公开了具体的系统、设备、方法、机构等,但对本领域技术人员来说,应该清楚的是除了已经描述的那些,在不背离本文的发明概念的情况下,还可以进行更多的修改。因此,除本公开内容的精神之外,发明性主题不应受到限制。此外,在解释公开内容时,所有术语都应该以符合上下文的最广义的方式来解释。特别地,术语“包括”和“包含”应被解释为以非排他性的方式指代元件、部件或步骤,表明所引用的元件、部件或步骤可以存在、或被利用、或与未明确引用的其他元件、部件或步骤组合。另外,本文列出的参考文献也是本申请的一部分,并通过引用整体并入,如本文中完整阐述那样。

不同实施方式的方面在权利要求和/或以下编号的条款中指定:

1.一种位单元电路配置,包括:与至少一个位单元计算装置耦合的位单元存储电路;以及与所述位单元计算装置耦合的位单元电容器,所述位单元电容器还与一个或更多个附加电容器耦合,而在所述位单元电容器和所述附加电容器之间没有开关。

2.根据条款1所述的位单元电路配置,其中,所述位单元电容器的阴极板与所述位单元计算装置耦合。

3.根据条款1所述的位单元电路配置,其中,所述位单元电容器的阳极板与所述附加电容器耦合。

4.根据条款1所述的位单元电路配置,其中,所述位单元计算装置被配置为执行具有两个操作数的计算运算。

5.如图11所示的位单元电路配置。

6.根据条款5的所述位单元电路配置,其中,所述配置使得能够实现存储数据与输入数据之间的XNOR或AND运算。

7.用于至少两个根据条款1所述的位单元配置的交错式布局,其中,所述位单元电容器以至少两组被耦合在一起。

8.根据条款7所述的交错布局,其中,耦合的位单元电容器的组被布局在一个或更多个位单元晶体管的上方。

9.一种电荷域存储器内计算位单元,其驱动局部电容器的一个板,并且其中在另一个板上实现与其它位单元电容器的耦合。

10.一种电荷域存储器内计算位单元,其可以实现存储数据和输入数据之间的XNOR或AND运算。

11.一种用于电荷域存储器内计算位单元的交错布局,其中位单元电容器以多个不同的组耦合。

12.一种用于电荷域存储器内计算位单元的交错布局,其中位单元电容器以多个不同的组耦合,使得有X组进行X路交错,X是大于1的整数。

13.一种用于电荷域存储器内计算位单元的布局,其中不同的耦合电容器组被布局在位单元晶体管的上方。

14.一种乘法位单元(M-BC),其被配置为在位单元中存储数据与l-b输入信号之间执行电荷域计算。

15.根据条款14所述的M-BC,其中利用一个或更多个NMOS晶体管来执行所述电荷域计算。

16.根据条款14所述的M-BC,还包括电容器,所述电容器是位于所述位单元上方的金属结构。

17.根据条款14所述的M-BC,其中,所述M-BC被配置为实现逻辑运算。

18.根据条款17所述的M-BC,其中所述逻辑运算包括XNOR、NAND(NAND:“与非”逻辑关系)、AND和其他逻辑运算。

19.根据条款14所述的M-BC,还包括如图12所示的布局。

20.根据条款14所述的M-BC,还包括6T单元的扩展布局。

21.根据条款20所述的M-BC,还包括具有规则多晶结构的晶体管。

22.根据条款14所述的M-BC,还包括如图13所示的布局。

尽管在本文中已经详细示出并描述了包含本发明的教导的不同的实施方式,但本领域的技术人员可以很容易地设计出仍然包含这些教导的许多其它变化的实施方式。因此,尽管上述内容是针对本发明的不同实施方式的,但在不脱离本发明的基本范围的情况下,可以设计出本发明的其它和另外的实施方式。

相关技术
  • 可配置的存储器内计算引擎、平台、位单元及其布局
  • 用以降低布局面积的存储器位单元
技术分类

06120112525475