CN107077418A - 基于单级闪速存储器中的等级调制的数据存储 - Google Patents

基于单级闪速存储器中的等级调制的数据存储 Download PDF

Info

Publication number
CN107077418A
CN107077418A CN201580050129.6A CN201580050129A CN107077418A CN 107077418 A CN107077418 A CN 107077418A CN 201580050129 A CN201580050129 A CN 201580050129A CN 107077418 A CN107077418 A CN 107077418A
Authority
CN
China
Prior art keywords
bit
program
data
vector
memory
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
Application number
CN201580050129.6A
Other languages
English (en)
Inventor
E·坎
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Empire Technology Development LLC
Original Assignee
Empire Technology Development LLC
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Empire Technology Development LLC filed Critical Empire Technology Development LLC
Publication of CN107077418A publication Critical patent/CN107077418A/zh
Pending legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C16/00Erasable programmable read-only memories
    • G11C16/02Erasable programmable read-only memories electrically programmable
    • G11C16/06Auxiliary circuits, e.g. for writing into memory
    • G11C16/10Programming or data input circuits
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C7/00Arrangements for writing information into, or reading information out from, a digital store
    • G11C7/10Input/output [I/O] data interface arrangements, e.g. I/O data control circuits, I/O data buffers
    • G11C7/1006Data managing, e.g. manipulating data before writing or reading out, data bus switches or control circuits therefor

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Read Only Memory (AREA)
  • Human Computer Interaction (AREA)

Abstract

本发明涉及的技术通常描述为用于使用等级调制在单级存储器里存储数据。在一些示例中,待被编码至单级存储器的数据可以被表示为具有用于比特组的比特等级。程序矢量可因此被从所述比特等级和与所述存储器组相关联的部分程序特性中确定。所述存储器组可因此被根据所述程序矢量编程。所述被编码的数据可以接着被通过在所述存储器组上执行一系列部分编程操作提取出来以恢复所述比特等级并得到所述表示的数据。

Description

基于单级闪速存储器中的等级调制的数据存储
相关申请的交叉引用
本申请是在专利合作条约的条款8(1)下要求于2014年9月16日提交的美国申请序列号14/488,125的优先权的PCT专利申请。所述美国申请在这里通过引用以其整体并入本文。
背景技术
除非在这里指示出,在本部分被描述的材料不是本申请所述权利要求的现有技术并且不被因包含于本部分而被承认为现有技术。
闪速存储器是一种将信息存储在包括有浮动栅级晶体管的存储器单元中的非易失性存储器(NVM)。闪速存储器可以是单级单元(SLC)或多级单元(MLC)设备。SLC闪速存储器设备可以被配置来辨别在存储器单元上的两个不同的电荷阶别,从而允许单独的存储器单元存储单比特信息。相反,MLC闪速存储器设备可以被配置来在单独存储器单元上辨别四个或更多个不同的电荷阶别,从而允许单独存储器单元存储多比特信息。然而,相比较于四个或更多个不同的电荷阶别,由于需要辨别两个不同的电荷阶别,SLC设备可以有比MLC设备更好的数据读出和写入的表现。
发明内容
本公开总体上描述使用等级调制来在单级存储器中存储数据的技术。
根据一些示例,描述了通过使用等级调制来在单级闪速存储器上编码数据的方法。示例方法可以包括基于待编码数据确定比特组内的比特等级;确定用于多个闪速存储器比特的多个部分程序参数,其中每个部分程序参数与所述多个比特中的一个相应的比特相关联;基于确定的比特等级和确定的多个部分程序参数确定程序矢量;和/或基于确定的程序矢量使用部分编程将数据编码至多个比特。
根据其他示例,装置可以被配置用来通过使用等级调制在单级闪速存储器中写入数据。示例装置可以包括被配置用来基于待写入数据确定比特等级的处理块;确定用于闪速存储器的多个比特的多个完整的程序时值,其中每个完整的程序时值指示相应的程序时间时值以从第一值到第二值修饰在多比特中的相应的比特;并确定程序矢量基于确定的比特等级以及确定的多个完整的程序时值,程序矢量指示着至少一个部分程序时值。示例装置还可以包括耦接在处理块上的存储器接口模块。存储器接口模块可以被配置用来接收确定的程序矢量从处理块;并通过根据被接收到的程序矢量指示的部分程序时值部分编程多个比特将数据写入多个比特。
根据进一步的示例,描述了通过使用等级调制来提取编码在单级闪速存储器上的数据的方法。示例方法可以包括在闪速存储器的多个比特上执行多个读出操作,其中每个读出操作包括基于至少一个部分编程参数部分编程多个比特;并读出部分编程的多个比特的状态。示例方法还可以包括基于至少与多个读出操作相关联的相应的读出状态确定与多个比特相关联的等级并基于确定的等级得到最终数据。
根据另一其他示例,一种可以被配置用来通过等级调制提取编码在单级闪速存储器中的数据的装置。该装置可以包括耦接在多个闪速存储器比特的存储器接口模块和耦接在存储器接口模块的处理块。存储器接口模块可以读出多个闪速存储器比特的初始状态并通过执行基于至少一个部分程序时值的多个比特的部分编程在多个比特上执行多个读出操作,其中至少一个部分程序时值指示程序时间以部分从第一值到第二值修饰至少多个比特中的一个比特,以及执行部分编程的多个比特的状态的读出。处理块可以接受,从存储器接口模块,与多个读出操作相关联的相应的读出状态;基于相应的读出状态确定与多个比特相关联的等级;并基于等级得到最终数据。
前面的概述仅仅是示例性的,而不意在以任何方式进行限制。通过参考附图以及下面的详细说明,除了上文所描述的示例性的方案、实施例和特征之外,另外的方案、实施例和特征将变得清晰可见。
附图说明
本公开的上述和其他特征将会由以下描述和附加权利要求(与附图一起收进)变得更加充分地显然。因此,不被考虑为其范围的限制,本公开将会被通过使用所述附图被带有额外的专一性和细节描述,在其中:
图1阐释示例存储器设备,其中基于等级调制的数据存储可以被实施;
图2阐释示使用等级调制恢复存储在单级存储器中的数据例提取读出过程以;
图3阐释所述编程过程的示例以将等级调制的数据写入至单级存储器。
图4阐释所述读出-和-证实过程的示例以得到程序矢量以将等级调制的数据写入至单级存储器。
图5阐释所述读出-和-证实过程的示例以得到程序矢量以将等级调制的数据写入至具有比特级别擦除能力的单级存储器。
图6是一个阐释以编程和以使用部分编程在单级存储器上恢复等级调制的示例过程的流程图。
图7阐释一个通用计算设备,其可以被用于通过使用等级调制提供数据存储;
图8是一个阐释可以有比如图7中的计算设备执行的使用等级调制提供数据存储的示例方法的流程图;
图9阐释一个示例计算机编程产品的框图,全部都根据至少一些在这里描述出的实施而排列。
发明详述
在下面的详细描述中,将参考附图,附图构成了详细描述的一部分。在附图中,除非上下文指出,相似的符号通常表示相似的组件。在详细描述、附图和权利要求中所描述的示例性实施例不意在限制性的。在不偏离本文呈现的主题的精神或范围的情况下,可以使用其它实施例,并且可以做出其它改变。将易于理解的是,如本文大致描述且如图中所图示的,本公开的方案能够以各种不同配置来布置、替代、组合、分离和设计,所有这些都在本文中明确地构思出。
本公开总体上尤其涉及使用等级调制将数据存储在单级存储器中的方法、装置、系统、设备和/或计算机程序产品。
简单地说,技术通常被描述以使用等级调制将数据存储在单级存储器中。在一些示例中,将要被编码至单级存储器的数据可以用针对比特组的比特等级来表示。程序矢量可以因此从比特等级和与存储器组相关联的部分程序特性中被确定。存储器组从而可以根据程序矢量被编程。被编码的数据可以通过执行存储器组上执行的一系列部分编程操作随后提取出来以恢复比特等级并得到所表示的数据。
图1阐释根据本文描述的至少一些实施例布置的其中可以实现基于等级调制的数据存储的示例存储器设备。
根据图100,装置可以包括,例如处理块101和存储器设备102,其依次可以包括存储器控制器110和存储单元150。处理块101可以执行存储在存储器设备102中的指令和/或存储由存储器设备102中的操作产生的数据。存储器控制器110可以包括存储器接口模块120,其依次可以包括写入模块130和读出模块140。存储器控制器110,存储器接口模块120,和/或写入模块130/读出模块140当存在时,可以与存储单元150通信地耦合以读出、写入或调整在存储单元150中存储的数据。存储器控制器110、存储器接口模块120和/或写入模块130/读出模块140,可以以硬件、软件或被存储在计算机可读介质介质中且可被一个或更多处理器执行的其他计算机可读指令、或者其的组合来实现。
在一些实施例中,存储单元150可以包括闪速存储器单元,并且可以使用浮动栅级晶体管来实现。存储单元150可以使用单级单元(SLC)技术或多级单元(MLC)技术来实现。在其中任一种情况下,存储器接口模块120和/或写入模块130可以被配置以使用一个或多个写入脉冲将数据写入存储单元150,其可以将电荷存储至并因此提高与存储单元相关联的浮动栅级的电压。
在一些实施例中,存储单元的阈值电压的变化作为写入脉冲个数的函数可以被表示为:
ΔVth=c·n
其中n可以是写入脉冲的个数,c可以是与存储单元相关联的常数。通常来讲,即使是在相同存储器中,不同的存储单元由于在单元内的制造变化和参杂物波动,可以有不同的电压阈值和充电行为。然而,在有可能将不同存储单元与不同的c值相关联的情况下,以上等式仍然可以成立。
在一些实施例中,单个写入脉冲可以在存储单元处不存储足以引起存储单元的阈值电压超过下一个可用的电压级别的电荷,并且多个写入脉冲的可以被使用以确保存储单元的电压超过电压级别。在这样的实施例中,存储单元可以使用少于超过下一个电压级别所需的几个写入脉冲被编程。这被称为使用几个“部分程序脉冲”的存储单元的“部分编程”。其结果是,存储单元于是可以处在“部分编程”的状态。
在其他实施例中,写入操作可以涉及使用电荷传送的全部写入持续时间,其中特定的电压被施加而不是多个写入脉冲被施加。尽管在本公开中部分编程在多个写入脉冲的上下文中被描述出来,部分编程也可以在等同于一个或更多写入脉冲的写入持续时间中被描述出来。例如,在施加特定数目的写入脉冲或者施加具有特定写入持续时间的写入操作时,比特的值可以被从“0”切换到“1”。
在一些实施例中,MLC存储器可以被配置有四个或更多电荷存储级别,允许单一MLC比特存储多比特信息。可以被用于进一步增加数据存储容量的一项技术是等级调制。在等级调制中,不使用在存储器单元上的绝对电荷级别来存储数据,在不同单元上的电荷级别的相对顺序或等级可以被用以存储数据。MLC存储器可以是很好的适合于等级调制,因为MLC存储器经常配置有在整个存储器上的多个稳定且一致的级别,并且级别可以允许在组内的存储器单元的阈值电压被相对简单的分等级。作为比较,SLC存储器可以不具有足够紧密的参数控制以使在整个存储器上启用多于两个绝对级别。然而,在一些实施例中,可以使用如上文所述的存储器单元的部分编程在SLC存储器中实现等级调制。
图2阐释根据本文描述的至少一些实施例布置的使用等级调制来恢复存储在单级存储器中的数据的示例提取读出过程。
根据图200,提取读出过程210可以通过将部分程序脉冲施加至一系列比特201-208来提取等级调制的数据而被执行。在初始读出操作220处,存储器控制器(例如,存储器控制器110)可以读出比特201-208的值。如在图2中描绘的,比特201-205和207-208可以初始具有“0”值,而比特206可以具有“1”值。其结果是,比特206可以被分等级为第一。在操作230处,存储器控制器可以通过施加一系列部分程序脉冲来部分地编程比特201-20,然后再次读出比特201-208。存储器控制器可以在操作230(以及在后续的操作)处将部分程序脉冲施加至所有的比特201-208或者仅施加至在前一次操作具有“0”值的比特(例如,针对操作230的比特201-205和207-208)。无论如何,在部分程序脉冲在操作230中被施加之后,比特201-205和207可以保持在“0”处,而比特206和208可以在“1”处。由于比特206之前在操作220处已经是“1”并因此具有顶级等级,比特208可以现在被分等级为第二。
在操作232处,存储器控制器可以再次施加一系列部分程序脉冲并读出比特201-208以确定哪一个比特203已经从“0”变为“1”并因此可以被分等级在第三。相似地,在操作234-242存储器控制器可以继续施加一系列部分程序脉冲并读出比特201-208以确定比特序列205,201,202,204和207已经改变了值并因此可以被分别分等级为第四、第五、第六、第七和第八。针对写入比特201-208中的数据的最终比特等级,被表示为有序的矢量(206,208,203,205,201,202,204,207),可以因此由存储器控制器接着处理以恢复在分等级调制中被编码的数据。当最后一个要改变值的比特(比特207)被读出之后,比特201-208可以在操作250被完全擦除来为后续的数据编码做准备。
图3阐释根据本文描述的至少一些实施例布置的将等级调制过的数据写入单级存储器的示例编程过程。
根据图300,将等级调制的数据写入比特201-208的程序过程310可以由被配置为将部分程序脉冲施加至比特201-208中的一个或更多的存储器控制器执行。在图300,程序过程310可以被用于写入在图2中描述的提取读出过程210中被恢复的相同的等级调制的数据。如上文所描述,在提取读出过程210中恢复的有序的比特等级矢量是(206,208,203,205,201,202,204,207),其中矢量中的第一比特(比特206)首先达到“1”值,并且矢量中的最后比特(比特207)最后达到“1”值。为了准备比特201-208以按照矢量中所示改变值,比特201-208的每一个可以被可以使用适当数目的部分程序脉冲来对比特201-208中的每一个进行编程。例如,假设比特201-208中每一个具有大致相同的电压级别(如上文所描述)。在这种情形下,比特206,在矢量中等级为第一,可以用最多的部分程序写入脉冲被编程以促使比特206最靠近(如果不超过)级别“1”。比特208,在矢量中等级为第二,因而可以用比比特206更少的写入脉冲被编程,以此类推经过已分等级的比特,直到等级为最后的比特207,其可以用最少的程序脉冲或甚至完全不用程序脉冲被编程。
在图300中,在特定操作中的用于特定比特的“1”值可以指示在该操作中将程序脉冲施加至该比特,而“0”值可以指示在该操作中没有程序脉冲被施加至该比特。在操作320,存储器控制器可以将数目为“2X”的程序脉冲施加至比特201-208中的所有比特,如针对比特201-208所指示的“1”值。“X”可以表示特定的递增数目的部分程序脉冲,其可以基于比特201-208的程序特性而被确定。例如,比特201-208可以具有描绘不同的可能存储的比特值的不同的阈值电压。其结果是,用于改变一个比特的值的程序脉冲的数目可以不同于以改变另一个比特的值的程序脉冲的数目。部分程序脉冲的数目上的变化可以使用平均值α和标准差Δ来表征。反过来,写入脉冲“X”的增量数目可以基于α和Δ被确定。例如,“X”可以通过将α+3Δ除以被用来存储特定的等级调制的数据的比特数目而被得到。在一些实施例中,“X”的值对于不同的比特而言可以不同,并且存储器控制器可以将“X”个写入脉冲施加至一个比特,“X”个程序脉冲至另一个比特,其中两个“X”值不同。
在操作330,存储器控制器可以将“X”个程序脉冲施加至比特201-206和208,但不施加至比特207,如相关联的“0”值所示。如上文提到的,比特207在有序的比特等级矢量中等级在最后,并因此可以用最少的程序脉冲被编程。在操作332,存储器控制器可以将“X”个程序脉冲施加至比特201-203,205-206以及208。在操作336,存储器控制器可以将“X”个程序脉冲施加至比特203,205-206以及208。在操作338,存储器控制器可以将“X”个程序脉冲施加至比特203,206以及208。在操作340,存储器控制器可以将“X”个程序脉冲施加至比特206和208。在操作342,存储器控制器可以将“X”个程序脉冲施加至比特206,在其之后对于在等级调制中被编码的数据而言编程可以被认为是完成的。
在一些实施例中,程序过程310可以在根据程序矢量编程比特201-208的上下文中被描述。程序矢量可以描述将被施加至根据比特等级布置的201-208中的每一个比特的程序脉冲的数目。例如,以上提供的有序的比特等级矢量是(206,208,203,205,201,202,204,207)。相对应的程序矢量可以是(206,208,203,205,201,202,204,207)=(“9X”,“8X”,“7X”,“6X”,“5X”,“4X”,“3X”,“2X”)。写入脉冲的第一个数字(“9X”)可以是将要被施加至比特等级矢量中的第一比特(比特206)的程序脉冲的数目,程序脉冲的第二个数目(“8X”)可以是将要被施加至第二比特(比特208)的程序脉冲的数目,以此类推。程序矢量也可以指示写入时间。一个在典型SLC中的全部程序时间的示例可以是0.5ms,其可以被划分为250个部分程序脉冲,每个有2μs持续时间。
图4阐释根据本文描述的至少一些实施例的用来推导将已等级调制的数据写入SLC闪速存储器的程序矢量的示例读出-和-证实过程。
根据图400,存储器控制器可以使用读出-和-证实过程410读出已写入比特201-208的数据并证实由程序矢量表示的已等级调制的数据正确地被提取。过程410可以用上文描述的相同的程序矢量以便于描述,尽管当然在其他实施例中其他程序矢量可以被读出并证实。
在操作420,存储器控制器可以读出比特201-208的值。如图4描绘的,比特201-205和207-208可以初始具有“0”值,而比特206可以具有“1”值,其正确地对应于比特等级矢量。在操作430,存储器控制器可以因此将“X”个程序脉冲施加至比特201-205和207-208并且随后可以读出比特201-208。在正常操作之间,有并且只有一个比特从“0”切换至“1”可以是有用的。根据程序矢量,在在操作430中施加程序脉冲之后,比特208应该从“0”切换至“1”。然而,比特208被显示为仍然读出“0”。这一情况可以被称为“延迟注册(delayedmatriculation)”错误,在其中比特应该切换了值但是并没有切换。为改正这一错误,存储器控制器可以在操作432将额外的程序矢量施加至比特208,确定是否额外的程序矢量引起比特208切换,并且继续施加额外的程序脉冲直至比特208从“0”切换至“1”。存储器控制器也可以将相同数目的额外程序脉冲施加至比特206以确保比特206的等级超过比特208。
在确定用于改正延迟注册错误的编程脉冲的数量之后,存储器控制器可以用针对比特208和比特206的已改正的程序脉冲数目来更新程序矢量。例如,如果存储器控制器将额外的“X”个编程脉冲施加至比特208以使位比特208从“0”切换到“1”,则存储器控制器可以将程序矢量调整为(206,208,203,205,201,202,204,207)=(“10X”,“9X”,“7X”,“6X”,“5X”,“4X”,“3X”,“2X”),其中“X”已被添加到对应于位比特206和208的程序脉冲数目。
在操作440和450,存储器控制器可以接连地将“X”个程序脉冲施加至剩余的零值比特并且随后读出比特201-208以确定是否在程序矢量中下一个等级比特(比特203和比特205,分别地)从“0”值切换至“1”值。一旦确定比特203和比特205的确接连地从“0”切换值至“1”,存储器控制器可以再次在操作460将“X”个程序脉冲施加至剩余的零值比特并且随后读出比特201-208。根据程序矢量,下一个要切换值的等级比特应该是比特202。然而,比特201和202都在操作460的程序脉冲施加之后切换值,其中只有一个(比特201)比特应该已经切换了。这一情况可以被称为“过早注册(premature matriculation)”错误,其中比特(比特202)在该比特不应该切换了值的时候切换值。为改正这一错误,存储器控制器可以减少与比特202相关联的在程序矢量中的写入脉冲的数目。为了保持比特等级,存储器控制器也可以相应地减少与相比于比特202更低的等级的比特(即,比特204和207)相关联的程序脉冲的数目。在这一减少之后,程序矢量可以是(206,208,203,205,201,202,204,207)=(“10X”,“9X”,“7X”,“6X”,“5X”,“3X”,“2X”,“X”)。
在操作460之后,存储器控制器可以在操作470再次将“X”个程序脉冲施加至剩下的零值比特且随后读出比特201-208。由于过早注册错误,应该在操作470已经切换的比特(比特202)已经在操作460切换,所以在操作470不切换可以不触发过早注册错误。在下一个操作480,存储器控制器可以再次将“X”个写入脉冲施加至剩余的零值比特(比特204和207)并且随后读出比特201-208。与操作460一样,在比特207不应该切换值的时候比特207切换了值的情况下,过早注册错误可以出现在如描绘的操作480中。与操作460相似,存储器控制器可以通过减少与比特207相关联的程序矢量中的写入脉冲的数目来改正这个错误。因为比特207是等级为最后的比特,没有其他程序脉冲减少可以被执行。因此,调整的程序矢量可以是(206,208,203,205,201,202,204,207)=(“10X”,“9X”,“7X”,“6X”,“5X”,“3X”,“2X”,“0”),并可以在完全擦除后被用于再编程比特201-208。
上文描述的读出-和证实过程410可以适用于很多闪速存储器实现,其中比特级部分擦除是不可用的。然而,一些非易失性存储器类型,比如嵌入的单多晶NVM,可以具有比特级部分程序和擦除能力,允许增强的读出-和-证实过程。在一些实施例中,这种增强的读出-和-证实过程可以具有更简单更快速的错误处理和改正。
例如,在读出-和-证实过程410,在原始程序矢量中的程序脉冲的最少个数可以确定可以用不同的程序矢量来改正而不用重新开始读出-和-证实过程的过早注册错误的数目。具体地,由于原始程序矢量是(206,208,203,205,201,202,204,207)=(“9X”,“8X”,“7X”,“6X”,“5X”,“4X”,“3X”,“2X”),读出-和-证实过程410可以只处理并改正两个过早注册错误,促使写入脉冲(“2X”)的最后数目至零。任何额外的过早注册错误可以涉及使用可以处理更多过早注册错误的新程序矢量,比如(206,208,203,205,201,202,204,207)=(“10X”,“9X”,“8X”,“7X”,“6X”,“5X”,“4X”,“3X”)。相比较,能够利用比特级擦除操作的优点的读出-和-证实过程可以不需要这一考虑。
图5阐释示例读出并核实过程以得到程序矢量以将等级调制的数据写入单级存储器具有比特级别擦除能力的,根据至少一些在这里描述的实施排列。
根据图500,存储器控制器可以使用相似于过程410的读出并核实过程510以读出写入在比特201-208的数据并核实被具体程序矢量代表的等级调制的数据是被正确写入的。如过程410,过程510可以使用上文描述的相同程序矢量为了描述方便起见,尽管在其他实施例中其他程序矢量可以被用。
过程510中的操作520,530,532,540和550可以是与过程410中的操作420,430,432,440和450相似,分别地。例如,存储器控制器可以初始如在操作420一样在操作520读出数据并可以如在操作430,440和450一样在操作530,540和550中将“X”个程序脉冲施加至零值比特。存储器控制器可以改正延迟的注册错误如在操作430一样在操作530碰到的经由额外程序脉冲的应用以及接下来的在操作532中的程序矢量的改正如在相对应的操作432中描述的。
在操作560,存储器控制器可以探测与比特202相关联的过早注册错误,如在相对应的操作460。然而,除减少与比特202和等级为更低的比特(比特204和207)相关联的程序矢量中的程序脉冲的个数以外,存储器控制器也可以在操作562将一个或更多擦除脉冲施加至比特202,204和207在操作562中。在一些实施例中,擦除脉冲具有与程序脉冲相反的功能,并从存储器单元中移除电荷,从而减少存储器单元的阈值电压。存储器控制器可以将擦除脉冲施加至比特202,204和207直到比特202切换回至“0”值。接着,在操作570中存储器控制器可以再次将“X”程序脉冲施加至剩余的零值比特并且接着读出比特201-208,如在操作470中。不同于操作470,在操作570中比特202可以能够因为施加在操作562的擦除脉冲切换。其结果是,存储器控制器可以确定是否比特202事实上的确在操作570切换。
在下一个操作580,存储器控制器可以再次将“X”程序脉冲施加至剩余的零值比特(比特204和207),与操作480相似。如操作560,过早的注册错误可以在操作580中出现如用比特207描画的当比特207不应该已经切换了值的时候切换值。存储器控制器可以在操作582改正这一错误通过减少与比特207相关联的程序矢量中的程序脉冲的个数以及将足够多的擦除脉冲施加至比特207直到比特207切换回至“0”值,相似于操作562。
图6是阐释在单级存储器上使用部分编程来编程和来恢复等级调制的数据的示例过程600的流程图。过程600可以包括一个或更多操作,功能,或行动如方块602-614中的一个或更多所阐释的。尽管过程600中的一些方块(以及在这里包括的任何其他过程/方法)被以相继次序阐释,这些方块也可以被以平行,和/或以与那些在这里描述不同的次序被执行。而且,各种方块可以被组合成更少方块,被分为附加的方块,和/或基于特定实现被消除。附加的方块代表其他操作、功能或行动可以被提供。
根据过程600,等级调制的数据编程和恢复可以在方块602开始(“执行完全的页/方块的擦除”),其中存储器控制器(例如,存储器控制器110)可以完全地擦除存储页、方块或部分以为写入数据作准备。在方块604(“测量脉冲以将在页/方块中的比特切换为‘1’”),其可以跟随方块602,存储器控制器可以测量程序脉冲的个数和/或程序时间时值以将在存储页或方块中的比特从“0”值切换至“1”。在一些实施例中,存储器控制器和/或耦接在存储器控制器的处理方块可以进一步得到与存储页或方块相关联的一个或更多部分程序特征,比如程序脉冲的个数的平均值α,标准差Δ,和/或如以上所描述的增加的程序脉冲个数“X”。在方块606(“从将要被写入数据得到比特等级”),其可以跟随方块604,存储器控制器和/或处理块可以使用等级调制技术从将要被被写入至存储的数据确定比特等级。在方块608(“推导程序矢量用于页/方块使用比特等级来施加程序脉冲”),其可以遵循方块606,存储器控制器或处理方块可以基于确定好的比特等级和比如比特级别写入和/或擦除脉冲的施加的可用的存储操作推导如以上描述的程序矢量。在一些实施例中,程序矢量可以初始被得到然后被使用如以上在图4-5中描述的编程并核实过程核实。在方块610(“执行完整的页/方块的擦除并用得到的程序矢量来编程页/方块”),其可以遵循方块608,存储器控制器可以再次完整地擦除存储页或方块并用在方块608得到的程序矢量来将等级调制的数据编程至存储页或方块。
在方块612(“执行多读出操作来恢复等级通过顺序地将写入脉冲施加至比特并读出结果值”),其可以遵循方块610,与卸载存储页/方块上的数据相关联的比特等级可以被使用多读出操作恢复。这些读出操作可以由存储器控制器执行,并可以牵涉程序脉冲的顺序的施加至一个或更多比特在存储器中并且读出结果值,如以上在图2中所描述的。在方块614(“从等级恢复数据”),其可以遵循方块612,存储器控制器和/或处理方块可以然后从恢复的比特等级恢复等级调制的数据。
其他修饰可以被做出到以上描述的过程。在一些实施例中,程序矢量可以被每读出操作用更少的程序脉冲而确定。这一在每操作程序脉冲的个数上的减少可以是相等于在存储器上执行过采样,并可以导致更好的部分程序分辨率和减少的过早注册率,因为有更少程序脉冲的操作可以更小可能引起多比特切换。在程序脉冲个数上的减少可以是总体的(Global)(即,例如,在整个存储之上实现的),本地的(即,例如,在存储的一部分之上实现的),和/或灵活的(例如,基于将要被写入数据和存储器条件动态变化的)。
在进一步的实施例中,以上的等级调制的数据程序过程可以当在另个实体之间传输数据时被用于提供安全。例如,第一实体可以想要将等级调制的数据传送至第二实体。第一实体可以得到与等级调制的数据相对应的程序矢量并将程序矢量分开为两个(或更多)部分。第一实体可以然后将第一部分传送至第二实体通过一些手段,使用程序矢量的第二部分编程存储器,并将编程后的存储器传送至第二实体。第二实体可以然后继续使用接收到的第一部分编程存储器并接着从完全编程的存储器中恢复等级调制的数据。为了成功地拦截数据,攻击者可能必须要获取程序矢量的第一部分和编程后的存储器。
以进一步提高安全性和数据可靠性,多比特代表可以被使用用于将要被写入到存储器的等级调制的数据中的相应比特。例如,两个存储器比特可以被使用来代表一个单数据比特,存储器比特值“01”和“10”分别对应数据比特值“0”和“1”。
图7阐释通用目的的计算设备,其可以被用来提供数据存储通过使用等级调制,根据至少一些在这里描述的实施排列。
例如,计算设备700可以被用来在单级存储器上使用在这里描述的部分编程编程和恢复数据。在示例基本配置702,计算设备700可以包括一个或更多处理器704和系统存储器706。存储器总线708可以被用来在处理器704和系统存储器706之间通信。基本配置702通过内虚线之内的那些组件在图7中被阐释。
取决于期望的配置,处理器704可以是任何形式的,包括但不局限于微处理器(μP),微控制器(μC),数字信号处理(DSP),或在其中的任何组合。处理器704可以包括更多一级的缓存,比如级别缓存存储器712,处理器核714,暂存器716。示例处理器核714可以包括算术逻辑单元(ALU),浮动点单元(FPU),数字信号处理核(DSP核),或者任何在其中的组合。示例存储器控制器718,相似于存储器控制器110,也可以被连同处理器704使用,或者在一些实现中存储器控制器718可以是处理器704的内部的部分。另外,图1中的存储器细胞150可以在缓存存储器712,系统存储器706,和/或存储设备732的一个或更多中被实现。
取决于期望的配置,系统存储器706可以是任何类型包括但不局限于易失存储器(比如RAM),非易失存储器(比如ROM,闪速存储器,等等)或在其中的任何组合。系统存储器706可以包括操作系统720,等级调制模块722,和程序数据724。等级调制模块722可以包括写入模块726和读出模块728来如在这里描述的使用等级调制实现数据存储。写入模块726和读出模块728可以是与图1中写入模块130和读出模块140分别相似的,除了图7中示例实施例中的,写入模块726和读出模块728在存储于系统存储器706中的等级调制模块722中被实现,而不是作为在存储器控制器718中的存储器接口模块(或其他模块)中的子组件。程序数据724可以包括,在其他数据中,程序矢量数据730或类似的,如在这里所描述的。
计算设备700可以具有附加的特征或功能,以及附加的接口以促进基本配置702和任何期望的设备和接口之间的通信。例如,总线/接口控制器730可以被用以促进基本配置702以及一个或更多数据存储设备732之间经由存储器接口总线734的通信。数据存储设备732可以是一个或更多可移动的存储设备736,一个或更多不可移动的存储设备738,或在其中的组合。可移动的存储和不可移动的存储设备的示例包括比如软盘驱动和硬盘驱动(HDD)的磁盘设备,比如光盘驱动比如高密度磁盘(CD)驱动或数字通用光盘(DVD)驱动,固态硬盘(SSD),以及磁带驱动列举几个。示例计算机存储介质可以包括易失性的和非易失性的,可移动的和不可移动的介质以任何方法或技术实现的用于信息的存储,比如计算机可读的指令,数据结构,程序模块或其他数据。
系统存储器706,可移动的存储设备736和不可移动的存储设备738是计算机存储介质的示例。计算机存储介质包括,但是不局限于,RAM、ROM、EEPROM、闪速存储器或其他存储器技术、CD-ROM、数字通用光盘(DVD)、固态硬盘、或其他光学存储、磁带盒、磁带、磁盘存储或其他磁存储设备、或任何其他介质其可以被用于存储期望的信息和其可以被计算设备700进入。任何这样的计算机存储介质可以是计算设备700的一部分。
计算设备700可以还包括接口总线740以促进从各种接口设备(例如,一个或更多输出设备742,一个或更多周边接口744,以及一个或更多通信设备766)至基本配置702经由总线/接口控制器730的通信。示例输出设备742中的一些包括图像处理单元748和音频处理单元750,其可以被配置来经由一个或更多A/V端口752通信至各种外部设备比如显示器或扬声器。一个或更多示例周边接口744可以包括一连串的接口控制器754或平行接口控制器756,其可以被配置来与外部设备如输入设备(例如,键盘、鼠标、笔、声音输入设备、触摸输入设备、等等)或其他周边设备(例如,打印机、扫描机、等等)经由一个或更多I/O端口758通信。示例通信设备766包括网络控制器760,其可以是被排列以促进与一个或更多其他计算设备762在网络通信链路之上经由一个或更多通信端口的通信。一个或更多其他计算设备762可以包括数据中心的服务器,顾客设备,和可比较的设备。
网络通信链路可以是通信介质的一个示例。通信介质可以被计算机可读指令、数据结构、程序模块、或其他在调制后的数据信号,比如载波或其他传输机制呈现,并可以包括任何信息传送介质。“调制后的数据信号”可以是具有其特征的一个或更多被设定或改变以这种样式为了将信息编码至信号。通过实例的方式,并不是局限,通信介质可以包括有线介质或直接接线的连接,以及无线介质比如声音、无线电(RF)、微波、红外(IR)以及其他无线介质。如在这里所用的词计算机可读的介质可以包括存储介质和通信介质。
计算设备700可以被实施为通用目的的或专用的服务器的一部分,主框,或相似的计算机包括任何以上功能的。计算设备700可以也被实施为个人计算机包括笔记本电脑和非笔记本电脑配置。
图8是阐释示例方法的流程图以提供数据存储使用等级调制可以被比如图7中计算设备的计算设备,根据至少一些在这里描述的实施排列。
示例方法可以包括一个或更多操作、功能或行动如由方块822、824、826和/或828中的一个或更多阐释的,并且可以在一些实施例中被比如图8中的计算设备800的计算设备执行。在方块822-828中描述的操作也可以作为对储存在比如计算设备810的非短暂性的计算机可读的介质820的计算机可读的介质的计算机可执行的指令的执行(通过一个或更多处理器)。在一些实施例中,各种操作可以被实现/提供使用替换地方法或附加在计算机可执行的指令的执行之上。
示例过程以提供数据存储使用等级调制可以从方块822开始,“测量存储页/方块的部分程序特征”,其中存储器控制器(例如,存储器控制器110)可以测量存储器页或方块的部分程序特征,在其上等级调制的数据待写入,如以上所描述的。
方块822可以是被方块824跟随,“确定程序矢量用于存储器页/方块使用部分程序特征和相对应于目标数据的比特等级”,其中存储器控制器或处理方块可以确定程序矢量代表等级调制的数据基于比特等级与数据相关联的以及与存储页/方块相关联的部分程序特征。在一些实施例中,存储器控制器可以如在以上图4-5中所描述的读出并核实过程,并处理方块可以进一步基于读出并核实的结果,如以上所描述。
方块824可以被方块826跟随,“写入存储器根据确定的程序矢量”,其中存储器控制器可以将数据写入到存储器通过根据之前确定的程序矢量施加程序脉冲,如以上所描述。
方块826可以被方块828跟随,“在比特上执行一连串部分程序基于部分程序特征以恢复等级以及推导目标数据”,其中存储器控制器可以恢复等级调制的数据写入存储器页或方块通过屡行一连串部分程序在一个或更多比特上在存储器页或方块里。例如,存储器控制器可以接连地施加程序脉冲至一个或更多比特在存储器中并读出结果的比特值以恢复比特等级,如图2中所描述。一旦比特等级被恢复,存储器控制器或处理方块可以从被恢复的比特等级推导目标数据。
图9阐释示例计算机程序产品的方块图,根据至少在这里描述的一些实施排列。
在一些例子中,如图9所示,计算机程序产品900可以包括信号承载介质902还可以包括一个或更多机器可读的指令904,作为对执行的恢复,例如,处理器可以提供在这里描述的功能和特征。这样,例如,参考图7中处理器704,等级调制模块722可以承担一个或更多任务在图9中所显示的作为对指令904的反应转达至处理器704通过介质902来执行与数据存储相关联的行动使用等级调制在这里描述的。那些指令中的一些可以包括,例如,来测量存储器页/方块的部分程序特征的指令,确定程序矢量用于存储器页/方块使用部分程序特征以及对应于目标数据的比特等级,根据确定的程序矢量编程存储器和/或基于部分程序特征执行一连串部分编程在一个或更多比特在存储器页或方块。例如,存储器控制器可以接连地施加程序脉冲至存储器中的一个或更多比特并读出结果的比特值以恢复比特等级,如以上在图2描述的。一旦比特等级被恢复,存储器控制器或处理方块可以从恢复后的比特等级推导目标数据。
图9阐释示例计算机程序产品的方块图,根据至少一些在这里描述的实施排列。
在一些示例中,如在图9中所示,计算机程序产品900可以包括信号承载介质902其可以还包括一个或更多机器可读的指令904其,作为对执行的反应,被,例如,处理器可以提供在这里描述的功能和特征。因此,例如,参考处理器704在图7中,等级调制模块722可以承担一个或更多任务显示在图9中作为对通过介质902转达至处理器704的指令904的反应以使用如在这里描述的等级调制执行与数据存储相关联的行动。那些指令中的一些可以包括,例如,用于测量存储器页/方块的部分程序特征的指令,确定用于存储器页/方块使用部分程序特征以及比特等级对应于目标数据的程序矢量,根据确定的程序矢量编程存储器和/或执行基于部分程序特征在比特上一连串的部分程序以恢复等级和推导目标数据,根据在这里描述的一些实施。
在一些实施例中,描画在图9中的信号承载介质902可以计算机可读的介质906,比如,但不局限于,硬盘驱动、固态驱动、激光唱片(CD)、数字通用光盘(DVD)、数字磁带、存储器、等等。在一些实现中,信号承载介质902可以包含通信介质910,比如,但不局限于,数字的和/或模拟的通信介质(例如,光纤线缆、波导、有线通信链路、无线通信链路、等等)。因此,例如,程序产品900可以被转达至处理器704的一个或更多模块通过RF信号承载介质,其中信号承载介质902被由无线通信介质910(例如,无线通信介质符合IEEE802.11标准)转达。
根据一些示例,通过使用如描述的等级调制将数据编码至单级闪速存储器的方法。示例方法可以包括基于待编码数据确定在比特组内的比特等级;确定多个部分程序参数用于多个闪速存储器比特,其中每个部分程序参数与多个比特中的每一个比特相关联;基于确定的比特等级以及确定的多个部分程序参数确定程序矢量;并/或基于确定的程序矢量使用部分编程将数据编码至多个比特。
根据其他示例,确定多个部分程序参数可以包括选择部分程序参数基于一个或更多几个程序矢量以从第一值到第二值修饰多个比特中的相应比特以及程序时间以从第一值到第二值修饰多个比特中的相应比特。程序矢量可以指示至少一个程序参数包括至少几个程序脉冲中的一个以及程序时间,并且编码数据可以包括部分编程多个比特通过根据至少一个程序矢量编程至至少多个比特中的一个比特。
根据进一步的示例,确定程序矢量还可以包括减少至少一个程序参数以执行过采样。方法还可以包括执行编程并核实序列在编码的数据上;调整确定的程序矢量基于编程并核实序列;以及基于调整的程序矢量使用部分编程将数据再编码至多个比特。执行编程并核实序列可以包括在编码的数据上执行至少一个读出操作至多个比特并确定,基于至少一个读出操作,是否与至少多个比特中的一个比特相关联的延迟的注册和过早的注册中的至少一个已出现。调整确定的程序矢量可以包括调整与至少一个比特相关联的在确定的程序矢量中的程序参数,作为对至少延迟的注册和过早的注册中的一个已经出现的确定的反应。
根据仍其他示例,调整确定的程序矢量可以还包括调整另一个与至少多个比特中的一个其他比特相关联的程序矢量中的其他程序参数。调整程序参数可以包括一个或更多:增加几个程序脉冲至至少一个比特;增加程序时间至至少一个比特;减少几个程序脉冲至至少一个比特;减少程序时间至至少一个比特;并将几个擦除脉冲施加至至少一个比特。确定程序矢量可以包括基于比特等级和将完整的程序矢量分开至第一程序矢量部分和第二程序矢量部分的多个部分程序参数确定一个完整的程序矢量,并基于第一程序矢量部分编码数据。
根据其他示例,一套装置可以被配置用来通过使用等级调制在单级闪速存储器上写入数据。一套示例装置可以包括处理块被配置用来确定基于待写入数据比特等级;确定用于闪速存储器的多个比特的多个完整的程序时值,其中每个完整的程序时值指示相应的程序时间时值以从第一值到第二值修饰多个比特中的相应比特;并且基于确定的比特等级和确定的多个完整的程序时值确定程序矢量,程序矢量指示着至少一个部分程序时值。该套示例装置还可以包括耦接在处理模块上的存储器接口模块。存储器接口模块可以被配置用来从处理块接收确定的程序矢量;并根据至少一个由接收到的程序矢量指示的部分程序时值通过多比特的部分编程将数据写入多个比特。
根据一些示例,每个完整的程序时值可以是基于几个对应于相应程序时间时值的程序矢量;并至少一个部分程序时值可以包括至少一个:程序时间以至少部分地从第一值到第二值修饰至少多个比特中的一个比特;以及对应于程序时间的几个程序脉冲。处理块还可以被配置用来确定程序矢量通过灵活地减少至少一个程序参数来执行过采样。
根据仍其他示例,处理块可以被进一步配置用来控制在写入数据上的编程并核实的序列的表现并基于编程并核实序列调整确定的程序矢量。存储器程序模块可以被进一步配置用来接收调整后的程序矢量并将数据再写入多个比特通过使用部分程序操作基于调整后的程序矢量。处理模块还可以被配置用来控制编程并核实序列的表现通过控制至少一个在写入至多个比特的数据上的读出操作以及确定,基于至少一个读出操作,是否与多个比特中的至少一个比特相关联的延迟的注册和过早的注册中的至少一个已出现。调整确定的程序矢量可以包括调整程序参数在确定的程序矢量与至少一个比特相关联的作为对至少延迟的注册和过早的注册中的一个的确定的反应。处理块可以被进一步配置用于调整确定的程序矢量,通过调整与至少一个比特相关联的在确定的程序矢量中的部分程序时值作为对延迟的注册和过早的注册中的至少一个已出现的反应以及调整与至少在多比特中的另一个比特相关联的另一个部分程序时值中的至少一个。
根据进一步的示例,通过使用等级调制来提取编码在单级闪速存储器上的数据的方法可以被描述。示例方法可以包括在闪速存储器的多个比特上执行多个读出操作,其中每个读出操作包括基于至少一个部分编程参数部分编程多个比特;并读出部分编程的多个比特的状态。示例方法还可以包括基于至少与多个读出操作相关联的相应的读出状态确定与多个比特相关联的等级并基于确定的等级得到最终数据。
根据仍进一步示例,该方法还可包括在执行多个读出操作之前读出多个比特的初始状态,并且其中确定等级包括基于初始状态和与多个读出操作相关联的相应的读出状态确定等级。确定等级可以包括基于与多个读出操作相关联的相应的读出状态确定等级以及在比特等级中的至少一个比特的多比特代表。
根据仍其他示例,一套装备可以被配置用来通过等级调制提取编码在单级闪速存储器中的数据。该套装置可以包括耦接在多个闪速存储器比特的存储器接口模块和耦接在存储器接口模块的处理块。存储器接口模块可以读出多个闪速存储器比特的初始状态并通过执行基于至少一个部分程序时值的多个比特的部分编程在多个比特上执行多个读出操作,其中至少一个部分程序时值指示程序时间以部分从第一值到第二值修饰至少多个比特中的一个比特,以及执行部分编程的多个比特的状态的读出。处理块可以接受,从存储器接口模块,与多个读出操作相关联的相应的读出状态;基于相应的读出状态确定与多个比特相关联的等级;并基于等级得到最终数据。
根据一些示例,至少一个部分程序时值可以是基于对应于程序时间的几个程序脉冲。存储器接口模块可以进一步执行多个读出操作通过减少至少一个部分程序时值执行过采样。
各种实施例可以在硬件、软件或硬件和软件的组合(或存储在非暂态计算机可读存储介质并且由一个或更多处理器可执行的其他计算机可读指令)中被实现;硬件或软件的使用通常是(但不总是,因此在特定情况下硬件与软件之间的选择可以变得重要)表示成本对效率的权衡的设计选择。有各种载体通过其可以影响本文描述的过程和/或系统和/或其他技术(例如,硬件、软件和/或固件),并且优选的载体将随着其中过程和/或系统和/或其他技术被部署的环境而变化。例如,如果实现者确定速度和准确度是最重要的,实现者可以选择主要为硬件和/或固件载体,如果实灵活性是最重要的,实现者可以选择主要为软件实现;或者,仍再次替代地,实现者可以选择硬件、软件和/或固件的某一种组合。
上述的详细描述已经通过使用框图、流程图、和/或示例阐明设备和/或过程的各种实施例。在这样的框图、流程图和/或示例包含一个或更多功能和/或操作的情况下,这样的框图、流程图或示例内的每项功能和/或操作可以通过各种各样的硬件、软件、固件或几乎其的任何组合来相应地和/或共同地实现。在一个实施例中,本文所描述的主题的多个部分可以通过专用集成电路(ASIC)、现场可编程门阵列(FPGA)、数字信号处理(DSP)或其他集成形式来实现。然而,在本文公开的实施例的一些方面可以整体地或部分地在集成电路中等效地实现为:在一个或多个计算机上运行的一个或多个计算机程序(例如,实现为在一个或多个计算机系统上运行的一个或多个程序)、在一个或多个处理器上运行的一个或多个程序(例如,实现为在一个或多个微处理器上运行的一个或多个程序)、固件、或几乎其的任何组合,并且根据本公开内容设计电路和/或编写用于软件和/或固件的代码是可能的。
本公开不受在本申请中所描述的特定实施例限制,这些特定实施例意在为各个方案的示例。不偏离其精神和范围的情况下,可以做出很多改进方案和变型例。从前面的描述,在本公开的范围内的功能上相等的方法和装置,除在这里列举的那些之外,是可能的。这些改进方案和变型例旨在落在随附权利要求书的范围内。连同这些权利要求书所给予权利的等同方案的整个范围内,本公开仅受随附权利要求书限制。而且,本文所使用的术语仅是为了描述特定实施例的目的,而不意在限制。
另外,在这里描述的主题的机构是可以被作为程序产品以各种形式分配,并且在这里描述的主题的阐释性的实施例适用不管实际被用来执行分配的信号承载介质的特定种类。信号承载介质的示例包括,但不局限于,以下:可记录的种类介质比如软盘、硬盘、高密度磁盘(CD)、数字通用光盘(DVD)、数字磁带、计算机存储器、固态硬盘、等等;以及传输类型介质比如数字和/或模拟通信介质(例如,光纤线缆、波导、有线通信链路、无线通信链路、等等)。
本领域技术人员将意识到以在这里陈述的方式描述装置和/或过程是现有技术内普通的,并且其后使用工程做法来集成这样描述的装置和/或过程至数据处理系统。即,至少在这里描述的装置和/或过程的一部分可以被集成至数据处理系统经由合理量的实验。数据处理系统可以包括一个或更多系统单元外壳,视频显示装置,存储器比如易失和非易失存储器,处理器比如微处理器和数字信号处理器,计算实体比如操作系统、驱动、图像用户界面、以及应用程序,一个或更多互动设备,比如触摸板或显示屏,和/或控制系统包括反馈环以及控制电机。(例如,反馈用于感应起重机台系统的位置和/或速度;控制电机用来移动和/或调整组件和/或数量)
数据处理系统可以被使用任何合适的商业上可用的组件实现,比如那些在数据计算/通信和/或网络计算/通信系统中找到的。在这里描述的主题有时阐释包含于,或连接在,不同的其他组件的不同组件。这些所描绘的体系结构仅是示例性的,并且实际上可以实施实现相同功能的许多其它体系结构。在概念意义上,实现相同功能的任何部件的布置有效地“关联”,使得实现期望功能。因此,在此处组合以实现特定功能的任何两个部件可视为彼此“关联”,使得实现期望功能,无论体系结构或中间部件如何。同样,任意两个如此关联的部件还可视为彼此“可操作地连接”、或“可操作地耦合”以实现期望的功能,并且能够如此关联的任意两个部件还可视为彼此“能够可操作地耦合”以实现期望功能。具体的可操作地耦合的示例包括但不仅限于物理可接的和/或物理互动组件和/或无线可互动和/或无线互动组件和/或逻辑互动和/或逻辑可互动组件。
关于本文中基本上任何复数和/或单数术语的使用,本领域技术人员能够根据上下文和/或应用适当地从复数变换成单数和/或从单数变换成复数。为了清晰的目的,本文中明确地阐明了各单数/复数的置换。
本领域技术人员将理解,一般地,本文所使用的术语,尤其是随附权利要求(例如,随附权利要求的主体)中所使用的术语,通常意在为“开放式”术语(例如,术语“包括”应当解释为“包括但不限于”,术语“具有”应解释为“至少具有”,术语“包括”应解释为“包括但不限于”,等等)。本领域技术人员还理解,如果意图表达引导性权利要求记述项的具体数量,该意图将明确地记述在权利要求中,并且在不存在这种记述的情况下,不存在这样的意图。例如,为辅助理解,下面的随附权利要求可能包含了引导性短语“至少一个”和“一个或多个”的使用以引导权利要求记述项。然而,这种短语的使用不应解释为暗示不定冠词“一”或“一个”引导权利要求记述项将包含该所引导的权利要求记述项的任何特定权利要求局限于仅包含一个该记述项的实施例,即使当同一权利要求包括了引导性短语“一个或多个”或“至少一个”以及诸如不定冠词“一”或“一个”的(例如,“一”和/或“一个”应当解释为表示“至少一个”或“一个或多个”);这同样适用于对于用于引导权利要求记述项的定冠词的使用。另外,即使明确地记述了被引导的权利要求记述项的具体数量,本领域技术人员将理解到这些记述项应当解释为至少表示所记述的数量(例如,没有其它修饰语的裸记述“两个记述项”表示至少两个记述项或两个以上的记述项)。
此外,在使用类似于“A、B和C等中的至少一个”的惯用法的那些实例中,通常这样的构造旨在表达本领域技术人员理解该惯用法的含义(例如,“具有A、B和C中的至少一个的系统”将包括但不限于仅具有A、仅具有B、仅具有C、具有A和B、具有A和C、具有B和C、和/或具有A、B和C等等的系统)。本领域技术人员将进一步理解,呈现两个以上可选项的几乎任何分离词和/或短语,无论是在说明书、权利要求或附图中,都应理解为设想包括一项、任一项或两项的可能性。例如,术语“A或B”将理解为包括“A”或“B”或“A和B”的可能性。
本领域技术人员将理解的是,为了任何以及全部的目的,诸如在提供所撰写的说明书方面,本文所公开的全部范围也涵盖了任何和全部的可能的子范围及其子范围的组合。能够容易地认识到任何所列范围都充分地描述了同一范围并且使同一范围分解成至少均等的一半、三分之一、四分之一、五分之一、十分之一等等。作为非限制示例,本文所论述的每个范围能够容易地分解成下三分之一、中三分之一和上三分之一,等等。本领域技术人员还将理解的是,诸如“多达”、“至少”等所有的语言包括所记述的数量并且是指如上文所论述的随后能够分解成子范围的范围。最后,本领域技术人员将理解的是,范围包括每个独立的成员。因此,例如,具有1-3个单元的组是指具有1个、2个或3个单元的组。类似地,具有1-5个单元的组是指具有1个、2个、3个、4个、或5个单元的组,等等。
虽然本文已经公开各个方面和实施例,其他方面以及实施例也是可能的。本文所公开的各个方面以及实施例是为了说明的目的并且不意在限制,真正的范围和精神是通过随附的权利要求表明的。

