用于类神经网路的存储器内运算装置

文档序号:1568631 发布日期:2020-01-24 浏览:20次 >En<

阅读说明:本技术 用于类神经网路的存储器内运算装置 (In-memory arithmetic device for neural network ) 是由 林榆瑄 王超鸿 李明修 于 2019-02-27 设计创作,主要内容包括:本发明公开了一种用于类神经网路的存储器内运算装置,该存储器内运算装置包括多个突触层。此些突触层包括一第一类型突触层及一第二类型突触层。第一类型突触层包括多个第一类型存储单元,第二类型的突触层包括多个第二类型存储单元。第一类型存储单元相异于第二类型存储单元。第一类型存储单元和第二类型存储单元可以是不同类型的存储器,具有不同的结构、不同的存储器材料及/或不同的读/写算法,任一其中之一可导致稳定性或数据储存准确性的变化。(The invention discloses an in-memory operation device for a neural network, which comprises a plurality of synapse layers. The synapse layers comprise a first type synapse layer and a second type synapse layer. The first type of synapse layer comprises a plurality of first type memory cells and the second type of synapse layer comprises a plurality of second type memory cells. The first type of memory cell is different from the second type of memory cell. The first type of memory cells and the second type of memory cells may be different types of memory, having different structures, different memory materials, and/or different read/write algorithms, either of which may result in variations in stability or data storage accuracy.)

用于类神经网路的存储器内运算装置

技术领域

本发明是有关于一种存储器内运算装置(in-memory computing device),特别是涉及一种包括多种类型存储单元的存储器内运算装置。

背景技术

类神经网路(neural network)是一种受到生物神经系统处理信息方式所启发的信息处理方法。随着大型训练数据集合和复杂的学习算法的发展,类神经网路促进了电脑视觉、语音识别和自然语言处理等众多领域的重大进步。

类神经网路中的基本运算单元是神经元(neuron)。神经元接收来自其他神经元或来自外部的输入来计算输出。图1示例说明类神经网路100。类神经网路100包含多层排列的神经元。类神经网路100包括输入神经元(input neurons)的输入层(input layer)102(即提供输入数据的神经元)、隐藏神经元(hidden neurons)的三个隐藏层(hidden layers)106、108、110(即执行运算并从输入神经元传递信息至输出神经元的神经元)及输出神经元(output neurons)的输出层(output layer)104(即提供输出数据的神经元)。相邻层的神经元之间通过突触层(synaptic layers)连接。例如,突触层112连接输入层102及隐藏层106中的神经元,突触层114连接隐藏层106及隐藏层108中的神经元,突触层116连接隐藏层108及隐藏层110的神经元,突触层118连接隐藏层110和输出层104中的神经元。所有的这些连接皆具有相关联的权重。例如,隐藏层106中的神经元122、124、126分别通过权重w1 132、w2134及w3136的连接而连接到隐藏层108中的神经元128。隐藏层108的神经元128的输出可依据来自隐藏层106中的神经元122、124和126的输入(x1、x2和x3)以及连接上的权重w1132、w2134和w3136的函数来运算。该函数可表示如下:

在上述乘积和(sum-of-products)中,每个乘积项是可变输入Xi和权重Wi的乘积。权重Wi对应到的可变输入Xi可能不同。类似地,在隐藏层的其他神经元的输出也能够被计算出来。隐藏层110中的两个神经元的输出作为输出层104中的输出神经元的输入。

类神经网路用以学习出最能代表大数据集合的信息。靠近输入层的隐藏层学习高阶通用模式,而靠近输出层的隐藏层学习更多数据特定模式。训练是类神经网路从训练数据中进行学习的阶段。在训练期间,突触层的连接依据训练期间的结果来分配权重。推论(inference)是一个通过预测来推论/预测输入数据且产生输出数据的阶段。类神经网路的推论准确性为正确预测或推论输入数据的比率。

存储器内运算(In memory computing)是一种方法,存储器内运算装置内的存储单元可用于数据处理和存储器储存。类神经网路可以在存储器内运算装置中实现。用于乘积和函数的权重可以储存在存储器内运算装置的存储单元中。乘积和函数可以是存储器内运算装置中的电路操作,其通过存储单元阵列实现该功能。

存储单元的变动、错误读取和写入操作及其他非理想装置特性将可能导致储存在存储器内运算装置的存储单元权重有所波动。特别是在存储器内运算装置中使用可编程的非易失存储单元(reprogrammable non-volatile memory cells)(例如浮动栅极存储器(floating gate memories)、相变存储器(phase change memories)、电阻式随机存取存储器(resistive RAMs)等),储存权重的波动可能会导致类神经网路较为不准确的输出数据。因此,需要提供一种具有更高推论准确度的存储器内运算装置。

发明内容

本发明描述了一种集成电路,其包括实现类神经网路的存储器内运算装置(in-memory computing device)。存储器内运算装置具有多个突触层(synaptic layers)。此些突触层包括多个第一类型突触层(first type of synaptic layers)及多个第二类型突触层(second type of synaptic layers)。第一类型突触层包括多个第一类型存储单元(first type of memory cells),而第二类型突触层包括多个第二类型存储单元(secondtype of memory cells)。相较于第二类型存储单元,第一类型存储单元具有较准确的数据储存及/或更稳定的读/写操作。相较于第二类型存储单元,储存在第一类型存储单元的权重的波动趋势较低。第一类型存储单元与第二类型存储单元在存储单元的结构、存储单元的尺寸及/或在执行读/写操作的算法可以不相同。

在一些实施例中,储存在第一和第二类型存储单元中的权重可以是存储单元的电阻。举例来说,存储单元例如是电阻式随机存取存储器(resistive RAM)、磁性随机存取存储器(magnetic RAM)、铁电随机存取存储器(ferroelectric RAM)和电荷捕获存储器(charge trapping memories)。在一些实施例中,储存的权重可以是储存在存储单元的信息,例如是静态随机存取存储器(static RAM)和动态随机存取存储器(dynamic RAM)中的位“0”和“1”。在一些实施例中,权重的数值可以储存在一列存储单元中,其中每个存储单元表示一二进位数。

第一类型突触层和第二类型突触层可包括具有M列和N行的存储单元阵列。存储单元阵列中的每个存储单元储存权重因子Wmn。阵列中数行存储单元耦接到一第一存取线集合(set of first access lines),而数列存储单元耦接到一第二存取线集合(set ofsecond access lines)。存储单元阵列可以更包括一解码与驱动电路(decoder anddriver circuitry)及一感测电路(sensing circuitry)及激活函数电路(activationfunction circuit)。解码与驱动电路电性耦接至第一存取线集合及第二存取线集合。感测电路(例如是感测放大器(sense amplifiers))电性耦接至第二存取线集合。

在一些实施例中,第一存取线集合中的第一存取线的信号表示各列的输入Xm。通过感测电路在第二存取线集合中的特定第二存取线上所感测的输出电流可表示通过耦接到特定第二存取线的一行存储单元的权重因子Wmn与输入Xm的乘积和。在一些实施例中,在第一类型突触层或第二类型突触层中的存储器阵列中感测的输出是另一突触层中的存储单元阵列的输入信号。

存储器内运算装置的一些实施例可更包括乘法与累加单元(multiplier andaccumulator unit)。乘法与累加单元可接收储存在第一类型突触层和第二类型突触层的存储单元的权重因子及输入,以估计输入与权重因子的乘积和。

存储器内运算装置的一些实施例还可包括多个第三类型突触层(third type ofsynaptic layer),第三类型突触层包括一第三类型存储单元(third type ofmemorycells)。第三类型存储单元不同于第一类型存储单元和第二类型存储单元。

本发明还提供了如本文所述的用于制造存储器内运算装置的方法。

为了对本发明的上述及其他方面有更佳的了解,下文特举实施例,并配合所附图式详细说明如下。

附图说明

本技术的实施例搭配图1~图12进行详细说明。

图1示例说明类神经网路。

图2绘示具有第一类型突触层和第二类型突触层的存储器内运算装置。

图3A和图3B说明第一类型存储单元的电阻值。

图4A、图4B及图4C说明第二类型存储单元的电阻值。

图5绘示具有第一类型突触层和第二类型突触层的存储器内运算装置的简化芯片方块图的第一例。

图6绘示具有两个第一类型突触层和两个第二类型突触层的存储器系统。

图7绘示图6的第一类型突触层中的第一类型存储单元阵列。

图8绘示图6的第一类型突触层中的第一类型存储单元阵列与第二类型突触层中的第二类型存储单元阵列。

图9绘示储存权重的数值的一列存储单元。

图10绘示包括存储器内运算装置及乘法与累加单元的集成电路的简化芯片方块图(存储器内运算装置具有第一类型突触层和第二类型突触层)。

图11说明具有第一类型突触层和第二类型突触层的存储器内运算装置的推论准确性。

图12绘示根据本技术的制造集成电路的存储器内运算装置的简化流程图。

【符号说明】

100:类神经网路

102、106、108、110:隐藏层

104:输出层

112、114、116、118:突触层

200、502、600:存储器系统

210、220、230:第一类型突触层

240、250、260:第二类型突触层

302、402:低电阻扩展

303、404:高电阻扩展

306、406:第一电阻扩展

308、408:第二电阻扩展

310、410:第三电阻扩展

312、412:第四电阻扩展

