一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

存储器装置和操作存储器装置的方法与流程

2021-12-07 20:40:00 来源:中国专利 TAG:
1.下面总体涉及存储器装置,更具体讲,涉及选择存储器装置的编程电压。
背景技术
::2.存储器装置是用于存储数据的常用电子组件。与非(nand)闪存装置允许在每个存储器单元(或称为,存储单元)中存储多比特数据,从而提供制造成本和性能的改进。存储有多比特数据的存储器单元可被称为多层(或称为,多级)存储器单元。多层存储器单元将存储器单元的阈值电压范围划分为多个电压状态,并且写入到存储器单元的数据值使用存储器单元电压电平来提取。3.用于对存储器单元进行编程的电压电平可基于理论考虑而手动确定。然而,电压电平的手动选择不提供用于使读取错误最小化的最佳电压电平。因此,在本领域中需要用于确定用于将数据编程到存储器单元的电压电平的改进系统。技术实现要素:4.描述了一种用于选择存储器装置的编程电压的方法、设备、非暂时性计算机可读介质和系统。所述方法、设备、非暂时性计算机可读介质和系统的实施例可包括:使用基于多个嵌入参数的神经网络嵌入将一组信息比特编程到一个或多个存储器单元中;使用包括与所述多个嵌入参数一起训练的多个网络参数的神经网络,基于存储器单元的电压电平来确定一组预测的信息比特;以及基于所述组预测的信息比特从存储器装置读取信息比特。5.描述了一种用于选择存储器装置的编程电压的方法、设备、非暂时性计算机可读介质和系统。所述方法、设备、非暂时性计算机可读介质和系统的实施例可将多个嵌入参数和一组网络参数初始化;基于所述多个嵌入参数将一组信息比特映射到一个或多个存储器单元的电压电平;使用基于网络参数的人工神经网络(ann)来识别一组预测的信息比特;以及至少部分地基于所述组预测的信息比特来更新所述多个嵌入参数和网络参数。6.描述了一种用于选择存储器装置的编程电压的设备、系统和方法。所述设备、系统和方法的实施例可包括:多个存储器单元;编程组件,包括基于多个嵌入参数的嵌入层;以及读取组件,包括基于多个网络参数的神经网络,其中,所述多个网络参数与所述多个嵌入参数一起被训练。附图说明7.图1示出根据本公开的方面的包括存储器系统的数据处理系统的实现的示例。8.图2示出根据本公开的方面的图1的存储器系统的示例。9.图3示出根据本公开的方面的图1的非易失性存储器装置的示例。10.图4示出根据本公开的方面的图3的存储器单元阵列的示例。11.图5示出根据本公开的方面的图4的存储器单元阵列的存储器块的示例。12.图6示出根据本公开的方面的电压电平星座(constellation)的示例。13.图7示出根据本公开的方面的基于学习的存储器系统的示例。14.图8示出根据本公开的方面的编程网络的示例。15.图9示出根据本公开的方面的读取网络的示例。16.图10示出根据本公开的方面的操作存储器装置的处理的示例。17.图11示出根据本公开的方面的将信息编程到存储器装置的处理的示例。18.图12示出根据本公开的方面的训练用于选择存储器装置的编程电压的ann的处理的示例。具体实施方式19.本公开涉及用于对存储器装置编程和从存储器装置读取数据的系统和方法,更具体地讲,选择存储器装置的编程电压。公开的特定实施例具体涉及能够在每个存储器单元中存储5比特或6比特数据的nand闪存装置。20.存储器装置是用于存储数据的常用电子组件。nand闪存装置允许在每个存储器单元中存储多比特数据,从而提供制造成本和性能的改进。存储有多比特数据的存储器单元可被称为多层(或称为,多级)存储器单元。多层存储器单元将存储器单元的阈值电压范围划分为多个电压状态,并且写入到存储器单元的数据值使用存储器单元电压电平来提取。21.为了从存储器装置读取信息,每个单元的电压被测量并且存储在单元中的电压电平被推断。然后,比特可被恢复。在电压电平的数量与存储器可靠性之间可存在权衡。每单元的比特数越大,可被存储在存储器装置上的信息越多,在该情况下,在每个单元中存在更多比特。可选地,因为在相同的动态范围内,更大数量的可区分的电压被使用,所以表示不同电平的电压可被更紧密地封装在一起。结果,单元编程或单元读取中的噪声具有将一个电平的电压改变为表示不同电平的另一电压的更大机会,因此,在读取单元时显现错误。22.在存储器装置中存在可导致信息的错误读取的多个噪声源(诸如,写入噪声、干扰噪声、老化和读取的操作)。写入噪声是紧接在编程之后的单元的电压,该紧接在编程之后的单元的电压由于编程过程而不同于预期电压。干扰噪声是随着对不同的邻近单元编程的结果而改变的单元的电压的函数。编程单元引起影响其他单元的干扰。老化是装置被写入和读取的次数越多,噪声增加越大。此外,单元的编程之间的时间越长,单元将产生的噪声越多。此外,读取单元的操作可引起噪声和干扰。23.存储器装置可被称为通道。因为写入和/或发送操作可进入和/或通过通道,所以使用术语通道。当信息被读取时,根据介质的特性,信息将被噪声破坏。24.存储器编程是基于将电压施加到存储器单元的复杂处理。然而,单元电压可受变量(诸如,电流电压电平、脉冲功率和单元间干扰)影响。单元电压还可受抑制的单元中断(celldisruption)、字线间(wl)耦合和单元保持(cellretention)影响。此外,写入到nand装置的结果可以是随机的。例如,数据也可能是导致观察的问题的噪声。25.用于选择编程电压的常规方法使用手动优化技术(诸如,试错法)。这些手动处理不提供最佳性能,并且可不包含统计数据。此外,成功的度量(诸如,目标电压)针对特定应用而产生,并且可能不适用于多个应用。此外,手动优化可以是资源密集型的,并且可在各种度量上进行折衷使得其他度量能够更快或更有效地操作。26.因此,本公开的系统和方法可用于找到单元的改进的编程电压。找到单元的编程电压的特定方法使用基于学习的存储器系统。基于学习的存储器系统包括编程网络、nand存储器(或nand通道)和读取网络。nand存储器可具有多个存储器单元,多个存储器单元中每个存储器单元可使用多个不同的电压电平被编程。27.本公开的实施例可用在闪存控制器中。此外,本公开可在误码率方面优于当前的手动优化处理,并且与手动优化处理相比具有快速开发的优点。28.本公开描述了一种在给定每单元的比特数n和单元的数量k的情况下找到用于调制的优化星座(constellation)的方法。该方法可以是自动的,并且可具有使用来自真实的nand通道的数据驱动的数据,因此,该方法找到特别良好地适合于该通道的星座。对于给定的每单元的比特数,本公开的实施例可找到在读取时产生少量错误的星座。29.本公开利用机器学习来找到星座。训练处理可在产品开发期间(不是每特定的nand芯片实例)离线执行。然后,训练处理结果可被应用于具有类似规格的nand芯片的所有实例。30.机器学习设置由编程网络模块、读取网络和nand通道组成。编程网络将电平作为输入,并返回该电平的电压序列。编程网络是由星座执行的映射。编程网络实现电压的连续优化。读取网络基于检测的存储器单元的电压电平来预测原始信息。31.在下文中,将参照附图更充分地描述本发明构思的示例性实施例。贯穿附图,相同的参考标号可表示相同的元件。32.将理解,术语“第一”、“第二”、“第三”等在此用于将一个元件与另一元件区分开来,并且元件不受这些术语限制。因此,示例性实施例中的“第一”元件可被描述为另一示例性实施例中的“第二”元件。33.应理解,除非上下文另外清楚地指示,否则每个示例性实施例内的特征或方面的描述通常应被认为可适用于其他示例性实施例中的其他类似特征或方面。34.如在此所使用的,除非上下文另外清楚地指示,否则单数形式也意在包括复数形式。35.在此,当一个值被描述为约等于另一值或者基本上与另一值相同或等于另一值时,将理解,这些值在测量误差内彼此相等,或者如果可测量地不相等,则如本领域普通技术人员将理解的在值上足够接近为在功能上彼此相等。例如,考虑与特定量的测量相关联的问题和误差(即,测量系统的限制)的测量,如在此使用的术语“约”包括陈述的值,并且表示如本领域普通技术人员确定的特定值的可接受的偏差范围内。例如,“约”可表示在如本领域普通技术人员理解的一个或多个标准偏差内。此外,将理解,虽然参数可在此被描述为具有“约”特定值,但是,根据示例性实施例,参数可以是精确的特定值或者在如本领域普通技术人员将理解的测量误差内的近似的特定值。36.示例性存储器系统37.图1是示出根据发明构思的示例性实施例的包括存储器系统的数据处理系统的实现的框图。38.参照图1,数据处理系统10可包括主机100和存储器系统200。图1中所示的存储器系统200可用在包括数据处理功能的各种系统中。各种系统可以是包括例如移动装置(诸如,智能电话或平板计算机)的各种装置。然而,各种装置不限于此。39.存储器系统200可包括各种类型的存储器装置。在此,发明构思的示例性实施例将被描述为包括作为非易失性存储器的存储器装置。然而,示例性实施例不限于此。例如,存储器系统200可包括作为易失性存储器的存储器装置。40.根据示例性实施例,存储器系统200可包括非易失性存储器装置(诸如,以只读存储器(rom)、磁盘、光盘、闪存等为例)。闪存可以是根据金属氧化物半导体场效应晶体管(mosfet)的阈值电压的变化来存储数据的存储器,并且可包括例如nand以及或非(nor)闪存。存储器系统200可使用包括非易失性存储器装置(诸如,以嵌入式多介质卡(emmc)、安全数字(sd)卡、微型sd卡或通用闪存(ufs)为例)的存储卡来实现,或者存储器系统200可使用例如包括非易失性存储器装置的ssd来实现。这里,假设存储器系统200是非易失性存储器系统,将描述存储器系统200的配置和操作。然而,存储器系统200不限于此。主机100可包括例如安装在例如移动装置上的片上系统(soc)应用处理器(ap)或者包括在计算机系统中的中央处理器(cpu)。41.如上所述,主机100可包括ap110。ap110可包括各种知识产权(ip)块。例如,ap110可包括控制存储器系统200的存储器装置驱动器111。主机100可与存储器系统200通信以发送与存储器操作相关的命令,并且响应于发送的命令接收确认命令。主机100还可关于与存储器操作相关的信息表(例如,info_table)与存储器系统200通信。42.存储器系统200可包括例如存储器控制器210和存储器装置220。存储器控制器210可从主机100接收与存储器操作相关的命令,使用接收到的命令生成内部命令和内部时钟信号,并将内部命令和内部时钟信号提供给存储器装置220。存储器装置220可响应于内部命令将写入数据存储在存储器单元阵列中,或者可响应于内部命令将读取数据提供给存储器控制器210。43.存储器装置220包括即使当存储器装置220未通电时也保持存储在其中的数据的存储器单元阵列。存储器单元阵列可包括存储器单元(例如,nand或nor闪存、磁阻随机存取存储器(mram)、电阻随机存取存储器(rram)、铁电存取存储器(fram)或相变存储器(pcm))。例如,当存储器单元阵列包括nand闪存时,存储器单元阵列可包括多个块和多个页。可以以页为单位编程和读取数据,并且可以以块为单位擦除数据。图4中示出包括在存储器单元阵列中的存储器块的示例。44.图2是示出根据发明构思的示例性实施例的图1的存储器系统200的框图。45.参照图2,存储器系统200包括存储器装置220和存储器控制器210。存储器控制器210在此也可被称为控制器电路。存储器装置220可在存储器控制器210的控制下执行写入操作、读取操作或擦除操作。46.存储器控制器210可根据从主机100接收的请求或内部指定的调度来控制存储器装置220。存储器控制器210可包括控制器核211、内部存储器214、主机接口块215和存储器接口块216。存储器控制器210还可包括装置信息存储装置217,装置信息存储装置217被配置为将第一装置信息di1提供给主机接口块215并且将第二装置信息di2提供给控制器核211。47.控制器核211可包括存储器控制核212和机器学习核213,并且这些核中的每个可通过一个或多个处理器实现。存储器控制核212可根据从主机100接收的请求或内部指定的调度来控制和访问存储器装置220。存储器控制核212可管理和执行用于管理或操作存储器系统200的各种元数据和代码。48.如下面进一步详细描述的,机器学习核213可用于执行被设计为对存储器装置220执行噪声消除的神经网络的训练和推断。49.内部存储器214可用作例如控制器核211使用的系统存储器、存储存储器装置220的数据的高速缓冲存储器、或者临时存储主机100与存储器装置220之间的数据的缓冲存储器。内部存储器214可存储指示分配给存储器系统200的逻辑地址与存储器装置220的物理地址之间的关系的映射表mt。内部存储器214可包括例如dram或sram。50.在示例性实施例中,神经网络(诸如,参照图9描述的读取网络)可被包括在存储在存储器控制器210的内部存储器214中或者存储在存储器装置220中的计算机程序中。包括神经网络的计算机程序可被机器学习核213执行以对存储在存储器装置220中的数据进行去噪。因此,根据示例性实施例,存储器系统200可在存储器装置220的正常读取操作期间对存储在存储器装置220中的数据进行去噪。也就是说,在存储器系统200的制造完成之后,在存储器系统200的正常操作期间,具体地,在从存储器装置220读取数据的存储器系统200的正常读取操作期间,存储在存储器装置220中的正被读取的数据可使用在存储器系统200中本地存储和执行的神经网络来去噪,并且去噪的数据可从存储器装置220读出。51.主机接口块215可包括用于与主机100通信的组件(诸如,以物理块为例)。存储器接口块216可包括用于与存储器装置220通信的组件(诸如,以物理块为例)。52.下面,将描述存储器系统200随时间的操作。当向存储器系统200供应电力时,存储器系统200可与主机100执行初始化。53.主机接口块215可向存储器控制核212提供从主机100接收的第一请求req1。第一请求req1可包括命令(例如,读取命令或写入命令)和逻辑地址。存储器控制核212可将第一请求req1转换为适合于存储器装置220的第二请求req2。54.例如,存储器控制核212可转换命令的格式。存储器控制核212可参考存储在内部存储器214中的映射表mt来获得地址信息ai。存储器控制核212可通过使用地址信息ai将逻辑地址转换为存储器装置220的物理地址。存储器控制核212可将适合于存储器装置220的第二请求req2提供给存储器接口块216。55.存储器接口块216可在队列(queue)登记来自存储器控制核212的第二请求req2。存储器接口块216可将首先在队列登记的请求作为第三请求req3发送到存储器装置220。56.当第一请求req1是写入请求时,主机接口块215可将从主机100接收的数据写入到内部存储器214。当第三请求req3是写入请求时,存储器接口块216可将存储在内部存储器214中的数据发送到存储器装置220。57.当数据被完全写入时,存储器装置220可将第三响应resp3发送到存储器接口块216。响应于第三响应resp3,存储器接口块216可向存储器控制核212提供指示数据被完全写入的第二响应resp2。58.在数据被存储在内部存储器214中之后或者在第二响应resp2被接收之后,存储器控制核212可通过主机接口块215将指示请求被完成的第一响应resp1发送到主机100。59.当第一请求req1是读取请求时,读取请求可通过第二请求req2和第三请求req3被发送到存储器装置220。存储器接口块216可将从存储器装置220接收的数据存储在内部存储器214中。当数据被完全发送时,存储器装置220可将第三响应resp3发送到存储器接口块216。60.当第三响应resp3被接收时,存储器接口块216可向存储器控制核212提供指示数据被完全读取的第二响应resp2。当第二响应resp2被接收时,存储器控制核212可通过主机接口块215将第一响应resp1发送到主机100。61.主机接口块215可将存储在内部存储器214中的数据发送到主机100。在一个示例性实施例中,在与第一请求req1对应的数据被存储在内部存储器214中的情况下,可省略第二请求req2和第三请求req3的传输。62.存储器装置220还可将第一串行外围接口信息spi1发送到存储器接口块216。存储器接口块216可将第二串行外围接口信息spi2发送到控制器核211。63.图3是根据本发明构思的示例性实施例的图1的非易失性存储器装置220的详细框图。参照图3,存储器装置220可包括例如存储器单元阵列221、控制逻辑222、电压生成单元223、行解码器224和页缓冲器225。64.存储器单元阵列221可连接到一条或多条串选择线ssl、多条字线wl、一条或多条地选择线gsl以及多条位线bl。存储器单元阵列221可包括设置在多条字线wl与多条位线bl之间的交叉点处的多个存储器单元。65.控制逻辑222可从存储器控制器210接收命令cmd(例如,内部命令)和地址add,并且从存储器控制器210接收用于控制存储器装置220内的各种功能块的控制信号ctrl。控制逻辑222可基于命令cmd、地址add和控制信号ctrl输出用于将数据写入存储器单元阵列221或从存储器单元阵列221读取数据的各种控制信号。以这种方式,控制逻辑222可控制存储器装置220的总体操作。66.控制逻辑222输出的各种控制信号可被提供给电压生成单元223、行解码器224和页缓冲器225。例如,控制逻辑222可向电压生成单元223提供电压控制信号ctrl_vol,可向行解码器224提供行地址x‑add,并且可向页缓冲器225提供列地址y‑add。67.电压生成单元223可基于电压控制信号ctrl_vol生成用于对存储器单元阵列221执行编程、读取和擦除操作的各种电压。例如,电压生成单元223可生成用于驱动多条字线wl的第一驱动电压vwl、用于驱动多条串选择线ssl的第二驱动电压vssl和用于驱动多条地选择线gsl的第三驱动电压vgsl。在这种情况下,第一驱动电压vwl可以是编程电压(例如,写入电压)、读取电压、擦除电压、通过电压(passvoltage)或编程验证电压。此外,第二驱动电压vssl可以是串选择电压(例如,导通电压或截止电压)。此外,第三驱动电压vgsl可以是地选择电压(例如,导通电压或截止电压)。68.行解码器224可通过多条字线wl连接到存储器单元阵列221,并且可响应于从控制逻辑222接收的行地址x‑add来激活多条字线wl的一部分。例如,在读取操作中,行解码器224可将读取电压施加到选择的字线并且将通过电压施加到未选择的字线。69.在编程操作中,行解码器224可将编程电压施加到选择的字线并且将通过电压施加到未选择的字线。在一个示例性实施例中,在多个编程循环中的至少一个中,行解码器224可将编程电压施加到选择的字线和另外选择的字线。70.页缓冲器225可通过多条位线bl连接到存储器单元阵列221。例如,在读取操作中,页缓冲器225可作为输出存储在存储器单元阵列221中的数据的感测放大器进行操作。可选地,在编程操作中,页缓冲器225可作为将期望的数据写入存储器单元阵列221的写入驱动器进行操作。71.图4和图5示出使用三维闪存实现存储器系统200的示例。三维闪存可包括三维(例如,垂直)nand(例如,vnand)存储器单元。下面描述包括三维存储器单元的存储器单元阵列221的实现。下面描述的存储器单元中的每个可以是nand存储器单元。72.图4是根据本发明构思的示例性实施例的图3的存储器单元阵列221的框图。73.参照图4,根据示例性实施例的存储器单元阵列221包括多个存储器块blk1至blkz(其中,z是大于1的正整数)。存储器块blk1至blkz中的每个具有三维结构(例如,垂直结构)。例如,存储器块blk1至blkz中的每个可包括在第一方向至第三方向上延伸的结构。例如,存储器块blk1至blkz中的每个可包括在第二方向上延伸的多个nand串。多个nand串可设置在例如第一方向至第三方向上。74.每个nand串连接到位线bl、串选择线ssl、地选择线gsl、字线wl和共源极线csl。也就是说,存储器块blk1至blkz中的每个可连接到多条位线bl、多条串选择线ssl、多条地选择线gsl、多条字线wl和共源极线csl。下面将参照图5进一步详细描述存储器块blk1至blkz。75.图5是根据本发明构思的示例性实施例的存储器块blki的电路图。图5示出图4的存储器单元阵列221中的存储器块blk1至blkz之一的示例。图5中描绘的存储器单元和字线的数量仅是示例,并且任何合适数量的存储器单元和字线可被使用。76.存储器块blki可包括多个单元串cs11至cs41和cs12至cs42。多个单元串cs11至cs41和cs12至cs42可在列方向和行方向上布置以形成列和行。单元串cs11至cs41和cs12至cs42中的每个可包括地选择晶体管gst、存储器单元mc1至mc6和串选择晶体管sst。包括在单元串cs11至cs41和cs12至cs42中的每个中的地选择晶体管gst、存储器单元mc1至mc6和串选择晶体管sst可在基本上垂直于基底的高度方向上堆叠。77.多个单元串cs11至cs41和cs12至cs42的列可分别连接到不同的串选择线ssl1至ssl4。例如,单元串cs11和cs12的串选择晶体管sst可共同连接到串选择线ssl1。单元串cs21和cs22的串选择晶体管sst可共同连接到串选择线ssl2。单元串cs31和cs32的串选择晶体管sst可共同连接到串选择线ssl3。单元串cs41和cs42的串选择晶体管sst可共同连接到串选择线ssl4。78.多个单元串cs11至cs41和cs12至cs42的行可分别连接到不同的位线bl1和bl2。例如,单元串cs11至cs41的串选择晶体管sst可共同连接到位线bl1。单元串cs12至cs42的串选择晶体管sst可共同连接到位线bl2。79.多个单元串cs11至cs41和cs12至cs42的列可分别连接到不同的地选择线gsl1至gsl4。例如,单元串cs11和cs12的地选择晶体管gst可共同连接到地选择线gsl1。单元串cs21和cs22的地选择晶体管gst可共同连接到地选择线gsl2。单元串cs31和cs32的地选择晶体管gst可共同连接到地选择线gsl3。单元串cs41和cs42的地选择晶体管gst可共同连接到地选择线gsl4。80.设置在距基底(或地选择晶体管gst)相同高度处的存储器单元可共同连接到单条字线,并且设置在距基底不同高度处的存储器单元可分别连接到不同的字线wl1至wl6。例如,存储器单元mc1可共同连接到字线wl1。存储器单元mc2可共同连接到字线wl2。存储器单元mc3可共同连接到字线wl3。存储器单元mc4可共同连接到字线wl4。存储器单元mc5可共同连接到字线wl5。存储器单元mc6可共同连接到字线wl6。单元串cs11至cs41和cs12至cs42的地选择晶体管gst可共同连接到共源极线csl。81.调制82.图6示出根据本公开的方面的电压电平星座600的示例。电压电平星座600表示根据本公开的实施例的可用于将数据编程到存储器装置的调制方案的示例。调制方案可涉及将存储器单元分组为给定数量(由k表示)的组并且将每个存储器单元的电压电平划分为离散的电平(由n表示)。83.电压电平星座600包括具有两比特每单元(bpc)的两个单元,即n=2bpc和k=2单元。然而,在其他示例中,可使用不同数量的单元和bpc。每个单元被表示为一个轴,并且每个信息符号605由一对电压电平(每个单元一个电压电平)表示。单元的数量确定轴的数量,并且bpc确定潜在电压电平的数量。84.例如,如果bpc=n,则每单元的电压电平的数量可以是2n。因此,这里存在两个轴,每个轴具有4个电平,使得电压电平星座600包括16个信息符号605。注意,信息符号605的位置不是完全对齐的。也就是说,电压电平可不均匀地间隔开,并且电压电平针对每个单元可不相同。85.因此,调制可用于将信息写入nand装置。简而言之,调制不是每单元写入n比特,而是每k个单元写入n×k比特。为了将比特流存储到nand装置,信息流被分组为(n×k)比特大小的组。每个组可具有值的2n×k个不同的组合。因此,执行从每个组到范围[0,(2n×k‑1)]中的数字l的映射。[0086]向k个单元的每个非交错集合写入单个电平。每个电平通过固定的、预定的映射与k个电压(诸如,v1(l),v2(l),…,vk(l))的唯一的序列相关联。因此,为了将电平l存储在k个单元中,对第一单元至电压v1(l)、第二单元至电压v2(l)等进行联合编程。[0087]如果星座被正确地计算,则调制增加可靠性(例如,降低误码率)。当在被联合编程的单元之间存在干扰噪声时是真实的。在电信领域中,出于类似的原因,调制被广泛使用。可基于物理通道和通信需要来选择合适的调制方案。[0088]调制可提供以用于每单元存储非整数数量的比特。例如,我们可通过在2个单元中存储7比特来每单元存储31/2比特。换句话说,如果我们具有128(128=27)个电平并且我们在2个单元上写入128个电平,则就每单元的比特而言,这相当于每单元31/2比特。[0089]在另一示例中,即使n×k不是整数,在2(n×k)是整数的限制的情况,也可使用每单元的非整数数量的比特。例如,存储器装置可基于k=3单元,并且2(n×k)=30000。在这种情况下,因为比特的数量是n×k,n×k可能不是整数,所以可存在检测信息比特的集合的挑战。也就是说,战。也就是说,因此,这种情况(n×k不是整数)可限于两个条件成立的情况。即,1)通过将n×k四舍五入到最接近的整数(即,在这个示例中是15)来获得信息比特的数量,以及2)在输入和输出中不允许信息比特的一些组合。这表示对于输入可存在少于215个选项。例如,允许的组合的数量可最多为30000。[0090]根据各种实施例,单元的编程电压选择可通过脉冲幅度调制(pam)调制算法来执行,其中,编码的比特被划分为每单元的比特的数量的组。例如,在三级单元(tlc)中,每单元的比特的数量为3。单元的每个组称为符号。例如,具有比特010的符号等于2。第nv动态范围被划分为每单元2n比特。例如,第3v动态范围被划分为8个目标电压。每个目标电压使用格雷码被映射到符号,其中,在相邻目标电压之间仅改变单个比特。例如,如果动态范围在‑3v与4v之间,那么‑3v的调制是111,‑2v的调制是110,‑1v的调制是100,0v的调制是101,1v的调制是001,2v的调制是000,3v的调制是010,4v的调制是011。[0091]示例调制对应于加性高斯白噪声(awgn)通道。然而,在许多情况下,nand通道和awgn通道不相同,并且pam调制对于nand通道不一定是最佳的。可选地,可进行启发式优化以找到具有提高的性能的目标电压。[0092]基于学习的存储器[0093]图7示出根据本公开的方面的基于学习的存储器系统的示例。示出的示例包括编程网络700、存储器装置705和读取网络710。[0094]在一些示例中,编程网络700和读取网络710可包括人工神经网络(ann)。ann可以是包括可大致对应于人脑中的神经元的多个连接节点(又名人工神经元)的硬件或软件组件。每个连接或边(就像大脑中的物理突触)可将信号从一个节点发送到另一节点。当节点接收到信号时,节点可处理该信号,然后将处理后的信号发送到其他连接的节点。在一些情况下,节点之间的信号包括实数,并且每个节点的输出可通过每个节点的输入之和的函数来计算。每个节点和边可与确定信号如何被处理和被发送的一个或多个节点权重相关联。[0095]应注意,ann的这种描述比文字更形象。换句话说,它描述了解释ann的一种方式,但不一定是如何实现的。在ann的硬件或软件实现中,发送和接收信号可能无法按字面含义执行。[0096]在训练处理期间,这些权重可被调整以提高结果的准确性(即,通过使以某种方式对应于当前结果与目标结果之间的差的损失函数最小化)。边的权重可增加或减少在节点之间发送的信号的强度。在一些情况下,节点可具有阈值,低于该阈值根本不发送信号。节点还可被聚合成层。不同的层可对不同的层的输入执行不同的变换。初始层可被称为输入层,并且最后一层可被称为输出层。在一些情况下,信号可多次穿过特定层。[0097]编程网络700基于一组嵌入参数将一组信息比特映射到一个或多个存储器单元的电压电平。编程网络700可基于映射将该组信息比特编程到一个或多个存储器单元中。编程网络700还可将格雷码应用于该组信息比特,其中,映射基于格雷码。在一些示例中,可存在多个存储器单元,并且该组嵌入参数包括具有等于存储器单元的数量的维数的阵列。维数可不同于该阵列中的元素的数量。例如,阵列中的元素的数量可等于可能的电平的数量(即,2(n×k)),并且阵列的每个元素可以是k维向量。[0098]在训练之前,编程网络700和读取网络710可初始化一组嵌入参数和一组网络参数。编程网络700可包括包含基于一组嵌入参数的嵌入层的编程组件。在一些示例中,编程组件还包括s型(sigmoid)层和缩放层。编程网络700可以是参照图8描述的相应的一个或多个元件的示例或包括参照图8描述的相应的一个或多个元件的方面。[0099]编程网络700将输入符号映射为“in”,“in”取自有限离散集合k。例如,编程网络的输入可以是单个符号,该单个符号可取自来自集合[0,…,2(n×k)_1]的任何值,其中,输入包括n×k比特。[0100]此外,编程网络700可将输入符号转换为编程电压x1,..,xk。通道添加未知噪声n,使得y=x n,其中,y表示存储器装置705的输出,x表示编程电压x1,..,xk。读取网络710检索输入符号“in_predicted”。读取网络的输出可不仅包括对输入符号的预测。例如,输出可包括每个可能的输入符号的分数(或概率)。具有最高分数的符号(例如,“predicted”)可被作为预测,但是当损失函数(例如,交叉熵)被计算时所有分数可被使用。[0101]在一些示例中,编程网络700和读取网络710可被一起训练。例如,可通过使“in”与“in_predicted”之间的交叉熵最小化或者使用一些其他合适的损失函数来训练编程网络700和读取网络710。[0102]示例编程网络700可包含嵌入层。输入可以是来自2(n×k)个数字的集合的单个符号。也就是说,输入可以是n×k比特,并且输出可以是k个电压的序列。[0103]此外,编程网络700可包含s型层和用于缩放到存储器单元的动态范围的缩放层。因此,编程网络700找到单元的编程电压。[0104]存储器装置705可包括如参照图1至图5描述的一组存储器单元。在一些示例中,该组存储器单元包括nand存储器单元。存储器单元可被设置到在称为动态范围的范围内的指定电压。术语写入和编程可用于描述将单元设置到期望的电压的处理。[0105]下面是在nand装置上存储信息的示例过程。给出比特流(b1,b2,b3,b4,b5,b6,b7,b8,b9,b10…),这些比特被分组为具有n比特的大小的组。例如,如果n=4,则这些组被表示为(b1,b2,b3,b4)、(b5,b6,b7,b8)、(b9,b10,b11,b12)等,其中,n是每单元的比特数。对于n比特的每个组,存在值的2n种不同的组合。因此,执行从每个组到范围[0,(2n‑1)]中的整数l的映射。数字l表示电平。单个电平被写入每个存储器单元。每个电平通过固定的、预定的映射与唯一的电压v(l)相关联。这种类型的映射被称为星座,其中,星座表示从电平到电压的映射。因此,为了将电平l存储在单元中,电压v(l)被编程到该单元。[0106]为了从存储器装置705读取信息,每个单元的电压被测量并且在单元中存储的电压电平被推断。然后,比特可被恢复。在一些情况下,在n值与存储器可靠性之间可存在权衡。n值越大,可存储在存储器装置上的信息越多,在该情况下,在每个单元中存在更多比特。可选地,因为在相同的动态范围内,更大数量的可区分的电压被使用,所以表示不同电平的电压可被更紧密地封装在一起。结果,单元编程或单元读取中的噪声具有将一个电平的电压改变为表示不同电平的另一电压的更大机会,因此,在读取单元时显现错误。[0107]在存储器装置705中存在可导致信息的错误读取的多个噪声源(诸如,写入噪声、干扰噪声、老化和读取的操作)。写入噪声是紧接在编程之后的单元电压,该紧接在编程之后的单元电压由于编程过程而不同于预期电压。干扰噪声是随着对不同的邻近单元进行编程的结果而改变的单元的电压的函数。编程单元引起影响其他单元的干扰。老化是存储器装置705被写入和读取的次数越多,噪声增加越大。此外,单元的编程之间的时间越长,单元将产生的噪声越多。此外,读取单元的操作可引起噪声和干扰。[0108]存储器装置705可被称为通道。因为写入和/或发送操作可进入和/或通过通道,所以使用术语通道。当信息被读取时,根据介质的特性,信息将被噪声破坏。[0109]读取网络710检测一个或多个存储器单元的电压电平以生成一个或多个检测的电压电平。读取网络710然后可使用包括一组网络参数的神经网络,基于一个或多个检测的电压电平来识别一组预测的信息比特。在一些情况下,网络参数与嵌入参数一起被训练。[0110]根据一个实施例,读取网络710可使用神经网络基于检测的电压电平来生成一组信息比特概率。读取网络710然后可从该组信息比特概率选择最高信息比特概率。在一些情况下,基于最高信息比特概率来识别该组预测的信息比特。[0111]读取网络710可使用基于网络参数的ann来识别一组预测的信息比特。读取网络710可包括读取组件,读取组件包括基于一组网络参数的神经网络。在一些情况下,网络参数与嵌入参数一起被训练。在一些示例中,神经网络包括基于概率的分类器。读取网络710可以是参照图9描述的相应的一个或多个元件的示例或包括参照图9描述的相应的一个或多个元件的方面。[0112]图8示出根据本公开的方面的编程网络800的示例。编程网络800可以是参照图7描述的相应的一个或多个元件的示例或包括参照图7描述的相应的一个或多个元件的方面。编程网络800可包括嵌入层805、s型层810和缩放层815。[0113]嵌入层805基于嵌入参数将一组信息比特嵌入到嵌入空间中以产生嵌入符号。s型层810应用s型函数来约束嵌入的信息符号以产生约束符号(constrainedsymbol)。缩放层815将约束符号进行缩放以产生与有效动态范围内的电压对应的缩放符号。在一些情况下,基于缩放符号来映射该组信息比特。[0114]图9示出根据本公开的方面的读取网络900的示例。读取网络900可以是参照图7描述的相应的一个或多个元件的示例或包括参照图7描述的相应的一个或多个元件的方面。如所示出的,读取网络900可以是包括一个或多个全连接层(例如,全连接线性层)905和一个或多个修正线性单元(relu)层910的神经网络。在一些示例中,全连接层905和relu层910如图9中所示交替。然而,这个布置用作示例,能够学习与信息比特相关联的检测的电压电平的任何合适的神经网络可被使用。[0115]在一些情况下,可在神经网络的训练期间使用一个或多个批归一化(batchnormalization)。在一些情况下,包含批归一化的网络可使用更高的学习速率而不使梯度消失或爆炸。此外,批归一化可使网络正规化,使得更易于泛化。因此,在一些情况下,可能没必要使用丢弃(dropout)来减轻过拟合。对于不同的初始化方案和学习速率,网络还可变得更具有鲁棒性。批归一化可通过将每个层的输入的平均值和方差固定来实现。在一些情况下,可在整个训练集上进行归一化。在其他情况下,归一化被限制于训练处理中的每个小批量(mini‑batch)。[0116]在神经网络中,激活函数可用于将来自节点的求和的加权输入变换为节点的激活或输出。relu层可实现修正线性激活函数,修正线性激活函数包括分段线性函数,如果输入为正则分段线性函数直接输出输入,否则分段线性函数输出零。修正线性激活函数可用作许多类型的神经网络的默认激活函数。[0117]使用修正线性激活函数可能够一起使用随机梯度下降和误差反向传播来训练深度神经网络。修正线性激活函数可类似于线性函数操作,但是修正线性激活函数可使数据中的复杂关系能够被学习。修正线性激活函数还可为激活总和输入提供更高的灵敏度以避免饱和。实现修正线性激活函数的节点或单元可被称为修正线性激活单元,或简称为relu。将修正函数用于隐藏层的网络可被称为修正网络。[0118]操作[0119]图10示出根据本公开的方面的操作存储器装置的处理的示例。根据各种实施例,存储器装置可包括ann,并且存储器装置的操作可包括基于从存储器装置读取的电压电平找到ann的输出。[0120]在一些示例中,这些操作可由包括处理器的系统来执行,处理器执行一组代码以控制设备的功能元件。附加地或可选地,可使用专用硬件来执行处理。通常,这些操作可基于根据本公开的方面描述的方法和处理来执行。例如,操作可由各个子步骤组成,或者可结合在此描述的其他操作来执行。[0121]在操作1000,系统基于一组嵌入参数将一组信息比特映射到一个或多个存储器单元的电压电平。在一些情况下,这个步骤的操作可参考如参照图7和图8描述的编程网络执行或者可由如参照图7和图8描述的编程网络执行。在一些情况下,可基于利用参照图6描述的电压电平星座的调制方案来映射信息比特。例如,编程网络参数可包括与星座中的每个符号对应的多个单元中的每个单元的电压电平。参照图11描述关于用于映射信息比特的处理的进一步细节。[0122]在操作1005,系统基于映射将该组信息比特编程到一个或多个存储器单元中。在一些情况下,这个步骤的操作可参考如参照图7和图8描述的编程网络执行或者可由如参照图7和图8描述的编程网络执行。[0123]具体地,编程网络可包括嵌入层2n×k→k,嵌入层2n×k→k可包括将范围[0,(2n×k‑1)]中的整数映射到长度k的实数的序列的表。表中的所有条目被视为可被优化的独立变量。[0124]嵌入层的输出可通过s型函数传递,s型函数是获取输入并且将输入转换为范围[0,1]中的数字的连续可微分的单调函数。长度k的序列的每个元素通过s型函数传递。然后这个函数的结果被重新缩放到范围[vmin,vmax],其中,vmin和vmax是最小允许电压和最大允许电压(即,动态范围)。使用函数x→x×(vmax‑vmin) vmin进行重新缩放。s型函数和重新缩放确保编程网络的输出在有效范围内。[0125]在操作1010,系统检测一个或多个存储器单元的电压电平以生成一个或多个检测的电压电平。在一些情况下,这个步骤的操作可参考如参照图7和图9描述的读取网络或者可由如参照图7和图9描述的读取网络执行。[0126]在操作1015,系统使用包括一组网络参数的神经网络基于一个或多个检测的电压电平来识别一组预测的信息比特,其中,网络参数与嵌入参数一起被训练。在一些情况下,这个步骤的操作可参考如参照图7和图9描述的读取网络或者可由如参照图7和图9描述的读取网络执行。例如,读取网络可识别预测的星座符号并且识别与星座符号相关联的一组信息比特。[0127]读取网络可以是神经网络分类器,神经网络分类器将从来自存储器装置的k个单元读取的k个电压的序列作为输入,并且返回哪个电平被写入到这些k个单元的预测。读取网络可以是任何神经网络或任何可微分的模型。读取网络的输出的数量是2n×k,其中,2n×k个数字中的每个数字表示由读取网络给出的相应电平的分数。例如,分数可表示处于相应电平的概率。通道可以是真实的存储器通道或存储器通道的模型。[0128]图11示出根据本公开的方面的将信息编程到存储器装置的处理的示例。在一些示例中,这些操作可由包括处理器的系统来执行,处理器执行一组代码以控制设备的功能元件。附加地或可选地,可使用专用硬件来执行处理。通常,这些操作可基于根据本公开的方面描述的方法和处理来执行。例如,操作可由各个子步骤组成,或者可结合在此描述的其他操作来执行。[0129]在操作1100,系统基于嵌入参数将该组信息比特嵌入到嵌入空间中以产生嵌入符号。在一些情况下,这个步骤的操作可参考如参照图8描述的嵌入层或者可由如参照图8描述的嵌入层执行。[0130]在操作1105,系统应用s型函数来约束嵌入的信息符号以产生约束符号。在一些情况下,这个步骤的操作可参考如参照图8描述的s型层或者由如参照图8描述的s型层执行。[0131]在操作1110,系统对约束符号进行缩放以产生与有效动态范围内的电压对应的缩放符号,其中,基于缩放符号来映射该组信息比特。在一些情况下,这个步骤的操作可参考如参照图8描述的缩放层或者这个步骤的操作可由如参照图8描述的缩放层执行。[0132]训练[0133]图12示出根据本公开的方面的用于训练用于选择存储器装置的编程电压的ann的处理的示例。在一些示例中,这些操作可由包括处理器的系统来执行,处理器执行一组代码以控制设备的功能元件。附加地或可选地,可使用专用硬件来执行处理。通常,这些操作可基于根据本公开的方面描述的方法和处理来执行。例如,操作可由各个子步骤组成,或者可结合在此描述的其他操作来执行。[0134]在操作1200,系统将一组嵌入参数和一组网络参数初始化。在一些情况下,这个步骤的操作可参考如参照图7和图8描述的编程网络或者可由如参照图7和图8描述的编程网络执行。在一些示例中,训练过程将编程网络的参数(即,嵌入层中的值)随机地初始化。然后,训练过程将读取网络的参数(权重和偏置)随机地初始化。[0135]在操作1205,系统基于嵌入参数将一组信息比特映射到一个或多个存储器单元的电压电平。例如,映射可基于如上面参照图6描述的编程星座。在一些情况下,这个步骤的操作可参考如参照图7和图8描述的编程网络或者可由如参照图7和图8描述的编程网络执行。[0136]在操作1210,系统使用基于网络参数的ann来识别一组预测的信息比特。在一些情况下,这个步骤的操作可参考如参照图7和图9描述的读取网络或者可由如参照图7和图9描述的读取网络执行。[0137]在操作1215,系统至少部分地基于该组预测的信息比特来更新嵌入参数和网络参数。例如,参数可基于ann的输出来更新,ann的输出可包括除了预测信息之外的附加信息。具体地,ann的输出可包括针对信息比特的各种组合的分数。在一些情况下,这个步骤的操作可参考训练组件或者可由训练组件执行。[0138]使用ann生成输出并且然后更新ann的参数的处理可在训练处理完成之前被重复多次。例如,训练处理可继续,直到阈值准确度被实现、直到预定数量的训练迭代已被执行,或者直到网络参数收敛。根据一个实施例,系统可基于嵌入参数更新网络参数以产生更新的网络参数;以及基于更新的网络参数来更新嵌入参数以产生更新的嵌入参数。[0139]根据一个实施例,更新网络参数可根据下面的算法来完成。对于本公开的算法的每次迭代,编程网络和读取网络被优化,交叉熵被最小化。也就是说,系统可执行多次训练迭代,其中,在多次训练迭代中的每次训练迭代期间更新嵌入参数和网络参数。对于每次迭代,交叉熵被优化两次。令p(θ)为编程网络。令r(φ)为读取网络。“info”是指每网络使用的信息比特的小批量。是在读取网络输出处的估计的信息比特的小批量。变量λφ、λθ表示学习速率。crossentropy(info,)表示交叉熵。[0140][0141]示例训练算法[0142]因此,根据特定实施例,可使用预测分数和真实电压电平来计算损失函数。损失函数的一个选项是交叉熵,但是也存在其他选项。在编程网络和读取网络二者中,针对所有可优化的参数计算损失的梯度。例如,计算该组信息比特和该组预测的信息比特的分类损失函数的梯度,其中,基于分类损失函数的梯度来更新嵌入参数或网络参数。使用梯度更新参数以使损失最小化。可使用任何合适的优化算法(诸如,随机梯度下降、adam等)来完成更新。重复这些步骤直到存在收敛为止。训练的附加变化是在更新编程网络与更新读取网络之间切换每个步骤。[0143]注意,在训练中可计算梯度。梯度可通过是可微分的并且我们有一个明确的数学形式的函数来计算。编程网络和读取网络是这样的函数,并且可使用标准库(诸如,tensorflow和pytorch)被微分。如果在训练循环中使用真实的存储器模型,则由于缺少数学表达式,所以本公开不能通过训练循环来微分。因此,可使用称为强化(reinforce)估计的估计。在一个示例中,可基于来自附加存储器单元的数据来更新存储器模型。[0144]可选地,可使用存储器模型。存储器模型是将k个电压作为输入,并且返回表示被噪声破坏的电压的k个电压的生成模型。生成模型是可以是可微分的并且具有随机分量的任何数学表达式(诸如,参数高斯模型或生成对抗网络)。存储器模型可与从物理存储器装置收集的测量结果一起被使用,使得存储器模型尽可能接近地模仿真实存储器行为。拟合生成模型是已知的训练过程。换句话说,存储器模型可模拟真实存储器装置的噪声分布。一旦拟合,存储器模型可用于上述训练过程,并且存储器模型可以是可微分的。[0145]当存储器模型选项被使用时,可在优化处理期间重新拟合模型。重新拟合是因为存储器和行为可根据使用的星座而改变。因此,在更新编程网络的多个步骤之后,新的测量结果可使用当前星座从真实存储器装置被收集,可使用这些测量结果重新拟合存储器模型并且可继续训练。[0146]因此,本公开包括下面的实施例。[0147]描述了一种用于选择存储器装置的编程电压的方法。所述方法的实施例可包括:基于多个嵌入参数将一组信息比特映射到一个或多个存储单元的电压电平,基于映射将所述组信息比特编程到所述一个或多个存储单元中,检测所述一个或多个存储单元的电压电平以生成一个或多个检测的电压电平,并使用包括多个网络参数的神经网络基于所述一个或多个检测的电压电平来识别一组预测的信息比特,其中,所述多个网络参数与所述多个嵌入参数一起被训练。[0148]描述了一种用于选择存储器装置的编程电压的设备。所述设备可包括处理器、与处理器电子通信的存储器,以及存储在存储器中的指令。所述指令可以能够操作使得处理器:基于多个嵌入参数将一组信息比特映射到一个或多个存储器单元的电压电平,基于映射将所述组信息比特编程到所述一个或多个存储单元中,检测所述一个或多个存储单元的电压电平以生成一个或多个检测的电压电平,并使用包括多个网络参数的神经网络基于所述一个或多个检测的电压电平来识别一组预测的信息比特,其中,所述多个网络参数与所述多个嵌入参数一起被训练。[0149]描述了一种存储用于选择存储器装置的编程电压的代码的非暂时性计算机可读介质。在一些示例中,所述代码包括可由处理器执行以进行以下操作的指令:基于多个嵌入参数将一组信息比特映射到一个或多个存储单元的电压电平,基于映射将所述组信息比特编程到所述一个或多个存储单元中,检测所述一个或多个存储单元的电压电平以生成一个或多个检测的电压电平,并使用包括多个网络参数的神经网络基于所述一个或多个检测的电压电平来识别一组预测的信息比特,其中,所述多个网络参数与所述多个嵌入参数一起被训练。[0150]上述方法、设备、非暂时性计算机可读介质和系统的一些示例还可包括:将格雷码应用于所述组信息比特,其中,映射基于格雷码。在一些示例中,所述一个或多个存储器单元包括多个存储器单元,所述多个嵌入参数包括具有等于存储器单元的数量的维数的阵列。[0151]上述方法、设备、非暂时性计算机可读介质和系统的一些示例还可包括:基于所述多个嵌入参数将所述组信息比特嵌入到嵌入空间中以产生嵌入符号。一些示例还可包括:应用s型函数来约束嵌入的信息符号以产生约束符号。一些示例还可包括:将约束符号进行缩放以产生与有效动态范围内的电压对应的缩放符号,其中,基于缩放符号来映射所述组信息比特。[0152]上述方法、设备、非暂时性计算机可读介质和系统的一些示例还可包括:使用神经网络基于检测的电压电平来生成一组信息比特概率。一些示例还可包括:从所述组信息比特概率选择最高信息比特概率,其中,基于最高信息比特概率来识别所述组预测的信息比特。[0153]描述了一种用于选择存储器装置的编程电压的方法。所述方法的实施例可包括:将多个嵌入参数和一组网络参数初始化;基于所述多个嵌入参数将一组信息比特映射到一个或多个存储器单元的电压电平;使用基于网络参数的ann来识别一组预测的信息比特;以及至少部分地基于所述组预测的信息比特来更新所述多个嵌入参数和网络参数。[0154]描述了一种用于选择存储器装置的编程电压的设备。所述设备可包括处理器、与处理器电子通信的存储器,以及存储在存储器中的指令。所述指令可以能够操作以使得处理器进行以下操作:将多个嵌入参数和一组网络参数初始化;基于所述多个嵌入参数将一组信息比特映射到一个或多个存储器单元的电压电平;使用基于网络参数的ann来识别一组预测的信息比特;以及至少部分地基于所述组预测的信息比特来更新所述多个嵌入参数和网络参数。[0155]描述了一种存储用于选择存储器装置的编程电压的代码的非暂时性计算机可读介质。在一些示例中,所述代码包括能够由处理器执行以进行以下操作的指令:将多个嵌入参数和一组网络参数初始化;基于所述多个嵌入参数将一组信息比特映射到一个或多个存储器单元的电压电平;使用基于网络参数的ann来识别一组预测信息比特;以及至少部分地基于一组预测信息比特来更新所述多个嵌入参数和网络参数。[0156]上述方法、设备、非暂时性计算机可读介质和系统的一些示例还可包括:基于所述多个嵌入参数更新网络参数以产生更新的网络参数。一些示例还包括:基于更新的嵌入参数来更新所述多个嵌入参数以产生更新的嵌入参数。[0157]上述方法、设备、非暂时性计算机可读介质和系统的一些示例还可包括:执行多次训练迭代,其中,在每次训练迭代期间更新所述多个嵌入参数和网络参数。[0158]上述方法、设备、非暂时性计算机可读介质和系统的一些示例还可包括:计算所述组信息比特和所述组预测的信息比特的分类损失函数的梯度,其中,基于分类损失函数的梯度来更新所述多个嵌入参数或网络参数。[0159]在一些示例中,梯度包括物理nand通道的近似值。例如,梯度可包括基于从一个或多个物理nand通道获得的测量结果的数学表示。上述方法、设备、非暂时性计算机可读介质和系统的一些示例还可包括:识别一个或多个存储器单元的数学模型,其中,基于数学模型计算分类损失函数的梯度。上述方法、设备、非暂时性计算机可读介质和系统的一些示例还可包括:基于来自附加存储器单元的数据来更新数学模型。[0160]上述方法、设备、非暂时性计算机可读介质和系统的一些示例还可包括:基于映射将所述组信息比特编程到所述一个或多个存储器单元中。一些示例还可包括:检测所述一个或多个存储器单元的电压电平以生成一个或多个检测的电压电平,其中,基于所述一个或多个检测的电压电平来识别所述组预测的信息比特。[0161]上述方法、设备、非暂时性计算机可读介质和系统的一些示例还可包括:使用神经网络基于检测的电压电平来生成一组信息比特概率,其中,基于最高信息比特概率来识别所述组预测的信息比特。在一些示例中,所述一个或多个存储器单元包括多个存储器单元,并且所述多个嵌入参数包括具有等于存储器单元的数量的维数的阵列。[0162]上述方法、设备、非暂时性计算机可读介质和系统的一些示例还可包括:基于所述多个嵌入参数将所述组信息比特嵌入到嵌入空间中以产生嵌入符号。一些示例还可包括:应用s型函数来约束嵌入的信息符号以产生约束符号。以一些示例还可包括:将约束符号进行缩放以产生缩放符号,其中,基于缩放符号来映射所述组信息比特。[0163]描述了一种用于选择存储器装置的编程电压的设备。所述设备的实施例可包括多个存储器单元;编程组件,包括基于多个嵌入参数的嵌入层;以及读取组件,包括基于多个网络参数的神经网络,其中,所述多个网络参数与所述多个嵌入参数一起被训练。[0164]描述了一种制造用于选择存储器装置的编程电压的设备的方法。所述方法可包括提供多个存储器单元;提供包括基于多个嵌入参数的嵌入层的编程组件;以及提供包括基于多个网络参数的神经网络的读取组件,其中,所述多个网络参数与所述多个嵌入参数一起被训练。[0165]描述了一种使用用于选择存储器装置的编程电压的设备的方法。所述方法可包括:使用多个存储器单元;使用包括基于多个嵌入参数的嵌入层的编程组件;以及使用包括基于多个网络参数的神经网络的读取组件,其中,多个网络参数与多个嵌入参数一起被训练。[0166]在一些示例中,编程组件还包括s型层和缩放层。在一些示例中,神经网络包括基于概率的分类器。在一些示例中,所述多个存储器单元包括nand存储器单元。[0167]因此,本公开可提供编程电压的自动选择,并且可针对每个新的存储器装置版本或世代被重复调用,从而快速产生星座(当与人工劳动相比时)。本公开的实施例基于优化处理(训练过程),提供比预制解决方案更快地并且比手动试错法或试探法更好地找到星座的能力。此外,本公开的实施例使用从存储器装置收集的真实数据,在与常规编程星座相比时,提供了适合于特定问题的星座。[0168]在此描述的描述和附图表示示例配置,并且不表示权利要求的范围内的所有实施方式。例如,操作和步骤可被重新设置、组合或以其他方式修改。此外,结构和装置可以以框图的形式表示,以表示组件之间的关系并且避免使描述的概念模糊。类似的组件或特征可具有相同的名称,但是可具有与不同的附图对应的不同的附图标记。[0169]对于本领域技术人员而言,对本公开的一些修改可以是相当清楚的,并且在不脱离公开的范围的情况下,在此定义的原理可应用于其他变型。因此,公开不限于在此描述的示例和设计,而是将符合与在此公开的原理和新颖性特征一致的最宽范围。[0170]描述的方法可通过包括通用处理器、数字信号处理器(dsp)、专用集成电路(asic)、现场可编程门阵列(fpga)或其他可编程逻辑装置、离散门或晶体管逻辑、离散硬件组件或它们的任何组合的装置实现或执行。通用处理器可以是微处理器、常规处理器、控制器、微控制器或状态机。处理器还可被实现为计算装置的组合(例如,dsp与微处理器、多个微处理器、结合dsp核的一个或多个微处理器、或任何其他这样的配置的组合)。因此,在此描述的功能可以以硬件或软件来实现,并且可通过处理器、固件或它们的任何组合来执行。如果以通过处理器执行的软件实现,则功能可以以指令或代码的形式存储在计算机可读介质上。[0171]计算机可读介质包括非暂时性计算机存储介质和通信介质两者,通信介质包括促进代码或数据的传送的任何介质。非暂时性存储介质可以是可通过计算机访问的任何可读介质。例如,非暂时性计算机可读介质可包括:随机存取存储器(ram)、只读存储器(rom)、电可擦除可编程只读存储器(eeprom)、压缩盘(cd)或其他光盘存储器、磁盘存储器或者用于携带或者存储数据或代码的任何其他非暂时性介质。[0172]此外,连接组件可被适当地称为计算机可读介质。例如,如果使用同轴电缆、光纤电缆、双绞线、数字订户线(dsl)或无线技术(诸如,红外、无线电或微波信号)从网站、服务器或其他远程源发送代码或数据,那么同轴电缆、光纤电缆、双绞线、dsl或无线技术包括在介质的定义中。介质的组合也包括在计算机可读介质的范围内。[0173]在本公开和权利要求中,词“或”指示包含性列表,使得例如x、y或者z的列表表示x、或者y、或者z、或者xy、或者xz、或者yz、或者xyz。此外,短语“基于”不用于表示条件的封闭集合。例如,被描述为“基于条件a”的步骤可基于条件a和条件b两者。换句话说,短语“基于”应被解释为表示“至少部分地基于”。此外,词“一”或“一个”指示“至少一个”。当前第1页12当前第1页12
再多了解一些

本文用于企业家、创业者技术爱好者查询,结果仅供参考。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献