Claims (20)

1.一种通过使用等级调制将数据编码在单级闪速存储器上的方法,所述方法包括:
基于待编码数据确定比特组内的比特等级;
确定用于多个闪速存储器比特的多个部分程序参数,其中每个部分程序参数与多个比特中的相应的比特相关联;
基于所确定的比特等级和所确定的多个部分程序参数确定程序矢量;以及
基于所确定的程序矢量使用部分编程将所述数据编码至所述多个比特。
2.如权利要求1的方法,其中确定多个部分程序参数包括基于以下的一项或多项选择所述部分程序参数:
多个程序脉冲,用于将所述多个比特中的所述相应的比特从第一值修改为第二值;以及
程序时间,用于将所述多个比特中的所述相应的比特从所述第一值修改为所述第二值。
3.如权利要求1所述的方法,其中:
所述程序矢量指示至少一个程序参数,所述至少一个程序参数包括多个程序脉冲中以及程序时间中的至少一个;并且
编码所述数据包括通过根据所述至少一个程序参数进行编程将所述多个比特部分地编程至所述多个比特中的至少一个比特。
4.如权利要求3所述的方法,其中确定所述程序矢量还包括减少所述至少一个程序参数以执行过采样。
5.如权利要求1所述的方法,还包括:
在已编码的数据上执行编程-和-证实序列;
基于所述编程-和-证实序列调整所确定的程序矢量;以及
基于调整后的程序矢量使用部分编程将所述数据再编码至所述多个比特。
6.如权利要求5所述的方法,其中:
执行所述编程-和-证实序列包括:
在被编码至所述多个比特的所述数据上执行至少一次读出操作;并且
基于所述至少一次读出操作,确定是否已经发生与所述多个比特中的至少一个比特相关联的延迟注册和过早注册中的至少一个;并且
调整所确定的程序矢量包括:
响应于确定所述延迟注册和所述过早注册中的至少一个已经发生,调整所确定的程序矢量中的与所述至少一个比特相关联的程序参数。
7.如权利要求6所述的方法,其中调整所确定的程序矢量还包括:
调整所述程序矢量中的与所述多个比特中的至少一个另外的比特相关联的另一个程序参数。
8.如权利要求6所述的方法,其中调整所述程序参数包括以下的一项或多项:
增加用于所述至少一个比特的多个程序脉冲;
增加用于所述至少一个比特的程序时间;
减小用于所述至少一个比特的多个程序脉冲;
减小用于所述至少一个比特的所述程序时间;以及
将多个擦除脉冲施加到所述至少一个比特。
9.如权利要求1所述的方法,其中:
确定所述程序矢量包括:
基于所述比特等级和所述多个部分程序参数确定完整的程序矢量;
将所述完整的程序矢量划分为第一程序矢量部分和第二程序矢量部分;以及
基于所述第一程序矢量部分编码所述数据。
10.一种被配置为通过使用等级调制将数据写入单级闪速存储器中的装置,所述装置包括:
处理块,被配置为:
基于待写入数据确定比特等级;
确定用于闪速存储器的多个比特的多个完整程序持续时间,其中每个完整程序程序持续时间指示将所述多个比特中的相应的比特从第一值修改为第二值的相应的程序持续时间相应;以及
基于所确定的比特等级和所确定的多个完整程序持续时间确定程序矢量,所述程序矢量指示着至少一个部分程序持续时间;以及
存储器接口模块,与所述处理块耦合并且被配置为:
从所述处理块接收所确定的程序矢量;并且
通过根据由所接收的程序矢量指示的所述至少一个部分程序持续时间部分编程所述多个比特将所述数据写入所述多个比特。
11.如权利要求10所述的装置,其中,
每个完整的程序持续时间是基于与各相应的持续时间相对应的程序脉冲的数目;并且
所述至少一个部分程序持续时间包括以下的至少一项:
程序时间,用于将所述多个比特中的至少一个比特从所述第一值至少部分地修改为所述第二值;以及
对应于所述程序时间的多个程序脉冲。
12.如权利要求10所述的装置,其中所述处理块还被配置为通过减少至少一个程序参数确定所述程序矢量以适于执行过采样。
13.如权利要求10所述的装置,其中:
所述处理块还被配置为:
控制在所写入的数据上执行编程-和-证实序列;并且
基于所述编程-和-证实序列调整所确定的程序矢量;并且
所述存储器程序模块进一步被配置为:
接收调整后的程序矢量;并且
基于调整后的程序矢量通过使用部分程序操作将所述数据再写入所述多个比特。
14.如权利要求13所述的装置,其中所述处理块被设置为:
通过以下方式控制所述编程-和-证实序列的执行:
控制对被写入到所述多个比特的所述数据执行至少一个读出操作;以及
基于所述至少一个读出操作,确定是否已经发生与所述多个比特中的至少一个比特相关联的延迟注册和过早注册中的至少一个;以及
通过以下的至少一个调整所确定的程序矢量:
响应于确定所述延迟注册和所述过早注册中的至少一个已经发生,调整所确定的程序矢量中的与所述至少一个比特相关联的所述至少一个部分程序持续时间;以及
调整程序矢量中的与所述多个比特中的至少一个另外的比特相关联的另一个部分程序持续时间。
15.一种用于通过使用等级调制提取被编码于单级闪速存储器中的数据的方法,所述方法包括:
在所述闪速存储器的多个比特上执行多个读出操作,每个读出操作包括:
基于至少一个部分程序参数部分地编程所述多个比特,以及
读出所述部分地编程的多个比特的状态;
至少基于与所述多个读出操作相关联的相应的读出状态确定与所述多个比特相关联的等级;以及
基于所确定的等级得到最终数据。
16.如权利要求15所述的方法,还包括在执行所述多个读出操作之前读出所述多个比特的初始状态,并且其中确定所述等级包括基于所述初始状态和与所述多个读出操作相关联的所述相应的读出状态确定所述等级。
17.如权利要求15所述的方法,其中确定所述等级包括至少基于于与所述多个读出操作相关联的所述相应的读出状态和用于所述比特等级中的至少一个比特的多比特表示来确定所述等级
18.一种被配置为通过使用等级调制提取被编码在单级闪速存储器中的数据的装置,所述装置包括:
存储器接口模块,与多个闪速存储器比特耦合并且被配置为:
读出所述多个闪速存储器比特的初始状态;并且
通过以下方式对所述多个比特执行多个读出操作:
基于至少一个部分程序持续时间执行所述多个比特的部分编程,其中所述至少一个部分程序持续时间指示用于将所述多个比特中的至少一个比特从第一值部分地修改为第二值的程序时间;以及
执行所述部分编程的多个比特的状态的读出;以及
处理块,与所述存储器接口模块耦合并且被配置为:
从所述存储器接口模块接收与所述多个读出操作相关联的相应的读出状态;
基于所述相应的读出状态确定与所述多个比特相关联的等级;以及
基于所述等级得到最终数据。
19.如权利要求18所述的装置,其中所述至少一个部分程序持续时间是基于对应于所述程序时间的程序脉冲的数目。
20.如权利要求18所述的装置,其中所述存储器接口模块还被配置为通过减少所述至少一部分程序持续时间执行所述多个读出操作以执行过采样。
CN201580050129.6A 2014-09-16 2015-08-11 基于单级闪速存储器中的等级调制的数据存储 Pending CN107077418A (zh)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US14/488,125 2014-09-16
US14/488,125 US9772935B2 (en) 2014-09-16 2014-09-16 Data storage based on rank modulation in single-level flash memory
PCT/US2015/044640 WO2016043868A1 (en) 2014-09-16 2015-08-11 Data storage based on rank modulation in single-level flash memory

Publications (1)

Publication Number Publication Date
CN107077418A true CN107077418A (zh) 2017-08-18

Family

ID=55454798

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201580050129.6A Pending CN107077418A (zh) 2014-09-16 2015-08-11 基于单级闪速存储器中的等级调制的数据存储

Country Status (3)

Country Link
US (2) US9772935B2 (zh)
CN (1) CN107077418A (zh)
WO (1) WO2016043868A1 (zh)

Families Citing this family (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20120117317A1 (en) * 2009-08-20 2012-05-10 Rambus Inc. Atomic memory device
US9646178B2 (en) * 2014-10-15 2017-05-09 Empire Technology Development Llc Secure data storage based on physically unclonable functions
US10347352B2 (en) * 2015-04-29 2019-07-09 Hewlett Packard Enterprise Development Lp Discrete-time analog filtering
US11207834B2 (en) * 2016-06-27 2021-12-28 Sciperio, Inc Selective laser sintered fused deposition printing
US11403241B2 (en) 2017-10-02 2022-08-02 Micron Technology, Inc. Communicating data with stacked memory dies
US10446198B2 (en) 2017-10-02 2019-10-15 Micron Technology, Inc. Multiple concurrent modulation schemes in a memory system
US10725913B2 (en) 2017-10-02 2020-07-28 Micron Technology, Inc. Variable modulation scheme for memory device access or operation
US11342044B2 (en) * 2019-05-28 2022-05-24 Nuvoton Technology Corporation System and method for prioritization of bit error correction attempts
CN110347417B (zh) * 2019-07-11 2023-08-29 南京沁恒微电子股份有限公司 固定向量表mcu的iap程序升级方法

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20070014153A1 (en) * 2004-12-14 2007-01-18 Gorobets Sergey A Pipelined Programming of Non-Volatile Memories Using Early Data
US20070025150A9 (en) * 2001-08-28 2007-02-01 June Lee Flash memory device capable of preventing program disturbance according to partial programming
US20090132758A1 (en) * 2007-11-20 2009-05-21 California Institute Of Technology Rank modulation for flash memories
CN103081429A (zh) * 2010-10-18 2013-05-01 索尼公司 用于单频网络中的分级调制的接收器及接收方法
US20130254466A1 (en) * 2012-03-08 2013-09-26 Texas A&M University System Rank-modulation rewriting codes for flash memories

Family Cites Families (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4107550A (en) 1977-01-19 1978-08-15 International Business Machines Corporation Bucket brigade circuits
US4686554A (en) 1983-07-02 1987-08-11 Canon Kabushiki Kaisha Photoelectric converter
US4701884A (en) 1985-08-16 1987-10-20 Hitachi, Ltd. Semiconductor memory for serial data access
JP2846822B2 (ja) 1994-11-28 1999-01-13 モトローラ株式会社 2層フローティングゲート構造のマルチビット対応セルを有する不揮発性メモリ及びそのプログラム方法
JP3001409B2 (ja) 1996-02-19 2000-01-24 モトローラ株式会社 2層フローティングゲート構造のマルチビット対応セルを有する不揮発性メモリ及びそのプログラム/消去/読出方法
JP4274734B2 (ja) 2002-03-15 2009-06-10 三洋電機株式会社 トランジスタ回路
US7656706B2 (en) 2007-01-05 2010-02-02 The Texas A&M University System Storing information in a memory
US8225180B2 (en) 2007-11-20 2012-07-17 California Institute Of Technology Error correcting codes for rank modulation
EP3633942A1 (en) 2009-09-16 2020-04-08 Nec Corporation Adaptive selection of a modulation scheme
US8880783B2 (en) 2011-07-05 2014-11-04 Kandou Labs SA Differential vector storage for non-volatile memory
WO2011156750A2 (en) 2010-06-10 2011-12-15 The Regents Of The University Of California Efficient two and multiple write wom-codes, coding methods and devices
US8456919B1 (en) 2011-11-10 2013-06-04 Sandisk Technologies Inc. Method and apparatus to provide data including hard bit data and soft bit data to a rank modulation decoder
US9230652B2 (en) 2012-03-08 2016-01-05 California Institute Of Technology Flash memories using minimum push up, multi-cell and multi-permutation schemes for data storage

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20070025150A9 (en) * 2001-08-28 2007-02-01 June Lee Flash memory device capable of preventing program disturbance according to partial programming
US20070014153A1 (en) * 2004-12-14 2007-01-18 Gorobets Sergey A Pipelined Programming of Non-Volatile Memories Using Early Data
US20090132758A1 (en) * 2007-11-20 2009-05-21 California Institute Of Technology Rank modulation for flash memories
CN103081429A (zh) * 2010-10-18 2013-05-01 索尼公司 用于单频网络中的分级调制的接收器及接收方法
US20130254466A1 (en) * 2012-03-08 2013-09-26 Texas A&M University System Rank-modulation rewriting codes for flash memories

Also Published As

Publication number Publication date
US20160077765A1 (en) 2016-03-17
US9772935B2 (en) 2017-09-26
US9983991B2 (en) 2018-05-29
US20180011785A1 (en) 2018-01-11
WO2016043868A1 (en) 2016-03-24

Similar Documents

Publication Publication Date Title
CN107077418A (zh) 基于单级闪速存储器中的等级调制的数据存储
DE102013103391B4 (de) Betriebsverfahren eines Controllers, der eine nichtflüchtige Speichervorrichtung steuert, und Mappingmuster-Auswahlverfahren zum Auswählen eines Mappingmusters, das ein polar codiertes Codewort Multibitdaten einer nichtflüchtigen Speichervorrichtung zuordnet
CN103778958B (zh) 控制非易失性存储器件的控制器以及控制器的操作方法
CN105427887B (zh) 用于三维垂直快闪存储器的编码方案
EP3207507B1 (en) Augmenting neural networks with external memory
CN110503999A (zh) 用于管理存储器访问操作的方法和系统
CN102132350A (zh) 用于闪存存储器中的软解映射和单元间干扰减轻的方法和设备
CN109661672B (zh) 使用强化学习利用外部存储器增强神经网络
CN105528560A (zh) 基于物理不可克隆功能的安全数据存储
US20190050723A1 (en) Methods and apparatus for training a neural network
US11915766B2 (en) Automatic program voltage selection network
KR102199285B1 (ko) 딥러닝 신경망의 압축 방법 및 이를 수행하기 위한 장치
CN109542394A (zh) 控制器、半导体存储器装置及具有它们的存储器系统
CN110277126A (zh) 存储器装置和具有存储器装置的存储器系统
CN107886988A (zh) 在存储器编程期间斜变抑制电压
US20080168215A1 (en) Storing Information in a Memory
CN111736759B (zh) 安全数据移除
US11934924B2 (en) Learning: learning design policies based on interactions
KR20190068392A (ko) 음성인식 시스템 및 이의 전사데이터 생성 방법
US11527299B2 (en) Polar neural network decoder for memory devices
CN105373442B (zh) 用于监视存储器数据错误状态的方法与装置
CN107562655B (zh) 一种数据存储方法和装置
CN105446731B (zh) 指令处理的方法与装置
US8711620B2 (en) Memory device having collaborative filtering to reduce noise
US9390794B2 (en) Semiconductor device and operating method thereof

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
WD01 Invention patent application deemed withdrawn after publication

Application publication date: 20170818

WD01 Invention patent application deemed withdrawn after publication