416:电阻范围

500、1000:存储器内运算装置

503:总线

504:控制器

505:数据总线

512:偏压配置状态机

590:缓冲电路

593:输入/输出电路

610、620:第一类型突触层

611、621:第一类型存储单元阵列

612、761、762、763、781、782、841、842、843、853、854、

901:第一存取线集合

613、771、772、851、852、863、864、865、911、912、913:第二存取线集合

615、625、635、645:列译码器/驱动器

616、626、636、646:行译码器/驱动器

617、627、637、647:感测电路

618、628、638、648:数据缓冲器

614、624、634、644:激活函数电路

630、640:第二类型突触层

631、641:第二类型存储单元阵列

711、712、713、721、722、723、731、732、741、742、751、

752:第一类型存储单元

811、812、821、822、831、832、871、872、873、881、882、

883:存储单元

861、862:第三存取线

900:第一类型存储单元的列存储单元的一部分

921、922、923:第一类型存储单元

1010:乘法与累加单元

1210、1220、1230:步骤

具体实施方式

本技术的实施例搭配图1~图12进行详细说明。

参考图1,类神经网路(neural network)100的推论准确性(inference accuracy)可取决于储存在一些突触层(synaptic layers)中的权重而非储存在其他突触层中的权重。例如,储存权重的准确性在靠近输入层(input layer)102的突触层比靠近输出层(output layer)104的突触层更为重要。换句话说,相较于靠近输出层104的突触层中的权重波动(weight fluctuations),靠近输入层102的突触层中的权重波动更容易造成推论不准确。对靠近输入层的突触层中,减少其权重波动或增加其权重精确性可提高类神经网路的整体推论准确性。

图2为存储器内运算装置(in-memory computing device)的存储器系统200的示例性简化图。存储器系统200包括多个第一类型突触层(firsttype of synaptic layers)(例如突触层210、220、230)及多个第二类型突触层(second type of synaptic layers)(例如突触层240、250、260)。为了清楚起见,图2仅绘示出第一类型突触层和第二类型突触层的三层。然而,第一类型突触层的一或多个与第二类型突触层中的一个或多个的任何组合可用于实现本文描述技术的存储器系统中。

存储器系统200中的第一类型突触层包括第一类型存储单元(first type ofmemory cells),其可用于储存靠近输入层的权重。存储器系统200中的第二类型突触层包括第二类型存储单元(second type of memory cells),其可用于储存靠近输出层的权重。

相较于第二类型存储单元的存储单元,通过在第一类型突触层中使用第一类型存储单元可增加类神经网路的总体推论准确性,第一类型存储单元可以储存更准确的权重,或者使其不易于产生权重波动。相较于第二类型存储单元的存储单元,第一类型存储单元具有更准确的数据储存籍/或更稳定的读/写操作。就存储单元类型、存储单元结构或存储单元尺寸而言,第一类型存储单元可以不同于第二类型存储单元。第一类型存储单元也较不容易产生装置变化和操作失败,例如读取或写入操作失败。

第一类型存储单元的存储单元可以是易失性存储单元(volatile memory cells)(如静态随机存取存储器(SRAM)和动态随机存取存储器(DRAM))或非易失性存储单元(non-volatile memory cells)(如掩模式只读存储器(mask ROM)、熔丝只读存储器(fuse ROM)和电阻式随机存取存储器(resistive RAM))。第一类型存储单元的存储单元可以是只读存储单元(read-only memory cells)(如掩模式ROM、熔丝ROM)或可重新编程的存储单元(reprogrammable memory cells)(如SRAM、DRAM和电阻式RAM)。在一些实施例中,储存在第一类型存储单元中的权重可以是储存在存储单元中的数据,例如是以SRAM和DRAM储存位“0”和“1”。储存在SRAM或DRAM单元中的权重的准确性可以由连接到存储单元的感测放大器来处理。在一些实施例中,储存在第一类型存储单元中的权重可通过感测存储单元的电阻来获得,存储单元例如是电阻式RAM、浮动栅极金属氧化物半导体场效晶体管(floatinggate MOSFETs)、介电电荷捕获装置(dielectric charge trapping devices)(如SONOS、BE-SONOS、TANOS、MABE-SONOS)和相变存储器(phase change memories)。

相较于第一类型存储单元,第二类型存储单元更易于产生权重波动、装置变化和操作失败。第二类型存储单元可以是非易失性存储单元,例如电阻式RAM、浮动栅极MOSFET、介电电荷捕获器件(如SONOS、BE-SONOS、TANOS、MA BE-SONOS)、相变存储器、铁电随机存取存储器(ferroelectric RAMS)和磁性随机存取存储器(magnetic RAM)。第二类型存储单元可以是可重新编程的存储单元,使得在训练类神经网路或微调类神经网路时,储存在第二类型存储单元中的权重可以被改变,以提高的推论准确性。

在一些实施例中,储存在第二类型存储单元中的权重可以通过感测存储单元的电阻来获得,存储单元例如是电阻式RAM、浮动栅极MOSFET、介电电荷捕获器件的存储单元(如SONOS、BE-SONOS、TANOS、MABE-SONOS)和相变存储器等存储单元。

图3A和图4A分别绘示第一类型存储单元和第二类型存储单元的电阻值的分布。图3A和图4A中的存储单元具有两种电阻状态。在图3A中的第一类型存储单元具有低电阻扩展(low resistance spread)302和高电阻扩展(high resistance spread)303。在图4A中的第二类型存储单元也具有低电阻扩展402和高电阻扩展404。第一类型存储单元的电阻扩展比第二类型存储单元的电阻扩展(resistance spreads)窄。相较于图4B中的第二类型存储单元,在图3A中的第一类型存储单元较不易产生电阻漂移(resistance drift)和噪声(如随机电报噪声(random telegraph noises)、热噪声(thermal noises)等)。相较于第一类型存储单元,第二类型存储单元较易产生电阻漂移和热噪声。对第二类型存储单元重新编成为低电阻(low resistance)可能会在低电阻扩展中的任何地方产生电阻。换句话说,较不准确的权重可以储存在第二类型存储单元中。

在第一类型存储单元的一些实施例中,储存的权重可以是储存在存储单元的二位或更多位数据,例如是储存在SRAM、DRAM和只读存储器(ROM)中的位“0”和“1”。

图3B和图4B分别说明第一类型存储单元和第二类型存储单元的电阻值,其在每个存储单元储存两个或多位的数据。这种存储单元具有多个电阻层(resistance levels),如图3B中第一类型存储单元的第一电阻扩展(first resistance spread)306、第二电阻扩展(second resistance spread)308、第三电阻扩展(third resistance spread)310和第四电阻扩展(fourth resistance spread)312及图4B中第二类型存储单元的第一电阻扩展406、第二电阻扩展408、第三电阻扩展410和第四电阻扩展412。相较于第二类型存储单元,具有多个电阻状态的第一类型存储单元类似于具有两个电阻状态的第一类型存储单元,也不易于发生电阻漂移和噪声。第二类型存储单元可具有如图4C所示的电阻范围(range ofresistance)416。

在一些实施例中,第一类型存储单元和第二类型的存储单元可以包括不同的存储单元,即第一类型存储单元的结构不同于第二类型存储单元的结构。第一类型存储单元可以包括易失性存储单元(如SRAM和DRAM),第二类型存储单元可以包括非易失性存储单元(如电阻式RAM)。在一些实施例中,第一类型存储单元可以包括只读存储单元(如熔丝ROM),第二类型存储单元可以包括可重新编程的存储单元(如电阻式RAM、相位追踪存储器、电荷捕获存储器)。

在存储器内运算(in-memory computing)的一些实施例中,第一类型存储单元和第二类型存储单元可包括相同类型的存储器(如电阻式RAM),第一类型存储单元的尺寸可以大于第二种类型存储单元。较大的第一类型存储单元将比第二类型存储单元有较少的噪声,其导致第一类型存储单元中较少的权重波动。在一些实施例中,第一类型存储单元的制造过程(fabrication process)可能不同于第二类型存储单元的制造过程,其导致第一类型存储单元比第二类型存储单元具有较少的装置变化。在一些实施例中,用于第一类型存储单元中数据储存的存储器材料可以不同于第二类型存储单元中使用的存储器材料。例如,第一类型存储单元可以是以HfOx作为材料的电阻式随机存取存储器(resistiveRAMs),而第二类型存储单元单元可以是以CoOx作为材料的电阻式随机存取存储器(resistive RAMs)。

在一些实施例中,可以利用不同算法来对第一类型存储单元及第二类型存储单元读取或写入数据。例如,当以储存电荷捕获存储器的多个位作为第一类型存储单元和第二类型存储单元时,增量步阶脉冲编程(incremental-step-pulse programming,ISPP)可以被用来收缩第一类型存储单元的阈值电压分布(threshold voltage distribution)和电阻扩展,单脉冲编程(single pulse programming)则可用于第二类型存储单元。

在一些实施例中,存储器系统200可包括多个第三类型突触层(third type ofsynaptic layer)。第三类型突触层可包括第三类型存储单元(third type of memorycells),第三类型存储单元可用于储存权重至类神经网路的中间突触层(middle synapticlayers)。储存在第三类型存储单元中的权重相较于第一类型存储单元中的权重可以较不准确,但比储存在第二类型存储单元中的权重更准确。在一些实施例中,存储器系统200可包括任何数量类型的存储单元,每种类型的存储单元具有不同程度的权重波动。

图5绘示实施类神经网路的存储器内运算装置500的简化芯片方块图的第一范例。存储器内运算装置500包括存储器系统502。存储器系统502包括多个第一类型突触层和多个第二类型突触层。存储器系统502中第一类型突触层的第一类型存储单元储存权重于输入层附近的突触层。第二类型突触层的第二类型存储单元储存权重于输出层附近的突触层。第一类型突触层和第二类型突触层的第一类型存储单元和第二类型存储单元的电路操作执行类神经网路输入数据的推论并产生输出数据。

输入/输出电路(Input/output circuits)593接收从外部至存储器内运算装置500的输入数据(input data)。输入/输出电路593也驱动输出数据至存储器内运算装置500的外部。输入/输出数据和控制信号通过数据总线(data bus)505移动至输入/输出电路593、存储器内运算装置500上的控制器504和输入/输出端口(input/output ports)或运算装置500中其他内部或外部数据源(data sources internal or external)之间,例如通用处理器(general purpose processor)或专用应用电路(special purpose applicationcircuitry),或提供由存储器系统502支持的系统芯片功能的模组。缓冲电路(Buffercircuits)590可耦接到输入/输出电路593和控制器(controller)504以储存输入/输出数据和控制信号。

控制器504可以包括用于选择性地将编程电压(program voltages)施加到第一类型突触层中的第一类型存储单元以及在存储器系统502中第二类型突触层的第二类型存储单元的电路,以响应在缓冲电路590中的输入数据和控制信号。在图5所示的范例中,控制器504使用偏压配置状态机(bias arrangement state machine)512来控制通过存储器系统502的电压源所供应的供应电压,以用于乘积和运算(sum-of-products operations)、用于第一类型存储单元的第一写入算法(first write algorithm)和用于第二类型存储单元的第二写入算法(second write algorithm)的写入运算(write operations)、和用于第一类型存储单元的第一读取算法(first read algorithm)与用于第二类型存储单元的第二读取算法(second read algorithm)的读取操作(read operations)。控制器504耦接到缓冲电路590和存储器系统502。控制器504可以使用已知技术的专用逻辑电路(special-purpose logic circuitry)来实现。在另一代实施例中,控制器504包括通用处理器(general-purpose processor),通用处理器可以在同一集成电路上实现,集成电路执行计算机编程(computer program)以控制装置的操作。在其他实施例中,专用逻辑电路和通用处理器的组合可用于实现控制器504。偏压配置状态机512控制如本文所述的偏压配置供应电压。

图6绘示了具有两个第一类型突触层610和620以及两个第二类型突触层630和640的存储器系统600。第一类型突触层610包括第一类型存储单元阵列(array of memorycells of first type)611。为清楚起见,在图6中的第一类型突触层610的突触层中仅绘示了一个第一类型存储单元阵列。然而,第一类型突触层可具有多个第一类型存储单元阵列。第一类型突触层610也包括耦接到第一类型存储单元的各列中的第一类型存储单元的一第一存取线集合(a set of first access lines)612,以及列译码器/驱动器(row decoder/drivers)615。列译码器/驱动器615可接收来自图5中控制器504的输入或其他突触层,以及表示第一类型存储单元的各列输入的第一存取线集合中的第一存取线上的信号。

第一类型突触层610还包括耦接到第一类型存储单元的各行中的第一类型存储单元的第二存取线集合(a set of second access lines)613,以及行译码器/驱动器(column decoder/drivers)616。感测电路集合617(set of sensing circuits)(例如感测放大器)通过行译码器/驱动器616耦接到第二存取线集合中的各第二存取线。在一些实施例中,该感测电路集合617可直接耦接到第二存取线集合(set of second access line)中的第二存取线。对于使用第一类型存储单元阵列的乘积和运算,感测电路集合617可以感测来自第一类型存储单元阵列611的第二存取线613的电流。在第二存取线集合中的特定第二存取线上所感测的电流可以表示第一存取线的输入与储存在第一类型存储单元阵列611的权重因子的乘积和。来自第二存取线的感测数据(Sensed data)提供至激活函数电路(activation function circuit)614进行非线性数据运算。运算后的感测数据会提供至数据缓冲器(data buffer)618。数据缓冲器618可以储存来自第一类型存储单元阵列611的输出。

来自外部来源的存储单元地址(Memory cell addresses)和输入数据通过总线(bus)503从控制器504提供至第一类型存储单元阵列611的列译码器/驱动器(rowdecoder/drivers)615。来自其他突触层的输入数据也可以提供给第一类型存储单元阵列611的列译码器/驱动器615。对于存储器读取操作(memory read operations),来自感测电路(sensing circuits)617的感测数据被提供至激活函数电路(activation functioncircuit)614。运算后的感测数据会提供至数据缓冲器618,数据缓冲器618通过总线503耦接到控制器504。

类似于第一类型突触层610,第一类型突触层620包括第一类型存储单元阵列621、列译码器/驱动器625、行译码器/驱动器626、一组感测电路集合627和数据缓冲器628。

存储器系统600还包括第二类型突触层630和640。第二类型突触层630包括第二类型存储单元阵列631、列译码器/驱动器635、行译码器/驱动器636、一组感测电路集合637和数据缓冲器638。第二类型突触层640包括第二类型存储单元阵列641、列译码器/驱动器645、行译码器/驱动器646、一组感测电路集合647和数据缓冲器648。

第一类型存储单元和第二类型存储单元包括相变存储器、电阻式RAM、铁电RAM和磁性RAM,第一存取线可以是位线(bit lines),第二存取线可以是字线(word lines),反之亦然。对于电荷捕获存储器,第一存取线可以是字线,第二存取线可以是位线。电荷捕获存储器还可以具有第三存取线(third access lines),例如电源线(source lines)。

图7绘示了图6中两个第一类型突触层610和620的第一类型存储单元阵列611和621的范例。第一类型存储单元阵列611和621可以是电阻式RAM,其中存储单元的电阻表示储存在存储单元的权重。第一类型存储单元阵列包括M列和N行存储单元。阵列中每个存储单元表示单元的权重因子Wmn。第一类型存储单元的存储单元阵列611包括两列和三行。第一类型存储单元711、712、713、721、722和723的存储单元分别储存权重w11、w12、w13、w21、w22和w23。

一第二存取线集合(例如791、792、793)耦接到第一类型存储单元的各行中的第一类型存储单元。一第一存取线集合(例如781、782)耦接到第一类型存储单元的各列中的第一类型存储单元。第一存取线集合(例如781、782)耦接到列译码器/驱动器615,并且第二存取线集合耦接到行译码器/驱动器616。在第一存取线集合中的第一存取线上的信号表示各列输入x1、x2。如图6所示,列译码器/驱动器615施加一输入x1在第一存取线781上以及施加一输入x2在第一存取线782上。

感测电路617通过行译码器/驱动器616耦接到第二存取线集合中的各第二存取线。在第二存取线集合中的特定第二存取线(例如,791、792、793)处的电流感测信号(例如y1、y2、y3)可代表由各个权重因子的输入的乘积和。感测信号y1、y2、y3可以储存在数据缓冲器618中。储存的感测信号可以被发送到存储器系统600的第二类型突触层620的第二类型存储单元阵列621中。

第一类型存储单元阵列621包括三列和两行。阵列中的每个存储单元表示单元的权重因子Wmn。第一类型存储单元的存储单元731、732、741、742、751和752分别储存权重w31、w32、w41、w42、w51和w52。

一第二存取线集合(例如771、772)耦接到存储单元的各列中的存储单元。一第一存取线集合(例如761、762和763)耦接到存储单元的各列中的存储单元。第一存取线集合(例如761、762、763)耦接到列译码器/驱动器625,并且第二存取线集合耦接到行译码器/驱动器626。列译码器/驱动器625接收来自第一类型突触层610的突触层中的第一类型存储单元的存储单元阵列611的输入信号y1′、y2′、y3′,并将其记录在第一存取线集合中。如图6所示,列译码器/驱动器625施加输入y1′在第一存取线761上、施加输入信号y2′在第一存取线762上,以及施加输入信号y3′在第一存取线763上。

感测电路627通过行译码器/驱动器626耦接到第二存取线集合中的各第二存取线。在第二存取线集合中的特定第二存取线(例如771、772)处的电流感测信号(例如z1、z2)可代表由各个权重因子的输入的乘积和。感测信号z1、z2可以储存在数据缓冲器628中。储存的感测信号可以被发送到存储器系统600的第二类型突触层630的第二类型存储单元阵列631中或图5的控制器504。

图8绘示了采电荷捕获存储器的第一类型突触层620的第一类型存储单元和采电阻式随机存取存储器的第二类型突触层630的第二类型存储单元。

第一类型存储单元621的存储单元阵列包括第一类型存储单元的三列和两行,其中一第三存取线集合(例如电荷捕获存储器的源极线)耦接第一类型存储单元的各行中的第一类型存储单元。阵列中第一类型存储单元可各自包括具有电压阈值的晶体管,表示单元的权重因子Wmn。存储单元811、812、821、822、831和832分别储存权重w31、w32、w41、w42、w51和w52。

一第二存取线集合(例如851、852)耦接到第一类型存储单元的各行中的第一类型存储单元。一第一存取线集合(例如841、842和843)耦接到第一类型存储单元的各列中的第一类型存储单元。第一存取线集合(例如841、842和843)耦接到列译码器/驱动器625。第一存取线集合中的第一存取线上的信号可以表示各列的输入信号y1′、y2′、y3′。如图8所示,列译码器/驱动器625施加输入y1′在第一存取线841上,列译码器/驱动器625施加输入信号y2′在第一存取线842上和列译码器/驱动器625施加输入信号y3′在第一存取线843上。第二存取线集合(例如851、852)耦接到第一类型存储单元的各行中的晶体管栅极。在第二存取线集合中的第二存取线上的信号可以选择第一类型存储单元的各行。

第三存取线集合(例如861、862)耦接到行译码器/驱动器626。感测电路627耦接到第三存取线集合中的各第三存取线。在第三存取线集合中的特定第二存取线(例如861、862)处的电流感测信号(例如z1、z2)可以表示由各个权重因子的输入的乘积和。感测信号z1、z2可以储存在数据缓冲器628中。储存的感测信号z1、z2可以被发送到存储器系统600的第二类型突触层630的第二类型存储单元阵列631中。

第二类型存储单元的存储单元阵列631包括两列和三行电阻RAM。阵列中每个第二类型存储单元表示单元的权重因子W。存储单元871、872、873、881、882和883分别储存权重w71、w72、w73、w81、w82和w83。

一第二存取线集合(例如863、864和865)耦接到存储单元的各行中的存储单元。一第一存取线集合(例如853、854)耦接到存储单元的各列中的存储单元。第一存取线集合(例如853、854)耦接到列译码器/驱动器635,并且第二存取线集合(例如863、864和865)耦接到行译码器/驱动器636。列译码器/驱动器635从第一类型突触层610中第一类型存储单元的存储单元阵列621接收输入信号z1′、z2′,并将其施加在第一存取线集合中的第一存取线上。输入信号z1’施加在第一存取线853上,并且输入信号z2′施加在第一存取线854上。

在第二存取线集合中的特定第二存取线(例如863、864、865)处的电流感测信号(例如a1、a2、a3)可以表示由各个权重因子的输入的乘积和。感测信号a1、a2、a3可以储存在数据缓冲器638中。

权重的代表数字也可以储存在第一类型存储单元阵列中。图9示绘示了第一类型存储单元900的列存储单元(row of memory cells)的一部分,其储存了权重的代表数字w1、w2、w3。第一类型存储单元耦接到第一存取线901和第二存取线911、912和913。第一类型存储单元921、922和923的三个存储单元具有两个电阻状态,低电阻状态(low resistancestate)表示位“0”和表示位“1”的高电阻状态(high resistance state)。储存在第一类型存储单元921中的权重w1、储存在第一类型存储单元922中的权重w2和储存在第一类型存储单元923中的权重w3表示数字权重展示的第一数字(first digit)、第二数字(seconddigit)和第三数字(third digit)。输入x施加在第一存取线901上。在第二存取线集合中的特定第二存取线(例如911、912、913)处的电流感测信号(例如y1、y2、y3)可以表示输入x和数字权重w1、w2、w3的乘积和。

图10绘示了实现类神经网路的存储器内运算装置1000的第二示例的简化芯片方块图。类似于图5中的存储器内运算装置500,存储器内运算装置1000包括存储器系统502,该存储器系统502包括多个第一类型突触层、多个第二类型突触层、输入/输出电路593、缓冲电路590、控制器504和偏压配置状态机512。此外,存储器内运算装置1000包括乘法与累加单元(multiplier and accumulator unit)1010。

存储器系统502的第一类型突触层中第一类型存储单元储存权重在输入层附近的类神经网路的突触层。第二类型突触层中的第二类型存储单元储存权重在类神经网路的输出层附近的突触层。乘法与累加单元1010利用从存储器内运算装置外部来源接收的输入数据和储存在第一类型存储单元与第二类型存储单元的权重来执列乘积和运算。乘法与累加单元1010可以是通用处理器或专用应用电路,或者是提供芯片上系统功能的模组。

控制器504可更包括用于提供储存在第N个突触层权重的存储单元位址至存储器系统502中的列译码器和行译码器以及将第N个突触层输入提供至乘法与累加单元1010的电路。乘法与累加单元1010从存储器系统502接收第N个突触层所储存的权重,以计算乘积和。乘法与累加单元向控制器504提供乘积和,以作为第N个突触层的输出。第N个突触层输出可以用作第N+1个突触层输入,或者输出可以是类神经网路的最终输出。

图11绘示了总共具有九个突触层的存储器内运算装置的推论准确性。前N个突触层是具有SRAM装置的第一类型突触层,以作为第一类型存储单元,其余的N-9突触层是具有电阻式RAM装置的第二类型突触层,以作为第二类型存储单元。当所有突触层都是第一类型突触层时,推论准确性为90.94%。推论准确性由分类10,000个测试图像数据后的平均准确性来决定。当所有突触层都是第二类型突触层时,推论准确性为16.73%。当存在一个第一类型突触层和八个第二类型突触层时,推论准确性为84.45%。对于一个额外的第一类型突触层,推论准确度增加到87.78%。当所有突触层都是第一类型突触层时,将第一类型突触层数量增加到四个提高的推论准确性。

图12是依据本技术而用于制造集成电路装置中的存储器内运算装置的简化流程图。在步骤1210中,包含第一类型存储单元的多个第一类型突触层被形成(例如图6中的第一类型突触层610、620)。在步骤1220中,包含第二类型存储单元的多个第二类型突触层被形成(例如图6中的第二类型突触层630、640)

第一类型存储单元比第二类型存储单元更不易于出现权重波动。在一些实施例中,第一类型存储单元的制造过程可以不同于第二类型存储单元的制造过程,与第二类型存储单元相比,第一类型存储单元具有较少的装置变化性。

在存储器内运算装置的一些实施例中,第一类型存储单元和第二类型存储单元可包括相同类型的存储单元(例如电阻式RAMs),以及第一类型存储单元的尺寸可以大于第二类型存储单元,较大的第一类型存储单元将比第二类型存储单元有较少的噪声,其导致第一类型存储单元中较少的权重波动。

在一些实施例中,第一类型存储单元和第二类型存储单元可包括不同的存储单元,即第一类型存储单元的结构不同于第二类型存储单元的结构。第一类型存储单元可包括易失性存储单元(例如SRAM和DRAM),并且第二类型存储单元可包括非易失性存储单元(例如电阻式RAM)。在一些实施例中,第一类型存储单元可包括只读存储单元(例如熔丝ROM),而第二类型存储单元可包括可重新编程的存储单元(例如电阻式RAM)。

第一类型存储单元可以是易失性存储单元(例如SRAM和DRAM)或非易失性存储单元(例如掩模式ROM、熔丝ROM和电阻式RAM)。第一类型存储单元可以是只读存储单元(例如掩模式ROM、熔丝ROM)或可重新编程的存储单元(例如SRAM、DRAM和电阻式RAM)。在一些实施例中,储存在第一类型存储单元的权重可以是存储单元的电阻,例如电阻式RAM、浮动栅极MOSFET、介电电荷捕获装置(例如SONOS、BE-SONOS、TANOS、MA BE-SONOS)和相变存储器等存储单元。在一些实施例中,储存的权重可以是储存在存储单元中的两个或更多位的信息,例如SRAM、DRAM和ROM中的位“0”和“1”。

第二类型存储单元可以是非易失性存储单元,例如电阻式RAM,浮动栅极MOSFET、介电电荷捕获装置(例如SONOS、BE-SONOS、TANOS、MA BE-SONOS)、相变存储器、铁电RAMS和磁性RAMs。在一些实施例中,储存在第二类型存储单元的权重可以是存储单元的电阻,例如像是电阻式RAM、浮动栅极MOSFET、介电电荷捕获装置(例如SONOS、BE-SONOS、TANOS、MA BE-SONOS)和相变存储器等存储单元。

在步骤1330,支持存储器内运算装置的周边电路(peripheral circuitries)被形成。周边电路可以是列译码器/驱动器(例如图6中的列译码器/驱动器615、625、635、645)、行译码器/驱动器(例如图6中的行译码器/驱动器616、626、636、646)、感测电路(例如图6中的感测电路617、627、637、647)和缓冲电路(例如图6中的数据缓冲器618、628、638、648)。周边电路也可以包括控制器(例如图5中的控制器504),以及乘法与累加单元(例如,图10中的单元1010)。控制器也可以包括在第一类型存储单元中利用第一写入算法和在第二类型存储单元中利用第二写入算法来执行写入操作的电路。控制器也可以包括在第一类型存储单元中利用第一读取算法和在第二类型存储单元中利用第二读取算法来执行读取操作的电路。

综上所述,虽然本发明已以实施例公开如上,然其并非用以限定本发明。本发明所属技术领域中普通技术人员,在不脱离本发明的精神和范围内,当可作各种的更动与润饰。因此,本发明的保护范围随附的权利要求范围所界定为准。

23页详细技术资料下载
上一篇:一种医用注射器针头装配设备
下一篇:存储器件、电阻式存储单元阵列的电压补偿控制器和方法

网友询问留言

已有0条留言

还没有人留言评论。精彩留言会获得点赞!

精彩留言,会给你点赞!

技术分类