CN117789789A - 电流输入模拟内容可寻址存储器 - Google Patents
电流输入模拟内容可寻址存储器 Download PDFInfo
- Publication number
- CN117789789A CN117789789A CN202310675878.4A CN202310675878A CN117789789A CN 117789789 A CN117789789 A CN 117789789A CN 202310675878 A CN202310675878 A CN 202310675878A CN 117789789 A CN117789789 A CN 117789789A
- Authority
- CN
- China
- Prior art keywords
- circuit
- current
- dpe
- input
- acam
- 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
- 230000015654 memory Effects 0.000 title claims abstract description 53
- 239000011159 matrix material Substances 0.000 claims abstract description 62
- 238000000034 method Methods 0.000 claims abstract description 21
- 101150000595 CLMP gene Proteins 0.000 abstract description 35
- 101100382322 Drosophila melanogaster Acam gene Proteins 0.000 abstract description 35
- 238000006243 chemical reaction Methods 0.000 abstract description 13
- 238000013528 artificial neural network Methods 0.000 description 21
- 239000013598 vector Substances 0.000 description 21
- 230000006870 function Effects 0.000 description 20
- 238000004891 communication Methods 0.000 description 14
- 238000012545 processing Methods 0.000 description 10
- 230000008901 benefit Effects 0.000 description 6
- 230000005540 biological transmission Effects 0.000 description 6
- 238000004422 calculation algorithm Methods 0.000 description 5
- 238000010586 diagram Methods 0.000 description 5
- 230000003287 optical effect Effects 0.000 description 5
- 230000007423 decrease Effects 0.000 description 3
- 238000013135 deep learning Methods 0.000 description 3
- 230000005669 field effect Effects 0.000 description 3
- 230000008569 process Effects 0.000 description 3
- 238000013500 data storage Methods 0.000 description 2
- 238000013461 design Methods 0.000 description 2
- 238000011156 evaluation Methods 0.000 description 2
- 238000000605 extraction Methods 0.000 description 2
- 238000005259 measurement Methods 0.000 description 2
- 230000007246 mechanism Effects 0.000 description 2
- 238000012544 monitoring process Methods 0.000 description 2
- 230000002093 peripheral effect Effects 0.000 description 2
- 230000002085 persistent effect Effects 0.000 description 2
- 230000004044 response Effects 0.000 description 2
- 230000003068 static effect Effects 0.000 description 2
- 238000012546 transfer Methods 0.000 description 2
- RYGMFSIKBFXOCR-UHFFFAOYSA-N Copper Chemical compound [Cu] RYGMFSIKBFXOCR-UHFFFAOYSA-N 0.000 description 1
- 238000009825 accumulation Methods 0.000 description 1
- 230000009471 action Effects 0.000 description 1
- 230000004913 activation Effects 0.000 description 1
- 238000013459 approach Methods 0.000 description 1
- 238000003491 array Methods 0.000 description 1
- 238000004364 calculation method Methods 0.000 description 1
- 230000008878 coupling Effects 0.000 description 1
- 238000010168 coupling process Methods 0.000 description 1
- 238000005859 coupling reaction Methods 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 238000005265 energy consumption Methods 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 239000000835 fiber Substances 0.000 description 1
- 230000000977 initiatory effect Effects 0.000 description 1
- 239000004973 liquid crystal related substance Substances 0.000 description 1
- 238000010801 machine learning Methods 0.000 description 1
- 238000013507 mapping Methods 0.000 description 1
- 239000000463 material Substances 0.000 description 1
- 229910044991 metal oxide Inorganic materials 0.000 description 1
- 150000004706 metal oxides Chemical class 0.000 description 1
- 238000005457 optimization Methods 0.000 description 1
- 230000009467 reduction Effects 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
- 238000004088 simulation Methods 0.000 description 1
- 239000007787 solid Substances 0.000 description 1
- 230000000153 supplemental effect Effects 0.000 description 1
- 230000009466 transformation Effects 0.000 description 1
- 238000000844 transformation Methods 0.000 description 1
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/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
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F17/00—Digital computing or data processing equipment or methods, specially adapted for specific functions
- G06F17/10—Complex mathematical operations
- G06F17/16—Matrix or vector computation, e.g. matrix-matrix or matrix-vector multiplication, matrix factorization
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C15/00—Digital stores in which information comprising one or more characteristic parts is written into the store and in which information is read-out by searching for one or more of these characteristic parts, i.e. associative or content-addressed stores
- G11C15/04—Digital stores in which information comprising one or more characteristic parts is written into the store and in which information is read-out by searching for one or more of these characteristic parts, i.e. associative or content-addressed stores using semiconductor elements
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C15/00—Digital stores in which information comprising one or more characteristic parts is written into the store and in which information is read-out by searching for one or more of these characteristic parts, i.e. associative or content-addressed stores
- G11C15/04—Digital stores in which information comprising one or more characteristic parts is written into the store and in which information is read-out by searching for one or more of these characteristic parts, i.e. associative or content-addressed stores using semiconductor elements
- G11C15/046—Digital stores in which information comprising one or more characteristic parts is written into the store and in which information is read-out by searching for one or more of these characteristic parts, i.e. associative or content-addressed stores using semiconductor elements using non-volatile storage elements
Landscapes
- Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- Computational Mathematics (AREA)
- Mathematical Physics (AREA)
- Mathematical Analysis (AREA)
- Mathematical Optimization (AREA)
- Pure & Applied Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- Computing Systems (AREA)
- Data Mining & Analysis (AREA)
- Algebra (AREA)
- Databases & Information Systems (AREA)
- Software Systems (AREA)
- Static Random-Access Memory (AREA)
Abstract
本公开涉及电流输入模拟内容可寻址存储器。提供了采用电流输入模拟内容可寻址存储器(CI‑aCAM)的系统和方法。CI‑aCAM特别构造为aCAM,允许输入到aCAM单元中的模拟信号作为电流被接收。使用所公开的CI‑aCAM还可以实现组合了两个核心模拟计算电路的更大的硬件架构,即用于矩阵乘法的点积引擎(DPE)电路和用于搜索操作的aCAM电路。例如,输出电流信号的DPE电路可以直接与CI‑aCAM的输入连接,CI‑aCAM被设计成以消除转换步骤和电路(例如,模拟到数字和电流到电压)的方式接收电流信号。通过利用CI‑aCAM,组合的DPE‑aCAM硬件架构可以实现为相当紧凑的结构。
Description
背景技术
复杂计算领域中的一个常见计算动作是向量矩阵乘法。此外,密集矩阵计算(诸如向量矩阵乘法)主导了大多数机器学习算法。然而,对于许多工作负载,尤其是在神经网络算法和线性变换(例如,离散傅立叶变换)中,向量矩阵乘法通常会大量消耗计算时间和能量。一种方法已经开始出现,其中利用忆阻器横杆来尝试改善这种与向量矩阵乘法相关联的计算繁重性。通过利用忆阻器横杆的自然电流积累方面,点积引擎(DPE)可以被设计为用于近似矩阵向量乘法的高密度、高功率效率加速器。
内容可寻址存储器(“CAM”)是一种类型的计算存储器,其中存储的数据不是通过其位置而是通过其内容来被访问的。字或“标签”被输入到CAM,CAM在其内容中搜索该标签,当找到时,CAM返回找到的内容所驻留的位置的地址。CAM功能强大,效率高,速度快。然而,CAM也相对较大,消耗大量功率,并且相对昂贵。这些缺点限制了它们在选定应用中的适用性,在这些应用中,它们的功率、效率和速度足以胜过它们的尺寸、成本和功耗。尽管如此,可能有一些应用直接受益于DPE和CAM独特功能的结合。
附图说明
根据一个或多个各种实施例,参考以下附图详细描述了本公开。提供这些附图仅仅是为了说明的目的,并且仅仅描述了典型的或示例实施例。
图1描绘了根据一些实施例的模拟内容可寻址存储器(模拟CAM)的示例图。
图2A示出了根据一些实施例的示例aCAM单元阵列,以及可以被aCAM包括,诸如图1中所示的aCAM。
图2B是根据一些实施例的可由如图2A所示的模拟CAM单元实现以执行搜索操作的示例电压范围的概念图。
图3A描绘了根据一些实施例的实现图2A的aCAM单元的电路的示例配置。
图3B是根据一些实施例的可以被编程到图3A所示的aCAM单元中的搜索参数的下限和上限的概念图。
图4描绘了根据一些实施例的实现电流输入aCAM(CI-aCAM)电路的电路的示例配置。
图5描绘了根据一些实施例的实现包括图4所示CI-aCAM电路的点积引擎(DPE)-CAM电路的电路的示例配置。
图6示出了可以用于实现本公开中描述的实施例的各种特征的示例计算系统。
附图不是详尽的,并且不将本公开限制于所公开的精确形式。
具体实施方式
内容可寻址存储器(“CAM”)是一种将输入模式与其存储的数据进行比较的硬件。在CAM中存储数据的存储器也在相同的位置处执行搜索操作,消除了传统硬件中不同单元之间昂贵的数据传输。在搜索期间,所有存储器单元并行操作,这导致实时网络流量监控、访问控制列表(“ACL”)、关联存储器等应用的巨大吞吐量。
CAM可以在允许CAM即使在断电或以其他方式被移除时也保持其内容的技术中实现。因此,CAM的数据“持久”,并且可以作为“非易失性存储器”。这些技术包括例如电阻切换存储器(即忆阻器)、相变存储器、磁阻存储器、铁电存储器、一些其他电阻随机存取存储器设备或这些技术的组合。
CAM可分为“二进制”或“三进制”。二进制CAM(“BCAM”)对包含二进制位“0”和“1”的输入模式进行操作。三进制CAM(“TCAM”)对不仅包含二进制位“0”和“1”而且包含“X”值的输入模式进行操作(并存储数据)。“X”有时被称为“无关紧要”或“通配符”。在TCAM中搜索输入模式时,“X”将返回匹配的“0”位或“1”位。因此,对输入模式“10X1”的搜索将返回对“1001”和“1011”两者的匹配。注意,BCAM和TCAM两者都使用和操作二进制值“0”和“1”。CAM是数字的,因为数据作为存储器(例如,SRAM、忆阻器等)中的二进制值存储在CAM中,并且输入模式由二进制逻辑“0”和“1”表示。CAM中的每个存储器单元一次处理一个值(0/1或0/1/X),这限制了存储器密度和功率效率。
本公开提供了一种模拟CAM(“aCAM”)电路,特别是搜索多级电压并将模拟值存储在非易失性存储器(例如,忆阻器)中的电流输入aCAM(CI-aCAM)。一个模拟单元可以实现相当于多个数字CAM单元的功能,从而在实现某些基于CAM的功能时在面积和功率节省方面具有显著优势。aCAM电路可以用标准多级数字值驱动,也可以直接用模拟信号驱动,从而进一步增加功能,同时无需昂贵的模数转换。更具体地,当模拟输入电压匹配由aCAM单元定义的特定范围时,aCAM单元输出匹配。
此外,CI-aCAM是aCAM的特定实现,其允许输入aCAM单元的模拟信号作为电流被接收。CI-aCAM的这种独特结构和功能可以是在大量大规模应用中使用的有利构件。例如,使用所公开的CI-aCAM可以实现组合两个核心模拟计算电路(即用于矩阵乘法的点积引擎(DPE)电路和用于搜索操作的aCAM电路)的更大的硬件架构。例如,如本文详细描述的,CI-aCAM使得输出电流信号的DPE电路能够直接与被设计成以消除昂贵的转换步骤和电路(例如,模数转换和电流-电压转换)的方式接收电流信号的CI-aCAM的输入建立连接。因此,通过利用CI-aCAM,所得到的DPE-aCAM硬件架构可以是相当紧凑的结构(例如,与电压输入aCAM相比,仅需要单个附加晶体管来实现CI-aCAM)。
此外,DPE-aCAM硬件架构在神经网络和深度学习领域具有广泛的潜在应用,诸如记忆增强神经网络(MANN),其中在执行神经网络评估之后必须执行相似性测量。在这些应用中,在DPE的硬件设计内包括CI-aCAM的功能可以实现神经网络输出所需的激活的直接映射,从而也为传统的多层神经网络去除了转换步骤。如本文所公开的,利用CI-aCAM还可以提供若干与硬件相关联的优点,诸如通过消除对电流-电压转换步骤电路(例如,当组合DPE和aCAM电路时由跨阻抗放大器实现)的需要,减少了更复杂算法的面积,以及减少了功耗。
根据本公开,aCAM可以匹配“高值”和“低值”之间的所有值,或者在一个范围内的所有值,其中该范围包括非二进制值。这些高值和低值由编程忆阻器设置,因此在本文中被称为“Rhigh”和“Rlow”。Rhigh和Rlow设置可存储在单元中的值的范围的界限,使得单元可以存储模拟值。aCAM中的存储器单元可以存储由Rhigh定义的值和由Rlow定义的值之间的任何值。如果Rhigh=Rmax(其中Rmax是忆阻器的最大电阻)并且Rlow=Rmin(其中Rmin是忆阻器的最小电阻),则存储值为“X”,如三进制CAM中所示。可存储在模拟CAM单元中的等效数字单元或位的数量取决于可编程电阻可编程的状态的数量。为了能够编码n位的等价物(即,n个二进制CAM/TCAM单元),可编程电阻器具有2n+1个状态。
因此,基于忆阻器的aCAM可以搜索模拟电压。基于忆阻器的aCAM还可以将模拟值存储为落入由忆阻器的多级电阻设置的Rlow和Rhigh之间的电阻值。(基于忆阻器的aCAM还可以搜索和存储数字值。)aCAM的一个示例包括排列成行和列的多个单元。每个单元同时对搜索到的数据线电压执行两个模拟比较:“大于”和“小于”,与数字单元相比,处理时间和能耗显著减少。在各种示例中,aCAM可以用标准多级数字值驱动,或者直接用模拟信号驱动。当不需要昂贵的模数转换时,这为增加功能提供了额外的潜力。所提出的忆阻器aCAM的显著功率节省使得CAM能够应用于更一般化的计算和其他新颖的应用场景。
现在转到附图,本文公开的aCAM可以用于数字应用中以执行传统的TCAM功能和操作,也可以应用于模拟应用中。下面进一步讨论的图1示出了aCAM的数字应用的一个特定示例。
现在参考图1,示出了CAM的示例。一般来说,CAM是将输入模式与其存储的数据进行比较的硬件。在CAM中存储数据的存储器也在相同的位置执行搜索操作,消除了传统硬件中不同单元之间昂贵的数据传输。在搜索期间,所有存储器单元并行操作,这可以导致实时网络流量监控、访问控制列表(ACL)、关联存储器等应用的巨大吞吐量。
CAM可以在允许CAM即使在断电或以其他方式被移除时也保持其内容的技术中实现。因此,CAM的数据“持久”,并且可以作为“非易失性存储器”。这些技术包括例如电阻切换存储器(即忆阻器)、相变存储器、磁阻存储器、铁电存储器、一些其他电阻随机存取存储器设备或这些技术的组合。
CAM可以分为“二进制”或“三进制”。二进制CAM(BCAM)对包含二进制位“0”和“1”的输入模式进行操作。此外,TCAM对不仅包含二进制位“0”和“1”而且包含“X”值的输入模式进行操作(并存储数据)。“X”有时被称为“无关紧要”或“通配符”。在TCAM中搜索输入模式时,“X”将返回匹配的“0”位或“1”位。因此,对模式“10X1”的搜索将返回“1001”和“1011”的匹配。注意,BCAM和TCAM两者都使用和操作二进制值“0”和“1”。CAM是数字的,因为数据作为存储器(例如SRAM、忆阻器等)中的二进制值存储在CAM中,并且输入模式由二进制逻辑“0”和“1”表示。CAM中的每个存储器单元一次处理一个值(0/1或0/1/X),这限制了存储器密度和功率效率。
返回参考图1,示出了可以实现本文公开的搜索技术和特征的CAM 100的示例。图示示例中所示的CAM 100可以用于数字应用中,其中搜索模式和存储在CAM 100中的值是数字的。
CAM 100可以包括搜索数据寄存器105、模拟存储器单元阵列110和编码器115。模拟单元阵列110存储W个“存储的字”0到W-1。每个存储的字是模式值,其中至少一些可以是如下所述的模拟值。在使用中,搜索数据寄存器105可以加载模拟或二进制输入模式,该模式可以从模拟单元阵列110的内容中搜索。图1的示例对二进制输入模式进行操作,如去往数据线寄存器的“N位”所示。下面进一步讨论对模拟搜索模式进行操作的示例。因此,不需要像数字CAM的情况中那样在两列中存储两位数据,模拟CAM的一列可以编码四个值。
模拟单元阵列110包括排列成行和列的多个模拟单元120(图1中仅示出一个)。参考图2更突出地示出并更详细地描述了CAM内模拟单元120的配置。在搜索期间,加载到搜索数据寄存器105中的模拟输入模式通过多条搜索线125被通信到模拟单元阵列110。一些示例可以使用数据线作为搜索线的补充或替代。然后,每个单元120指示模拟输入模式的值是否与该单元中包含的值的范围(例如,包括非二进制值的值的范围)相匹配。
单元是否包含匹配的指示通过多条匹配线130被通信到编码器115。注意,如果搜索到的字(或模式)与单行中存储的字相匹配,就找到了匹配。匹配线不输出单个单元的匹配,而是输出存储的行字是否匹配搜索到的数据(行)。更具体地,匹配线130沿行被预充电为高,数据在沿列搜索线125(或数据线)上被搜索,并且如果搜索到的和存储的内容之间发生不匹配,则130放电并变低。如果匹配发生,则匹配线130保持高。
编码器115是优先级编码器,其返回与模拟单元阵列110的匹配位置。注意,编码器115在一些示例中可以被省略,特别是在多个匹配位置被识别和期望的示例中。例如,因为“通配符”值可以包括在输入模式中,因此可以在W个存储的字中找到多个匹配。一些示例可能希望识别多于一个或者甚至所有的匹配位置,并且这些示例将省略编码器115。
在一个特定示例中,图2A示出了aCAM的模拟单元阵列200的所选择的部分,例如图1中的aCAM 100。aCAM单元205排列成行210和列215,并且每个都可以通过数据线DL1、DL2单独搜索。在匹配线ML1、ML2上指示是否从DL1和DL2上的数据以及由每个aCAM单元的M1和M2编程值存储在行中的数据中找到匹配。受益于本公开的本领域技术人员将理解,模拟单元阵列200的面积通常比2×2阵列大。模拟单元阵列的精确大小将是实现特定的,例如是aCAM单元的M×N阵列(其中M和N大于2)。图2A中描绘的2×2部分是为了说明的目的而示出的,而不是限制性的。
每个aCAM单元205包括两个忆阻器M1、M2(未单独示出),它们用于定义存储在相应aCAM单元205中的值的范围。在一些示例中,图2B概念性地示出了可以用于设置aCAM单元205的存储的模拟值或范围的电阻差。可以由忆阻器M1和M2两者实现的电阻R的总范围由最大电阻Rmax和最小电阻Rmin定义。最大电阻Rmax和最小电阻Rmin由忆阻器的材料性质给出。电阻范围Rrange由Rhigh和Rlow定义。Rhigh通过在M1中编程值来确定,而Rlow通过在M2中编程值来确定。当存储模拟值时,模拟数字经由两个电阻阈值(高电阻阈值和低电阻阈值,单元的模拟值(或范围值)位于该阈值内)被编码在单元中。下面将进一步讨论实现aCAM单元205的若干电子电路。
如上所述,本公开可以在内容可寻址存储器中编码多于三个级别。在忆阻器CAM中,信息最终被映射到电阻级别,并且在Rlow和Rhigh之间有2n+1个不同的电阻级别。也就是说,Rrange=Rhigh-Rlow,并且包括2n+1个不同的电阻级别,每个不同的电阻级别代表不同的值。例如,当Rhigh≠Rlow且Rhigh>Rlow时,则aCAM单元205存储Rlow和Rhigh之间的所有级别。举另一个示例,如果Rhigh=Rmax并且Rlow=Rmin,则aCAM单元205存储X=通配符值。又例如,如果Rhigh=电阻R1,Rlow=R1-delta,其中delta=(Rmax-Rmin)/(2n),则aCAM单元205存储单级别R1。
图3A描绘了实现aCAM单元300的电子电路,在一些示例中,该aCAM单元300可以用于实现图2A的aCAM单元205。作为一般描述,aCAM单元300充当搜索模拟电压范围的“模拟TCAM”单元。匹配线(ML)首先被预充电到高电压。然后向DL1和DL2施加输入,如果该输入超出aCAM单元中编码的模拟电压范围,则最终将使ML放电。匹配模拟电压范围被定义为非易失性忆阻器的电导,其中M1定义了电压下限,M2定义了电压上限。
aCAM单元300包括“低侧”306和“高侧”303,这样称呼是因为忆阻器M2和忆阻器M1被编程为分别确定Rlow和Rhigh的值。高侧303包括第一晶体管T1和第一忆阻器M1。第一忆阻器M1结合第一晶体管T1定义了第一分压器309,并且当被编程时,定义了值范围Rrange的高值Rhigh。高侧303还包括第二晶体管T2,其在使用中指示搜索值是否与高值Rhigh匹配。低侧306包括第三晶体管T3和第二忆阻器M2。第二忆阻器M2结合第三晶体管T3定义了第二分压器312。当第二忆阻器M2被编程时,忆阻器M2定义值范围Rrange的低值Rlow。低侧306还包括另一晶体管T6,其在使用中指示搜索值是否与低值Rlow相匹配。
aCAM单元300还包括匹配线ML、搜索线SLHI、SLLO和数据线DL、DL1。如上所述,忆阻器晶体管对M1/T1和M2/T3定义了相应的分压器309、312。当忆阻器M1、M2被编程时,分压器309、312用于编码Rhigh和Rlow。因此,在该示例中,在每个忆阻器-晶体管对M1/T1和M2/T3中,模拟搜索被实现为晶体管的栅极电压,以创建可变电阻器分压器,其中忆阻器被编程为模拟(存储的)值。在图3A的示例中,输入可以连接在一起,使得T1/M1和T3/M2在功能上等效,但是T4/T5形成反相器。因此,左侧和右侧独立地定义高侧和低侧,并且仅当数据线DL上的电压在由M1和M2电阻定义的电压范围内时,匹配线ML才为高。也就是说,连接到T3/M2的低侧具有节点栅极电压,该节点栅极电压被晶体管T4、T5反相,使得更小的输入电压值(例如,数据线DL输入电压小于阈值)驱动ML为低,这表示“不匹配”(例如,数据线DL输入值小于由Rlow定义的最小电压)。例如,匹配线ML沿行被预充电为高,在搜索线SLHI、SLLO上沿列搜索数据,并且如果搜索到的内容与存储的内容之间发生不匹配,则匹配线ML放电并变低。如果发生匹配,则匹配线ML保持高。注意,尽管T4/T5反相器在所示示例中位于低侧306,但是在其他示例中,它也可以实现在高侧303中。
更具体地,忆阻器M1和晶体管T1形成分压器309,其中M1是具有可调非易失性电阻的忆阻器,T1是其电阻随着数据线DL上的输入电压而增加的晶体管。因此,存在取决于M1电阻的阈值电压,当数据线DL输入电压小于该阈值时,下拉晶体管T2导通,其下拉匹配线ML,产生“不匹配”结果。类似地,忆阻器M2和晶体管T3形成另一个分压器312,并且内部电压节点在施加到另一个下拉晶体管T6之前被晶体管T4、T5反相。结果,利用忆阻器M1、M2中适当编程的电阻,只有当数据线DL上的电压在由M1和M2电阻定义的特定范围内时,aCAM单元300才保持匹配线ML为高。
仍然参考图3A,搜索结果因此被感测为ML上的电压电平,当下拉晶体管T1和/或T3的栅极电压超过其阈值电压(Vth)时,该电压电平被下拉(即,降低)。G1上的电压(VG1)随着VDL而降低。因此,存在下限电压(Vlo),其可由相对应的忆阻器电导配置,即当VDL小于Vlo时,VG1大于下拉晶体管的Vth,导致匹配线ML被下拉以得到“不匹配”结果。类似地,G2上的电压(VG2)随着VDL增加,因此上限电压由同一aCAM单元300中的另一忆阻器电导配置。结合这两个部分,搜索电压上限和下限(即搜索电压范围)由一个aCAM单元中的两个忆阻器电导来配置。
匹配线ML的预充电可以通过启用预充电外围设备(图3A中未示出)来启动。数据线DL连同匹配线ML预充电一起被断言,同时SLHI保持为低。通过断言SLHI开始搜索。具有搜索范围的ML上的瞬态电压响应可以在忆阻器中定义。在启动搜索之后从匹配线ML感测的搜索结果显示,当数据线DL上的电压落入由G(M1)和G(M2)给出的忆阻器电导定义的预定义范围内时,aCAM单元300输出匹配,其中电导是电阻的反相。如果匹配发生,则匹配线ML保持高,输出由电压感测外围设备(图3A中未示出)感测的电压信号。随着数据线DL电压的增加,下拉晶体管T2的图3A中G1处的栅极电压VG1下降到低于其阈值的电压。随着数据线DL电压的增加,下拉晶体管T6的图3A中G2处的栅极电压VG2增加到高于其阈值的电压。匹配搜索的下限和上限的截止数据线DL电压随着相对应的忆阻器电导而增加。
aCAM单元可以搜索模拟电压,并将模拟值存储为模拟电压范围内的值。图3B是概念图,为了描述M2设置定义搜索参数的下限(V_DLlowerbound)部分的模拟值,以及M1设置定义搜索参数的上限(V_DLupperbound)部分的模拟值,其可以被编程到图3A所示的aCAM单元中。在该示例中,条350的阴影部分表示宽度,这是在aCAM单元中编码的电压范围。如上所述,宽度(由条350的阴影部分表示)可以包括具有由M1设置的上电压电平的上限的模拟电压值的范围。此外,宽度(由条350的阴影部分表示)可以包括具有由M2设置的下电压电平定义的下限的模拟电压值的范围。因此,为了对由aCAM单元(如图2A所示)存储的模拟值进行搜索以产生匹配,施加在数据线DL上的电压(V_DL)(表示搜索输入数据)必须是落在由这些限制限定的电压值范围内的电压值(例如,V_DLlowerbound≤V_DL≤V_DLupperbound或在条350的阴影部分内)。
现在参考图4,描绘了实现所公开的电流输入aCAM(CI-aCAM)的电路400的示例配置。CI-aCAM电路400实现了aCAM单元(本文也称为CI-aCAM单元),其功能类似于电压输入aCAM电路(如图3A所示)。因此,CI-aCAM电路400可以被描述为搜索模拟电流范围的“CI-aCAM单元”。
与接受电压信号作为输入的电压输入aCAM实现(如前面参考图3A和图3B所讨论的)相反,CI-aCAM电路400被独特地配置为能够接收电流信号作为输入信号,同时保持相同的可搜索aCAM功能。因此,通过采用支持电流输入的CI-aCAM电路400,通常为电流信号的DPE输出的直接连接可以作为电流信号(例如,没有从电流到电压的辅助转换)直接馈入CI-aCAM的输入。因此,CI-aCAM电路400可以在广泛的应用中发挥作用,其中aCAM以输入信号的形式接收搜索输入数据可能是最优的,该输入信号作为电流信号传送。如本文所公开的,CI-aCAM电路400的一个这样的应用是实现组合的DPE-aCAM电路结构,如图5所示。
再次参考图4,与电压输入aCAM(图3A中所示)的实现相比,CI-aCAM电路400通常可以被描述为包括附加晶体管,如T0晶体管410所示。具体地,如图4的示例配置所示,CI-aCAM电路400包括若干组件,包括:T0晶体管410;T1晶体管411;T2晶体管412;T3晶体管413;T5晶体管414;二极管415;M1忆阻器430;以及M2忆阻器431。CI-aCAM电路400还包括若干条线,包括:匹配线ML 401、搜索线SLHI 402和输入数据线IDL 403(本文也称为输入线)。传送输入数据(搜索输入数据)的输入信号作为电流信号进入CI-aCAM电路400。例如,作为输入信号传导到CI-aCAM 400中的电流信号的I0电流可以由输入数据线IDL 403接收。作为操作示例,CI-aCAM电路400可以用于MANN处理应用中,例如作为下面参考图5描述的DPE-aCAM实现中的元件。根据该示例,进入CI-aCAM电路400中的输入数据(即,电流信号IDL 420)可以表示利用DPE(例如,神经网络的层,其与CI-aCAM中存储的其他向量相关联)实现的矩阵向量乘法得到的向量的元素之一。继续这个示例,给定大小为100×100的DPE和电导可编程在1uS和100uS之间的忆阻器,假设DPE的电压输入等于大约0.1V,输入信号IDL 420(传送搜索输入数据)可以在10uA-1mA的范围中。
如前所述,模拟搜索被实现为晶体管的栅极电压,以创建可变电阻分压器,其中忆阻器被编程为模拟(存储的)值。例如,相对于沿着输入线IDL 403的电流,T2晶体管412的栅极电压可以数学地表示为:
匹配线ML 401首先被预充电到高电压,例如大约1V。CI-aCAM电路400被配置为使得当示为VGS,T2421的T2晶体管412处的栅极电压为高时(例如,下拉T2晶体管412导通),这是在电流IDL 420为低时引起的,其将最终使匹配线ML 401放电,这表示“不匹配”(相对于由CI-aCAM电路400存储的模拟值和搜索输入数据之间的匹配)。在操作中,在输入数据线IDL403上接收电流信号作为CI-aCAM电路400的输入,即输入信号,示为电流IDL420。换句话说,电流IDL420表示由CI-aCAM电路400实现的CI-aCAM单元的搜索输入数据,其经由输入线403被接收。该电流信号IDL420然后流入由T0晶体管410、T1晶体管411和T3晶体管413形成的“电流镜”电路块430(由虚线框表示)。
如本文所指的,电流镜是被设计成通过控制电路的另一个有源器件中的电流来复制或“镜像”通过一个有源器件的电流的电路,无论负载如何都保持输出电流恒定。在图4所示的配置中,三个晶体管包括“电流镜”电路块430,即T0晶体管410、T1晶体管411和T3晶体管413。可以看出,T0晶体管410的栅极端和漏极端相连。此外,T0晶体管410的栅极端耦接到T1晶体管411的栅极端,T3晶体管413的栅极端耦接到T1晶体管411的栅极端。T0晶体管410、T1晶体管411和T3晶体管413中的每一个都具有耦接到地的各自的源极端。晶体管T0晶体管410、T1晶体管411和T3晶体管413通过它们各自的栅极端彼此耦接,形成“电流镜”电路块430。作为一般描述,“电流镜”电路块430使得通过T0晶体管410传导的电流信号被“复制”跨T1晶体管411和T3晶体管413。重申,CI-aCAM电路400的这个“电流镜”电路块430包括用于从T0晶体管410接收镜像电流的电路。就“电流镜”电路块430的操作而言,因为漏极和栅极连接在一起,因此T0晶体管410的栅极-源极结的作用类似于二极管。显示为电流信号IDL420的电流进入T0晶体管410的漏极端,导致跨T0晶体管410的栅极-源极结建立给定的电压。结果,T0晶体管410、T1晶体管411和T3晶体管413上的栅极-源极电压相同。基于具有相同栅极电压VGS的晶体管(例如,相同尺寸,相同温度)将具有相同的漏极电流的基本关系,相同的栅极-源极电压由此导致T1晶体管411的漏极电流和T3晶体管413的漏极电流精确地镜像T0晶体管410的漏极电流(假设两个晶体管精确匹配),即IDL420。因此,流入T0晶体管410的电流被镜像到T1晶体管411和T3晶体管413中。在图4的示例配置中,“电流镜”电路块430的晶体管T0晶体管410、T1晶体管411和T3晶体管413被示为场效应晶体管(FET)。尽管如此,这种配置不是限制性的,并且可以采用其他晶体管器件,诸如双极结型晶体管(BJT)、结型栅极场效应晶体管(JFET)和金属氧化物半导体场效应晶体管(MOSFET)。此外,在一些实施例中,“电流镜”电路块430可以使用多于三个的晶体管,并且在其配置中包括额外的器件,以使得性能水平得以改善。因此,由于“电流镜”电路块430的前述镜像效应,流入T1晶体管411和T3晶体管413的电流是镜像副本,其等于流入T0的电流,其被描绘为电流IDL420。
作为一般描述,CI-aCAM电路400被配置为使得T2晶体管412处的栅极电压(即,电压VGS,T2421)随着电流IDL420增加而减少,相反地,T2晶体管412处的栅极电压(即,电压VGS, T2421)随着电流IDL420减少而增加。因此,在电流IDL420是相当小的值,例如大约0.1μA的情况下,(电流IDL420也在T2晶体管412处被镜像)导致VGS,T2421相当高,例如大约1V。在ML 401放电时,在搜索操作中满足“不匹配”条件。与电流IDL420相关联的小值的其他示例可以是在0.05μA和0.5μA范围内的电流信号。与栅极电压CGS,T2421相关联的高值的其他示例可以是在1V和10V范围内的电压信号。与此相对,当电流IDL420在输入处相当大,例如大约50μA时,满足“匹配”条件。具体地,该“匹配”条件不由忆阻器430、431调制。为了达到此“匹配”条件,当电流IDL420为相当高的值,且VGS,T2421为相当低的值(例如,大约0V)(例如,下拉T2晶体管412截止)时,则匹配线ML 401保持充电。与电流IDL420相关联的大值的其他示例可以是在25μA和75μA的范围内的电流信号。与栅极电压VGS,T2421相关联的低值的其他示例可以是在0V和0.05V范围内的电压信号
此外,CI-aCAM电路400被配置为使得搜索条件能够被忆阻器430、431调制。在这种情况下,CI-aCAM电路400的操作类似于上面参考图3A详细描述的电压输入aCAM。也就是说,CI-aCAM电路400搜索由M1忆阻器430和M2忆阻器431的电导设置的模拟电压范围。在该实施例中,如果输入电流(搜索输入数据)IDL420对应于在CI-aCAM单元中编码的模拟电压范围之外的电压,则存在“不匹配”。对于每个忆阻器-晶体管对M1/T1和M2/T3,模拟搜索被实现为晶体管的栅极电压,以创建可变电阻分压器,其中忆阻器被编程为模拟(存储的)值。匹配模拟电压范围被定义为非易失性忆阻器430、431的编程电导,其中M2忆阻器431定义电压下限,M1忆阻器430定义电压上限。M1忆阻器430和M2忆阻器431的忆阻器电导可以经由T1晶体管411和T3晶体管413的栅极端处的专用输入来编程(图4中未示出)。在发起搜索之后,可以从匹配线ML 401感测搜索结果,其中当输入数据线IDL 403上的电流IDL 420具有落入由G(M1)和G(M2)给出的忆阻器电导定义的预定义范围内的相关联的电压时,CI-aCAM单元输出匹配。例如,感测匹配线ML 401上的低电压对应于不匹配,而感测匹配线ML 401上的高电压对应于匹配。如前所述,匹配线ML 401可以被预充电用于快速感测。在一些实施例中,感测匹配线ML 401上的搜索结果涉及在给定时间之后测量匹配线ML 401的电流。例如,在不匹配的情况下,匹配线ML 401上的电压将放电,其中降低和/或放电的电压导致在匹配线ML401上感测到小电流。
随着数据线DL电流IDL 420的增加,下拉T2晶体管412的栅极电压VGS,T2 421下降到低于其阈值的电压。随着数据线DL电流IDL 420的增加,下拉晶体管T5的栅极电压VGS,T5422增加到高于其阈值的电压。因此,对于针对由电路400实现的CI-aCAM单元存储的模拟值的搜索以产生匹配(由忆阻器电导修改),施加到输入数据线IDL 403的电流IDL 420(表示搜索输入数据)必须与落入由M1忆阻器430设置的上限和M2忆阻器431设置的下限所定义的电流值范围内的电流值相关联(例如,I_DLlowerbound≤IDL≤I_DLupperberbound。由于M1忆阻器430和M2忆阻器431分别设置Rhigh限制和Rlow限制,其定义了可以存储在CI-aCAM单元中的电阻值(即,存储在CI-aCAM中的模拟值)的范围的界限,该定义的电阻范围也对应于定义电流输入范围[I_DLlowerbound,IDLupperbound]。因此,由M1忆阻器430和M2忆阻器431设置的限制也用作电流值的限定范围(对应于电阻值的范围),这使得当输入信号(电流IDL 420)落入该电流值的范围内时,由电路400实现的CI-aCAM单元能够在匹配线ML 401上返回匹配。
图5描绘了DPE-aCAM电路500的概念性配置的示例,DPE-aCAM电路500可以使用CI-aCAM电路(如图4所示)来构建,如本文所公开的。如前所述,CI-aCAM电路具有可以在许多应用中利用的独特能力,DPE-aCAM电路500就是这样一种应用。通常,DPE-aCAM电路500的配置可以被描述为两个耦接在一起的核心模拟计算电路块,即实现用于执行矩阵乘法的DPE电路510的电路块和实现用于基于矩阵乘法的结果执行搜索操作的CI-aCAM阵列电路520的附加电路块。通过将DPE输出(在图5中显示为DPE电路510的输出511a-511f)连接到aCAM的输入(在图5中显示为各个CI-aCAM 520a-520f的输入521a-521f),可以实现新的功能和优化。因此,DPE电路510可以输出传送电路510执行的矩阵乘法的结果的多个电流信号。随后,CI-aCAM阵列电路520以允许用于CI-aCAM阵列电路520的输入信号(例如,电流信号)也传送由DPE电路510执行的矩阵乘法的结果的方式,从DPE电路510接收这些电流信号作为输入信号。CI-aCAM阵列电路520生成对应于基于输入信号的多个搜索操作的输出信号,其中输入信号与矩阵乘法的结果相关联。例如,DPE-aCAM电路500可以用于神经网络应用中,其中DPE510特别用于实现各种特征提取层(经由神经网络全连接层),然后所提取的特征向量可以被输入到CI-aCAM 520a-520f中。
忆阻器是可以在广泛的电子电路(诸如存储器、开关、射频电路以及逻辑电路和系统)中用作组件的器件。图5示出了忆阻器的应用的示例,示出为形成DPE 510的交叉矩阵。交叉矩阵具有布置在其中的多个忆阻器512。在一些情况下,DPE 510的交叉矩阵可以是存储器结构。更进一步,DPE 510的交叉矩阵510可以用于更大规模的系统,诸如基于DPE的神经网络加速器。一般而言,DPE 510的忆阻器交叉矩阵可以用于实现用于计算神经网络的节点值的硬件加速器。作为示例,在神经网络处理加速器中,DPE 510的忆阻器交叉矩阵可以被编程为计算节点值。DPE 510的忆阻器交叉矩阵的存储器单元可以根据权重矩阵来编程。通过DPE 510的忆阻器交叉矩阵驱动从输入向量映射的输入电压可以产生输出电流值,例如跨每列516a-516f累积,在一些情况下,该输出电流值可以最终被转换成表示矩阵向量相乘结果的数字值。换句话说,DPE电路510的忆阻器交叉矩阵包括多列输出线,以收集从电阻式存储器元件输出的所有电流,其中每列516a-516f上收集的电流等于相对应的矩阵乘法值(或矩阵乘法的向量结果的元素)。以这种方式,加速器可以为神经网络提供节点值的硬件计算。在所示示例中,DPE 510的忆阻器交叉矩阵被配置为包括来自矩阵中的每个忆阻器517的贡献。在DPE 510的忆阻器交叉矩阵的结或交叉点处使用忆阻器517使得能够对每个这样的结处的电阻或电导(G)进行编程。
采用忆阻器517来执行用于神经网络处理的向量矩阵计算已经导致了相对于传统处理的许多度量的进步(具有若干数量级的优势),诸如性能、功率和成本。如前所述,忆阻器517经常处于许多硬件设计的核心,用于实现基于DPE的处理器(诸如DPE 510)的矩阵乘法功能。
由于CI-aCAM 520a-520f以直接接收来自DPE 510的输出的方式发挥作用(leverage),并且没有使用电压输入aCAM所必需的任何额外的处理延迟,因此执行向量乘法加搜索操作可以由DPE-aCAM电路500以增强的效率来实现。重申,通过使用CI-aCAM520a-520f独特地构造DPE-aCAM电路500,这消除了在作为DPE的输出的电流信号和作为到aCAM的输入所需的电压信号之间发生的中间转换步骤。因此,所公开的DPE-aCAM电路500潜在地加速不同的操作,诸如记忆增强神经网络(MANN),并增加CI-aCAM本身的容量。
如图5所示,DPE-aCAM电路500配置包括:电路500的DPE 510部分,其实现电路的矩阵乘法能力,并且被构造为忆阻器交叉;以及电路500的CI-aCAM阵列520部分,其实现电路的搜索能力并被实现为一行多个单独的CI-aCAM电路520a-520f。独立地对应于CI-aCAM电路520a-520f中的一个的每个输入521a-521f耦接到来自DPE 510的相对应的输出511a-511f。换句话说,每个CI-aCAM电路520a-520f使它们各自的输入521a-521f耦接到来自实现DPE 510的矩阵的忆阻器交叉的列的输出511a-511f。因此,作为来自输出511a-511f的向量矩阵乘法运算的结果,从来自DPE 510的忆阻器交叉的每个相应列输出的电流信号可以作为要由输入521a-521f接收的电流信号被直接馈送到分别耦接的CI-aCAM电路520a-520f。如前所述,每个CI-aCAM电路520a-520f中的T0晶体管(作为“电流镜”电路块中的元件)接收从DPE 510的列输出的电流信号。换句话说,从DPE电路510的每个列516a-516f(对应于DPE电路510的输出线511a-511f)输出的每个相应的电流信号表示由DPE电路510执行的矩阵向量乘法的向量结果的元素。因此,CI-aCAM电路520a-520f中的每一个接收电流作为输入信号(来自输出线511a-511f中相对应的一个),该输入信号对应于与由DPE电路510执行的矩阵向量乘法的结果相关联的元素。具体地,CI-aCAM阵列电路520可以对已经接收到的每个输入信号(或者来自矩阵向量乘法的向量结果的每个元素)执行相应的搜索操作。因此,来自各个CI-aCAM电路520a-520f中的一个的每个输出信号传送对其已经接收到的相对应的元素(来自DPE电路510的相对应的列516a-516f的输出)执行的搜索操作(例如,匹配或不匹配)的结果。来自DPE 510的忆阻器交叉的每一列的输出电流和CI-aCAM电路520a-520f中的每一个的输入电流之间的这种关系可以数学地描述为:
其中Ij是直接流入每个CI-aCAM电路的T0晶体管的电流。
特别地,图5突出地示出了至少一个CI-aCAM电路的电路,即CI-aCAM电路520a。CI-aCAM电路520a被示为耦接到对应于DPE 510的矩阵或忆阻器交叉的第一列的输出511a。因此,图5示出了来自DPE 520的输出511a的输出线耦接到CI-aCAM电路520a的输入线(例如,参考图4所提及的数据输入线),所述输入线直接耦接到T0晶体管522a的漏极端,由此允许从DPE 510的此行输出的电流信号直接流入CI-aCAM电路520a的T0晶体管522a中。尽管在图5中未示出,但是可以假设剩余的CI-aCAM电路520b-520f也具有这种配置,它们各自的输入线(或数据输入线)和T0晶体管以允许从输出511a-511f中的每一个(从DPE 510的每一列)传导的电流是直接输入到每一个相对应的耦接的CI-aCAM电路520a-520f中的电流的方式耦接到来自DPE 510的忆阻器交叉的相对应的输出列。
因此,这种配置可以将CI-aCAM电路的H×N阵列用于忆阻器交叉中的相对应的M×N忆阻器矩阵,其中阵列的每行中包括的CI-aCAM电路的数量(例如,CI-aCAM阵列250的列的数量)等于DPE 510的忆阻器交叉矩阵中的列的数量。在图5的示例中可以看出,DPE-aCAM电路500的CI-aCAM阵列520部分被构造为CI-aCAM电路520a-520f的2×6阵列,以容纳DPE-aCAM电路500的DPE 510部分的6×6忆阻器交叉矩阵,其中每个CI-aCAM电路520a-520f(在一行内)对应于DPE 510的忆阻器交叉矩阵的相应列。在图5的配置中,CI-aCAM阵列520中的两行CI-aCAM电路520a-520f中的每一行可以具有独立的输出。然而,在实施例中,DPE 510的忆阻器交叉矩阵的多行和/或多列可以使用单个CI-aCAM电路,这可以减少DPE-aCAM电路500的实现的规模影响和开销。
因此,所公开的DPE-aCAM电路500实现了用于矩阵乘法(即,由DPE 520实现的功能)和搜索操作(即,由CI-aCAM阵列520实现的功能)的两个核心模拟计算电路的有效组合。深度学习领域中的所公开的DPE-aCAM电路500的应用的示例是将该电路用于MANN。此外,DPE-aCAM电路500的独特结构和功能使得大范围的复杂算法能够通过组合其不同的DPE和aCAM运算而被端到端地加速。例如,所公开的DPE-aCAM电路500的架构,其中DPE与CI-aCAM级联,可以被利用来实现MANN,其中在DPE电路执行神经网络评估之后,可以由CI-aCAM电路执行相似性测量。在另一个示例中,DPE-aCAM电路500可以使用DPE电路实现各种特征提取层(经由神经网络完全连接的层),然后将所提取的特征向量作为可搜索的输入应用于CI-aCAM电路。此外,通过利用所公开的CI-aCAM的独特能力,消除了与将DPE与基于电压的aCAM集成相关联的高度消耗资源的转换步骤(例如,将电流输出转换成电压输入)。因此,所公开的DPE-aCAM电路500实现了神经网络处理中的改善的效率(例如,通过消除专用于大量无关转换的处理),否则该效率会被繁琐的开销减慢。此外,所公开的DPE-aCAM电路500的结构消除了对补充电路(诸如在DPE和基于电压的aCAM之间集成若干跨阻放大器,这是在这种配置中支持电流-电压转换(和模数转换)所需要的)的需要。限制计算和硬件开销是推进神经网络和深度学习技术的关键,因为随着算法复杂性的增加,这些问题可能会以影响性能和成本的方式扩大。因此,通过实现功耗和电路面积开销的显著降低,所公开的DPE-aCAM电路500可以随着用于神经网络和不断出现的其他计算密集型应用的高级实现作为构建块。
图6描绘了示例计算机系统600的框图,其中可以实现本文描述的各种实施例。例如,计算机系统600可以实现前述的DPE-aCAM电路500(如图5所示),其采用所公开的CI-aCAM电路400(如图4所示)来实现复杂的计算技术,诸如神经网络计算。计算机系统600包括用于通信信息的总线602或其他通信机制、与总线602耦接的用于处理信息的一个或多个硬件处理器604。硬件处理器604可以是例如一个或多个通用微处理器。
计算机系统600还包括耦接到总线602的主存储器606,诸如随机存取存储器(RAM)、高速缓存和/或其他动态存储设备,用于存储信息和要由处理器604执行的指令。主存储器606还可以用于在处理器604执行指令期间存储临时变量或其他中间信息。当存储在处理器604可访问的存储介质中时,这些指令使计算机系统600成为专用机器,该专用机器被定制为执行指令中指定的操作。
计算机系统600还包括耦接到总线602的只读存储器(ROM)608或其他静态存储设备,用于为处理器604存储静态信息和指令。提供诸如磁盘、光盘或USB指状驱动器(闪存驱动器)等的存储设备610,并耦接到总线602,用于存储信息和指令。
计算机系统600可以经由总线602耦接到显示器612,诸如液晶显示器(LCD)(或触摸屏),用于向计算机用户显示信息。包括字母数字键和其他键的输入设备614耦接到总线602,用于向处理器604通信信息和命令选择。另一种类型的用户输入设备是光标控制816,诸如鼠标、轨迹球或光标方向键,用于向处理器604通信方向信息和命令选择,并用于控制显示器612上的光标移动。在一些实施例中,与光标控制相同的方向信息和命令选择可以经由在没有光标的情况下接收触摸屏上的触摸来实现。
计算系统600可以包括实现GUI的用户界面模块,该GUI可以作为由计算设备执行的可执行软件代码存储在大容量存储设备中。作为示例,该模块和其他模块可以包括组件,诸如软件组件、面向对象的软件组件、类组件和任务组件、进程、函数、属性、过程、子例程、程序代码段、驱动程序、固件、微码、电路、数据、数据库、数据结构、表格、数组和变量。
计算机系统600可以使用定制的硬连线逻辑、一个或多个ASIC或FPGA、固件和/或程序逻辑来实现本文描述的技术,其与计算机系统相结合使得或编程计算机系统600成为专用机器。根据一个实施例,响应于处理器604执行包含在主存储器606中的一个或多个指令的一个或多个序列,计算机系统600执行本文的技术。这些指令可以从诸如存储设备610的另一个存储介质读入主存储器606。包含在主存储器606中的指令序列的执行使得处理器604执行本文描述的处理步骤。在替代实施例中,可以使用硬连线电路来代替软件指令或者与软件指令相结合。
本文使用的术语“非暂时性介质”和类似术语指的是存储使得机器以特定方式运行的数据和/或指令的任何介质。这种非暂时性介质可以包括非易失性介质和/或易失性介质。非易失性介质包括例如光盘或磁盘,诸如存储设备810。易失性介质包括动态存储器,诸如主存储器606。非暂时性介质的常见形式包括,例如,软磁盘、软盘、硬盘、固态驱动器、磁带或任何其他磁性数据存储介质、CD-ROM、任何其他光学数据存储介质、任何具有孔图案的物理介质、RAM、PROM和EPROM、FLASH-EPROM、NVRAM、任何其他存储器芯片或盒式存储器及其网络版本。
非暂时性介质不同于传输介质,但可以与传输介质结合使用。传输介质参与非暂时性介质之间的信息传输。例如,传输介质包括同轴电缆、铜线和光纤,包括包含总线602的导线。传输介质还可以采用声波或光波的形式,诸如在无线电波和红外数据通信期间产生的声波或光波。
计算机系统600还包括耦接到总线602的通信接口618。网络接口618提供耦接到一个或多个网络链路的双向数据通信,所述网络链路连接到一个或多个本地网络。例如,通信接口618可以是综合业务数字网(ISDN)卡、电缆调制解调器、卫星调制解调器或提供到相对应的类型的电话线的数据通信连接的调制解调器。作为另一个示例,网络接口618可以是局域网(LAN)卡,以提供到兼容LAN(或与WAN通信的WAN组件)的数据通信连接。也可以实现无线链路。在任何这样的实现中,网络接口618发送和接收携带表示各种类型信息的数字数据流的电、电磁或光信号。
网络链路通常通过一个或多个网络向其他数据设备提供数据通信。例如,网络链路可以通过本地网络提供到主计算机或由互联网服务提供商(ISP)操作的数据设备的连接。ISP又通过现在通常称为“互联网”的全球分组数据通信网络提供数据通信服务。局域网和互联网两者都使用携带数字数据流的电信号、电磁信号或光信号。通过各种网络的信号和网络链路上的信号以及通过通信接口818的信号(这些信号携带去往和来自计算机系统600的数字数据)是传输介质的示例形式。
计算机系统600可以通过网络、网络链路和通信接口618发送消息和接收数据,包括程序代码。在互联网示例中,服务器可以通过互联网、ISP、本地网络和通信接口618发送应用程序的请求代码。
接收到的代码可在其被接收到时由处理器604执行,和/或存储在存储设备610或其他非易失性存储器中以供以后执行。
如本文所使用的,电路可以利用任何形式的硬件、软件或其组合来实现。例如,可以实现一个或多个处理器、控制器、ASIC、PLA、PAL、CPLD、FPGA、逻辑组件、软件例程或其他机制来组成电路。在实现中,本文描述的各种电路可以被实现为分立电路,或者所描述的功能和特征可以在一个或多个电路之间部分或全部共享。即使各种特征或功能元件可以被单独描述或要求保护为单独的电路,但是这些特征和功能可以在一个或多个公共电路之间共享,并且这样的描述不应该要求或暗示需要单独的电路来实现这样的特征或功能。在全部或部分使用软件实现电路的情况下,这种软件可以被实现为与能够执行针对其描述的功能的计算或处理系统(诸如计算机系统600)一起操作。
如本文所使用的,术语“或”可以被解释为包括或排除的意思。此外,单数形式的资源、操作或结构的描述不应被理解为排除复数形式。除非另有具体说明,或者在所使用的上下文中另有理解,否则条件语言,诸如“可以”、“可能”、“可能”或“可以”,通常旨在传达某些实施例包括某些特征、元件和/或步骤,而其他实施例不包括。
除非另有明确说明,否则本文中使用的术语和短语及其变体应被解释为开放式的,而不是限制性的。诸如“常规的”、“传统的”、“正常的”、“标准的”、“已知的”等形容词以及类似含义的术语不应该被解释为将所描述的项目限制到给定的时间段或者限制到在给定的时间可用的项目,而是应该被理解为包括现在或在将来的任何时间可用或已知的常规的、传统的、正常的或标准的技术。在一些情况下,诸如“一个或多个”、“至少”、“但不限于”或其他类似短语的扩大的词语和短语的存在不应被理解为意味着在可能不存在这种扩大的短语的情况下,想要或需要较窄的情况。
Claims (20)
1.一种电路,包括:
匹配线;
输入线,接收输入信号;
第一晶体管,耦接到所述输入线,其中所述晶体管接收传导所述输入线的电流信号作为所述输入信号;以及
电路,用于从所述晶体管接收镜像电流并在所述输入信号基于所述输入信号产生匹配时在所述匹配线上输出信号。
2.根据权利要求1所述的电路,其中,所述电路包括耦接到所述匹配线并且具有与第二晶体管相关联的栅极电压的所述第二晶体管。
3.根据权利要求1所述的电路,其中,所述匹配包括具有电荷的所述匹配线,包括在25μA和75μA范围内的值的所述电流信号,以及包括在0V和0.05V范围内的值的与所述第二晶体管相关联的所述栅极电压。
4.根据权利要求1所述的电路,其中,所述电路包括第一忆阻器和第二忆阻器。
5.根据权利要求4所述的电路,其中,所述匹配包括具有电荷的所述匹配线,以及在由所述第一忆阻器和所述第二忆阻器设置的模拟值范围内的所述输入信号。
6.根据权利要求1所述的电路,其中,不匹配包括所述匹配线被放电,包括在0.05μA和0.5μA范围内的值的所述电流信号,以及包括在1V和10V范围内的值的与所述第二晶体管相关联的栅极电压。
7.根据权利要求6所述的电路,其中,当所述输入信号基于所述输入信号产生不匹配时,所述电路在所述匹配线上输出已经放电的信号。
8.根据权利要求1所述的电路,其中,所述输入线耦接到点积引擎(DPE)电路的输出线,所述输出线接收所述电流信号作为来自所述DPE电路的输出。
9.一种电路,包括:
点积引擎(DPE)电路,所述DPE电路执行矩阵乘法;以及
电流输入模拟内容可寻址存储器(CI-aCAM)阵列电路,耦接到所述DPE,所述CI-aCAM阵列电路基于所述DPE电路的所述矩阵乘法执行aCAM搜索。
10.根据权利要求9所述的电路,其中,所述DPE电路包括以行和列排列的多个电阻存储器元件的忆阻器交叉矩阵。
11.根据权利要求10所述的电路,其中,所述多个电阻存储器元件确定矩阵乘法值,并且进一步其中所述忆阻器交叉矩阵包括多列输出线以收集从所述电阻存储器元件输出的所有电流,每列上所收集的电流等于相对应的矩阵乘法值。
12.根据权利要求11所述的电路,其中,所述CI-aCAM阵列包括多个CI-aCAM电路。
13.根据权利要求12所述的电路,其中,所述多个CI-aCAM电路中的每一个耦接到所述忆阻器交叉矩阵的多个列中的一列。
14.根据权利要求13所述的电路,其中,所述多个CI-aCAM电路中的每一个包括耦接到晶体管的输入线。
15.根据权利要求14所述的电路,其中,所述多个CI-aCAM电路的每条输入线接收所述忆阻器交叉矩阵的输出线的每个相对应耦接的列上的所收集的电流。
16.一种方法,包括:
由电路块执行矩阵乘法;
由所述电路块输出传达所述矩阵乘法的结果的电流信号;由附加电路块接收传达所述矩阵乘法的所述结果的所述电流信号作为输入信号,其中每个所述输入信号与所述矩阵乘法的所述结果相关联;以及
由所述附加电路块输出输出信号,所述输出信号与基于与所述矩阵乘法的所述结果相关联的所述输入信号执行的搜索操作相对应。
17.根据权利要求16所述的方法,其中,所述电路块包括点积引擎(DPE)电路,并且所述附加电路块包括电流输入模拟内容可寻址存储器(CI-aCAM)阵列电路。
18.根据权利要求17所述的方法,其中,所述(DPE)电路包括具有列的忆阻器交叉矩阵,并且所述CI-aCAM阵列电路包括多个单独的CI-aCAM电路,每个单独的CI-aCAM电路耦接到所述忆阻器交叉矩阵的相对应的一列。
19.根据权利要求18所述的方法,包括:
由所述忆阻器交叉矩阵的每一列输出电流信号,所述电流信号传达与由所述DPE电路执行的矩阵乘法的所述结果相关联的元素;
由所述多个单独的CI-aCAM电路中的每一个接收来自所述忆阻器交叉矩阵的相对应的列的所述电流信号作为输入信号,其中每个输入信号对应于与来自所述忆阻器交叉矩阵的相对应的列的所述矩阵乘法的所述结果相关联的所述元素。
20.根据权利要求19所述的方法,其中,输出所述输出信号包括:
由所述多个单独的CI-aCAM电路中的每一个对所接收的相对应的输入信号执行搜索操作;以及
由所述多个单独的CI-aCAM电路中的每一个输出输出信号,所述输出信号基于与由所述DPE电路执行的所述矩阵乘法的所述结果相关联的相对应的元素来传达来自所述搜索操作的匹配。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US17/953,595 US20240111490A1 (en) | 2022-09-27 | 2022-09-27 | Current input analog content addressable memory |
US17/953,595 | 2022-09-27 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN117789789A true CN117789789A (zh) | 2024-03-29 |
Family
ID=90139995
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202310675878.4A Pending CN117789789A (zh) | 2022-09-27 | 2023-06-08 | 电流输入模拟内容可寻址存储器 |
Country Status (3)
Country | Link |
---|---|
US (1) | US20240111490A1 (zh) |
CN (1) | CN117789789A (zh) |
DE (1) | DE102023115286A1 (zh) |
-
2022
- 2022-09-27 US US17/953,595 patent/US20240111490A1/en active Pending
-
2023
- 2023-06-08 CN CN202310675878.4A patent/CN117789789A/zh active Pending
- 2023-06-12 DE DE102023115286.6A patent/DE102023115286A1/de active Pending
Also Published As
Publication number | Publication date |
---|---|
DE102023115286A1 (de) | 2024-03-28 |
US20240111490A1 (en) | 2024-04-04 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10643705B2 (en) | Configurable precision neural network with differential binary non-volatile memory cell structure | |
US20200311512A1 (en) | Realization of binary neural networks in nand memory arrays | |
Marinella et al. | Multiscale co-design analysis of energy, latency, area, and accuracy of a ReRAM analog neural training accelerator | |
US11501829B2 (en) | Resistive random-access memory for embedded computation | |
TWI721431B (zh) | 一種用於執行乘法累加(mac)運算與計算向量矩陣乘法之記憶體內計算系統與方法 | |
US11290110B2 (en) | Method and system for providing a variation resistant magnetic junction-based XNOR cell usable in neuromorphic computing | |
WO2021126294A1 (en) | Kernel transformation techniques to reduce power consumption of binary input, binary weight in-memory convolutional neural network inference engine | |
US11119674B2 (en) | Memory devices and methods for operating the same | |
CN110729011B (zh) | 用于类神经网路的存储器内运算装置 | |
US9805772B1 (en) | Apparatuses and methods to selectively perform logical operations | |
US20200286553A1 (en) | In-memory computation device with inter-page and intra-page data circuits | |
Choi et al. | An in-flash binary neural network accelerator with SLC NAND flash array | |
Liu et al. | Pim-dh: Reram-based processing-in-memory architecture for deep hashing acceleration | |
CN117789789A (zh) | 电流输入模拟内容可寻址存储器 | |
Yang et al. | Matching in memristor based auto-associative memory with application to pattern recognition | |
CN115269445B (zh) | 具有模拟输入和模拟输出的模拟内容可寻址存储器 | |
TWI793278B (zh) | 用於執行反互斥或運算的計算胞元、神經網路及用於執行數位反互斥或運算的方法 | |
US6198668B1 (en) | Memory cell array for performing a comparison | |
JP7480391B2 (ja) | インメモリコンピューティングのための記憶装置 | |
Laiho et al. | A 512× 512-cell associative CAM/Willshaw memory with vector arithmetic | |
US20240363163A1 (en) | Inequality check with ternary cam | |
US20230053948A1 (en) | Apparatus and method with in-memory computing | |
US11881261B2 (en) | CAMs for low latency complex distribution sampling | |
TWI795766B (zh) | 計算系統、計算裝置及計算方法 | |
US20220101914A1 (en) | Memory Bit Cell for In-Memory Computation |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication |