技术领域
[0001] 本申请的实施例涉及存储器器件、计算器件和用于存储器内计算的方法。
相关背景技术
[0002] 本公开一般涉及在数据处理(诸如乘法累加操作)中使用的存储器阵列。存储器中计算(“CIM”或存储器内计算)系统将信息储存在计算机的随机存取存储器(RAM)中并且在存储器单元级别执行计算,而不是对于每个计算步骤在RAM和数据储存单元之间移动大数据。存储器中计算系统允许实时分析数据,因为储存在RAM中的数据可以快速访问,从而可以在机器学习应用中更快地报告和决策。
具体实施方式
[0017] 以下公开内容提供了许多用于实现本发明的不同特征不同的实施例或实例。下面描述了组件和布置的具体实施例或实例以简化本发明。当然,这些仅是实例而不旨在限制。例如,在以下描述中,在第二部件上方或者上形成第一部件可以包括第一部件和第二部件直接接触形成的实施例,并且也可以包括在第一部件和第二部件之间可以形成额外的部件,从而使得第一部件和第二部件可以不直接接触的实施例。此外,本发明可以在各个示例中重复参考数字和/或字母。该重复是为了简单和清楚的目的,并且其本身不指示讨论的各个实施例和/或配置之间的关系。
[0018] 本说明书中使用的术语通常具有其在本领域中和在使用每个术语的特定上下文中的普通含义。本说明书中示例(包括本文讨论的任何术语的示例)的使用仅是说明性的,并且绝不限制本公开或任何示例性术语的范围和含义。同样,本公开不限于本说明书中给出的各种实施例。
[0019] 尽管在本文中可以使用术语“第一”、“第二”等来描述各种元件,但是这些元件不应受这些术语的限制。这些术语用于区分一个元件和另一个元件。例如,可以将第一元件称为第二元件,并且类似地,可以将第二元件称为第一元件,而不脱离实施例的范围。如本文所用,术语“和/或”包括一个或多个相关列出的项目的任何和所有组合。
[0020] 此外,为了便于描述,本文中可以使用诸如“在…下方”、“在…下面”、“下部”、“在…上面”、“上部”等的空间关系术语,以描述如图中所示的一个元件或部件与另一元件或部件的关系。除了图中所示的方位外,空间关系术语旨在包括器件在使用或操作工艺中的不同方位。装置可以以其它方式定位(旋转90度或在其它方位),并且在本文中使用的间隔关系描述符可以同样地作相应地解释。
[0021] 在本文中,术语“耦接”也可以称为“电耦接”,并且术语“连接”可以称为“电连接”。“耦接”和“连接”也可以用来表示两个或多个元件相互协作或交互。
[0022] 将针对特定上下文中的实施例,即存储器中计算(“CIM”)应用,来描述本公开的各种实施例。CIM应用的一个示例是乘法累加(“MAC”)操作。在MAC操作中,输入数组中的数字(例如,行)与另一数组中的各自元素(例如,列)的数字(例如,权重)相乘或“加权”,并且由累加器将乘积相加在一些(累加)以计算输出和。此操作在数学上类似于两个向量的点乘积(即标量乘积)。在点乘积运算中,两个向量的点乘积定义为分量对的乘积的和,其中两个向量的分量成对相乘。
[0023] 图1是根据本公开的一些实施例的存储器器件100的示意图。在一些实施例中,存储器器件100可以用作计算器件以执行存储器内计算。如图1所示,存储器器件100包括CIM宏110、与CIM宏110耦接的输入缓冲器电路120、以及与CIM宏110耦接的输出缓冲器电路130。在一些实施例中,输入缓冲器电路120和输出缓冲器电路130可以实施为静态随机存取存储器(SRAM)单元。时钟生成电路140布置在CIM宏110内并且配置为生成一个或多个时钟信号用于进行存储器内计算。
[0024] 在一些实施例中,CIM宏110可以是SRAM宏。在SRAM器件中,当通过来自一个或多个字线(“WL”)的使能信号激活SRAM单元中的一个或多个存取晶体管时,可以经由一个或多个位线(“BL”)将数据写入每个SRAM单元以及从每个SRAM单元读取数据。尽管在本公开中使用SRAM宏作为示例,但是应当理解,其他类型的存储器也在各种实施例的范围内。图1的CIM宏110可以是配置为执行各种存储器内计算(诸如乘法累加(MAC)操作)的CIM器件。例如,存储器器件100可以接收输入信号并且将由输入信号指示的数字乘以储存在CIM宏110中的存储器单元中的各自权重。然后,CIM宏110可以通过累加器将乘积相加以获得指示输出和的输出信号。具体地,在基于SRAM的CIM设计中,与SRAM单元的列相关联的多个字线可以被开启以放电公共位线(诸如读取位线(“RBL”)),以实施1‑位MAC操作。
[0025] MAC操作是在芯片级别人工智能(AI)中用于训练和操作神经网络的主要计算。在诸如人工神经网络的一些人工智能系统中,数据(即数字)的数组可以通过多列权重进行加权。通过每列权重进行的加权生成各自的输出和。因此,人工智能系统可以从数据(即数字)的输入数组乘以多列权重的矩阵中的权重来生成和的输出数组。换言之,人工智能系统可以基于权重的集合将输入映射到输出。在一些应用中,诸如多位卷积神经网络(“CNN”)操作,采用了类似的操作。当AI系统训练神经网络时,神经网络可以使用各种算法来更新MAC操作中使用的权重,以开发适当的权重的集合使得神经网络能够正确分类数据。
[0026] 在一些实施例中,输入缓冲器电路120可以存储从外部电路(例如,主存储器)接收的输入数据(例如,输入特征映射为要处理的),并且将储存的输入数据提供给用于计算的CIM宏110。CIM宏110储存用于MAC计算的权重值,并且利用由输入缓冲器电路120提供的输入数据,CIM宏110内的存储器阵列和逻辑电路执行乘法和累加以获得计算结果。因此,在计算之后获得的输出数据可以提供到输出缓冲器电路130并储存在输出缓冲器电路130中。输出缓冲器电路130然后可以与外部电路(例如,主存储器)通信并将最终的计算输出发送到外部电路。
[0027] 图2是根据本公开的一些实施例的示例性CIM宏110的图。如图2所示,CIM宏110包括一个或多个CIM存储器阵列210、一个或多个具有时钟生成电路140的控制电路220以及驱动电路230、240。在一些实施例中,CIM存储器阵列210可以包括多个存储器段。每个存储器段可以包括存储器体(bank)。存储体中的储存单元按行和列布置。因此,存储器段和存储器阵列210中的储存单元也布置成行和列。
[0028] 一个或多个控制电路220可以包括用于控制一个或多个CIM存储器阵列210中的存储器操作的全局控制电路和局部控制电路。例如,全局控制电路可以提供行地址、列地址预解码、时钟和在CIM宏110中使用的其他信号。全局控制电路还可以与输入‑输出(I/O)电路通信以控制一个或多个CIM存储器阵列210和外部电路之间的数据传输。例如,一个或多个控制电路220可以基于时钟信号和要读取的储存单元的地址生成列选择信号,以选择一个或多个CIM存储器阵列210中的要预充电或要读取的列。
[0029] 在一些实施例中,每个驱动器电路230包括输入激活驱动器和SRAM字线(WL)驱动器。例如,输入激活驱动器可以将来自输入缓冲器电路120的输入提供到CIM存储器阵列210中,并且SRAM字线(WL)驱动器可以将字线信号提供给一个或多个CIM存储器阵列210的对应字线。例如,输入可以以MSB优先位串行方式同时馈送到CIM存储器阵列210。
[0030] 在一些实施例中,驱动电路240包括SRAM读取/写入电路,该SRAM读取读取/写入电路配置为与CIM存储器阵列210内的对应储存单元通信以执行读取或写入操作,以更新储存在CIM存储器中的权重值。CIM宏110还可以包括其他电路元件,诸如解码器,或者用于在相应CIM存储器阵列210中的储存单元和CIM宏110外部的外部电路之间传输数据的其他输入‑输出(I/O)电路。
[0031] 当CIM宏110执行MAC操作时,MAC操作的操作速度对PVT(工艺、电压和温度)条件的变化敏感,这可能会在MAC操作中的累加功能中引入不准确或错误。例如,当CIM宏110以不同电压条件操作时,以较高电压的MAC操作速度可能比以较低电压的MAC操作速度快。类似地,当CIM宏110以不同的温度条件操作时,以较高温度的MAC操作速度可能比以较低温度的MAC操作速度快。此外,意外的动态电压(IR)降也可能影响MAC操作的操作速度。因此,当CIM宏110以低电源执行MAC操作时,MAC操作速度可能较慢。
[0032] 当MAC操作速度低于执行MAC操作的CIM宏110中的时钟频率时,CIM宏110无法正确执行累加功能,从而导致MAC操作错误。在本公开的各种实施例中,控制电路220内的时钟生成电路140可以提供内部时钟,内部时钟具有自动根据CIM宏110的PVT(工艺、电压和温度)条件动态可调整和可修改的频率,以防止错误。CIM宏110基于由时钟生成电路140生成的内部时钟执行存储器内计算。例如,CIM宏110可以基于内部时钟与外部电路交换数据。
[0033] 图3是图示根据本公开的一些实施例的时钟生成电路140的示例性操作的图。如图3所示,CIM宏110中的时钟生成电路140配置为生成用于MAC操作的时钟信号CLK1,使得CIM宏110根据时钟信号CLK1执行MAC操作。例如,CIM宏110可以根据时钟信号CLK1从输入缓冲器电路120接收输入数据104,并且根据时钟信号CLK1将输出数据106提供给输出缓冲器电路130。
[0034] 在一些实施例中,可以根据CIM宏110的条件(例如,PVT条件)来修改时钟信号CLK1的频率,以致使时钟信号CLK1符合MAC操作的操作速度。具体地,时钟信号CLK1的频率可以与CIM宏110的一个或多个PVT条件相关联,以确保时钟信号CLK1的频率在对应于MAC操作速度的期望范围内。在一些实施例中,时钟信号CLK1的频率等于或小于MAC操作速度。例如,时钟生成电路140可以包括PVT相关组件,诸如NMOS或PMOS晶体管。由时钟生成电路140内的PVT相关组件引起的传播延迟取决于PVT变化。因此,经过PVT相关组件的信号响应于不同的PVT条件或意外的电源IR降而自动调整,实施时钟调节(throttle)使得时钟生成电路140输出符合MAC操作速度的时钟信号CLK1。
[0035] 通过上述时钟调节,时钟生成电路140可以使用PVT相关组件跟踪CIM宏110的环境(例如,电压和温度)和工艺,以允许向CIM宏110或者从CIM宏110进行有效的数据传输并实现动态时钟。更具体地,时钟生成电路140可以响应于环境条件(例如,电压和温度)和工艺的变化来调整生成的时钟信号CLK1。通过该动态时钟信号CLK1,CIM宏能够相应地执行MAC操作,以最大化不同操作条件下的操作性能。
[0036] 相比较,在没有时钟生成电路140的动态时钟功能的情况下,MAC操作只能根据基于最坏情况的固定时钟信号进行操作,这可能与实际操作条件不同。结果,在没有时钟生成电路140生成动态时钟信号CLK1的情况下,MAC操作和数据传输效率较低。
[0037] 图4是根据本公开的一些实施例的图2所示的时钟生成电路140的示例性配置的图。如图4所示,在一些实施例中,时钟生成电路140包括NAND(与非)逻辑电路410和延迟线电路420。NAND逻辑电路410基于使能信号EN和从时钟生成电路140的输出节点反馈的时钟信号CLK1,执行NAND操作,以向延迟线电路420输出门输出信号S1。延迟线电路420配置为接收门输出信号S1并修改门输出信号S1,以通过延迟门输出信号S1来生成时钟信号CLK1。
[0038] 在一些实施例中,延迟线电路420包括彼此串联耦接的多个延迟元件(例如,缓冲器)Bl、B2、...、Bn。延迟元件B1、B2、…、Bn中的每个配置为延迟其输入信号的输出并将延迟的信号输出到下一级。因此,串联中的第一延迟元件B1接收门输出信号S1,串联中的第n延迟元件Bn输出时钟信号CLK1,时钟信号CLK1是响应于门输出信号S1的延迟信号。延迟线电路420中的延迟元件B1、B2、…、Bn包括PVT相关组件,诸如NMOS晶体管或PMOS晶体管,PVT相关组件提供与PVT条件相关联的延迟。因此,延迟元件B1、B2、……、Bn的传播延迟取决于PVT变化。由于时钟生成电路140集成在CIM宏110内,所以生成的时钟信号CLK1符合由CIM宏110执行的计算。例如,延迟元件B1、B2、...、Bn的数量可以与CIM宏110的级数相关联。因此,用于MAC操作的时钟信号CLK1被延迟以使时钟信号CLK1符合取决于PVT条件或意外的电源IR降的MAC操作速度。
[0039] 具体地,当在NAND逻辑电路410的一个输入处接收到的使能信号EN被禁用(例如,处于逻辑低电平)时,NAND逻辑电路410的输出处的门输出信号S1变为逻辑高(例如,1),无论其他输入如何。因此,作为由延迟线电路420延迟的信号的时钟信号CLK1也变为逻辑高(例如,1),达到稳定状态。
[0040] 当使能信号EN被使能(例如,转移到逻辑高)时,响应于使能信号EN和反馈时钟信号CLK1都为高,在NAND逻辑电路410的输出处的门输出信号S1转移到逻辑低(例如,0)。在延迟时段之后,时钟信号CLK1也转移至逻辑低(例如,0)。切换到逻辑低的时钟信号CLK1触发NAND逻辑电路410,以输出为逻辑高(例如,1)的门输出信号S1。因此,在另一延迟时段之后,时钟信号CLK1再次从逻辑低切换到逻辑高,触发另一周期。因此,当使能信号EN被使能时,时钟生成电路140生成周期性时钟信号CLK1。
[0041] 综上所述,时钟生成电路140生成对应于一个或多个工艺‑电压‑温度(PVT)条件的时钟信号CLK1,诸如工艺条件、电压条件、温度条件、电源IR降条件或其任何组合。时钟生成电路140可以响应于CIM宏110的PVT条件调整时钟信号CLK1的频率,并且将动态修改的时钟信号CLK1提供给用于执行MAC操作的输入缓冲器电路120和输出缓冲器电路130。因此,时钟生成电路140配置为在不同的环境条件(例如电压和温度)和工艺下为低速操作或低频信号提供足够的延迟并且为高速操作提供相对小的延迟,以允许存储器器件100优化性能、提供高效的数据传输、并且确保MAC操作正确执行。
[0042] 图5是图示根据本公开的一些实施例的图2所示的CIM存储器阵列210的示例性配置的框图。如图5所示,存储器阵列210具有多行多列的子CIM单元510。在一些实施例中,存储器阵列210包括64列以提供64个部分和输出,并且相同列中的子CIM单元510分别耦接到256个输入线以接收输入数据。在图5的实施例中,每个子CIM单元510包括用于储存数据(例如,对应权重)以进行乘法累加操作的SRAM单元512,以及用于执行乘法操作的逐位乘法器
514。在一些实施例中,一个SRAM单元可以通过基于6T(6个晶体管)的SRAM存储器单元来实现,并且其相关联的乘法器514可以通过配置为执行按位乘法的基于4T的NOR(或非)门来实现。相同列中的子CIM单元510的输出提供给用于执行累加操作的并行加法器树520和部分和累加器530。
[0043] 在以下段落中,使用与对应行i和对应列j相关联的子CIM单元510为例来描述子CIM单元510的结构和电路以及关于对应信号线的操作。如图5所示,对于子CIM单元510[i,j],储存单元512连接到与行i和位线BL[j]相关联的字线WL[i]以及与列j相关联的反位线BLB[j]。当由字线WL[i]上的信号激活时,储存单元512可以配置为根据位线BL[j]和反位线BLB[j]的值输入指示权重(“W”)的二进制信号(0或1),并相应地更新权重。例如,权重可以通过AI算法预先计算或更新,并且写入用于MAC计算的储存单元512中。
[0044] 乘法器514从储存单元512接收反权重值(例如,WB[i,j]),以及从相关联的反输入线IN_B[i]接收反输入值。因此,由乘法器514输出的值由来自输入线的数据和储存在储存单元512中的权重确定。当输入线IN[i]上的信号为逻辑高(“1”)时(即,反输入线IN_B[i]为0),乘法器514的输出是反权重值(例如,WB[i,j])的反相值(即,权重值)。当输入线IN[i]上的信号为逻辑低(“0”)(即反输入线IN_B[i]为1)时,无论储存在储存单元512中的权重如何,都输出“0”。因此,乘法器514的输出是输入信号与储存在储存单元512中的权重的乘积,可以由下表1给出:
[0045] 表1
[0046] 输入 权重 输出0 0 0
0 1 0
1 0 0
1 1 1
[0047] 例如,在一些实施例中,相同列中的256个子CIM单元510配置为在一个周期内基于输入数据和对应的权重分别执行256次乘法。如图5所示,在一个子CIM单元510中,乘法器514电连接到对应的反输入线(“IN_B”)以接收输入数据,并且将输入数据与储存在耦接到乘法器514的相关联的SRAM单元512中的对应权重相乘。子CIM单元510将乘法结果发送到加法器树520中以生成部分和。在四个周期之后,部分和累加器530配置为以流水线方式对每个周期的部分和进行累加,以完成累加。部分和累加器530可以将最终结果输出到输出缓冲器电路230。
[0048] 当使用乘法累加系统作为模型应用于AI应用时,CIM宏110可以经由输入线IN[i]向当前模型提供输入数据(即,数字)的集合。通过将每个输入与储存在存储器阵列210中的对应权重相乘并将乘积累加在一起以获得输出数据来处理输入数据。然后,将输出数据与目标输出电压或期望输出电压进行比较。如果输出数据与期望值不够接近,则调整模型系统并重复该过程,直到输出数据与期望值足够接近。例如,CIM宏110可以包括布置成行和列的元素的二维阵列,每个元素储存权重,并且能够接收输入并生成输出,该输出是输入和储存的重量的算术乘积。模型系统可以将每个输入提供给元素的行,并将元素的每列的输出相加。
[0049] 由于神经网络可能具有各种拓扑结构和位‑宽度(bit‑width)精度,因此具有CIM结构的存储器器件100可以支持使用多个宏(并行、串行或2D阵列)的不同神经网络。例如,3个级联CIM存储器阵列210可以支持具有64个通道的3×3滤波器的卷积操作。此外,权重更新可以与每个MAC操作同时执行。
[0050] 图6是根据本公开的一些实施例的示例性储存单元512的示意图。在一些实施例中,储存单元512是六个晶体管(6T)单端口(SP)SRAM存储器单元,其可用于实施图5所示的储存单元512。在一些其他实施例中,储存单元512采用除六个之外的多个晶体管。例如,在一些其他实施例中,储存单元512可以通过8T SRAM位单元、10T SRAM位单元或任何其他类型的存储器单元来实现。图6中图示的6T SRAM单元512是示例性的并且用于解释特征,但并不意味着限制本公开的实施例。
[0051] 如图6所示,储存单元512包括一对交叉耦接的反相器610,以及存取晶体管620和630(也称为传输门或传输晶体管)。一对交叉耦接的反相器610包括两个p型金属氧化物半导体(PMOS)晶体管612、614和两个n型金属氧化物半导体(NMOS)晶体管616、618。PMOS晶体管612、614的源极端子电连接到电源电压(VDD)端子。PMOS晶体管612、614的漏极端子分别在对应的节点640和650处电连接到NMOS晶体管616、618的漏极端子。在一些实施例中,图5中的乘法器514电耦接到节点650并且从储存单元512的节点650接收反权重值。
[0052] NMOS晶体管616、618的源极端子电连接到参考节点。如图6所示,在一些实施例中,参考节点基本上等于逻辑低信号。例如,参考节点可以基本上等于地电压(VSS)。PMOS晶体管612的栅极端子电连接到NMOS晶体管616的栅极端子以及NMOS晶体管618和PMOS晶体管614的各自源极/漏极端子。类似地,PMOS晶体管614的栅极端子电连接到NMOS晶体管618的栅极端子以及NMOS晶体管616和PMOS晶体管612的各自源极/漏极端子。
[0053] PMOS晶体管612和614可以称为上拉晶体管并且NMOS晶体管616和618可以称为下拉晶体管。具体地,PMOS晶体管612和614配置为将电压电位拉向电源电压VDD。NMOS晶体管616和618配置为将电压电位拉向参考节点(例如,地电压VSS)。
[0054] 存取晶体管620配置为将交叉耦接的反相器610选择性地连接到位线BL。存取晶体管630配置为将交叉耦接的反相器610选择性地连接到反位线BLB。存取晶体管620和存取晶体管630均配置为基于字线WL上的信号而被激活。如图6所示,在一些实施例中,存取晶体管620和存取晶体管630可以是具有与字线WL电连接的栅极端子的NMOS晶体管,但本公开不限于此。在其他实施例中,可以由PMOS晶体管实施存取晶体管620和存取晶体管630。
[0055] 对于图6中的储存单元512具有用于存取晶体管620和630的NMOS晶体管,储存单元512通过存取晶体管620或存取晶体管630的栅极端子处的逻辑高信号连接到位线BL或反位线BLB。相反,如果储存单元512替代地包括用于存取晶体管620和630的PMOS晶体管,则储存单元512通过存取晶体管620或存取晶体管630的栅极端子处的逻辑低信号连接到位线BL或反位线BLB。
[0056] 在各种实施例中,储存单元512可以具有任何合适的物理结构。例如但不限于,储存单元512中的晶体管612、614、616、618、620和630可以包括三维栅极结构,诸如鳍式场效应晶体管(FinFET)。
[0057] 图7是图示根据本公开的一些实施例的CIM宏110和输入缓冲器电路120之间的示例性通信的图。如图7所示,在一些实施例中,输入缓冲器电路120配置为经由存储器器件100的输入通道710从一个或多个外部电路接收输入数据102,并且向用于执行MAC操作的CIM宏110输出接收的输入数据104。例如,基于写入时钟信号,输入数据102可以首先被传送或提取到输入缓冲器电路120中。然后,响应于基于提供给输入缓冲器电路120的读取时钟信号的读取命令,将储存在输入缓冲器电路120中的提取的数据从输入缓冲器电路120相应地提供给CIM宏110。
[0058] 在一些实施例中,输入缓冲器电路120可以是先进先出(FIFO)缓冲器,但本公开不限于此。在一些实施例中,输入缓冲器电路120接收两个不同的时钟信号以实现输入通道710和CIM宏110之间的数据传输。例如,输入缓冲器电路120可以基于系统时钟信号CLK2接收输入数据102,并且根据时钟信号CLK1将输入数据104输出到CIM宏110。在一些实施例中,用于CIM宏110的内部时钟信号CLK1和系统时钟信号CLK2可以是异步时钟信号。或者说,输入缓冲器电路120可以是使用系统时钟信号CLK2作为写入时钟信号并且使用内部时钟信号CLK1作为与写入时钟信号异步的读取时钟信号的异步FIFO,因此输入缓冲器电路120根据写入时钟信号从输入通道710输入数据,并且根据读取时钟信号向CIM宏110输出数据。
[0059] 在一些实施例中,输入缓冲器电路120可以是存储器器件100的输入接口的部分。例如,存储器器件100的输入接口可以进一步包括数字计数器和驱动器。每个计数器配置为在一个计数周期中输出多个脉冲。脉冲数量对应于计数器输入处的数字。例如,00002的输入(即010)生成0个脉冲,00102的输入(即210)生成2个脉冲,11112的输入(即1510)生成15个脉冲,依此类推。换言之,在一些实施例中,脉冲数表示计数器输入处的4位二进制数的十进制表示法。对应于计数器的驱动器配置为根据从计数器相应地输出的脉冲而驱动存储器件
100的对应读取字线。
[0060] 图8是图示根据本公开的一些实施例的CIM宏110和输出缓冲器电路130之间的示例性通信的图。如图8所示,在一些实施例中,输出缓冲器电路130配置为接收从CIM宏110输出的输出数据106,并通过输出通道810将接收的输出数据108输出到与输出通道810通信的一个或多个外部电路。
[0061] 在一些实施例中,类似于图7中的输入缓冲器电路120,输出缓冲器电路130也可以是先进先出(FIFO)缓冲器,但本发明不限于此。在一些实施例中,输出缓冲器电路130也接收两个不同的时钟信号以实现输出通道810和CIM宏110之间的数据传输。例如,输出缓冲器电路130可以基于用于CIM宏110的内部时钟信号CLK1从CIM宏110接收输出数据106,并且基于系统时钟信号CLK2将输出数据108输出到输出通道810,系统时钟信号CLK2是相对于内部时钟信号CLK1的异步时钟信号。或者说,输出缓冲器电路130可以是使用内部时钟信号CLK1作为写入时钟信号并且使用系统时钟信号CLK2作为与写入时钟信号异步的读取时钟信号的异步FIFO,因此输出缓冲器电路130根据写入时钟信号从CIM宏110输入数据,并且根据读取时钟信号向输出通道810输出数据。
[0062] 图9是图示根据本公开的一些实施例的CIM宏110、输入缓冲器电路120和输出缓冲器电路130之间的示例性通信的图。如图9所示,在一些实施例中,输入缓冲器电路120和输出缓冲器电路130可以基于相同的系统时钟信号CLK2分别从输入通道710接收输入数据102以及将输出数据108输出到输出通道810。时钟生成电路140与输入缓冲器电路120和输出缓冲器电路130通信并生成时钟信号CLK1,使得输入缓冲器电路120和输出缓冲器电路130可以基于相同的时钟信号CLK1传输CIM宏110的输入数据104和输出数据106。可以理解,图7、图8和图9中所示的输入缓冲器电路120和输出缓冲器电路130仅作为示例而非限制本公开。
[0063] 图10是根据本公开的一些实施例的用于存储器内计算的方法1000的流程图。应当理解,可以在图10中描绘的方法1000之前、期间和/或之后执行附加操作,并且一些其他过程在此仅作简要描述。方法1000可由图1至图9的实施例中图示的存储器器件100执行,但本公开不限于此。
[0064] 在操作1010中,时钟生成电路(例如,图2中的时钟生成电路140)内的工艺‑电压‑温度(PVT)相关组件(例如,图4中的延迟线电路420内的NMOS晶体管和/或PMOS晶体管)跟踪用于执行乘法累加操作的存储器中计算宏(例如,图1中的CIM宏)的一个或多个工艺‑电压‑温度条件。
[0065] 在操作1020中,时钟生成电路生成第一时钟信号(例如,图3中的时钟信号CLK1),并且基于一个或多个工艺‑电压‑温度条件调整第一时钟信号的频率以符合乘法累加操作的操作速度。在一些实施例中,时钟生成电路中的逻辑电路基于使能信号和第一时钟信号执行NAND运算以输出第一门输出信号,并且在逻辑电路之后的延迟线电路延迟第一门输出信号以生成第一时钟信号。
[0066] 在操作1030中,输入缓冲器电路(例如,图1中的输入缓冲器电路120)基于第一时钟信号将输入数据从输入缓冲器电路传送到存储器中计算宏。在操作1040中,存储器中计算宏使用输入数据执行MAC操作并获得输出数据。在操作1050中,输出缓冲器电路基于第一时钟信号从CIM宏接收输出数据。
[0067] 在一些实施例中,输入缓冲器电路基于来自输入通道的第二时钟信号(例如,图9中的时钟信号CLK2)接收输入数据,然后将储存在输入缓冲器电路中的输入数据提供给CIM宏。在一些实施例中,输出缓冲器电路基于第二时钟信号将储存的输出数据输出到输出通道。第一时钟信号和第二时钟信号为异步时钟信号。
[0068] 通过上述操作,可以执行用于存储器中计算的方法以处理具有时钟生成电路的CIM宏中的MAC操作,该时钟生成电路用于生成对应于PVT条件的动态调整的内部时钟信号。因此,由时钟生成电路提供的自适应时钟可以优化操作性能并避免由于PVT变化导致的MAC操作错误,这改善了CIM宏和外部电路之间的数据传输,也提高了整体器件性能。
[0069] 在一些实施例中,公开了一种存储器器件,其包括:配置为基于第一时钟信号执行存储器内计算的CIM宏,以及布置在存储器中计算宏内并且配置为生成第一时钟信号的时钟生成电路。根据存储器中计算宏的条件修改第一时钟信号的频率以致使第一时钟信号符合存储器内计算的操作速度。
[0070] 在一些实施例中,存储器中计算宏的条件包括工艺‑电压‑温度(PVT)条件。
[0071] 在一些实施例中,时钟生成电路包括配置为提供与PVT条件相关联的延迟的一个或多个工艺‑电压‑温度(PVT)条件相关组件。
[0072] 在一些实施例中,时钟生成电路包括:逻辑电路,配置为基于使能信号和第一时钟信号执行NAND操作以输出第一门输出信号;以及延迟线电路,电耦接到逻辑电路,并且配置为通过延迟第一门输出信号而生成第一时钟信号。
[0073] 在一些实施例中,延迟线电路包括彼此串联耦接的多个延迟元件,其中串联中的第一延迟元件接收第一门输出信号并且串联中的最后延迟元件输出第一时钟信号。
[0074] 在一些实施例中,存储器器件还包括:输入缓冲器电路,耦接到存储器中计算宏,并且配置为基于来自输入通道的第二时钟信号接收输入数据,并且基于第一时钟信号在存储器中计算宏中输出输入数据。
[0075] 在一些实施例中,输入缓冲器电路包括先进先出缓冲器。
[0076] 在一些实施例中,第一时钟信号和第二时钟信号为异步时钟信号。
[0077] 在一些实施例中,存储器器件还包括:输出缓冲器电路,耦接到存储器中计算宏,并且配置为基于来自存储器中计算宏的第一时钟信号接收输出数据,并且基于第二时钟信号将输出数据输出到输出通道。
[0078] 在一些实施例中,输出缓冲器电路包括先进先出缓冲器。
[0079] 在一些实施例中,第一时钟信号和第二时钟信号为异步时钟信号。
[0080] 在一些实施例中,公开了一种计算器件,该计算器件包括:存储器阵列,该存储器阵列包括用于储存乘法累加操作的数据的多个存储器单元;时钟生成电路,配置为生成用于执行乘法累加操作的第一时钟信号;输入缓冲器电路,配置为接收来自输入通道的输入数据,并且将输入数据输出到存储器阵列;以及输出缓冲器电路,配置为从存储器阵列接收由乘法累加操作生成的输出数据,并且将输出数据输出到输出通道。基于工艺‑电压‑温度(PVT)条件确定第一时钟信号的频率以符合乘法累加操作的操作速度。
[0081] 在一些实施例中,第一时钟信号的频率小于或等于操作速度。
[0082] 在一些实施例中,时钟生成电路包括延迟线电路,延迟线电路包括一个或多个PVT相关组件。
[0083] 在一些实施例中,时钟生成电路包括:逻辑电路,配置为基于使能信号和第一时钟信号执行NAND操作以输出NAND门输出信号;以及多个延迟元件,彼此串联耦接,其中串联中的第一延迟元件接收NAND门输出信号并且串联中的最后延迟元件输出第一时钟信号。
[0084] 在一些实施例中,输入缓冲器电路配置为基于第二时钟信号接收输入数据,并且基于用于执行乘法累加操作的第一时钟信号输出输入数据;并且输出缓冲器电路配置为基于第一时钟信号接收由乘法累加操作得到的输出数据,并且基于第二时钟信号输出输出数据,第一时钟信号和第二时钟信号为异步时钟信号。
[0085] 在一些实施例中,还公开了一种用于存储器中计算的方法,包括:跟踪用于执行乘法累加操作的存储器中计算宏的工艺‑电压‑温度条件;生成第一时钟信号并且基于工艺‑电压‑温度条件调整第一时钟信号的频率以符合乘法累加操作的操作速度;通过输入缓冲器电路向存储器中计算宏发送输入数据,并且通过输出缓冲器电路基于第一时钟信号接收来自存储器中计算宏的输出数据。
[0086] 在一些实施例中,生成第一时钟信号包括:通过逻辑电路基于使能信号和第一时钟信号执行NAND操作以输出第一门输出信号;以及通过延迟线电路延迟第一门输出信号以生成第一时钟信号。
[0087] 在一些实施例中,上述方法还包括:通过输入缓冲器电路基于来自输入通道的第二时钟信号接收输入数据,其中,第一时钟信号和第二时钟信号为异步时钟信号。
[0088] 在一些实施例中,上述方法还包括:基于第二时钟信号将通过输出缓冲器电路接收的输出数据输出到输出通道。
[0089] 上述概述了几个实施例的特征,以便本领域技术人员可以更好地理解本公开的各个方面。本领域技术人员应当理解,他们可以容易地使用本公开作为设计或修改用于实现本文所介绍的实施例的相同目的和/或实现其相同优点的其它过程和结构的基础。本领域技术人员还应当认识到,此类等效结构不背离本发明的精神和范围,并且它们可以在不背离本发明的精神和范围的情况下在本发明中进行各种改变、替换以及改变。