CN109872754A - 数据编程方法及装置、存储器及存储介质 - Google Patents
数据编程方法及装置、存储器及存储介质 Download PDFInfo
- Publication number
- CN109872754A CN109872754A CN201910118857.6A CN201910118857A CN109872754A CN 109872754 A CN109872754 A CN 109872754A CN 201910118857 A CN201910118857 A CN 201910118857A CN 109872754 A CN109872754 A CN 109872754A
- Authority
- CN
- China
- Prior art keywords
- bits
- address
- bit
- data
- memory cell
- 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.)
- Granted
Links
- 238000000034 method Methods 0.000 title claims abstract description 55
- 238000010586 diagram Methods 0.000 description 7
- 238000013507 mapping Methods 0.000 description 7
- 238000004891 communication Methods 0.000 description 3
- 230000008878 coupling Effects 0.000 description 3
- 238000010168 coupling process Methods 0.000 description 3
- 238000005859 coupling reaction Methods 0.000 description 3
- 239000000470 constituent Substances 0.000 description 2
- 238000005516 engineering process Methods 0.000 description 2
- 238000006467 substitution reaction Methods 0.000 description 2
- 238000003491 array Methods 0.000 description 1
- 238000013500 data storage Methods 0.000 description 1
- 230000007423 decrease Effects 0.000 description 1
- 230000010365 information processing Effects 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 238000007781 pre-processing Methods 0.000 description 1
- 238000003672 processing method Methods 0.000 description 1
Landscapes
- Read Only Memory (AREA)
Abstract
本发明实施例公开了一种数据编程方法及装置、存储器及存储介质。数据编程方法包括:获取待存储的第一数据,其中,所述第一数据包含N个比特,N为大于2的整数;根据所述N个比特中的地址位,确定存储所述第一数据的第一存储单元,其中,所述地址位由所述N个比特中的m个比特组成,m为小于N的正整数;根据所述N个比特中的状态位所对应的阈值电压,对所述第一存储单元进行数据写入的编程,其中,所述状态位由所述N个比特中除所述m个比特以外的剩余N‑m个比特组成。
Description
技术领域
本发明涉及存储技术领域,尤其涉及一种数据编程方法及装置、存储器及存储介质。
背景技术
存储器为存储数据的器件。所述存储器包括存储阵列;所述存储阵列可为二维(2D)存储阵列或三维(3D)存储阵列。所述存储阵列由存储单元构成。阈值电压存储单元的可调节电压在已知电压范围内。在向所述存储单元写入数据时,通常根据需要写入数据向所述存储单元的栅极施加对应的电压。当从存储单元读取数据时,通过在所述可调节电压范围内调整读取电压,再结合存储单元的导通与否的状态,就能够准确的读取出所述存储单元记忆的数据。
为了提高存储阵列的存储容量,出现了多值存储;例如,二值存储(Multi-levelcell,MLC)、三值存储(Triple-level cell,TLC)及四值存储(Quadruple-level cell,QLC)等;但是存储单元的栅极能够被施加的电压范围是预定的维持不变的,比如,若进行单值存储(Single-level cell,SLC)调节存储单元的阈值电压在第一电压范围内表示存储记忆为“0”,调节存储单元的阈值电压在第二电压范围内表示存储记忆为“1”。若进行二值存储,则一个存储单元存储的数据可能为“00”、“01”、“10”及“11”四种状态,阈值电压存储单元有四个不同的电压范围,而这四个电压均为已知电压范围内的电压。如此,这四个电压之间的压差平均值,相对于前述第一电压和第二电压之间的压差是更小的。而在数据写入的过程中,向栅极施加电压是不可避免的会出现电压波动,而这种波动在相邻两个电压之间的压差较小时,会导致存储单元记忆的数据出现错误;从而导致存储器的存储可靠性低等问题。
在先关技术中为了降低上述存储错误率,会通过存储单元的编程算法来增加可靠性,但是这样就导致的编程算法复杂及编程效率低等问题。
发明内容
有鉴于此,本发明实施例期望提供一种数据编程方法及装置、存储器及存储介质。
本发明的技术方案是这样实现的:
一种数据编程方法,其特征在于,包括:
获取待存储的第一数据,其中,所述第一数据包含N个比特,N为大于2的整数;
根据所述N个比特中的地址位,确定存储所述第一数据的第一存储单元,其中,所述地址位由所述N个比特中的m个比特组成,m为小于N的正整数;
根据所述N个比特中的状态位所对应的阈值电压,对所述第一存储单元进行数据写入的编程,其中,所述状态位由所述N个比特中除所述m个比特以外的剩余N-m个比特组成。
一种数据编程装置,包括:
第一获取模块,用于获取待存储的第一数据,其中,所述第一数据包含N个比特,N为大于2的整数;
第一确定模块,用于根据所述N个比特中的地址位,确定存储所述第一数据的第一存储单元,其中,所述地址位由所述N个比特中的m个比特组成,m为小于N的正整数;
编程模块,用于根据所述N个比特中的状态位所对应的阈值电压,对所述第一存储单元进行数据写入的编程,其中,所述状态位由所述N个比特中除所述m个比特以外的剩余N-m个比特组成。
一种存储设备,包括:
存储器;
处理器,与所述存储器连接,用于通过执行位于所述存储器上的计算机可执行指令,实现前述任意技术方案提供的数据编程方法。
一种计算机存储介质,所述计算机存储介质存储有计算机可执行指令;所述计算机可执行指令被执行后,能够前述任意技术方案提供的数据编程方法。
本发明实施例提供的技术方案,首先在进行数据编程时,不再是直接对需要存储的第一数据所有比特进行编程,而是将N个比特划分为地址位和状态位,利用地址位来选择存储第一数据的第一存储单元,然后利用第一存储单元存储状态位,如此,在进行第一存储单元的数据编程时,由于所需编程的比特数减少了,在第一存储单元的可调节电压范围不变的情况下,由于所需编程比特数的减少,导致可调节电压范围被分为的阈值电压范围的个数减少,如此相邻两个阈值电压范围之间的差值增大。如此,即便位于阈值电压范围内的阈值电压的波动,导致的数据编程错误的概率下降,从而提高了存储的可靠性。
附图说明
图1为本发明实施例提供的第一种数据编程方法的流程示意图;
图2为本发明实施例提供的第二种数据编程方法的流程示意图;
图3为本发明实施例提供的第三种数据编程方法的流程示意图;
图4为本发明实施例提供的一种数据读取方法的流程示意图;
图5为本发明实施例提供的一种数据编程装置的结构示意图;
图6为本发明实施例提供的一种数据读取装置的结构示意图;
图7为本发明实施例提供的一种存储阵列的结构示意图;
图8为本发明实施例提供的一种数据编程方法的流程示意图;
图9为本发明实施例提供的地址位与存储单元的字线的对应示意图;
图10为一种不同的多值存储的阈值电压/读取电压之间的对比示意图;
图11为本发明实施例提供的对包含4个比特的数据进行3个比特的状态位的多值存储的阈值电压/读取电压的示意图。
具体实施方式
以下结合说明书附图及具体实施例对本发明的技术方案做进一步的详细阐述。
如图1所示,本实施例提供一种数据编程方法,包括:
步骤S110:获取待存储的第一数据,其中,所述第一数据包含N个比特,N为大于2的整数;
步骤S120:根据所述N个比特中的地址位,确定存储所述第一数据的第一存储单元,其中,所述地址位由所述N个比特中的m个比特组成,m为小于N的正整数;
步骤S130:根据所述N个比特中的状态位所对应的阈值电压,对所述第一存储单元进行数据写入的编程,其中,所述状态位由所述N个比特中除所述m个比特以外的剩余N-m个比特组成。
本实施例提供的数据编程方法可应用于各种存储设备,例如,2D闪存器或3D闪存存储器等闪存设备,或闪存存储器以外的非闪存类型的存储设备。所述3D闪存器可包括:3DNAND闪存存储器。
在本实施例中,所述数据编程方法可以用于存储器的多值存储技术中,所述第一数据为待存储的数据,共有N个比特。若采用二值存储,则N为2;若采用三值存储,则N为3;若采用四值存储,则N为4。总之,在本实施例中,所述第一数据为一个存储单元存储的最小数据单位。
在本实施例中,所述第一数据由N个比特,这N比特在存储过程中被分为地址位和状态位。
地址位与存储第一数据的第一存储单元的存储地址具有匹配关系;
状态位为第一存储单元实际存储的数据。
所述地址位可为所述N个比特中的任意位置的m个比特;所述状态位可为地址位以外的其他剩余比特。
所述m个比特可为1或大于1的整数。
m大于2时,所述m个比特可以为所述N个比特中连续分布的m个比特,也可以是所述N个比特中间隔分布的m个比特。例如,所述m个比特可为N个比特中连续分布的高m位或低m位,如此,在确定所述第一存储单元,可以快速简略截取所述N个比特中的高m位或低m位就确定了地址位,并进一步基于地址位与第一存储单元的存储地址之间的映射关系,快速确定出存储所述第一数据的第一存储单元。
在比如,所述m个比特可为所述N个比特中的至少部分奇数位的比特或者偶数位的比特。m个比特的比特值取决于所述第一数据本身,若不同的第一数据对应的m个比特可相同或不同。
剩余N-m个比特为状态位,第一存储单元仅需记忆状态位,则第一存储单元的可调节阈值电压范围需要等分的阈值电压范围的数目就减小了,如此,相邻两个阈值电压范围之间的压差就增大了,如此第一方面,编程过程中电压轻微的波动导致第一存储单元记忆的数据出错的概率就降低了,从而整体上提高了数据写入过程中编程的准确率,从而提高了存储设备存储数据的可靠性。第二方面,在对第一存储单元进行数据编程时可以沿用现有的任意编程算法,而无需特意对编程算法进行改造,从而具有与现有技术兼容性强特点。第三方面,由于增大了任意两个相邻阈值电压范围之间的压差,无需因为提高存储器的存储可靠性而复杂化编程算法,如此相对于为了确保高存储可靠性的复杂编程算法,具有编程算法简单及编程效率高的特点。
例如,若当前N为4,若m为1,则地址位包含1个比特;状态位包含3个比特。若第一存储单元直接对包含4个比特的第一数据进行直接编程,则第一存储单元的可调节电压范围需要对应于16个阈值电压范围;则4个比特的单一比特值对应的阈值电压范围就为可调节阈值电压范围的1/16。若采用本发明实施例提供的数据编程方法,则4个比特中的1个比特被对应为地址位,仅需要对3个比特进行编程,以实现第一数据的写入,则此时第一存储单元的可调节电压范围仅需等分为1/8即可;如此,第一方面,任意3个比特的比特值对应的任意两个阈值电压范围之间的压差就增大了,编程过程中电压轻微的波动导致第一存储单元记忆的数据出错的概率就降低了,从而整体上提高了数据写入过程中编程的准确率,从而提高了存储设备存储数据的可靠性。第二方面,在对第一存储单元进行3个比特的状态位的数据编程时可以沿用现有的任意编程算法,而无需特意对编程算法进行改造,从而具有与现有技术兼容性强特点。第三方面,由于增大了3个比特值所对应的两个相邻阈值电压范围之间的压差,无需因为提高存储器的存储可靠性而复杂化编程算法,如此相对于为了确保高存储可靠性的复杂编程算法,具有编程算法简单及编程效率高的特点。
在一些实施例中,如图2所示,所述步骤S130可包括:
步骤S131:根据所述状态位,从与所述N-m个比特所对应的2N-m个备选阈值电压范围确定目标阈值电压范围;
步骤S132:利用位于所述目标阈值电压范围内的所述阈值电压,对所述第一存储单元进行数据写入的编程。
例如,所述N为4,m为1,则N-m为3,根据3个比特的状态位,可以从23(8)个备选阈值电压范围选择出与当前3个比特的比特值对应的目标阈值电压范围。相对于直接对包含4个比特的第一数据进行第一存储单元的编程,则无需将第一存储单元的可调节电压范围分为24(16)个备选阈值电压范围,如此,单一阈值电压范围的电压值可增大一倍。若m为2,则单一阈值电压范围的电压值可增大到原来的4倍,总之阈值电压范围可增大到的倍数为2m倍。
然后利用位于目标阈值电压范围内的阈值电压,对第一存储单元进行数据写入的编程,如此,将第一数据的状态位写入了第一存储单元,再结合第一存储单元的存储地址所映射的地址位,相当于就完成的第一数据的存储。
进一步地,如图3所示,所述步骤S120可包括:
步骤S121:从存储地址与所述地址位匹配的备选存储单元集合中,确定出目标存储单元集合,其中,所述备选存储单元集合包括多个存储单元;
步骤S122:从所述目标存储单元集合中选择未存储有数据的所述第一存储单元。
存储器的任意一个存储单元都设置了存储地址,这些存储地址都是按照一定顺序进行编号形成的。在本实施例中,首先会将存储地址与编程地址所对应的地址位进行匹配,从而可确定出包含所述第一存储单元的目标存储单元集合,所述目标存储单元集合为众多备选存储单元集合中的一个。在本实施例中,首先根据地址位确定出一个与所述地址位匹配的目标存储单元集合,而非直接确定出第一存储单元,如此避免直接由地址位决定于单一的一个写入数据的存储单元,而该存储单元当前时刻已经记忆有其他数据的存储冲突问题。将地址位映射为第一存储单元所在的包含有多个存储单元的目标存储单元集合,如此,可以灵活的从目标存储单元集合中选择出当前未记忆有数据的第一存储单元进行第一数据的状态位的记忆;从而减少了上述存储冲突,确保了数据的成功存储率。
例如,将存储器等分为M个备选存储单元,则目标存储单元集合包含的存储单元个数为(SUM/M)个存储单元,SUM为存储器包含存储单元的总个数。例如,M为2,则一个备选存储单元集合包括(SUM/2)个存储单元;若M为4,则一个备案存储单元包含(SUM/4)个存储单元。
在本实施例中,所述M可为2m。
在一些实施例中,所述步骤S121可包括:
根据所述地址位的比特值,从所述备选存储单元集合中确定出字线地址与所述地址位匹配的所述目标存储单元集合。
所述存储器的存储阵列包括:字线(Word Line,WL)和位线(Bit Line,BL);所述字线地址用于标识对应的字线,可包括:字线的排序或编号。
字线地址为存储地址的一种。在本实施例中,同一个备选存储单元集合中所有存储单元的字线地址具有相同的属性,例如,同一个备选存储单元集合中的字线地址都是奇数或偶数。再例如,同一个备选存储单元集合中所有存储单元的字线地址都在特定的地址范围内。如此,该备选存储单元的地址可由该备选存储单元内的所有存储单元的字线地址的共同属性来表示。
在一些实施例中,所述步骤S122可包括:
根据所述地址位的比特值对应的字线地址的奇偶性,从所述备选存储单元集合中确定出字线地址的所述奇偶性的所述目标存储单元集合。
若所述地址位的比特值所对应的数值为奇数,则选择字线地址为奇数的备选存储单元作为所述目标存储单元集合;和/或,若所述地址位的比特值所对应的数字为偶数,则选择字线地址为偶数的备选存储单元作为所述目标存储单元集合。
在一些实施例中,所述步骤S122可包括:
根据所述地址位的比特值对应的字线地址的地址范围,从所述备选存储单元集合中确定出字线地址位于所述地址范围内的所述目标存储单元集合。
例如,对于一个存储器字线地址从前到后排序,可以将字线地址排序在前一半的字线地址所对应的存储单元划入到一个备选存储单元集合,将字线地址排序后一半的字线地址所对应的存储单元划入到另一个备选存储单元集合。
在一些实施例中,所述步骤S122可包括:从所述备选存储单元集合中,选择出与所述地址位匹配的存储芯片连接的所述第一存储单元。
存储器的存储单元可能连接在不同的存储芯片上,如此,可以将连接在同一个存储芯片上的存储单元划入到一个备选存储单元集合中。地址位对应了备选存储单元锁所对应的存储芯片。
在一些实施例中,存储芯片的芯片地址和字线地址可以同时与所述地址位具有映射关系,或者,字线地址的不同属性可以同时与地址位具有映射关系。
例如,m为2,则地址位包含2个比特,这2个比特中的一个对应于字线地址的地址范围;另一个对应于字线地址的奇偶性。例如,2个比特中的第1个比特的比特值表明第一数据应该存入存储器中字线地址排序在前一半的存储单元中,2个比特中的第2个比特的比特值表明第一数据应该存储在字线地址为奇数的存储单元中。则在步骤S130中进行状态位的编程时,被编程的第一存储单元为:存储器的字线地址排序靠前一半存储单元中且字线地址为奇数的存储单元。
再例如,同时结合芯片地址和字线地址,m为2或2以上的整数,m1个比特对应于芯片地址,m2个比特对应于字线地址,m1和m2为正整数,m1和m2之和等于m。在步骤120中首先根据m1确定存储芯片,然后根据m2从确定的存储芯片所连接的存储单元中,选择出具有与m2个比特的比特值所对应的字线地址的第一存储单元。
总之,在本实施例中,所述N个比特中的m个比特的地址位是与第一存储单元的物理存储地址相关的,具体的相关方式有很多种,上述仅是举例,具体实现时不局限于上述任意一种。
在一些实施例中,所述m个比特为:所述N个比特的高m位的比特;或者,所述m个比特为:所述N个比特的低m位的比特。在本实施例中状态位不仅是N个比特中连续的m个比特,同时还是从最高位或最低位开始的m个连续比特,如此,方便简便提取出N个比特中的地址位确定存储第一数据的第一存储单元,也方便后续数据读取过程中的数据组合。
如图4所示,本实施例提供一种数据读取方法,包括:
步骤S210:获取数据读取的读取地址;
步骤S220:根据所述读取地址,确定的地址位,其中,所述地址位由m个比特组成,m为正整数;
步骤S230:利用与N-m个比特对应的读取电压,从所述读取地址对应的第二存储单元中读取出状态位,其中,所述状态位由N-m个比特组成,N为大于2的正整数;m为小于N的正整数;
步骤S240:组合所述地址位和所述状态位,获得所需读取的第二数据。
若按照上述数据编程方法存储,在进行数据读取时可以采用本实施例提供的方法。首先获取读取数据的读取地址,该存储读取地址称之为读取地址。
根据读取地址确定地址位;该地址位为所需读取的第二数据的组成比特。该地址位由m个比特构成,m为正整数,例如,1、2或3等。
从读取地址对应的第二存储单元中读取出状态位;该状态位同样为第二数据的组成比特。
最后,将地址位和状态位进行组合,就得到所需读取的第二数据。在步骤240中进行数据组合时,根据存储第二数据时状态位和地址位的分割方式进行组合。
例如,地址位作为N个比特中的高m位,则将地址位作为第二数据的高m位,状态位作为高m位之后的其他低位。
再例如,将地址位作为N个比特中的低m位,则将地址位作为第二数据的低m位,将状态位作为低m位之前的高位。
另外例如,地址位为高2m位中的奇数位,则状态补齐高2m中的偶数位和高2m位的其他位。
总之,在本实施例中的步骤S240中会组合得到所需读取的第二数据;由于在第二存储单元仅存储第二数据的状态位,如此在进行数据读取时,读取单一数据的读取电压的电压范围值增大了,则相邻读取电压之间因为电压波动导致的读取数据错误的概率就减小了,从而提高了数据读取的可靠性。
在一些实施例中,可以直接基于读取地址与地址位的映射关系,确定出所述地址位。例如,所述步骤S220可包括:根据所述读取地址所指向的字线地址,确定所述地址位。例如,所述读取地址中有指示字线地址的地址位,基于地址位确定出字线地址的属性,从而确定出所述第二存储单元集合,进而确定出所述地址位。
在另一些实施例中,可以基于读取地址得到第二存储单元所在的第二存储单元集合的集合地址,基于集合地址与地址位的映射关系,确定出所述地址位。在本实施例中所述读取地址对应第二存储单元所在的第二存储单元集合,基于第二存储单元集合的集合地址,确定所述地址位。该第二存储单元集合包括多个存储单元,所述集合地址可为所述第二存储单元集合内所有存储单元的共同地址,或者,共同属性。
在确定所述地址位的同时,还可以基于读取地址直接从对应的第二存储单元中读取出所述状态位,如此,相对于先执行步骤220再执行步骤230或先执行步骤230再执行步骤220,获得地址位和状态位的速度更快,从而可以快速组合出所述第二数据。
在一些实施例中,所述根据所述读取地址所指向的字线地址,确定所述地址位,包括:根据所述第二存储单元集合的字线地址的奇偶性,确定所述地址位。
例如,字线地址为奇数时和字线地址为偶数时,所述地址位是不同的。如此,可以根据字线地址的奇偶性简便快速的得到所述地址位。
在一些实施例中,所述步骤S220可包括:根据所述读取地址所指向的字线地址的奇偶性,确定所述地址位,和/或,根据所述读取地址所指向的字线地址的地址范围,确定所述地址位。
在另一些实施例中,所述步骤S220可包括:
根据所述读取地址所指向的存储芯片,确定所述地址位。
不同的存储芯片连接的存储单元是不同的,在本实施例中,可以将地址位映射为所述存储芯片,根据所述存储芯片是可以简便的知道第二存储单元所连接的存储芯片,故可以直接根据读取地址中指向所述存储芯片的比特确定出所述地址位。
在一些实施例中,所述步骤S240可包括:以所述地址位为高m位且以所述状态位为低N-m位,组成包含N个比特的所述第二数据;或者,以所述地址位为低m位且以所述状态位为高N-m位,组成包含N个比特的所述第二数据。
如图5所示,本实施例提供一种数据编程装置,包括:
第一获取模块110,用于获取待存储的第一数据,其中,所述第一数据包含N个比特,N为大于2的整数;
第一确定模块120,用于根据所述N个比特中的地址位,确定存储所述第一数据的第一存储单元,其中,所述地址位由所述N个比特中的m个比特组成,m为小于N的正整数;
编程模块130,用于根据所述N个比特中的状态位所对应的阈值电压,对所述第一存储单元进行数据写入的编程,其中,所述状态位由所述N个比特中除所述m个比特以外的剩余N-m个比特组成。
在一些实施例中,所述第一获取模块110、第一确定模块120及编程模块130可为程序模块所述程序模块被处理器执行后,能够实现根据地址位确定第一存储单元,并根据状态位对第一存储单元进行编程。
在一些实施例中,所述第一获取模块110、第一确定模块120及编程模块130可为软硬结合模块;所述软硬结合模块包括但不限于可编程阵列;所述可编程阵列可为复杂可编程阵列或现场可编程阵列。
在还有一些实施例中,所述第一获取模块110、第一确定模块120及编程模块130可为纯硬件模块;所述纯硬件模块包括但不限于专用集成电路。
在一些实施例中,所述编程模块130,包括:
电压子模块,用于根据所述状态位,从与所述N-m个比特所对应的2N-m个备选阈值电压范围确定目标阈值电压范围;
编程子模块,用于利用位于所述目标阈值电压范围内的所述阈值电压,对所述第一存储单元进行数据写入的编程。
在一些实施例中,所述编程子模块,具体用于从存储地址与所述地址位匹配的备选存储单元集合中,确定出目标存储单元集合,其中,所述备选存储单元集合包括多个存储单元;从所述目标存储单元集合中选择未存储有数据的所述第一存储单元。
在一些实施例中,所述编程子单元,具体用于根据所述地址位的比特值,从所述备选存储单元集合中确定出字线地址与所述地址位匹配的所述目标存储单元集合。
在一些实施例中,所述编程子模块,具体用于根据所述地址位的比特值对应的字线地址的奇偶性,从所述备选存储单元集合中确定出字线地址的所述奇偶性的所述目标存储单元集合。
在一些实施例中,所述编程子模块,具体用于根据所述地址位的比特值对应的字线地址的地址范围,从所述备选存储单元集合中确定出字线地址位于所述地址范围内的所述目标存储单元集合。
在一些实施例中,所述编程子模块,具体用于从所述备选存储单元集合中,选择出与所述地址位匹配的存储芯片连接的所述第一存储单元。
在一些实施例中,所述m个比特为:所述N个比特的高m位的比特;
或者,
所述m个比特为:所述N个比特的低m位的比特。
如图6所示,本实施例提供一种数据读取装置,包括:
第二获取模块210,用于获取数据读取的读取地址;
第二确定模块220,用于根据所述读取地址,确定的地址位,其中,所述地址位由m个比特组成,m为正整数;
读取模块230,用于利用与N-m个比特对应的读取电压,从所述读取地址对应的第二存储单元中读取出状态位,其中,所述状态位由N-m个比特组成,N为大于2的正整数;m为小于N的正整数;
组合模块240,用于组合所述地址位和所述状态位,获得所需读取的第二数据。
在一些实施例中,所述第二获取模块210、第二确定模块220及读取模块230可为程序模块,所述程序模块被处理器执行后能够获得读取地址、基于读取地址得到地址位并从读取地址对应的第二存储单元中读取出状态位,最终组合出所需读取的第二数据。
在另一些实施例中,所述第二获取模块210、第二确定模块220及读取模块230可为软硬结合模块;所述软硬结合模块包括但不限于可编程阵列;所述可编程阵列可为复杂可编程阵列或现场可编程阵列。
在还有一些实施例中,所述第二获取模块210、第二确定模块220及读取模块230可为纯硬件模块;所述纯硬件模块包括但不限于专用集成电路。
在一些实施例中,所述第二确定模块220,具体用于根据所述读取地址所指向的字线地址,确定所述地址位。
在一些实施例中,所述第二确定模块220,具体用于根据所述第二存储单元集合的字线地址的奇偶性,确定所述地址位。
在一些实施例中,所述第二确定模块220,具体用于根据所述第二存储单元集合的字线地址的地址范围,确定所述地址位。
在一些实施例中,所述第二确定模块220,具体用于根据所述读取地址所指向的存储芯片,确定所述地址位。
在一些实施例中,所述组合模块240,具体用于以所述地址位为高m位且以所述状态位为低N-m位,组成包含N个比特的所述第二数据;或者,以所述地址位为低m位且以所述状态位为高N-m位,组成包含N个比特的所述第二数据。
以下结合上述任意实施例提供几个具体示例:
示例1:
图7所示为一种3D存储器的存储阵列,该存储阵列包括多个存储单元,多个存储单元的栅极与字线(WL)连接;所述存储阵列还包括位于最顶端的串行选择晶体管(StringSelection Transistor,SST),SST的栅极连接的串行选择线(String Selection Line,SSL)。所述存储阵列还包括:位于存储阵列最低端用于接地的接地选择晶体管(GroundSelection Transistor,GST);GST的栅极连接了接地选择线(Ground Selection Line,GSL)。图7中还展示有存储阵列的公共源极线(Common Source Line,CSL),该CSL与最底部的GST的源极连接。在存储阵列处于工作状态时,一般所述SST和所述GST都是处于导通状态的,如此,方便最顶部从晶体管的漏极灌入的电压能够导通到存储单元内,形成需要编程的存储单元的导通回路。
将所述存储阵列中除所述SST和GST以外的每一个晶体管视为一个存储单元,并将所述存储单元分为两个部分,将这两个部分分别对应了地址位“0”和“1”;如此在QLC编程或读取时,则状态位仅包括3位,则此时QLC编程或读取的数据可表示为“0XXX”及“1XXX”。“XXX”表示状态位。
本示例提供一种数据编程方法,主要:利用待写入数据的存储单元的物理地址映射待写入数据的一个比特的地址位;再利用阈值电压对待写入数据中剩余比特的编程。
具体如:所述物理地址可包括以下几种可选方式:
1:高位字线地址/低位字线地址;如此,高位字线地址和低位字线地址分别对应地址位“0”和“1”的两个比特值。
2:奇数字线地址和为偶数字线地址,如此,奇数字线地址和为偶数字线地址同样可分别对应地址位“0”和“1”的两个比特值;
3:存储芯片(Plane)0和存储芯片(Plane)1,如此,Plane0和Plane1同样可分别对应地址位“0”和“1”的两个比特值。
所述数据编程方法可包括:
步骤1:数据预处理,利用逻辑电路等确定出需要写入数据的地址位;
步骤2:根据地址位,确定编程地址;
步骤3:对待写入数据中地址位以外的状态位进行所述编程地址所对应的存储单元的编程。
如图9所示,若当前存储单元编程为QLC编程;则一个存储单元需要编程的数据有“1111、1110、1101、1011、1010、1001、1000、0111、0110、0101、0100、0010、0001及0000”共16个值。若按照直接对QLC的4个比特进行编程,可如图10所示的需要将一个存储单元的可调节电压范围进行16个等分,则任意两个阈值电压或读取电压都会相对于MTC或TLC缩小4倍或2倍。
在本示例中将4个比特分为地址位和状态位,在进行编程之前,将上述16个4个比特的比特值分为两组分别是“1111、1110、1101、1011、1010及1001”和“1000、0111、0110、0101、0100、0010、0001及0000”。若接收到上述任意一个4个比特待写入到存储单元的第一数据时,由逻辑电路判断归属哪一个组,确定出是归属于“0XXX”组还是归属于“1XXX”组;然后将“0”及“1”作为地址位选择存储单元,然后对选择出存储单元针对状态位进行TLC的编程。在图8中,虚线左边的地址位,且虚线右边的为状态位,故在图8所示的示例中,地址位为待编程数据或读取数据的最高位。
图10为分别是MLC、TLC及QLC在编程或读写时,最高位“1”时的一半比特值所对应的单个阈值电压或读取电压的电压范围;从图10可知:QLC中的一个比特值对应的电压范围为TTC的一半;而TLC是MTC的一半。
图11所示为本示例提供对包含有4个比特的数据进行3比特的状态位编码的示意图,如此一个数据即便包括4个比特,一个存储单元的可调节电压可以分为8个阈值电压所在的阈值电压范围。
示例2:
本示例提供一种数据读取方法,包括:
根据读取地址,获得地址位;
利用阈值电压,从所述读取地址对应的存储单元中读取状态位;
结合所述地址位和所述状态位,得到所需读取的数据。
示例3:
本示例提供一种数据处理方法,包括:
数据编程步骤,该数据编程步骤可以按照前述任意实施例提供的数据编程方法进行;
数据读取步骤,位于所述数据编程步骤之后,该数据读取步骤的具体实现可以按照前述任意实施例提供的数据读取方法进行。
本实施例还提供一种存储设备,该存储设备可为前述的任意一种存储设备,例如,2D存储设备或3D存储设备等,具体如3D NAND存储器。
所述存储设备可包括:
存储器;
处理器,与所述存储器连接,用于通过执行位于所述存储器上的计算机可执行指令,实现前述任意实施例提供的数据编程方法或数据读取方法。
所述存储器可包括:2D或3D存储阵列。
所述处理器可为各种类型具有信息处理功能的器件,例如,中央处理器、微处理器、数字信号处理器或可编程阵列等。
所述处理器可以通过总线等于设备内通信接口与所述存储器连接。
本实施例还提供一种计算机存储介质,所述计算机存储介质存储有计算机可执行指令;所述计算机可执行指令被执行后,能够实现前述任意实施例提供的数据编程方法或数据读取方法。
在本申请所提供的几个实施例中,应该理解到,所揭露的设备和方法,可以通过其它的方式实现。以上所描述的设备实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,如:多个单元或组件可以结合,或可以集成到另一个系统,或一些特征可以忽略,或不执行。另外,所显示或讨论的各组成部分相互之间的耦合、或直接耦合、或通信连接可以是通过一些接口,设备或单元的间接耦合或通信连接,可以是电性的、机械的或其它形式的。
上述作为分离部件说明的单元可以是、或也可以不是物理上分开的,作为单元显示的部件可以是、或也可以不是物理单元,即可以位于一个地方,也可以分布到多个网络单元上;可以根据实际的需要选择其中的部分或全部单元来实现本实施例方案的目的。
另外,在本发明各实施例中的各功能单元可以全部集成在一个处理模块中,也可以是各单元分别单独作为一个单元,也可以两个或两个以上单元集成在一个单元中;上述集成的单元既可以采用硬件的形式实现,也可以采用硬件加软件功能单元的形式实现。
本领域普通技术人员可以理解:实现上述方法实施例的全部或部分步骤可以通过程序指令相关的硬件来完成,前述的程序可以存储于一计算机可读取存储介质中,该程序在执行时,执行包括上述方法实施例的步骤;而前述的存储介质包括:移动存储设备、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、磁碟或者光盘等各种可以存储程序代码的介质。
以上所述,仅为本发明的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应以所述权利要求的保护范围为准。
Claims (18)
1.一种数据编程方法,其特征在于,包括:
获取待存储的第一数据,其中,所述第一数据包含N个比特,N为大于2的整数;
根据所述N个比特中的地址位,确定存储所述第一数据的第一存储单元,其中,所述地址位由所述N个比特中的m个比特组成,m为小于N的正整数;
根据所述N个比特中的状态位所对应的阈值电压,对所述第一存储单元进行数据写入的编程,其中,所述状态位由所述N个比特中除所述m个比特以外的剩余N-m个比特组成。
2.根据权利要求1所述的方法,其特征在于,所述根据所述N个比特中的状态位所对应的阈值电压,对所述第一存储单元进行数据写入的编程,包括:
根据所述状态位,从与所述N-m个比特所对应的2N-m个备选阈值电压范围确定目标阈值电压范围;
利用位于所述目标阈值电压范围内的所述阈值电压,对所述第一存储单元进行数据写入的编程。
3.根据权利要求1或2所述的方法,其特征在于,所述根据所述N个比特中的地址位,确定存储所述第一数据的第一存储单元,包括:
从存储地址与所述地址位匹配的备选存储单元集合中,确定出目标存储单元集合,其中,所述备选存储单元集合包括多个存储单元;
从所述目标存储单元集合中选择未存储有数据的所述第一存储单元。
4.根据权利要求3所述的方法,其特征在于,
所述从存储地址与所述地址位匹配的备选存储单元集合中,确定出目标存储单元集合,包括:
根据所述地址位的比特值,从所述备选存储单元集合中确定出字线地址与所述地址位匹配的所述目标存储单元集合。
5.根据权利要求4所述的方法,其特征在于,所述根据所述地址位的比特值,从所述备选存储单元集合中确定出字线地址与所述地址位匹配的所述目标存储单元集合,包括:
根据所述地址位的比特值对应的字线地址的奇偶性,从所述备选存储单元集合中确定出字线地址的所述奇偶性的所述目标存储单元集合。
6.根据权利要求4所述的方法,其特征在于,所述根据所述地址位的比特值,从所述备选存储单元集合中确定出字线地址与所述地址位匹配的所述目标存储单元集合,包括:
根据所述地址位的比特值对应的字线地址的地址范围,从所述备选存储单元集合中确定出字线地址位于所述地址范围内的所述目标存储单元集合。
7.根据权利要求3所述的方法,其特征在于,所述从存储地址与所述地址位匹配的备选存储单元集合中,确定出目标存储单元集合,包括:
从所述备选存储单元集合中,选择出与所述地址位匹配的存储芯片连接的所述第一存储单元。
8.根据权利要求1或2所述的方法,其特征在于,
所述m个比特为:所述N个比特的高m位的比特;
或者,
所述m个比特为:所述N个比特的低m位的比特。
9.一种数据编程装置,其特征在于,包括:
第一获取模块,用于获取待存储的第一数据,其中,所述第一数据包含N个比特,N为大于2的整数;
第一确定模块,用于根据所述N个比特中的地址位,确定存储所述第一数据的第一存储单元,其中,所述地址位由所述N个比特中的m个比特组成,m为小于N的正整数;
编程模块,用于根据所述N个比特中的状态位所对应的阈值电压,对所述第一存储单元进行数据写入的编程,其中,所述状态位由所述N个比特中除所述m个比特以外的剩余N-m个比特组成。
10.根据权利要求9所述的装置,其特征在于,所述编程模块,包括:
电压子模块,用于根据所述状态位,从与所述N-m个比特所对应的2N-m个备选阈值电压范围确定目标阈值电压范围;
编程子模块,用于利用位于所述目标阈值电压范围内的所述阈值电压,对所述第一存储单元进行数据写入的编程。
11.根据权利要求9或10所述的装置,其特征在于,所述编程子模块,具体用于从存储地址与所述地址位匹配的备选存储单元集合中,确定出目标存储单元集合,其中,所述备选存储单元集合包括多个存储单元;从所述目标存储单元集合中选择未存储有数据的所述第一存储单元。
12.根据权利要求11所述的装置,其特征在于,
所述编程子单元,具体用于根据所述地址位的比特值,从所述备选存储单元集合中确定出字线地址与所述地址位匹配的所述目标存储单元集合。
13.根据权利要求12所述的装置,其特征在于,所述编程子模块,具体用于根据所述地址位的比特值对应的字线地址的奇偶性,从所述备选存储单元集合中确定出字线地址的所述奇偶性的所述目标存储单元集合。
14.根据权利要求12所述的装置,其特征在于,所述编程子模块,具体用于根据所述地址位的比特值对应的字线地址的地址范围,从所述备选存储单元集合中确定出字线地址位于所述地址范围内的所述目标存储单元集合。
15.根据权利要求11所述的装置,其特征在于,所述编程子模块,具体用于从所述备选存储单元集合中,选择出与所述地址位匹配的存储芯片连接的所述第一存储单元。
16.根据权利要求9或10所述的装置,其特征在于,
所述m个比特为:所述N个比特的高m位的比特;
或者,
所述m个比特为:所述N个比特的低m位的比特。
17.一种存储设备,包括:
存储器;
处理器,与所述存储器连接,用于通过执行位于所述存储器上的计算机可执行指令,实现权利要求1至8任一项提供的方法。
18.一种计算机存储介质,所述计算机存储介质存储有计算机可执行指令;所述计算机可执行指令被执行后,能够实现权利要求1至8任一项提供的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910118857.6A CN109872754B (zh) | 2019-02-15 | 2019-02-15 | 数据编程方法及装置、存储器及存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910118857.6A CN109872754B (zh) | 2019-02-15 | 2019-02-15 | 数据编程方法及装置、存储器及存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN109872754A true CN109872754A (zh) | 2019-06-11 |
CN109872754B CN109872754B (zh) | 2021-02-26 |
Family
ID=66918839
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201910118857.6A Active CN109872754B (zh) | 2019-02-15 | 2019-02-15 | 数据编程方法及装置、存储器及存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN109872754B (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112352282A (zh) * | 2020-09-24 | 2021-02-09 | 长江存储科技有限责任公司 | 用于nand存储器编程的架构和方法 |
Citations (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5812452A (en) * | 1997-06-30 | 1998-09-22 | Winbond Memory Laboratory | Electrically byte-selectable and byte-alterable memory arrays |
CN1276085A (zh) * | 1997-11-03 | 2000-12-06 | 因菲尼奥恩技术股份公司 | 测试可读写的集成电子电路,尤其是存储器组件的总线接线的方法 |
US20060077720A1 (en) * | 2004-10-12 | 2006-04-13 | Jae-Woo Im | High speed programming for nonvolatile memory |
US20080168216A1 (en) * | 2007-01-09 | 2008-07-10 | Lee Seung-Jae | Memory system, multi-bit flash memory device, and associated methods |
CN103810117A (zh) * | 2013-12-24 | 2014-05-21 | 苏州国芯科技有限公司 | 处理器用指令存储系统 |
CN104395965A (zh) * | 2012-06-22 | 2015-03-04 | 考文森智财管理公司 | 用于在具有多个存储状态的非易失性存储单元中执行操作的设备和方法 |
CN104460406A (zh) * | 2014-10-13 | 2015-03-25 | 深圳市江波龙电子有限公司 | 单线通信的方法及基于单线通信的单片机固件升级方法 |
US20170090764A1 (en) * | 2015-09-30 | 2017-03-30 | Seagate Technology Llc | Data randomization using memory block access counts |
CN107436821A (zh) * | 2016-05-31 | 2017-12-05 | Arm 有限公司 | 为包括多个数据位和地址位的块生成错误码的装置和方法 |
-
2019
- 2019-02-15 CN CN201910118857.6A patent/CN109872754B/zh active Active
Patent Citations (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5812452A (en) * | 1997-06-30 | 1998-09-22 | Winbond Memory Laboratory | Electrically byte-selectable and byte-alterable memory arrays |
CN1276085A (zh) * | 1997-11-03 | 2000-12-06 | 因菲尼奥恩技术股份公司 | 测试可读写的集成电子电路,尤其是存储器组件的总线接线的方法 |
US20060077720A1 (en) * | 2004-10-12 | 2006-04-13 | Jae-Woo Im | High speed programming for nonvolatile memory |
US20080168216A1 (en) * | 2007-01-09 | 2008-07-10 | Lee Seung-Jae | Memory system, multi-bit flash memory device, and associated methods |
CN104395965A (zh) * | 2012-06-22 | 2015-03-04 | 考文森智财管理公司 | 用于在具有多个存储状态的非易失性存储单元中执行操作的设备和方法 |
CN103810117A (zh) * | 2013-12-24 | 2014-05-21 | 苏州国芯科技有限公司 | 处理器用指令存储系统 |
CN104460406A (zh) * | 2014-10-13 | 2015-03-25 | 深圳市江波龙电子有限公司 | 单线通信的方法及基于单线通信的单片机固件升级方法 |
US20170090764A1 (en) * | 2015-09-30 | 2017-03-30 | Seagate Technology Llc | Data randomization using memory block access counts |
CN107436821A (zh) * | 2016-05-31 | 2017-12-05 | Arm 有限公司 | 为包括多个数据位和地址位的块生成错误码的装置和方法 |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112352282A (zh) * | 2020-09-24 | 2021-02-09 | 长江存储科技有限责任公司 | 用于nand存储器编程的架构和方法 |
Also Published As
Publication number | Publication date |
---|---|
CN109872754B (zh) | 2021-02-26 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11742030B2 (en) | Method and apparatus for reading data stored in flash memory by referring to binary digit distribution characteristics of bit sequences read from flash memory | |
US10157677B2 (en) | Background reference positioning and local reference positioning using threshold voltage shift read | |
CN108140407B (zh) | 用于读取数据存储设备的软比特技术 | |
KR101574033B1 (ko) | 메모리 디바이스들 및 메모리 디바이스를 위한 구성 방법들 | |
US9177664B2 (en) | Method, memory controller and system for reading data stored in flash memory | |
US9286972B2 (en) | Method, memory controller and system for reading data stored in flash memory | |
US10452471B2 (en) | Non-volatile memory with dynamic write abort detection and recovery | |
US9093154B2 (en) | Method, memory controller and system for reading data stored in flash memory | |
TW201330001A (zh) | 將具有硬位元資料及軟位元資料之資料提供至秩序調變解碼器之方法及裝置 | |
CN109036488B (zh) | 存储器控制器、操作该存储器控制器的方法以及存储器系统 | |
JP2009016028A (ja) | 変更された読み出し電圧を用いるマルチレベルセルを含む不揮発性メモリ装置及びシステム、並びにその動作方法 | |
CN106205702B (zh) | 对编程故障自动响应的非易失性存储装置 | |
US11630722B2 (en) | Method and system for decoding data based on association of first memory location and second memory location | |
TWI716630B (zh) | 用於以電流積分感測產生機率資訊之裝置及方法 | |
US9390002B1 (en) | Efficient bin labeling schemes for tracking cells in solid state storage devices | |
US11106518B2 (en) | Failure mode study based error correction | |
CN109872754B (zh) | 数据编程方法及装置、存储器及存储介质 | |
CN109935265B (zh) | 数据读取方法及装置、存储器及存储介质 | |
US20240168643A1 (en) | Memory systems, operation methods thereof, and electronic devices | |
CN114974364A (zh) | 存储器及其编程方法、存储器系统 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |