CN103339617B - 存储器系统中的至少半自主模块及其方法 - Google Patents

存储器系统中的至少半自主模块及其方法 Download PDF

Info

Publication number
CN103339617B
CN103339617B CN201280007135.XA CN201280007135A CN103339617B CN 103339617 B CN103339617 B CN 103339617B CN 201280007135 A CN201280007135 A CN 201280007135A CN 103339617 B CN103339617 B CN 103339617B
Authority
CN
China
Prior art keywords
module
function
systems according
accumulator
controller
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.)
Active
Application number
CN201280007135.XA
Other languages
English (en)
Other versions
CN103339617A (zh
Inventor
斯蒂芬·P·范阿肯
约翰·L·西伯里
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.)
Micron Technology Inc
Original Assignee
Micron Technology Inc
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 Micron Technology Inc filed Critical Micron Technology Inc
Publication of CN103339617A publication Critical patent/CN103339617A/zh
Application granted granted Critical
Publication of CN103339617B publication Critical patent/CN103339617B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • G06F12/023Free address space management
    • G06F12/0238Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory
    • G06F12/0246Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory in block erasable memory, e.g. flash memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/16Handling requests for interconnection or transfer for access to memory bus
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1016Performance improvement
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1032Reliability improvement, data loss prevention, degraded operation etc
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1041Resource optimization
    • G06F2212/1044Space efficiency improvement
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1048Scalability
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/21Employing a record carrier using a specific recording technology
    • G06F2212/214Solid state disk
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/72Details relating to flash memory management
    • G06F2212/7206Reconfiguration of flash memory system
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/72Details relating to flash memory management
    • G06F2212/7208Multiple device management, e.g. distributing data over multiple flash devices

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Techniques For Improving Reliability Of Storages (AREA)
  • Memory System (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

描述一种用于与主机装置进行数字数据通信以提供数据存储容量的存储器系统。所述系统可包含控制器和多个模块,每一模块包含一非易失性存储器装置,其中所述模块经配置以关于所述模块至少部分地基于参数来执行管理功能。所述参数是由所述控制器和/或所述模块提供。在一个特征中,所述系统和所述模块可支持关于涉及所述模块的数据存取的多种形式的并行性。

Description

存储器系统中的至少半自主模块及其方法
技术领域
本发明大体涉及使用非易失性存储器(例如,固态驱动器(“SSD”)和其它存储装置)的存储器系统的领域,且更明确地说涉及用于在存储器系统中使用的至少半自主模块和相关联方法,以及相关特征。
背景技术
现有技术固态驱动器通常包含可与标准主机装置以及多个快闪存储器装置介接的控制器。所述快闪存储器装置一般各自呈存储器裸片的形式。控制器与快闪存储器装置之间的连接通常是呈快闪导向接口的形式,其中每一存储器装置个别地连接到快闪导向接口。所述控制器可具有多个快闪导向接口,其中这些接口中的每一者连接到多个存储器装置。申请人认识到,关于此现有技术配置、特别是关于较大容量的固态驱动器,存在许多缺点。举例来说,控制器必须控制大量的个别存储器装置。作为另一实例,控制器上所需的信号连接点的数目与驱动器的容量成比例地增加。在再一实例中,控制器对管理功能(例如,额外负荷(overhead)功能,例如磨损平衡)负责,以使得控制器与存储器装置之间的接口负担上了与这些功能有关的业务。作为又一实例,控制器对大量存储器装置进行测试和监视是一项复杂的任务。
关于块导向非易失性存储器,申请人还认识到现有技术中关于非易失性存储器的使用的相关问题。应了解,现有技术中关于存取块导向非易失性存储器的盛行方法为将用户数据加上伴随的额外信息准确地分配到物理页上。对本论述而言,术语“块导向”有关于基于页的存储器的使用,对所述存储器的使用是通过使用长度大体上等于页长度的用户数据块来实现。如将进一步论述,就块导向存储器来说,一些页可基于短于一个页长度的用户数据块而部分地未使用,但用户数据块不长于页长度。作为非限制性实例,NAND快闪存储器通常如此配置以成为此类型的块导向存储器。块导向存储器中的此类不灵活分配因此产生了所存储信息与包括每一物理页的存储胞元的数目之间的完全对应,并且在每胞元单位(SBC)存储器和每胞元多位(MBC)存储器两者的产业内是习惯做法。
申请人进一步认识到,此方法在将用户数据匹配到特定存储器装置中的页单元时是不灵活的。物理页大小为存储器的设计参数且不可改变。在物理页中的存储胞元的数目与应用所需的每块的胞元的数目之间失配的情况下将招致惩罚。惩罚可以是胞元不足以满足ECC要求,因此导致应用的不良可靠性;或惩罚可以是存储效率低(如果每一物理页中存在比所需数目多的胞元的话)。因此,非易失性存储器装置(例如,NAND快闪存储器)的设计者受到的挑战是尝试在制造存储器之前预测出所需的页大小。几乎不可避免地,给定的页大小将不会特别适合于存储器的使用所针对的应用的至少某一子集。
相关技术的前述实例以及其相关限制意欲为说明性而非排他性的。在阅读本说明书以及查看了图式后,相关技术的其它限制对所属领域的技术人员而言将变得显而易见。
发明内容
在一个方面中,本发明涉及一种存储器系统。所述存储器系统包括具有存储器装置的模块,其中所述模块经配置以关于所述模块且至少部分地基于参数来执行管理功能;以及控制器,其中所述参数是由所述控制器和/或所述模块提供。
在另一方面中,本发明涉及一种具有存储器装置的模块。所述模块经配置以关于所述模块且至少部分地基于参数来执行管理功能,其中所述参数是由控制器和/或所述模块提供。
在另一方面中,本发明涉及一种用于与主机装置进行数字数据通信以为所述主机装置提供数据存储容量的存储器系统。所述存储器系统包括:包含非易失性存储器区段的至少一个模块,且所述模块经配置以基于一个或一个以上模块输入参数针对仅所述模块的所述非易失性存储器区段独立地执行磨损平衡功能、垃圾收集功能和位密度设定功能中的至少一者;以及控制器,其经配置以用于与所述主机装置的所述数字数据通信且经进一步配置以用于与所述模块的模块数字数据通信以使得流入和流出所述模块的任何数据都通过所述控制器,且至少所述控制器经配置以将所述模块输入参数提供给所述模块以界定所述模块中的所述磨损平衡功能、所述垃圾收集功能和所述位密度功能中的至少一者的独立执行。
在另一方面中,本发明涉及一种用于与主机装置进行数字数据通信以为所述主机装置提供数据存储容量的存储器系统的部分。所述存储器系统包含用于直接与所述主机装置介接以提供所述数字数据通信的控制器以及多个模块,所述多个模块与所述控制器介接以用于作为与所述主机装置的所述数字数据通信的部分的在所述控制器与所述模块之间的模块数字通信。所述模块中的至少一者包括:非易失性存储器区段;以及一布置, 其用于从所述控制器接收多个模块输入参数以界定磨损平衡功能、垃圾收集功能和位密度功能中的至少一者且用于基于所述模块输入参数针对仅所述模块的所述非易失性存储器区段独立地执行所述磨损平衡功能、所述垃圾收集功能和所述位密度设定功能中的至少一者的执行。
在另一方面中,本发明涉及一种方法。所述方法包括接收具有存储器装置的模块中的参数;以及在所述模块中,关于所述模块且至少部分地基于所述参数来执行管理功能。
在另一方面中,本发明涉及一种在用于与主机装置进行数字数据通信以为所述主机装置提供数据存储容量的存储器系统中进行的方法。所述方法包括:提供至少一个模块,所述模块包含非易失性存储器区段,且配置所述模块以基于一个或一个以上模块输入参数针对仅所述模块的所述非易失性存储器区段独立地执行磨损平衡功能、垃圾收集功能和位密度设定功能中的至少一者;以及针对与所述主机装置的所述数字数据通信且针对与所述模块的模块数字数据通信来布置控制器,以使得流入和流出所述模块的任何数据都通过所述控制器,且配置至少所述控制器以将所述模块输入参数提供给所述模块以界定所述模块中的所述磨损平衡功能、所述垃圾收集功能和所述位密度功能中的至少一者的独立执行。
附图说明
在图式的所参考图中说明示范性实施例。预期本文中所揭示的实施例和图将为说明性而非限制性的。
图1为说明根据本发明的一实施例所制造的SSD的框图,所述SSD在此处展示为总系统的部分。
图2为说明根据本发明的一实施例的SSD的其它细节的框图。
图3为说明在SSD(例如,图1和/或2的SSD)中所使用的模块的实施例的框图。
图4为说明供模块(例如,图3的模块)使用的模块接口的实施例的框图。
图5为结合存储器区段在模块的多个存储器装置上的实例布置以图式说明所述存储器装置的框图。
图6为可在模块(例如,图3的模块)中使用的功能引擎的实施例的框图。
图7为说明可使用图6的功能引擎执行的磨损平衡功能的实施例的流程图。
图8为说明可使用图6的功能引擎执行的垃圾收集功能的实施例的流程图。
图9为说明可使用图6的功能引擎执行的位密度配置功能的实施例的流程图。
图10为说明可使用图6的功能引擎执行的FTL(快闪转译层)功能的实施例的流程图。
图11为说明可协同图6的功能引擎执行的读取操作的实施例的流程图。
图12为说明可协同图6的功能引擎执行的写入操作的实施例的流程图。
图13为说明可协同图6的功能引擎执行的擦除功能的实施例的流程图。
图14为具有与物理页的长度不同的长度的用户数据块的图解说明。
图15为以图式说明存储用户数据块的集合的连续物理页的集合的框图,所述用户数据块中的每一者包含小于一个物理页的长度的长度。
图16为以图式说明存储用户数据块的集合的连续物理页的集合的框图,所述用户数据块中的每一者包含大于一个物理页的长度的长度。
图17为说明用于以实现在图15和16的背景中所描述的数据结构的方式存储/写入用户数据块的方法的实施例的流程图,且其中块长度与页长度可不同。
图18为说明用于从上文在图15和16的背景中所描述的数据结构读取用户数据块的方法的实施例的另一流程图,且其中块长度与页长度可不同。
具体实施方式
呈现以下描述以使所属领域的一般技术人员能够制造并使用本发明,且以下描述是在专利申请案以及其要求的背景中提供的。对所描述实施例的各种修改对所属领域的技术人员而言将为易于显而易见的,且本文中所教示的一般原理可应用于其它实施例。因此,本发明不欲限于所展示的实施例,而是应符合与本文中所描述的原理和特征相一致的最广范围(包含修改和等效物在内),如所附权利要求书的范围内所界定。请注意,图式并未按比例绘制且本质上以被认为最好地说明了关注特征的方式而为图解的。可为了增强读者对诸图中所提供的各种视图的理解而采用描述性术语,但所述描述性术语绝不意欲为限制性的。
现在将注意力集中到诸图,其中遍及各视图,相似编号可指代相似组件。图1为根据本发明的一实施例所制造的固态驱动器(SSD)10的框图,所述固态驱动器(SSD)10形成了总系统12的一部分,在所述系统中所述固态驱动器与主机20介接。在图2的实例实施例中,SSD10的存储容量是由总共20个模块提供,所述模块中的一些是由参考数字30表示。可使用任何合适数目的模块,同时保持在本文中的教示的范围内。每一模块包含可为快闪存储器的非易失性存储器(“NVM”)区段(例如,数个NVM装置,例如数个NVM裸片),但可使用任何合适的存储器技术,例如相变存储器(“PCM”)以及其它形式的可变电阻存储器。应了解,图1的模块布置支持“备用”模块的使用,(例如) 以防止总数个模块的某一部分的使用的损失。如果SSD的总容量以一太字节(1TB)为目标,那么可以看出各自具有64吉字节(64GB)的容量的十六个模块能满足此目标。因此,总共20个模块可提供5个模块的余量,所述5个模块可被视为备用模块。将数个NVM装置包含于单一模块中可使在读取和写入操作期间直接连接到控制器的个别存储器装置的数目减少了存储器模块中的NVM裸片的数目的因数。
如将看出,与模块的通信是经由模块接口提供。所述模块接口可为点对点接口,且可针对系统中的每一模块提供所述模块接口的独立实例。这是切合实际的,因为模块引脚计数低。低引脚计数可使许多模块接口端口能够在SSD控制器的常规垫环(pad-ring)约束内以ASIC形式来提供,且每一端口向一个模块提供接口。模块与SSD控制器端口的点对点互连可实现特定模块接口的资源到SSD控制器与所述特定模块之间的事务的专用分配。当通过主控制器与相应模块之间的模块接口所建立的互连为专用时,主控制器与模块之间的事务无需与其它模块共用所述接口的资源;这些事务可因此以每一模块接口的全带宽执行。并且,当连接是专用于一个模块时,可避免在接口连接到一个以上模块的情况下本来可能是必要的仲裁和资源共享。考虑到就事务的数量以及经由接口所传送的数据量两者来说增加的性能,这又可提高系统性能。
仍参看图1,控制器40经由用于每一模块的模块接口42(使用参考数字指示了其中的几个)与模块30中的每一者介接。所述控制器又经由合适的高级主机接口44介接到主机20,所述主机接口可为(例如)用于将存储器系统附接到计算机的各种接口中的任一者。举例来说,主机接口44可为用于一些系统12的SATA(串行ATA)接口。其它系统12可采用使用SAS(串行附接SCSI)接口这种方式,或所述接口可为后平面导向(back planeoriented)的,(例如)使用PCI Express。就此而言,可鉴于特定最终用途来选择合适形式的主机接口。
可包含高速缓冲存储器46(例如)以将性能增强提供给总SSD系统10。高速缓冲存储器可通过附接任何合适的存储器装置(例如,SDRAM、PCM、快速快闪(例如,SBC)以及其类似者)来实现。SSD控制器40可具有用于与一个或一个以上高速缓冲存储器装置进行通信的专用接口。取决于为特定SSD设计所选择的高速缓存技术的本质,此接口可专用于高速缓冲存储器。如果高速缓冲存储器装置46为模块,那么高速缓冲存储器接口可与NVM模块接口相同或类似。
控制器40在与用于现有技术SSD的控制器比较时可被视为简化的。因为系统10中的模块可能要承担将在下文描述的详细管理功能,所以SSD控制器可卸去通常由现有技术控制器执行的许多功能的负担。所卸下功能的非限制性实例可至少包含(1)磨损平 衡、(2)垃圾收集、(3)逻辑到物理地址转译、(4)物理页到逻辑块抽象化、(5)ECC功能,以及(6)存储器调节和信号处理。因为可减少或移除在现有技术SSD控制器中可能需要大量CPU以及其它支持活动的功能中的许多功能,例如上文所列出的那些功能,所以SSD控制器的带宽可相对更多地专用于在主机与所连接的模块之间传送用户数据。
转到图2并结合图1,图2为说明控制器40的一实施例的框图。所述控制器包含多个控制器模块端口100,其中每一者提供模块接口42以与多个存储模块30(图1)通信。每一控制器模块端口100提供一组相关联接口信号连接,所述接口信号连接对于各控制器模块端口来说都是相同的。作为非限制性实例,控制器40可经由二十个个别模块接口42与二十个模块30通信,如图1中所展示。SSD控制器中的控制器模块端口的数目可变化。实施于给定SSD控制器中的控制器模块端口的具体数目可取决于涉及SSD控制器自身的设计考虑以及取决于SSD系统。这些设计考虑可涉及SSD的所要存储容量、所要性能以及所要成本。不管实施于特定实施例的SSD控制器中的控制器模块端口的数目是多少,都会提供控制器模块接口的益处。
继续描述主控制器40,数据路径和控制逻辑区段120经配置以使用双向数据路径(例如,总线连接122,使用参考数字指示了其中的几个)执行每一活动控制器模块端口100与SSD控制器的剩余部分之间的数据传送。控制总线124可在微处理器130(其使用存储于存储器132中的代码来操作)与含于构成SSD控制器的逻辑块中的寄存器134之间提供数据路径。每一控制器模块端口连接到总线124以方便微处理器130进行控制。因此,微处理器130可在每一模块端口中对寄存器136进行读取和写入,并且在这样做时可管理(例如,设定、开始、停止和监视)每一控制器模块端口的操作。数据缓冲器区段140可提供存储器以用于将流过SSD控制器的数据块分级为既定经由主机接口端口144传送到主机的读取数据或既定经由控制器模块端口100中的一者传送到模块的写入数据。双向数据路径146(使用参考数字指示了其中的几个)可提供于数据路径和控制区段120与数据缓冲器区段140之间。应了解,并不要求双向数据路径146的数目与控制器模块端口100的数目之间的一对一对应。就此而言,可存在数目足够的离散双向数据路径146以便确保足够的总数据带宽。也就是说,双向数据路径146的总数可小于控制器模块端口的总数、等于模块端口的总数或大于控制器模块端口的总数。
存储器132可被微处理器130存取以便执行管理SSD控制器的功能,例如管理可能在SSD控制器的正常操作期间出现的错误和异常,包含由于从所述模块中的一者或一者以上接收到的数据中的错误、由于SSD控制器中的异常条件(例如,资源冲突、缓冲存储器错误和其类似者)以及由于在其它正常操作的过程期间出现的非预期问题而出现的 那些错误和异常。
高速数据路径(例如,总线150)可用以在缓冲区段140与主机接口端口144之间传送数据。此总线可具有支持关于(例如)下列各者的SSD系统要求的任何合适设计:经由主机接口进行传送的总计传送速率;经由主机接口所发出的命令与对所述命令的响应之间的等待时间;以及支持多个命令同时执行的并行性。主机接口端口144经由控制总线124与微处理器130通信,以使得所述微处理器可管理(例如,控制和/或监视)主机接口44。尽管图2中仅描绘单一主机接口44,但在给定SSD控制器实施例中可存在一个以上主机接口。对于具有多个主机接口的实施例,主机接口的每一实例可为相同类型的接口(如多个SAS端口的情况),或不同实例可为不同类型(例如,SAS、SATA和PCI Express的某一组合)。
主机到SSD控制器接口44可由主机接口端口144提供。此端口144包含经配置以执行主机接口定义所要求的所有操作的信号连接和/或电路。如果SAS或SATA接口是由主机接口端口144提供,那么物理连接可由被组织为两个差分对的最少四个信号连接组成。在其它实施例中,(例如)在使用SAS和使用次级接口信号连接的例子中,可存在额外差分信号对。对于SAS的情况,可使用一个以上主机端口:在此实施例中,可存在物理连接器的两个集合而非一个集合。
现在将注意力集中到图3,其为说明根据本发明的实施例所制造的模块30(还参见图1)的框图。所述模块可包含多个存储器装置170。存储器装置的总数可从一变化到八或更大,且存储器装置可基于任何适当技术。在一些实施例中,存储器技术为NAND快闪存储器。组成模块的总存储器的装置可为标准的市售部件或可经定制以供在模块中使用的装置。数个存储器装置170可附接到媒体端口176,(例如)以增加所附接存储器装置的同时操作和/或增加SSD中的数据吞吐量。如在图3中所见,在一些实施例中,每一媒体端口176可将接口提供给存储器装置的群组。
仍参看图3,每一媒体端口176提供可用以与多个存储器装置进行通信的存储器装置接口180。此外,每一模块30可包含多个媒体端口176。在一些实施例中,媒体端口的数目为二或四。每一媒体端口176可提供用于与标准NAND快闪存储器装置进行通信的工业标准接口,例如ONFI(开放式NAND快闪接口),或每一媒体端口可提供既定用于与经定制的存储器装置进行通信的定制接口。如上文所提,一个或一个以上存储器装置170可经由每一存储器装置接口180进行通信。在一些实施例中,数目可从一变到四。此外,不存在相同数目的存储器装置应连接到每一媒体端口的要求。此外,在一些例子中,特定媒体端口可能没有任何存储器装置连接到它。此情形可(例如)在特定模块布置 未使用所有可用媒体端口时出现。
数据路径和控制区段190形成模块30的部分且可经配置以引导去往和来自媒体端口176的数据业务,其方式为结合媒体端口自身使用各种系统资源来管理(例如,协调)去往和来自所述多个媒体端口的数据业务。在每一媒体端口176与所述模块的剩余部分之间的数据流中可支持多个数据路径。解码器读取数据路径200包含:到解码器202的数据路径;到数据缓冲器区段210的直接数据路径204;到读取逻辑212的数据路径;以及至少流过数据路径和控制单元190的从一个媒体端口(在读取模式中)到另一媒体端口(在写入模式中)的数据路径。写入数据路径可包含:从编码器220起的数据路径;从数据缓冲器区段210起的直接数据路径230;以及从写入逻辑222起的数据路径。请注意,可在这些各种数据路径上发生的大部分(如果非全部)数据流可与所有其它数据流同时保持(sustain)。可用以维持所述同时保持的方式中的一些描述如下:
a.使用一个媒体端口176来执行到其所附接的存储器装置170中的一者的第一写入功能。所述第一写入功能所使用的数据路径为所述模块中的可用写入数据路径中的一者。同时,使用另一媒体端口176来执行到其所附接的存储器装置170中的一者的第二写入功能。所述第二写入功能中所使用的数据路径可为尚未被所述第一写入功能使用的剩余写入数据路径中的任一者。因为两个媒体端口正在执行同时写入功能,所以接收写入模式数据的两个存储器装置为相异的。请注意,此情形在单一存储器装置为来自两个媒体端口的同时命令的目标的情况下是不可能的,这是因为每一存储器装置附接到仅一个媒体端口。
b.使用第一媒体端口176来执行到其所附接的存储器装置170中的一者的写入功能。所述写入功能所使用的数据路径为所述模块中的可用写入数据路径中的一者。同时,使用第二媒体端口176来执行从其所附接的存储器装置中的一者进行读取的读取功能。读取数据路径可为所述第二媒体端口可用的任何读取数据路径。
c.可使用单一媒体端口176来同时执行一个以上命令。此可作为附接到同一媒体端口176的两个或两个以上存储器装置中的每一者上的活动命令或作为附接到同一媒体端口176的单一存储器装置上的多个命令而发生。在任一情形中,命令的并行性需要在由特定媒体端口176所提供的单一媒体接口192以及模块的数据路径和控制区段190之上的同时数据流。数据流的此并行性与上文在(a)和(b)中所描述的情况的不同之处在于,存在由如下事实所强加的时间约束:在任何一个时刻,仅一个数据值可存在于特定媒体端口接口192上。为了保持多个数据流,特定媒体端口接口192可操作,以使得所述接口在时间上共享,使得允许每一活动命令在它必须屈服于其它活动命令中的一者之前在有 限量的时间内传送数据。数据通信技术中指代此概念的常用术语为所属领域的一般技术人员所熟悉的“时域多路复用”。
d.在单一数据单元(例如,块)经分割且跨越一个以上存储器装置被写入的情况下,可使用多个媒体端口176来协同地执行单一读取或写入命令。在本发明的背景中,数据可以各种方式分割:一个可能分割涉及通过交织将一块分成两个或两个以上分区。交织可沿着位或字节边界或通过使用较大的单元(例如,字、双字、扇区(sector)和其类似者)来执行。交织可在编码之前或之后对写入操作执行。交织步骤是在编码之前还是在编码之后发生决定了用于解码器的对应次序。如果交织是在编码之前执行,那么为每一分区执行单独编码步骤,这可表示需要与分区一样多的编码器来支持所述功能。用于跨越多个存储器装置写入/读取单一块的交织功能的一个优点在于,所述交织功能致使实现了比非交织方法可能实现的数据吞吐量高得多的数据吞吐量。
模块30包含一个或一个以上解码器202。作为数据路径资源,在本实施例中,每一解码器202一次可支持(例如,数据块或数据分区的)仅一次传送,以使得在模块实施例(例如,由图3所说明)提供了多个解码器时,可发生不同传送的多个同时解码。多个解码器的存在提供了真正地同时解码两次不同传送的能力。
解码器的配置可根据存储器装置的使用方式而变化,且因此,存在可存在于模块中的多个变化。作为一实例,如果特定模块的存储器装置是基于快闪技术,那么可使用不同类型的快闪存储器。此外,在可用快闪的多种类型内,针对每一快闪类型可存在一种或一种以上使用模式。举例来说,如果选择市售快闪装置,那么存储器装置(或存储器装置的一部分)可以每胞元单位(SBC)模式或每胞元多位(MBC)模式使用。在一实施例中,可写入以代数错误校正码(“代数ECC”)编码的数据,而不管所使用的模式如何。因此,用于此情况的适当解码器为解码已施加的特定代码且校正错误直到达到特定代码所允许的程度的解码器。作为另一情况,模块对SBC或MBC存储器使用的特定代数代码可进一步取决于SBC或MBC存储器是否以直接对应于存储器装置的页结构的单元进行存取或模块是否代表主机执行从主机的观点(以及管理责任)移除页层级细节的抽象化服务。任一情况可涉及不同的解码器实施例。
另一实例在于关于与读取、写入和擦除相关的存储器装置的内部功能提供可见性、存取和控制的存储器装置的使用。由此些存储器装置组成的模块可被以大于标准存储器的精度写入和读取,上文刚刚描述的实例正是其典型。较大的精度不仅可提供信息存储的较大密度,而且还可提供可用以促进解码功能的额外信息。此额外信息可以写入到快闪存储器和从快闪存储器读取的数据的精度的额外位的形式存在且可被称为“软位”, 其为数据通信领域的一般技术人员所熟悉的术语。此存储器还考虑到补偿数据的读取相关或写入相关失真的功能,且因此提供用于配置(例如,调适和/或校正)读取功能和写入功能的能力以便提供较高的数据存储密度(每胞元更多位)和较大的可靠性(在快闪存储器中常常表现为增加的编程/擦除循环)中的一者或两者。所描述的此些能力又可能需要所述解码器的不同配置。
鉴于这些实例,如果用于模块的一实施例的一个准则为关于不同类型的存储器装置的使用提供灵活性,那么所述模块中的对应解码布置可提供多模式功能。可预期的特定变化中的一些包含:
a)仅BCH(Bose Chaudhuri Hoquenghem,博斯-查德胡里-霍昆格姆)解码,具有一个或一个以上位错误容量设定,
b)仅RS(Reed Solomon,雷德-所罗门)解码,具有一个或一个以上符号错误容量设定,
c)BCH解码与合适形式的循序解码(例如,卷积)组合,以及
d)RS解码与合适形式的循序解码组合。
可经配置以提供一个以上解码器功能的模块可用特定模式操作解码器的特定实例。举例来说,双解码器模块可支持两个数据路径上的真正解码并行性。由模块中的多个解码器所提供的灵活性的部分产生自如下事实:在给定时间,作为非限制性实例,一个解码器可经配置为仅BCH解码器,而另一解码器可经配置为与雷德-所罗门解码器组合的卷积(维特比检测器)解码器。
关于图3的编码器220,上文刚刚进行的论述可至少大体上扩展到编码器和编码功能,这是因为所述两个功能完全类似。因此,上文刚刚关于存储器使用、解码器模式、灵活性和并行性所进行的论述同等地应用于编码情况。
可提供读取逻辑212以作为模块作为存储子系统的至少半自主能力的操作支持。针对校准和/或补偿功能提供对存储器装置的内部操作的特定控制的存储器装置,由读取逻辑212所执行的功能可包含(例如)结合校准或补偿所使用的数据处理,例如2010年9月23日申请的题为“基于存储器质量监视器的补偿方法和设备(MEMORY QUALITYMONITOR BASEDCOMPENSATION METHOD AND)”的共同拥有的同在申请中的美国专利申请案第12/888,585号(下文中,′585申请案)中所描述的平均值和阵列处理器功能。明确地说,补偿可涉及使用与存储器装置的物理布置相关联的参数的信号处理,而校准可涉及可在直接软件控制下作为硬件功能执行的数个量度收集分析功能。
关于写入逻辑222,关于上文刚刚论述的读取逻辑212和读取功能的论述还可至少大体上扩展到写入逻辑和写入功能。在一些情况下,可存在特定原因或优点以在写入模式而非读取模式中执行与补偿或调适相关联的操作。关于此调适,可收集例如信噪比(“SNR”)相关数据等信息以作为后续参数值的基础。在位密度配置的例子中且作为非限制性实例,模块可利用与存储器的特定物理区有关的SNR统计数据,当重新分配所述区时,在配置所述区的位密度过程中通过垃圾收集功能将所述区回收。这可能是写入功能与读取功能之间的主要差异。模块可包含读取功能与写入功能的任何合适组合。因此,在给定模块中,可存在可配置写入功能而无可配置读取功能;或可存在可配置读取功能而无可配置写入功能。在一些实施例中,可提供可配置读取功能和可配置写入功能两者。
从数据缓冲器区段210到数据路径和控制区段190的直接写入数据路径230可在必要时提供低等待时间数据通信,以及用于不需要解码功能或读取功能的传送的替代数据传送路径。直接写入路径为数据传送是到媒体端口176中的一者和相关联的存储器装置170的写入路径。
直接读取数据路径204类似于直接写入路径230且从数据路径和控制区段190延伸到数据缓冲器区段210,(例如)以在必要时提供低等待时间数据通信,以及用于不需要编码功能或写入功能的传送的替代数据传送路径。直接读取路径为数据传送是来自媒体端口176中的一者和相关联的存储器装置170的读取路径。
数据缓冲器区段210连接到提供模块接口42(参见图1和2)的一个实例的控制器端口240。数据缓冲器区段实施为数据缓冲器与媒体端口之间以及数据缓冲器与模块接口之间的传送提供数据分级的数据缓冲器功能。此数据缓冲器功能可提供(例如)去往和来自缓冲器的传送之间的速度匹配。举例来说,任何快闪读取命令可涉及存储器装置数据到模块接口的传送以作为(1)起源于存储器装置170且终止于缓冲器210的离散传送与(2)起源于缓冲器210且流过模块接口42的后续传送的组合。相反地,写入到存储器装置的任何功能可涉及(1)经由模块接口42进入且终止于数据缓冲器210的离散传送与(2)起源于数据缓冲器210且终止于存储器装置170的后续传送的组合。
应了解,数据缓冲器区段210可包含经配置以控制数据进出数据缓冲器的流动的DMA部分242。一般而言,DMA资源是由指派给每一可能数据路径的开始偏移、计数和排序功能组成。
继续参看图3,每一模块30包含嵌入式微处理器300,所述微处理器从程序存储器302操作,且所述微处理器经由微处理器总线连接到组成所述模块的各种组件,所述微处理器总线应理解为存在但为了说明清楚而未展示。明确地说,所述微处理器可存取各 种组件中的寄存器。存储于程序存储器302中的软件可基于特定实施例而变化。所属领域的一般技术人员将认识到,给定功能的硬件支持的程度可变化。因此,在执行管理功能时软件与硬件之间的合作可响应于下列各者的变化来配置:
a.存储器装置类型。
b.编码和解码功能(例如,算法)。
c.补偿功能(对读取数据应用补偿以及在写入数据之前应用补偿)。
d.用于快闪存储器的块擦除功能。
e.模块接口支持(命令执行)功能。
f.自主磨损平衡功能,其中模块执行磨损平衡以作为与主控制器无关的自含功能。
g.半自主磨损平衡功能,其中主控制器通过经由模块接口将相关参数和命令提供给模块来控制磨损平衡功能。
h.局部自主快闪转译层(FTL)实施。
i.引导式快闪转译层(通过主机控制)实施,其中主控制器通过经由模块接口将相关参数和命令提供给模块来控制快闪转译操作。
j.主机所引导的物理存储器存取。主机可通过将适当命令发出到主控制器来存取多个模块中的物理存储器,且主控制器可通过将适当直接存取命令发出到附接到所选择模块的存储器装置中的一者来响应此些命令。
k.模块所引导的物理存储器存取,具有到主机的逻辑块抽象化。
l.自主垃圾收集(通常应用于局部FTL)。
m.半自主垃圾收集,其中主控制器通过将适当参数写入到将应用此控制的模块来对附接到主控制器的模块中的一者或一者以上中的垃圾收集功能施加控制。
n.支持引导式垃圾收集(例如,内部块复制功能),其中主控制器通过经由每一模块的模块接口将适当参数写入到所述多个模块的至少某一子集来控制垃圾收集功能。
o.所附接的存储器装置的局部自测试
p.自主电力管理功能
应了解,前述列表是作为实例而提供且不欲为完全包含或限制性的。因此,模块配置以任何合适组合支持模块操作的至少以上方面的选择和重新配置。
仍参看图3,模块30包含功能引擎320,功能引擎320可用以执行(例如,表示)经由CPU300和程序存储器302提供以作为资源的功能的任何合适组合。功能引擎320的实施例可执行(例如)上文所描述的各种管理功能中的一者或一者以上。举例来说,可在一实施例中提供磨损平衡、FTL和垃圾收集以及可能希望和/或要求的其它功能。此外, 功能引擎可接收从控制器40和/或从配置功能的模块自身提供的一组参数。也就是说,模块的管理功能基于从控制器或模块自身提供的参数而至少在某一程度上为可配置的。举例来说,控制器引导管理功能的程度可基于可由控制器设定的参数来配置。然而,一旦确立参数,则管理功能在一实施例中可自主地操作。将在下文中的适当点处详细地论述参数优先级。然而,在任何情况下,功能引擎均经配置以执行所关注的(多个)功能,如将进一步描述。主控制器40可经由控制器提供给功能引擎的共享参数区段322的一组配置参数确定关于给定功能的操作的特性。所述共享参数区段可(例如)通过CPU300响应于控制器40(图2)且响应于模块30的模块接口42(图3)来被填充。这些配置参数确定功能引擎将执行(例如,初始化和/或操作)每一功能(例如,磨损平衡、垃圾收集和位密度配置)的方式。每一功能的由所述参数界定的配置可界定将由模块和主控制器两者执行的活动的要求。举例来说,至少半自主磨损平衡可在原始配置之后由具有来自主控制器的最少相关通信的模块执行。另一方面,引导式磨损平衡可能需要来自控制器的连续或周期性配置,其伴随着控制器经由来自模块的某一形式的报告对磨损平衡活动的监视。此报告可通过模块(例如)经由更新经由仍将描述的报告区段所提供的输出参数值来实现。因此,每一模块的功能引擎可经配置以至少部分地基于一个或一个以上模块输入参数执行仅所述模块的非易失性存储器装置的管理功能。主控制器提供与主机装置的数字数据通信且提供与所述多个模块中的每一模块的模块数字数据通信,以使得流入和流出所述模块中的一者的任何数据都流过控制器。此外,控制器可经配置以将输入参数提供给每一模块以配置所关注的每一功能的至少半自主执行。
从模块接口42到数据缓冲器210的输入数据路径330将数据和控制信息从模块接口传送到缓冲器区段中。此数据路径可具有相对较高的速度(例如,相对于在缓冲器区段210与数据路径和控制区段190之间延伸的至少某些其它数据路径),这是因为传入路径330可服务从数据缓冲器区段210到数据路径和控制区段190的多个数据路径。
输出数据路径340从数据缓冲器区段210延伸到控制器端口240以用于将数据和控制信息从缓冲器区段传送到模块接口,且形成从模块30经由控制器端口240所提供的模块接口42到SSD控制器40的输出数据路径的部分。数据路径340可能能够具有高于去往或来自缓冲器区段210的其它数据路径的带宽,这是因为如同数据路径330,多个其它数据路径可由输出数据路径340服务。
关于模块接口42的实施例的细节是通过图4的框图说明,其中接口连接在图2的控制器40的模块端口100与模块30的控制器端口240之间延伸,如图3中所展示。控制器端口和模块端口在每一模块30与组成每一模块接口42的控制器40之间提供命令 和数据连接。数据发射路径400提供用于将命令、数据、状态和其它信息从控制器发射到模块的通信路径。当然,这些条目可起源于主机装置20(图1)。在一实施例中,数据发射路径可通过差分信号发射而建立,因此两个物理信号可组成数据发射路径。数据发射路径可任选地以双向信号对的形式体现,以使得相反方向上的操作可充当对仍将描述的数据接收路径的数据传送能力的性能增强。
数据接收路径402提供用于将数据、状态和其它信息从模块30发射到控制器40的通信路径。如同数据发射路径400,在一实施例中,路径402可通过差分信号发射而建立,因此两个物理信号组成数据接收路径。在一实施例中,数据接收路径可实施为双向信号对,且当在相反方向上操作时,所述数据接收路径可充当对数据发射路径的数据传送能力的性能增强。
信号的差分对可经由模块接口42提供时钟410。被引导到时钟对上的时钟信号可在主机中产生且还可被主机用于同步数据发射和接收。经由模块接口提供的差分时钟信号可用以同步模块中的数据发射和接收。由模块接收的时钟与由主机产生且使用的时钟直接相关。由于发射延迟和其它电路效应,由模块接收的时钟信号可相对于主机所使用的信号异相,因此主机和模块两者中的取样电路可由可经动态配置(例如,调适)以便实现时钟信号与数据信号之间的最佳对准的时钟对准电路(例如,DLL或PLL)辅助。
使用所描述的接口,SSD控制器可能需要显著较少的引脚。尽管每一存储器模块可支持8个快闪芯片,但模块到SSD接口的连接可经由一个引脚计数减少的模块接口来执行。以此方式,与现有技术实施(其中每一存储器装置直接连接到控制器)相比,控制系统中的所有快闪装置所需的引脚的数目可减少。图1和4中所展示的实施例可通过限制控制器到模块连接所需的引脚的数目来实现较少引脚。也就是说,当与现有技术接口(例如,ONFI)相比时,图4中引脚计数减少的模块接口用很少引脚提供到控制器的连接性。以此方式,SSD控制器可在控制器上用很少引脚(当与例如ONFI等替代例相比时)连接到许多模块且控制所述模块,同时实现对于SSD应用为适当的事务率和数据吞吐量率。本文中所描述的模块接口提供低层级快闪功能从较高层级SSD功能的抽象化。因此,控制器可通过仅被配置有(例如)命令执行的高层级方面而卸下负担。低层级功能(例如,与物理快闪特性有关的功能)可在模块层级处进行。应了解,尽管将至少半自主功能性用于管理存储器装置,但SSD性能仍可通过增加所附接的存储器装置的数目来增强。在单一硬件配置(预先配置的模块与特定SSD控制器的特定组合)内,可配置SSD,其中模块为至少半自主实体,其中控制器的作用在于存取模块中的以逻辑方式寻址的数据单元。在此系统中,控制器关于管理的作用可主要为管理每一模块所提供的存储,如多个模块单 元聚集成单一较大的容量。
模块接口可包含命令和协议层级处的将其既定应用定制成SSD使用的特征和能力。这些特征和能力可包含支持低等待时间读取和写入功能、支持高数据吞吐量、支持命令排队和同时操作命令、支持包括多块传送操作的数据块无序传送、支持块抽象化的不同层级处的命令,以及简单而先进的高性能协议,其中每一者又将紧接着在下文进行描述。
支持低等待时间读取和写入功能
在模块30中通过支持可为对从控制器40接收到的命令的最快可能响应之物来支持低等待时间。此可通过模块接口42使用采取以下至少两种方法的实施例来实现:首先,通过支持同时执行命令,且其次,通过选择短的数据包。通过第一种方法,命令可从控制器40发出到模块30且立即对所述模块起作用,即使一个或一个以上其它命令可能已经正在执行还如此。此允许所述命令立即存取目标存储器装置(如果所述存储器装置尚未被到同一存储器装置的命令存取),且使数据能够比在当前活动的命令需要完成后才开始执行另一命令时可能出现的情况更快地开始在控制器40与模块中的存储器装置170之间传送。对命令排队和对同时命令执行的接口支持可实现此同时执行能力。通过第二种方法,读取或写入命令的数据传送阶段与使用较长的包相比可更快地开始且因此更快地完成。第二种方法与使用较长而非较短的包的方法之间的差异在于,较短的包允许较低的等待时间,这是由于短包相对于长包的较短传送时间;因此,以低等待时间为基础为所有同时执行的传送分配缓冲器带宽。与在使用较长的数据包的情况下必须可能等待较长时间相比,对于短数据包,给定命令在存取接口之前可能只需等待较短时间。数据包长度可为可配置的。然而,一特定实施例的数据包长度可(例如)由在区段分配时间所使用的根据包长度对存取等待时间排定优先次序的参数指定。因此,可由控制器40针对给定模块配置来确定最大包长度。并且,通过第二种方法,可使用关于图4的数据发射路径400和数据接收路径402所论述的方向切换功能。当被选择时,方向切换功能可实现所有包大小的较快发射,由此提高吞吐量和等待时间性能两者。
支持高数据吞吐量
如果为了实现高吞吐量而需要较大的包,那么高吞吐量与低等待时间有时是相冲突的目的。尽管短包大小增强了等待时间效能,但它们也倾向于使吞吐量性能降级,这是因为与较大的包相比,对于小数据包来说,接口的固有额外负荷成比例地较大。也就是说,短包实现低于长包的传送效率,因此在对接口的需求接近接口的带宽容量时,针对长包而非针对短包实现更好的数据吞吐量。作为配置选项,选择包大小的能力也是支持高数据吞吐量的一方面,以便解决高吞吐量与低等待时间的竞争利益。
支持命令排队和同时操作命令
在一实施例中,命令排队功能可存在于模块接口42中,主要作为硬件功能。所执行的每一命令必须支持命令的执行中将涉及的所有事务,包含命令传送、数据传送和握手事务的状态。这些事务又可在进行中使用例如DMA资源等设施。此些硬件资源可在模块接口定义中提供到实现命令排队功能所需的程度。用于命令排队的额外功能可为产生并检查队列标签。所述队列标签为短的二进制值,其表示用以寻址命令所需的前述硬件资源的整数。队列标签是与从主机发送到装置的每一新命令代码一起发射,且只要所述命令继续执行便保持为活动的。在命令终止之后,队列标签便不再为活动的,且因此在后续命令被发出时变得可用于重新指派。
支持包括多块传送操作的数据块无序传送
模块接口协议可支持控制器与模块之间的事务模型,所述事务模型使块的无序发射能够在长的多块传送内发生。所述事务模型可规定任何读取或写入命令包括一个或一个以上“连接”。每一连接为虚拟构造,其分配用于较长传送的一部分的寻址和计数控制。因而,连接作为时间实体而存在,所述时间实体存在以保持命令(通常为数据传送)的某一部分且归因于其存在的时间约束而必须终止。所述时间约束存在以便保证接口可用于也可能为活动的其它命令。所述约束可为固定或可变的。读取或写入传送可能仅需要单一连接或者读取或写入传送可能需要许多连接。命令所需的连接的数目因而随读取或写入命令的总长度(以字节为单位)和时间约束的大小而变。连接数目的此确定可通过在模块中运行的命令处置软件进行。连接一次可建立一个,以使得在给定时间在给定命令内存在仅一个连接,或给定命令可具有多个活动连接,其中每一连接传送命令的总传送长度的不同部分。可(例如)通过建立传送一个块或几个块的连接来支持(块的)无序传送,所述一个块或几个块在通过命令传送的块的整个范围内可相对于其偏移无序。
每一连接可被建立以作为总命令的执行的部分。连接存在的时间仅长到足以传送其被分派的长度的数据,所述数据可为块(如相对于命令所定义)或作为由命令代码中的计数字段所界定的字节数。连接在所界定长度的数据传送完之后终止。
支持块抽象化的不同层级处的命令
控制器40可利用不同的方法来存取附接到模块30的存储器装置。尽管可存在变化,但如将紧接着在下文描述的,两个实施例为盛行的。
在第一实施例中,控制器存取作为标准媒体的经由模块接口42附接到模块的存储器装置,其中所述存储器装置包含布置为阶层的存储器,其中页处于阶层的最低层级处且擦除块处于阶层的较高层级处。读取或写入存取以特定页为目标,其中页具有固定量 的数据且可包含通常用于ECC奇偶校验的额外位。另一类型的存取为擦除,其以擦除块为目标。在快闪存储器中,擦除块为比页大得多的结构。事实上,擦除块含有某一整数数目的页,其数目可变化。典型值为每擦除块128个页。页一般必须按单位写入,且擦除一般必须对整个擦除块执行。页可整体地或部分地从存储器装置读取,但部分页读取可能会影响ECC编码和解码功能。一些ECC编码功能可编码整个页且因此要求读取整个页以便执行ECC解码。可实施其它ECC编码功能,使得以页中数据的细分来执行编码和解码:在此情况下,部分页读取可读取这些细分中的一者或一者以上以便执行ECC解码。不管将执行完整页或部分页读取还是将执行完整页写入,都使用物理地址来执行物理页的寻址。物理地址的使用要求命令的发出者(在此例子中,控制器40)知晓附接到目标模块的每一存储器装置中的页的物理布置。
通过模块中的编码、解码和数据路径硬件来支持第一实施例。寻址、读取、写入以及ECC编码和解码可全部以迄今为止尚未见到的方式在模块中得到支持,以作为可选择配置。
第二实施例为存储器装置是作为包括逻辑扇区或逻辑块的逻辑单元寻址和存取的实施例,所述逻辑扇区或逻辑块具有逻辑(而非物理)地址。在此方法中,数据长度不受页的物理长度约束,因此模块可管理物理页和擦除块,以使得逻辑结构映射到物理结构上,由此控制器仅需要将逻辑地址添加到命令以便传送所要数据。模块中的支持此逻辑形式的存取的功能(有时被称为块抽象化)包含编码器和解码器配置的各种方面,如关于图3所论述。此支持的其它方面(也关于图3所论述)包含与补偿和校准相关的数据路径布置,以及杂项读取和写入功能。软件特征和功能为此支持的组成部分,这是由于软件为块抽象化能力所涉及或相关的功能提供了支持。这些功能中的几个功能为局部快闪转译层(FTL)、对擦除操作的控制(例如,垃圾收集)、磨损平衡、位密度配置(例如,编码器/解码器配置)等等。关于块抽象化的再其它细节将关于仍将描述的图5来呈现。
简单而高性能的协议
通过仅实施最基本的功能,模块接口能够以比另外可能的情况低的命令额外负荷来操作。因为接口仅采用点对点连接的形式,所以协议被解除了多装置支持的负担。无需为了使主机起始、执行和监视与装置的事务而产生、记录或使用装置地址。类似地,通过模块接口实施的点对点物理连接为专用的而非动态地建立的(相异于上文作为命令执行的部分而论述的有限时间逻辑/虚拟连接)。每一主机/装置连接(经由其自己的模块接口)的配置是在制造时建立的,因此主机无需在开机时配置其装置。
另外,所述接口支持真实并行性(同时的独立传送)和时域多路复用并行性两者。真 实并行性在一个或一个以上读取命令和一个或一个以上写入命令同时执行时发生。接口并行性在读取命令和写入命令两者的数据传送阶段一起发生时发生,以使得模块接口(图7)的数据接收路径402在数据发射路径400将数据从控制器40积极地传送到模块30的同时将数据从模块30积极地传送到控制器40。请注意,此类型的并行性仅针对配置或针对命令发生,其中上文所论述的方向切换功能未涉及到。
可通过模块接口频繁地实现码分多路复用形式的并行性。此(例如)在一个或一个以上活动命令具有经由模块接口使用数据包执行数据阶段事务的已建立连接时发生。即使可建立多个活动连接,仍可能在任何时刻沿着单一数据发射或数据接收信号对发射至多一个包。时域并行性发生,这是因为活动连接以交替型式传送数据包,其中一个连接在一个时刻传送一数据包且另一连接在另一时刻传送一数据包。以此方式,多个命令可在同时传送数据包,但这样做是通过共享对物理传送连接的存取来实现。举例来说,如图4中所见,标记为P1、P2和P3的包是以串行方式在数据接收路径402上传送,其中每一包形成总数据传送的不同部分。还可在数据发射路径400上支持相似传送。在一实施例中,此些包传送在数据发射路径和数据接收路径上可为同时的。
SSD可经配置以使得控制器为不同模块提供不同量的管理监督。此实施例可被称为对模块的混合模式方法,其中所述模块的一部分可在执行功能(例如,磨损平衡、垃圾收集和位密度配置)方面通过与控制器的至少某一交互来管理,且所述模块的另一部分可关于这些功能的详细管理自主地操作。
关于位密度配置,每一模块可包含能够进行高密度操作(例如,每胞元大于2个位)的存储器装置,且在一实施例中可通过控制器配置而跨越模块中包含的所有存储器装置以高密度模式操作或以低密度模式(例如,每胞元2个位或更少)操作。在一些实施例中,模块可通过控制器配置而以高密度模式(例如,每胞元大于2个位)操作一些存储器装置且以低密度模式(例如,每胞元2个位或更少)操作其它存储器装置。在模块包含能够进行低密度操作(例如,每胞元1或2个位)的存储器装置的情况下,所述模块可通过控制器配置而以与低密度操作一致的编码和解码配置操作。用于此选择的配置参数可包含应用于每一ECC编码和解码单元的数据长度,以及每一ECC编码和解码单元内包含的奇偶校验位的数目。此外,如果低密度存储器经配置为每胞元一个位或两个位,那么模块可通过控制器配置以使用所选择的低密度模式。
如上文所论述,至少半自主存储器模块可用独立方式执行各种功能。进一步考虑磨损平衡的功能,应了解,每一存储器模块可负责基于提供给模块的参数执行其自己的存储器芯片集合内的磨损平衡。分布式磨损平衡控制移除了使控制器监视并调整每一个别存储器芯片上的磨损的大部分负担。
作为非限制性实例,可通过根据本发明的模块至少半自主地处置其它功能。举例来说,每一存储器模块可管理其自己的电力消耗。当存储器模块不活动或负载轻时,可激活所述存储器模块上的电力管理电路来以每模块为基础减少电力消耗。此产生了不具有控制器必须监视并控制每一存储器模块的电力状态的额外负荷的分布式电力管理。
作为另一实例,每一存储器模块可负责监视并刷新其自己的存储器芯片集合内的数据。此移除了使控制器监视每一存储器芯片中的数据质量的负担。
作为再一实例,每一存储器模块可处置其自己的NVM芯片所需的所有错误校正。此分布式错误校正处理产生了比在使控制器负责所有错误校正的情况下(如在常规SSD中)可实现的吞吐量高得多的吞吐量。因为错误校正处理可分散在SSD内,所以可应用的错误校正的量可能比常规SSD中的量高得多,从而产生了一些实施例的个别存储器芯片内的较高数据密度。
归因于本文中已揭露的存储器模块的分布式处理能力,包含此些模块的SSD的吞吐量可相比于通过常规SSD架构所实现的吞吐量增加许多倍。SSD控制器不负担例如错误校正、数据刷新和低层级磨损平衡的功能(或至少使其负担减少)。每一存储器模块可归因于能够控制至多(例如)每存储器模块至少8NVM裸片而处置高数据速率。高数据速率可由于来自控制器的每一总线上可存在多个存储器模块的事实而倍增。此又可由于在控制器与存储器模块之间可有若干总线在并行地运作的事实而倍增。总结果为可实现现有SSD或硬盘驱动器的多倍数据速率(吞吐量)的SSD。
模块接口可实现比使用现有技术本来可能得到的性能高的性能,原因至少如下:模块到控制器接口可能不再需要携载与现在由每一模块以分布式方式至少半自主地执行(而非控制器的责任)的低层级功能相关的大量数据。因此,控制器自由地操作,不再负担这些低层级功能,此又提供了SSD控制器对高层级SSD功能的较简单、更有效率的执行。处理工作的此分离的结果为更有效率的高性能SSD系统。
参看图5并结合图3,图5为通过举例以图式说明图3的一个存储器模块30的多个存储器装置的框图,其中模块NVM存储器由参考数字500共同指代。在本实例中,模块NVM存储器包含被指定为NVM1到NVM8的8个存储器装置。应了解,8个存储器装置的使用是作为实例的且不欲作为限制,且其它模块可包含以不同方式组织的不同数目的存储器装置,同时仍保持在本文中的教示的范围内。因此,模块NVM存储器500可通过控制器40(图2)组织以由某一数目的区段组成。控制器可根据各种准则中的任一者将所述多个存储器装置分割成多个区段,如下文将描述。可用很灵活的方式在8个存 储器装置当中对区段进行分配。起初,应了解,就物理区和位密度两者来说,一个模块与下一个模块的存储器的区段分配可完全不同且独立,即使两个模块均包含相同特性类型的NVM也如此。作为第一实例,第一存储器区段502仅包含存储器装置NVM1。作为第二实例,第二存储器区段504包含存储器装置NVM2和NVM4。作为第三实例,第三存储器区段506包含存储器装置NVM3的一部分和整个存储器装置NVM5。作为第四实例,第四存储器区段508包含存储器装置NVM8的一部分。对这些实例而言,可假设展示为在区段外部的存储器装置部分未经分配。因此,任何一个区段可按任何所要组合包含个别存储器装置的一部分和/或整个的一个或一个以上存储器装置。在使用NAND快闪存储器装置的实施例中,区段大小的下限可为可存储于单一擦除块中的数据的范围(extent)。因此,组成模块的存储器装置可经分割以便基于参数(例如,存储容量、存储持久性、编程/擦除循环、数据吞吐量或其某一组合)优化在存储器装置的给定集合中可用的存储空间。存储器装置的分割可为考虑到在存储器装置的有用寿命内管理所述存储器装置所需的对存储器的特定物理部分的分配、解除分配和重新分配的动态能力。区段的使用可以(例如)基于存储器的物理特性或类型根据所述物理范围的先天特性以及其磨损历史来最佳地使用存储器装置。
转到图5,应了解,块抽象化一般涉及以跨越页边界的方式写入和读取一个以上页且可被称为页环绕(page wrapping)。就此而言且作为非限制性实例,NVM1被说明为含有物理上邻近的页510a到510d。如果读取或写入操作包含页510a的有阴影线的第二半部分以及页510b的有阴影线的第一半部分,那么所述读取或写入操作将涉及读取或写入整个页510a和510b。这些页的有阴影线区域(例如)可表示由图3的编码器220和解码器202所使用的码字。因此,页环绕提供了跨越页边界延伸的编码和解码功能,仿佛对操作而言,页之间不存在物理不连续性。
现在将注意力集中到图6,图6为说明如图3中所展示的模块30的功能引擎320的实施例的框图。展示功能引擎的组件以及其互连。应了解,为了实现已说明的各种组件的功能,可利用硬件与软件的任何合适组合。在一实施例中,CPU300和程序存储器302可纳入功能引擎的操作。功能引擎的共同设施(例如,区域)602可组成数据结构的一集合,所述数据结构包含由(例如)磨损平衡功能610、垃圾收集功能612、位密度配置功能614和FTL功能616以共同或共享的方式使用和修改的参数(例如,包含参数的数据表)。这些功能中的每一者经配置以用于至少部分地基于某些输入参数执行其被指派的任务。请注意,共享参数区段322(图3)被展示为形成共同设施602的部分且因此可参看图3或图6来提及。不同于需要这些输入参数,每一功能可相对于其它模块或SDD系统和 控制器总体上自主地操作。共同设施602充当所述功能当中的信息管道,这是因为在一些情况下,各种功能共享信息且以合作方式操作。一般而言,每一功能从共同设施中的数据结构存取最新信息以便完成其任务。举例来说,FTL功能616使用可存储于(例如)表区域620中的最新的逻辑到物理地址转译,以便在给定数据单元的逻辑地址时提供返回所述数据单元的物理位置的功能。此外,维持在共同设施中的信息的实例将在下文中在适当点处提供。在本实施例中,共同设施进一步包含报告区段624,报告区段624经配置以用于报告与模块的非易失性存储器相关的一个或一个以上输出参数(例如,指示使用统计数据)。使用统计数据可供功能引擎自身以及主控制器使用且可基于在读取操作期间所获得的读取值的集合。使用统计数据可包含(例如)以下两者中的至少一者:可基于读回值的一集合的读回操作所产生的读取值的集合的平均读回值,以及读回值的所述集合的标准差。在读取操作解码块错误校正码的例子中,使用统计数据还可包含错误校正统计数据,例如累计错误计数和每块错误计数。应了解,错误校正统计数据可由解码器202(图3)中的一者或一者以上产生,报告区段从所述解码器获得统计信息。基于使用统计数据,功能引擎可鉴于使用统计数据所指示的存储器的健康状况来设定和/或选择参数。举例来说,如果使用统计数据基于大量的编程/擦除循环而指示存储器的降级,那么存储器的位密度可降低。在一实施例中,编程/擦除循环的数目可超过为在使用中的特定非易失性存储器所指定的阈值编程擦除参数。
在一些实施例中,模块子集中的模块的报告区段可经配置以基于使用统计数据提供与所述模块的非易失性存储器有关的健康指示。举例来说,参数可指定阈值,对于所述阈值,功能引擎会作出以下响应:通过复制现有数据使之远离先前以较高位密度分配的存储器部分来收回所述部分;擦除所述部分;以及接着以相对较低位密度对所述部分重新分配,使得对所述部分的进一步写入可处于较低位密度。此活动可优先于至少一些控制器参数,例如基于正在进行中的存储器磨损在初始配置中所提供的控制器参数。在一实施例中,控制器可存取且监视健康指示且提供参数控制以指示模块如上文所述地收回存储器的某一部分。当然,这些各种活动调用了功能引擎所提供的功能的使用且在下文在适当点处详细描述。
鉴于前述内容,应了解,控制器参数630是由主控制器40提供,而模块参数632是源自于模块自身内部。模块参数的非限制性实例包含由解码器202(图3)产生的使用统计数据。控制器参数和模块参数被提供给共同设施602。所述参数主要由四个所说明功能自身使用,且可能影响每一功能的配置。
仍参看图6,磨损平衡功能610涉及跨越模块中的所有存储器装置均匀地最大化使用循环的数目。所属领域的一般技术人员都熟悉配置磨损平衡功能的基本原理,且应了解,对此功能的需求在于某些形式的非易失性存储器在承受有限数目的编程/擦除循环时展现出有限寿命的事实。磨损平衡功能是针对延长特定模块的存储器装置的有用寿命。
垃圾收集功能612识别已写入有不再需要的数据的存储器单元(区段、块或页)且使此存储器返回到可供随后用新数据写入的存储器单元的集区。如同磨损平衡功能,所属领域的一般技术人员都熟悉配置垃圾收集功能的基本原理。
为了在存储器的每一适用物理部分中实现优选位密度配置,位密度配置功能614给存储器单元分配由基于准则所作的选择而确定的位密度配置,仍将对此进行描述。在一实施例中,存储器单元可为由块组成的区段。
FTL功能616仅基于特定数据单元(区段、块或页)的逻辑地址来提供所述单元的物理位置。因为磨损平衡、垃圾收集和位密度配置可全部为引起影响地址转译表的进行中更新的动态功能,所以FTL与其它功能可彼此实时地合作以维持共同设施602的最新状态。
在相似参数形成控制器参数630和模块参数632的部分的情况下,在一实施例中,一般将优先级给予控制器参数。就此而言,参数可用任何合适且灵活的方式组织。举例来说,在一些实施例中,所述参数可组织成子集,其中相似参数的一个子集提供优先级给来自控制器40的值,且相似参数的另一子集提供优先级给来自模块30的值。
现转到图7,由参考数字700大体指示图6的磨损平衡功能610的实施例。磨损平衡功能可基于如功能引擎的共享参数区段322(图3和6)所含有的在702处从主控制器40可得到的参数以及在704处从模块可得到的内部参数而操作。因此,关于在参数的特定源的范围内的磨损平衡功能的执行,提供了大量灵活性。不管参数的源,磨损平衡功能通常涉及在模块的存储器装置包括在某一数目的编程操作和擦除操作之后降级的存储胞元时最大化这些存储器装置的操作寿命。
经由选择提供给共享参数区段322的参数,关于磨损平衡功能,主控制器40(图2)可断言对磨损平衡功能的较多或较少控制。如上文所论述,由主控制器确立的参数可优先于由模块提供的参数。从控制器和模块提供的参数的特征可在于在708处所选择的初始化参数以及在710处所选择且适用于在初始操作之后的进行中的磨损平衡的操作参数。初始化参数的实例可包含一些地址,所述地址依据总的块且依据总数目的块中哪一子集将最初可用于数据存储来界定模块的存储器容量的初始范围。初始化参数还可包含例如区段大小、区段分配次序、块分配次序等参数,所述参数充当序列的指示词,步骤720、724和730根据所述序列将区段和所述区段内的块分配给初始存储器布置。请注意, 初始化参数选择708包括总过程的初始化分支712的开始。初始化参数一般是由主控制器提供且在其操作开端处建立磨损平衡功能的配置。一般而言,初始化可执行一次以便建立模块的原始磨损平衡配置。来自主控制器的操作参数可应用于磨损平衡功能的非初始化方面。在一些实施例中,由模块提供的操作参数可基于来自主控制器的初始参数来界定在初始操作之后的进行中磨损平衡活动。关于磨损平衡功能的非初始化方面可包含的多个种类的参数的实例包含用于区段和块分配和重新分配的排序指示词。其它实例包含关于块或区段在其必须被重新分配之前可含有静态数据多久的数值准则,或其它数值准则(例如,累积的写入/擦除循环的数目、错误校正统计数据等),磨损平衡重新分配决策可根据所述数值准则做出。
在720处,初始化分支712通过执行区段分配初始化以分配模块的存储器装置当中的区段的原始集合而继续。接着执行块分配功能724以分配每一区段内的块集合。区段分配的实例展示于图5中且在上文关于图5来进行描述。
在724之后,已建立初始配置,其在730处存储于(例如)功能引擎(图3和6)的共享参数区段322中。因此,初始配置结束且可用于磨损平衡功能的操作分支740期间的参考和更新。
在744处,执行检索配置过程。在初始化分支712之后,可检索如由730处所存储的配置所建立的初始配置。此后且关于进行中操作,所述配置可由操作分支740管理。在进行中操作期间,可经由FTL更新路径748(例如)从功能引擎的表区域620(图6)检索当前FTL表信息。由于将更详细描述的写入和擦除活动,FTL更新发生,其中FTL功能对物理地址的添加或删除必然影响磨损平衡功能。应了解,为了更新FTL功能,路径748为双向的。同样地,磨损平衡功能可(例如)通过编辑表区域620的FTL区而进行FTL功能可见的改变。作为一实例,在写入操作之前,FTL从磨损平衡功能获得用于写入的优选位置。这是归因于磨损平衡功能在从所有可用位置内界定用于每一新写入操作的物理位置时的作用,如将更详细描述。来自垃圾收集功能612的更新在垃圾收集更新路径750上可用。这些更新可加上正常FTL和垃圾收集更新以专供磨损平衡功能使用。因为磨损平衡功能(例如)经由表区域620而具有对垃圾收集功能的可见性,所以磨损平衡功能能够从已通过垃圾收集功能返回到可用状态的存储器分配用于新写入的物理地址。应了解,为了更新垃圾收集功能,路径750为双向的。
760处的每一写入操作可与磨损平衡功能的检索配置步骤744介接,以便在存储器配置内确定用于写入的物理位置。如将进一步描述,磨损平衡功能通常与写入功能(通过来自主控制器40(图2)的写入命令起始)和FTL功能两者通信,因此路径748和760为 双向的。当新写入数据位置是由写入功能使用时,必须将此新位置添加到FTL以作为对应于写入数据的逻辑地址的物理位置。如果现有逻辑数据单元正通过写入命令而被覆写,那么磨损平衡功能必须意识到:为了更新配置,逻辑覆写不仅对应于(适用于NAND快闪存储器)到新物理地址的数据写入,而且还对应于数据的当前物理位置的解除分配。
如同写入操作,擦除操作涉及调用磨损平衡功能和FTL功能均必须适应的改变的物理操作。因此,在770处,每一写入操作可与检索配置步骤744介接以在存储器配置内确定用于擦除的物理位置。应了解,为了更新擦除功能,路径770为双向的。逻辑擦除可涉及现有物理数据单元的解除分配。物理擦除对应于对存储器的一物理范围的实际擦除,从而使标的存储器返回到可用于新写入的状态。
在774处,区段分配步骤基于所检索的配置检验模块中的聚集存储器装置上的当前区段配置且确定是否需要分配新区段。将对当前区段配置的任何区段添加更新到磨损平衡配置。磨损平衡配置可存储于(例如)功能引擎的表区域620(图6)中。
在776处,在每一区段内,分析块配置以确定任何当前未分配的块是否需要分配。任何添加都会导致对磨损平衡配置的适当部分的添加。并且,改变可指代FTL功能和垃圾收集功能。
在778处,可重新分配已变得充满过时的块的区段。在NAND快闪存储器中,此可对应于擦除步骤,之后是将新近擦除的存储器添加到可用区段的集合,或者将新近擦除的存储器添加到等待重新指派给新区段的空存储器。
在780处,可评估区段内的每一块以确定所述块是否需要重新分配。重新分配通常由于块被写入了过时数据(已写入,但标记为不再有效)而发生,在所述情况下,可擦除所述块,且接着将空块标记为可用于新写入。接着在730处存储所得配置,且操作分支740结束直到其需要再执行。
参看图8,由参考数字800大体指示图6的垃圾收集功能612的实施例。垃圾收集功能可基于如功能引擎的共享参数区段322(图3)所含有的在804处从主控制器40可得到的参数子集801以及在806处从模块可得到的内部参数而操作。不管参数的源,垃圾收集功能涉及回收先前被写入的存储器位置并使所述存储器位置可存取以与磨损平衡功能合作以用于后续写入。如本发明中所使用,存储器经分配以用作以页为最低层级的单元的阶层。有限数目的页被聚集到块中。尽管存储于页中的数据的量可根据位密度配置而变化,但页通常由固定数目的物理存储胞元组成。区段是由数个块组成,且区段中的块的数目可在区段之间变化。每一模块含有可用各种方式跨越模块的存储器装置分配的某一数目的区段(参见图5)。
应了解,非易失性存储器的操作一般服从与存储器装置的物理组成有关的规则。对本论述而言且作为非限制性实例,尽管本论述可关于其它非易失性存储器技术由所属领域的一般技术人员容易地调适,但将应用与NAND快闪存储器的行为大体上一致的规则。用于读取和写入例如NAND装置等存储器装置的一般化规则因而如下:
a.页为一次可写入的最小物理存储器范围。不允许对部分页写入。
b.希望(尽管并非始终强制)在开始对块写入之前收集足够数据以填充所述块中的所有页;接着,将所有数据作为单元写入到所述块中。此适应页对页干扰机制的补偿。
c.块为一次可擦除的存储器的最小单位。
以上规则暗示了用于读取和写入存取的以块为中心的机制。因而,垃圾收集步骤可负责通过经由将页合并到含有所有活动数据页或所有过时数据页的块中来将过时页与活动数据页分离而检索存储容量。仅含有过时数据页的块可被擦除且返回到可用状态。此处请注意,当前背景中的术语“过时”指代胞元已写入有值但不再被模块辨识为有效的存储器的单元(页、块或区段)。这与被模块辨识为有效的写入数据的替代情况相反。此后一情况被称为“活动”数据。将当前在胞元中不含有不同于擦除状态的写入值的数据单元界定为“可用的”。
仍参看图8,将从主控制器40和模块30所获得的参数子集801以及其它配置参数应用于磨损平衡功能。其它配置参数可包含关于存储器配置和磨损平衡配置的信息。存储器配置包含区段、块和页在模块的存储器装置的已分配部分上的布置,且磨损平衡配置可包含涉及垃圾收集功能与磨损平衡功能之间的关系的参数。
垃圾收集涉及引起过时页的识别、过时页到过时块中的合并和块擦除的操作的集合。所述功能还可在区段的层级处操作,其中过时数据单元合并到区段中,所述区段又通过擦除区段的组成块而迁移到可用区段中。应了解,垃圾收集功能和擦除功能通信以交换关于影响存储器中的块的更新的信息。擦除功能802通知垃圾收集功能允许垃圾收集功能从等待擦除的块的列表移除此些擦除块的块擦除完成。在803处,经由参数801在垃圾收集功能612与磨损平衡功能800之间进行双向通信。举例来说,磨损平衡功能将写入完成和擦除完成两者用信号通知垃圾收集功能。这些通知使垃圾收集功能更新其维持的关于等待擦除的块以及正在写入的块的配置信息。垃圾收集功能又向磨损平衡功能通知这些改变,由此允许磨损平衡功能根据优先级对可用物理地址的列表排序以作为用于写入的下几个位置。
垃圾收集功能在开始810处开始且逐个区段地出现,其中第一步骤为在812处检索第一区段的状态。在814处,应用区段准则以测量如区段状态所反映的区段条件。区段 可:(a)完全包括有效块;(b)包括过时块与有效块的混合;或(c)完全包括过时块。如果情况(a)适用,那么不需要当前区段中的磨损平衡活动,但在所述区段内,可能需要将垃圾收集应用于所述区段的组成块,此引起对块层级过程的控制的传送,所述块层级过程以得到块状态步骤816开始。如果情况(b)在814处适用,那么区段准则为肯定的,且比较过时块的数目与适用于当前区段的特定配置的块阈值参数818。如果过时块的数目大于所述阈值,那么在820处采取一过程以重新分配区段。在一实施例中,重新分配可涉及分配具有与当前区段相同的配置的新区段和将任何仍有效的块从当前区段复制到新区段;接着将当前区段中的所有块指定为过时的。接着可通过擦除当前区段的块中的每一者来擦除当前区段。在这些步骤之后,当前区段可返回到未分配存储器的集区。如果情况(c)在814处适用,那么区段准则为肯定的,且过时块的数目将超过所述阈值,这是因为所有的块都是过时的。820处的重新分配可擦除所有的块且使当前区段返回到未分配存储器的集区。操作可接着继续进行到822,其确定另一区段是否可用。如果不可用,那么过程在824处结束。如果另一区段可用,那么操作返回到812,其中所述区段变为当前区段。所述过程重复,直到所有已分配区段已被处置为止。
对于在816处进入块层级过程的区段,如上文所论述,块层级过程在区段内操作。在一些例子中,每一个区段可能需要块层级处理,以使得跨越整个模块的块层级过程的完成可在模块的区段中的每一者中接连地执行块层级处理。
块准则决策830调用页阈值参数832,其为要求块的重新分配的块内的过时页的数目。除了所关注的过时单元为组成块的页而非组成区段的块以外,块层级过程类似于情况(a)、(b)和(c)中的区段层级过程,如上文关于区段准则814所描述。在830处,如果多于阈值832的页在当前块内为过时的(对应于情况(b)和(c)),那么在836处分配当前区段内的新块。所述新块从当前块接收仍活动的页。请注意,为了用活动页填满新近分配的块,此步骤可对多个当前块同时执行,使得新近分配的块可含有来自多个当前块的活动页。接着可擦除已从中移动了活动页的当前块(或当前块的组合),这伴随着使已擦除块返回到区段内的可用存储器。因此,在当前区段内分配(多个)新块以接收来自作为擦除目标的块中的有效页。此些已分配块含有活动数据页。
在块重新分配完成后,操作即继续进行到840,其检查最后的块。如果另一块可用,那么为了经受块层级处置,操作返回到816且将下一个块指派为当前块。如果无其它块可用,那么操作继续进行到842,其对另一区段进行测试。如果另一区段可用,那么操作返回到812。如果另一方面,另一区段不可用,那么操作在824处结束。因此,针对经受块层级处理的区段中的所有块执行块层级过程,然而,仅含有某一比例的活动数据 页或过时页的块会经所述过程检验。既不含有活动数据页也不含有过时数据页的块不需要经此过程检验;然而,所述块可用于供所述过程分配。
824处的最后区段的完成对应于磨损平衡功能的一次应用的完成。一些实施例可能要求磨损平衡功能由模块仅通过显式调用来执行;其它实施例可将磨损平衡功能用作连续运行的后台任务。在磨损平衡(在块层级处或在区段层级处)完成的情况下,可通过垃圾收集功能应用更新750(图7),所述更新将为磨损平衡功能700(图7)和仍将详细描述的FTL功能可见且影响所述两个功能。
参看图9,由参考数字900大体指示图6的位密度配置功能614的实施例,且所述实施例被展示为说明用以配置模块的非易失性存储器的位密度的功能的流程图。位密度配置功能可基于如也可由功能引擎的共享参数区段322(图3)所含有的在904处从主控制器40可得到的参数子集902以及在906处从模块可得到的内部参数而操作。根据此实施例,在垃圾收集功能对区段进行初始分配之后,展示用以在模块内分配多个区段以用于以特定位密度操作的功能。应了解,许多不同位密度可为可用的,且可至少部分地基于模块的存储器装置的存储器技术以及在读取操作和写入操作期间所使用的编码/解码功能两者来确定可用位密度。位密度配置可从每胞元单位的配置变化到每胞元多位的配置。就每胞元所存储的位而言的每一位密度值还可具有与编码和解码方法以及所述编码和解码功能所使用的额外负荷的量和类型有关的变化。编码和解码方法可涉及如先前所描述的码的组合,所述码根据所应用的额外负荷的量来实现多个结果。卷积码和块码均可用各种层级的额外负荷来操作,其中额外负荷的特定量是通过控制器设定中应用于实施此些码的参数确定。面对手边的存储器装置区段的SNR和任何其它降级机制特性,额外负荷的量又通常是针对最佳性能来指定。位密度可作为可至少向下应用于NAND快闪存储器中的块单元的层级的属性而应用。最终,位密度配置的粒度可随所选择的编码和解码功能以及模块的存储器装置中的存储器技术而变。在本发明中所给出的实例中,位密度配置是在区段层级处设定,使得给定区段内的所有块以针对所述区段所选择的位密度操作。请注意,区段可包含单一块;此将表示考虑使用NAND快闪存储器,其中个别位密度配置应用于与单一块一样小的数据保持单元。
方法900包含初始化分支910和更新分支912。只要分配(或重新分配,例如,归因于垃圾收集和存储器重新配置)新区段,都会执行初始化分支910。对于应用于区段下的物理存储器的区的位密度配置,可在模块寿命期间周期性地执行更新分支912。在存储器装置的寿命内,一特定范围的物理存储器在不同时间可属于不同区段,但在任何给定时间,所述特定范围可属于仅仅一个区段。对于在有效使用中的区段,位密度配置功能 可监视组成所述区段的物理存储器的条件。举例来说,监视以特定位密度配置操作的物理存储器的某一部分的位密度配置功能可检测物理存储器的降级,以使得同一物理存储器的后续重新分配可能需要更能容忍由于降级所引起的较低SNR(信噪比)的位密度配置。
来自主控制器40(图2)的参数可优先于模块所供应的参数。在一些情况下,主控制器可基于控制器参数定制由功能引擎执行的位密度配置功能的大部分或全部。在其它情况下,主控制器可将管理委派给模块,以使得位密度配置功能是由模块参数来界定。在再其它情况下,参数的掌控集合可为控制器参数与模块参数的合作组合。然而,在任何情况下,不管参数的特定源,实际位密度配置功能是由模块执行,例如在所述参数已确定后即自主地执行。应了解,参数值可确定位密度的以下方面:关于用于每一区段的位密度配置的选择以及关于一个位密度配置到另一位密度配置的交替,且甚至关于区段从活动存储器集区的解除分配(如在组成存储器归因于超过最大数目的编程/擦除循环而变得“用尽”的情况下)。
请注意,参数子集902不欲为全面的。主要参数类别包含目标使用模式,包含容量、密度和寿命准则(例如,编程/擦除循环的数目)。所述参数所表明的其它准则为由位密度配置功能用来执行分配、重新分配和解除分配的存储器物理性质。另一参数类别界定了可能的配置:此包含区段层级处的位密度配置。数个控制指示词可与界定某些阈值的参数结合使用,所述阈值应用于错误率以及关于位密度配置改变的决策的其它量度。这些控制指示词可指示功能引擎相对于阈值准则采取(或不采取)某一动作。作为一个实例,当页中的经校正错误率开始超过某一经界定阈值时,相关联控制指示词可使垃圾收集功能对存储器的受影响区段起始过程。
继续参看图9,初始化分支910应用于在模块操作的初始开始处所执行的过程。初始化一般归因于如下事实而仅发生一次:连续位密度配置取决于参数(例如,在模块存储器的操作寿命期间由于各种老化和磨损机制而产生的参数)的进行中维持。在920处,以存储器能力数据的形式收集信息以实现关于模块中的特定存储器的能力的决策。可关于模块中的存储器装置的局部化部分来组织存储器能力数据,使得存在用于这些局部化部分中的每一者的参数(例如,量度)。此局部化的粒度可为实施相依的且可甚至在单一模块内变化。为了确定关于位密度配置的存储器的能力,可从自测试或由模块或由主控制器所执行的其它功能得到初始存储器能力信息。一个有用参数为存储器的SNR(信噪比)的测量值,其自身为存储器的胞元能够存储的位的数目的指示符。随着模块的存储器装置的使用历史累积,额外参数(例如,在对位密度配置功能的更新期间所收集的使用统计 数据)可针对每一存储器装置的每一物理范围实现关于位密度配置和重新配置的后续决策。其它使用统计数据可(例如)从解码器202(图3)得到。为了初始化和操作,可产生质量量度和相关使用统计数据,例如,如上文所并入的′585申请案中所描述。应了解,如上文所述,本发明中应用于与存储器性能相关的参数(例如,所测量信息的集合)的一般术语为存储器能力数据。
在已通过初始化分支910获取了存储器能力数据的初始集合之后,在924处,可汇编位密度配置参数(例如,模板)的集合,所述位密度配置参数表示用于模块的位密度配置菜单。菜单选择可从位密度配置的预定义集合直接取得或从位密度配置的预定义集合导出,所述位密度配置表示用于由编码和解码功能使用的参数的总组合。在本实施例中,每一菜单选择适用于存储器的一区段,然而,在其它实施例中,菜单选择可在块层级或存储器阶层中的较低层级处应用。广泛范围的参数在菜单选择当中是可能的,但每一参数可至少界定将使用的存储器胞元、编码/解码参数和一定量的奇偶校验中的位的数目。
在928处,通过结合来自子集902的其它参数应用来自924的位密度配置参数而产生区段映射。所述区段映射为数据结构,如图5中以图式方式所见,其可列出每一已分配区段的位置、范围和配置。结果为跨越模块(图5)的存储器装置所映射的区段的集合,其中每一区段可至少可能地被配置有独特的位密度配置。对区段应用位密度配置可涵盖从每一个区段使用相同位密度配置(例如,每存储器胞元4个位)的情况延伸到每一个区段使用不同位密度配置的广泛范围的变化。
在930处,在区段映射已产生之后,应用位密度配置以作为区段分配的部分。此可包含更新共享参数区段322(图3)中的界定对应于逻辑地址的物理存储器的位置和范围的FTL表。另外,可在位密度配置(来自位密度配置模板中的一者)与其对应区段之间进行关联。此关联使后续读取、写入和擦除功能不仅能够识别正确逻辑到物理映射以便从主控制器存取命令,而且还能够用于正确地配置模块中的读取/写入设定。
如通过区段分配930所界定的每一区段最终包括块的一集合,块的数目必须已界定。在934处,针对每一区段执行块分配,例如,通过更新表区域620中的表结构以适应将组成区段的块的准确数目。
在936处,存储用于模块的区段配置。区段配置可包含适当参数(例如,表和)模板而用以完全界定模块的区段结构(至少从初始化流程结束时起),且用以实现有关可涉及的各种位密度配置的存储器的操作,以及用以实现由于继续使用所引起的老化和磨损效应而可能需要的未来更新。
现转到位密度配置功能的更新分支912的描述,在一些实施例中,所述更新分支可在模块的寿命内不时地执行。如初始化过程的情况,所应用的参数可由主控制器和模块自身中的任一者或两者提供。并且,来自主控制器40(图2)的参数可优先于由模块所供应的参数。位密度配置功能可通过控制器提供的参数、模块提供的参数或其任何合适组合来界定。然而,在任何情况下,实际位密度配置功能是由模块执行,而不管参数的特定源。通常,只要现有区段需要位密度配置的改变,便执行更新分支912。实例包含归因于磨损平衡和垃圾收集动作或归因于存储器的老化所必需的位密度配置修订的对解除分配和/或分配区段的需要。
在940处,通过修订最初由初始化分支910形成的存储器能力数据开始所述更新分支。垃圾收集功能和磨损平衡功能分别在942和944处将输入提供到步骤940,这是因为这些功能影响存储器能力数据。如上文所论述,存储器能力数据包括为存储器以各种位密度存储和保持数据的能力的指示符的参数。根据来自垃圾收集功能和磨损平衡功能的输入,修订存储器能力数据。鉴于经修订的存储器能力数据,在946处,确定重新分配映射,其反映与当前区段的当前分配相比的当前区段的位密度配置的任何改变。此映射确定哪些区段是新分配中所需的(根据垃圾收集结果)和这些区段可置放于何处(根据磨损平衡)。
使用来自步骤946的重新分配映射,步骤948通过指定从当前分配到新分配的改变(其中当前分配是通过初始化分支910或先前通过的更新分支912确定)来产生经更新区段映射,所述改变添加到区段映射的当前版本。在950处,如新/经更新区段映射所指定而将新区段分配给存储器。更新可(例如)通过将更新写入到表区域620(图6)中的数据结构来实现。如上文所述,接着在934处继续进行块分配。
参看图10,由参考数字1000大体指示图6的快闪转译层(FTL)功能616的一实施例,且将所述实施例展示为用于管理与本发明的模块中的一者的非易失性存储器相关的快闪转译层的流程图。所述FTL功能通过基于提供于命令中的逻辑地址找到数据的物理位置来服务主控制器命令。就此而言,参看图6注意,磨损平衡功能610、垃圾收集功能612和位密度配置功能614的活动使模块中的所存储数据的物理放置为动态的。因此,FTL功能比用于静态物理放置的仅逻辑到物理地址转换复杂,而是使用从其它功能所产生的参数来确定对应于区段、块和页中的数据放置的动态FTL数据结构,使得活动数据单元可始终仅基于其对应逻辑地址定位。请注意,这些动态数据结构可存储于图6的表区域620中。
可形成功能引擎的共享参数区段322(图3)的部分的FTL参数区段1002在1004处从主控制器接收参数且在1006处从模块接收模块参数。这些参数的值可影响主控制器 对FTL功能的定制与模块所施加的定制的量相比的相对程度。如其它功能的情况,如上文所论述,一些参数值可使主控制器相对于模块对FTL有较大影响,而其它参数倾向于偏爱模块的影响。不管受主控制器或模块影响的程度,功能引擎可(例如)仅基于参数输入自主地执行FTL功能。
FTL参数区段1002还接收在1010处通过磨损平衡功能700(图7)、在1012处通过垃圾收集功能800(图8)和在1014处通过位密度配置功能900(图9)产生的信息。FTL功能的初始化分支1020在第一次使用模块之前且在主控制器在用户数据存储操作的任何执行中所进行的任何存取之前执行。在1024处,来自磨损平衡功能的输入1010和来自位密度配置功能的输入1014(如FTL参数区段1002所反映)允许以产生逻辑表项开始建构初始数据结构。这些数据结构本质上可为多层级的,以便提供区段、块和页层级处的映射。所述映射本质上还为动态的,这是因为随着新数据被写入到模块中且随着先前写入的数据归因于覆写而失效抑或被擦除,必定预期修改所述映射。
在1028处,针对每一逻辑地址产生逻辑到物理映射项,以使得物理位置对应于数据结构中的每一逻辑项。因为所述初始化分支在实际数据被写入到模块中之前出现,所以逻辑项指定模块存储器中的已分配但仍空着的区域。因此,数据结构在此点处可指代形成对于主控制器将为可存取的存储器容量的区段的一集合,其至今不含数据。后续读取、写入和擦除功能的任务为扩增这些数据结构,使其具有逻辑数据块与所述容量内的物理块和页之间的连接。
在初始化之后,在1030处,进入正常操作,其中存储器是可存取的以用于存储数据。请注意,读取、写入和擦除操作是在其与FTL功能交互的范围内描述。所属领域的一般技术人员都熟悉这些操作的其它方面。如将进一步描述,所述功能的读取分支1034可响应于读取命令而执行,而在1036处,所述功能的擦除/写入分支可响应于写入命令或擦除命令而执行。
应了解,不要求读取分支1034更新FTL数据结构,这是因为读取操作未更改所存储数据。因此,在1038处,读取分支针对提交到其的每一逻辑地址返回物理地址。因此,当模块从主控制器接收读取数据命令时,对FTL功能的所得调用仅涉及物理地址查找操作。读取分支的一次以上通过可响应于单一读取命令而发生,这是因为在读取命令中所请求的数据可包括驻留在多个逻辑地址处的数据。
擦除/写入分支1036可在先前未经写入的数据块正被写入时或在驻留在当前写入的逻辑地址处的数据正被覆写时执行。在前一种情况下,逻辑地址必须被指派给存储器中的物理位置;此必定需要物理存储器从现有区段内指定到特定块和页。可执行按需要多 次通过擦除/写入分支以便将待通过命令写入的所有数据指派给对应物理位置。在1040处,可分配用于写入操作的物理存储器。在1042处,更新FTL表以使其反映所述写入操作。如果需要擦除操作,那么在后一种情况下,步骤1040可虑及标的存储器位置的擦除以便使先前写入到对应于所述逻辑地址的物理地址的数据失效。步骤1042可接着更新FTL表以在写入功能之前将标的存储器位置指定为含有无效数据。FTL擦除功能可结合从主控制器到模块的写入命令或擦除命令来执行。擦除/写入分支1036的FTL擦除功能未实现对应逻辑地址的物理擦除,而是更新表结构以展示:逻辑地址与物理位置之间的对应不再有效。因此,第一遍通过擦除/写入分支1036可虑及FTL结构方面的擦除,而第二遍通过可虑及对应写入操作。表项可稍后通过垃圾收集功能612更新,这是由于所述垃圾收集功能识别过时物理数据单元且执行物理块擦除以使受影响物理数据单元返回到可用于后续写入的状态。在1044处继续进行正常操作。
现转到图11,为了说明读取操作与功能引擎320(图6)的辅助交互,以框图形式展示读取操作的一实施例且由参考数字1100大体指示所述实施例。在1102处,起始读取操作。请注意,在存取和读取个别存储器胞元的范围内,读取操作的技巧将为所属领域的一般技术人员所熟悉,且为此目的可使用广泛多种合适的过程。每一读取操作已指向一逻辑地址。所述逻辑地址可能已在外部从主机获得以作为用以执行读取的命令的部分,或所述逻辑地址可能已在内部从模块获得。在任何情况下,在1104处,在可读取实际数据之前,读取操作将所述逻辑地址发送到FTL功能616(图6和10)。在1106处,FTL功能616响应于从读取操作接收到逻辑地址而将物理地址返回到读取功能。因为此为读取操作,所以应该不需要对表区段620(图6)中的FTL表的更新以及磨损平衡功能和垃圾收集功能,这是因为未对存储器进行任何改变。在已获得物理地址后,在1108处,执行读取操作以便获得读取数据。尽管为描述清楚起见图11看似涉及基于单一逻辑或物理地址的交换的读取操作,但应了解,读取操作可涉及多个地址。因此,已说明的读取操作的各个步骤可涉及具有到物理地址中的每一者的对应读取步骤的多个逻辑到物理地址转译。在1110处,读取操作完成且正常操作继续。
参看图12,为了说明写入操作与功能引擎320(图6)的辅助交互,以框图形式展示写入操作的一实施例且由参考数字1200大体指示所述实施例。在1202处,起始写入操作。请注意,在对个别存储器胞元进行存取和写入的范围内,写入操作的技巧将为所属领域的一般技术人员所熟悉,且为此目的可使用广泛多种合适的过程。写入操作致使某一范围的存储器被写入。此操作可为写入到先前未经写入的逻辑地址,或此操作可为写入到当前写入的逻辑地址。在任一情况下,在1204处,写入操作将目标逻辑地址发送 到FTL功能616(图6和10)。在1206处,FTL功能通过返回物理地址而作出响应,写入数据将物理地写入到存储器中的所述物理地址。无论写入是新的(到先前未经写入的逻辑地址)还是为覆写(以当前写入的逻辑地址为目标),FTL功能都返回将被写入的物理地址。任一情况都引起FTL功能所进行的FTL配置的更新,其将为磨损平衡功能610(图6和7)和垃圾收集功能612(图6和8)可见。在1208处,响应于供写入操作使用的物理地址的返回,执行写入操作。应了解,尽管为描述清楚起见图12看似涉及基于单一逻辑或物理地址的交换的写入操作,但写入操作可涉及多个地址。因此,已说明的写入操作的各个步骤可涉及具有用于物理地址中的每一者的对应写入步骤的多个逻辑到物理地址转译。同样地,FTL、磨损平衡和垃圾收集参数经更新以反映被写入操作所写入的多个物理地址。在1210处,正常操作继续。
参看图13,为了说明擦除操作与功能引擎320(图6)的辅助交互,以框图形式展示擦除操作的一实施例且由参考数字1300大体指示所述实施例。在1302处,起始擦除操作。请注意,在存取和擦除个别存储器胞元的范围内,擦除操作的技巧将为所属领域的一般技术人员所熟悉,且为此目的可使用广泛多种合适的过程。
此处所展示的擦除操作的结果为一定范围的存储器的物理擦除。因而,此操作不同于可由从主机发送的擦除命令所引起的逻辑擦除,但主机擦除命令最终调用此操作。又因而,此物理擦除可能从模块内而非从主机来引导。
参看图6和13,在1304处,(例如)从功能引擎的表区段620(图6)存取当前垃圾收集配置参数以获得待擦除的物理块位置(如果可得到)。用于擦除的此些物理位置的识别可通过垃圾收集功能612(图6)产生。在1306处,进行关于块是否可用于擦除的确定。如果此些块地址当前没有可用的,那么擦除程序在1310处结束且返回到正常操作。如果块地址可用,那么擦除程序前进到1312以获得如垃圾收集功能所指定的可用于擦除的下一个块地址。在1314处,擦除功能执行擦除操作以存取并擦除处于在1312中所获得的物理地址处的块。在擦除已完成之后,操作移动到1316,其(例如)经由表区段620将完成状态提供给垃圾收集功能612。在一实施例中,完成状态可直接提供给垃圾收集功能,所述完成状态又使垃圾收集功能能够更新其配置。在1310处,擦除操作结束且返回到正常操作状态。
参看图3和6,每一模块30可经配置以响应于控制器参数630以各种模式操作。在一实施例中,模块可基于来自控制器的模块输入参数的第一集合针对所述功能中的所选择功能以第一模式操作,且基于来自控制器的模块输入参数的第二集合针对所述所选择功能以第二模式操作,其中模块输入参数的所述第一集合不同于模块输入参数的所述第 二集合。所述参数集合可(例如)由共享参数区段322来存储。作为实例,模块可经配置以基于所述模块输入参数而将第一模式应用于模块的给定非易失性存储器区段的第一部分(例如,区段)且将第二模式应用于给定非易失性存储器区段的第二部分(例如,区段),其中所述第一部分不同于所述第二部分。因此,在图5中,基于输入参数,NVM1(区段502)可经配置而以第一位密度存储数据,而NVM2和NVM4(区段504)可经配置而以不同于第一位密度的第二位密度存储数据。在一实施例中,总非易失性存储器的所述部分可基于控制器参数630确定,而位密度可基于模块的非易失性存储器的一个或一个以上模块参数(例如,受监视特性)确定。在一些实施例中,如下文将进一步描述,所述模块参数可为(例如)由解码器所产生的错误校正统计数据。
在一些实施例中,一个或一个以上模块可基于经由共享参数区段322(图3和6)来自控制器的模块输入参数的第一集合针对所述功能中的所选择功能以第一模式操作,以使得如此配置的每一模块(例如)自主地执行功能而无来自控制器的监督或与控制器的交互,且基于来自共享参数区段322的模块输入参数的第二集合(其中模块输入参数的所述第一集合不同于模块输入参数的所述第二集合)针对所述所选择功能以第二模式操作,以使得如此配置的每一模块在来自控制器的至少部分控制下以第二模式执行功能。举例来说,在第一模式中,模块可独立于控制器而自主地管理表区域620(图6)内的快闪转译层,以使得局部快闪转译层可由控制器存取而不被更改,而在第二模式中,模块可在来自控制器的某一作用(例如,引起模块快闪转译层的模块部分的改变)下管理总快闪转译层的模块部分,这是因为控制器具有对所有各种模块的快闪转译层的可见性。
如上文关于图5所论述,本发明提供可跨越页边界的块抽象化。现将通过最初参看图14来提供关于块抽象化的其它细节。图14为由典型非易失性存储器所提供的物理页1402的关于短于物理页1402的第一用户数据块1404以及长于物理页1402的第二用户数据块1406的图式说明,其中长度表示相关联的数据量。如上文所论述,现有技术一般强加物理页大小与块大小之间的准确匹配。在块短于页的例子中,填充位可用以填充未填满页中的空白空间,然而,在块长于页的例子中,在现有技术的常规约束下,块是不可存储的。为了在现有技术中在这些情况下进行存储,每一个页的至少某一部分将为未使用的,其中未使用部分的大小取决于块大小与较大页大小之间的失配程度。因此,现有技术情况下的用户数据的页大小单元为非常特定量的数据。然而,图14的用户数据块中的每一者在长度上不同于所展示的物理页。在使用少于物理页中的总数个胞元的用户数据块的情况下,现有技术能够应付所述情形,这是因为块配合到一个物理页中,即便存在未使用胞元且因此存在存储效率的损失。当用户数据块超过物理页的范围时, 现有技术不能够应付所述情形,这是因为不可能将用户块配合到单一物理页中。
然而,本发明通过将信息块存储于非易失性存储器装置中而无需设定每一块的大小以配合到单一物理页中来不理会现有技术的约束。举例来说,用户数据块可被分配给物理存储器而不管每一物理页包含多少个备用位。就此而言,应了解,每一页一般分配有可针对(例如)奇偶校验数据的备用位以及各种形式的元数据,包含(但不限于)逻辑块地址和可由FTL、磨损平衡和垃圾收集功能使用的杂项旗标、指针和计数器。经由本文中的教示,每一物理页中的组合式用户数据位加上备用位有效地全部变为每一页中的存储空间,而不考虑用作用户数据、ECC奇偶校验或元数据。因此,在图14的用户数据块中,实际用户数据与开销数据之间无区别。然而,具有相关联开销的用户信息的块可小于物理页1402(如第一用户数据块1404的情况)或大于物理页1402(如第二用户数据块1406的情况)。如将看到,在任一情况下,多用户块序列可配合到物理页的一群组且用户块的数目与物理页的数目之间无对应。作为非限制性实例,用户数据块可被界定为具有相关联开销的一个或一个以上512字节单元(扇区);块是由一个扇区或多个扇区组成并无重要意义,这是因为块可为任何所要大小。每一块在特定页内的原(例如,开始)点由经指定的偏移来表征。所述偏移的追踪可用固件、硬件或两者的任何合适组合来实施。当用户块延伸超出一个物理页时,所述块的剩余部分被分配给后续物理页。当此发生时,所述用户块内的断开位置是通过应用程序用与追踪用户块原点相同的方式来追踪,如下文将更详细论述。
现在将注意力集中到图15,其为框图、由参考数字1500大体指示、以图式方式说明形成非易失性存储器的部分的四个连续物理页PP1到PP4。在连续物理页中,物理页的此集合可用连续方式物理地寻址,例如,通过从一个页到下一页使物理地址按给定量递增。在此实例中,使用用户数据块B1到B4,每一者具有如图14的第一用户数据块1404所例示的长度,其中用户数据块短于物理页。为了说明清楚起见,假设块长度BL等于页长度PL的0.75。如所见,块B1被物理页PP1完全含有。块B2包含以从物理页PP1的开始处对应于块B1的长度的偏移(即,3/4PL)存储于最后四分之一的物理页PP1中的第一部分1510,和存储于物理页PP2中的从PP2的开始处开始以便填充PP2的第一半部分且表示块B2的最后2/3的第二部分1512。块B3的初始部分1520是以从PP2的开始处1/2PL的偏移存储于物理页PP2的第二半部分中,而块B3的最后1/3部分1522是存储于物理页PP3的第一1/4中。块B4填充物理页PP3的剩余部分1524。块B5接着以从PP4的开始处1/4PL的偏移填充物理页PP4的初始3/4部分1526。PP4的最后1/4部分1528展示为空白的,然而,所述部分可由后续块的一部分来填充或保持空白。在本实例中, 五个用户块存储在四个物理页上。如可看到,物理页可得到完全利用,即使块长度短于页长度还如此。此外,块可用桥接页边界的方式存储。如图15所例示,存储可针对任意数目的用户数据块而继续,或直到序列中的最后一个用户数据块被存储为止。在一些情况下,序列中的最后一个物理页可含有未使用的存储器胞元,但与现有技术情况相比,所有先前物理页可得到完全利用且效率有净增加量。
图16为框图、由参考数字1600大体指示、以图式方式说明形成非易失性存储器的部分的四个连续物理页PP1到PP4。在此实例中,使用用户数据块B1到B3,每一者具有如图14的第二用户数据块1406所例示的长度,其中用户数据块长于物理页。当然,现有技术不能够存储相对较长的块。为了说明清楚起见,在本实例中,假设块长度BL等于页长度PL的1.25。如所见,初始块B1是被物理页PP1部分地含有且B1的最后部分1610(百分之二十)是被物理页PP2含有。块B2的初始部分1612以从PP2的开始处1/4PL的偏移填充物理页PP2的剩余部分,且块B2的最后部分1614填充前百分之五十的物理页PP3。块B3的初始部分1616以从PP3的开始处1/2PL的偏移填充最后百分之五十的物理页PP3,且块B3的最后部分1618填充初始百分之七十五的物理页PP4。最后百分之二十五的PP4在无更多块可用的情况下未使用或可供后续块使用。在本实例中,三个用户块存储在四个物理页上。物理页可得到完全利用,即便块长度长于页长度。并且,块可用桥接页边界的方式存储。就此而言,用户数据块大小与物理页大小的任何关系可基于本文中已揭露的教示来适应。所提供的灵活性可使存储效率相比现有技术中可能的存储效率增加或最大化。此灵活性提供改变用户块大小(例如,为了将ECC奇偶校验添加到用户块格式)的能力,而无需给定存储器中的物理页的大小的对应增加。存储效率可通过充分利用给定存储器装置中的物理页资源的趋势来优化。
图17为流程图、由参考数字1700大体指示,所述图说明用于以实现上文在图15和16的背景中所描述的数据结构的方式存储/写入用户数据块的方法的一实施例。最初,请注意,包括写入操作的用户数据块的序列或系列可由过程接收,如图15和16所说明,其中块长度和页长度可不同。所述方法在1702处开始且移动到1704,在1704处在过程的开端处检索初始用户数据块。在1706处,将当前用户数据块以从物理页的开始处的某一偏移映射到物理页上,所述偏移可为零或非零偏移值。所述偏移可(例如)存储为先前块元数据中的值或存储为含于由FTL功能创建且使用的表中的地址。在1710处,进行关于当前用户数据块是否为写入传送中的最后一个块的确定。如果不是,那么操作继续进行到1712,在1712处测试当前页现在是否充满。如果当前页充满,那么操作转到1714,在1714处接着对页进行写入。操作接着返回到1704。在1712处,如果页不充满, 那么操作返回到1704。再次返回到1710,如果检测到最后一个用户块,那么操作继续进行到1716,在1716处填充当前页中的任何剩余空间(如果存在)。在1718处,对最后一个页进行写入,且操作在1720处结束,等待下一个写入操作。
图18为另一流程图、由参考数字1800大体指示,所述图说明用于从上文在图15和16的背景中所描述的数据结构读取用户数据块的方法的一实施例,且其中块长度和页长度可不同。所述方法在1802处开始且移动到1804,在1804处在过程的开端处检索初始物理页。在1806处,将所检索的页映射到用户块,以使得用户块被复原。为了检索用户块,映射可基于(例如)偏移,所述偏移是在写入操作(图17)期间所创建且存储为先前块的元数据或存储为存储于由FTL功能创建且使用的表中的地址。在1808处进行测试以确定用户数据块的复原是否完全。如果复原完全,那么在1810处传送经复原块。然而,另一方面,应了解,1808可识别出用户数据块归因于从一个物理页到下一个物理页的块环绕而不完全(例如,参见图15中的块B2和图16中的块B1)。在此情况下,操作返回到1804以用于读取将含有不完全块的剩余部分的下一页。映射1806将重新汇编不完全块且传递现在完全的块以发送块(1810)。在1812处,测试确定当前读取操作的最后一个用户块是否已复原。如果不是,那么操作返回到1804以读取下一页。如果最后一个用户块已复原,那么在1816处,当前读取操作结束,等待下一个读取操作。
鉴于前述内容,提供了一种供在读取/写入操作中存取至少一个固态存储器装置时使用的高灵活性读取/写入布置和相关联方法,其中所述存储器装置是由多个存储器胞元组成,所述存储器胞元被组织为可物理地且循序地寻址的页的一集合,其中每一页具有一页长度以使得页边界被界定于所述集合中的所述页中的连续页之间。系统提供了一种控制布置,所述控制布置经配置而以一连续系列的页存储且存取与给定写入操作相关联的数据块群组,以使得所述系列中的至少一个初始页被填充且其中所述群组的每一块可包含不同于页长度的块长度。应了解,所述块中的至少一者可在从任何页边界偏移一定量处存储。在一系列物理页具有两个或两个以上页和最后一个页的初始群组的例子中,所述系统可基于数据块的所述群组至少填充页的所述初始群组的每一页。所述最后一个页可被填满或部分填充。如果最后一个页被部分填充,那么可用空间可由另一块的至少一个部分来填充。物理页可含有一个或一个以上块边界且块的开始(例如)通过从物理页的开始处的偏移来识别。换句话来说,可存储数据块的群组中的特定块,以使得所述特定块的第一部分是存储于第一页中且所述特定块的第二部分是存储于第二页中,以使得所述特定块的存储跨越所述第一页与所述第二页之间的页边界。为了此论述,所述第一页和所述第二页可为图15和16的数据结构内的任何两个邻近物理页。
应了解,本文中所详细描述的本发明的SSD和相关联模块提供了一种具有分布式功能性的系统,其使在现有技术方法中趋向于高度集中的活动分散。与集中式功能性相比,分散(分布式)功能性更容易获得可扩展性的属性。也就是说,具有分散式功能性的分布式组件(例如,先前所描述的模块)能够实现在给定系统按比例增大时系统额外负荷的有限增量增加。对比而言,集中式系统必须提高其集中式控制器的能力,另外系统复杂性随着存储装置的添加而增加。关于集中式嵌入式微处理器和嵌入式软件,管理资源的能力变得受中央控制器的计算能力和其它能力的约束限制。因此,与尝试添加与集中式能力相同的功能性的系统相比,对在功能阶层的较低层级处添加功能性的系统而言,较容易实现作为属性的可扩展性。
为了说明和描述,已呈现本发明的前述描述。所述描述不欲为详尽的或将本发明限于所揭示的精确形式,且依据以上教示,其它修改和变化可为可能的,其中所属领域的技术人员将认识到某些修改、置换、添加和其子组合。

Claims (88)

1.一种存储器系统,其包括:
具有存储器装置和功能引擎的模块,其中所述模块经配置以关于所述模块且基于控制参数和模块参数的组合来执行管理功能;以及
控制器,
其中所述控制参数是由所述控制器提供,且所述模块参数是由所述功能引擎提供;
其中所述功能引擎经配置以从由模块所提供的一个或多个模块参数中选择所述模块参数且至少部分基于所选择的模块参数来确定所述管理功能;且
其中所述模块经配置以至少基于所述一个或多个模块参数的第一集合针对所述功能以第一模式操作且基于所述一个或多个模块参数的第二集合针对所述功能以第二模式操作,其中所述一个或多个模块参数的所述第一集合不同于所述一个或多个模块参数的所述第二集合。
2.根据权利要求1所述的存储器系统,其中所述存储器系统包括固态驱动器。
3.根据权利要求1所述的存储器系统,其中所述存储器装置包括多个存储器装置。
4.根据权利要求1所述的存储器系统,其中所述管理功能包括磨损平衡功能。
5.根据权利要求1所述的存储器系统,其中所述管理功能包括垃圾收集功能。
6.根据权利要求1所述的存储器系统,其中所述管理功能包括位密度配置功能。
7.根据权利要求1所述的存储器系统,其中所述管理功能包括地址转译功能。
8.根据权利要求1所述的存储器系统,其中所述管理功能包括错误检测功能。
9.根据权利要求1所述的存储器系统,其中所述管理功能包括错误校正功能。
10.根据权利要求1所述的存储器系统,其中所述模块包括多个模块且其中所述控制器针对所述多个模块中的每一模块提供相应接口。
11.根据权利要求1所述的存储器系统,其中所述参数包括多个参数。
12.根据权利要求1所述的存储器系统,其中所述管理功能包括数据编码功能。
13.根据权利要求1所述的存储器系统,其中所述管理功能包括数据解码功能。
14.根据权利要求1所述的存储器系统,其中所述管理功能包括校准功能。
15.根据权利要求1所述的存储器系统,其中所述管理功能包括补偿功能。
16.根据权利要求1所述的存储器系统,其中所述管理功能包括写入功能。
17.根据权利要求1所述的存储器系统,其中所述管理功能包括读取功能。
18.根据权利要求1所述的存储器系统,其中所述模块包含功能引擎,其中所述功能引擎经配置以接收所述参数。
19.根据权利要求1所述的存储器系统,其中所述参数包括数据包长度。
20.根据权利要求1所述的存储器系统,其中所述管理功能包括命令排队。
21.根据权利要求1所述的存储器系统,其中所述管理功能包括擦除功能。
22.根据权利要求1所述的存储器系统,其中所述管理功能包括块抽象化功能。
23.根据权利要求1所述的存储器系统,其中所述管理功能包括数据路径布置功能。
24.根据权利要求1所述的存储器系统,其中所述参数包括奇偶检验位的数目。
25.根据权利要求1所述的存储器系统,其中所述管理功能包括电力管理功能。
26.根据权利要求1所述的存储器系统,其中所述管理功能包括监视功能。
27.根据权利要求1所述的存储器系统,其中所述管理功能包括数据刷新功能。
28.根据权利要求1所述的存储器系统,其中所述管理功能包括分割功能。
29.根据权利要求1所述的存储器系统,其中所述管理功能包括区段分配。
30.根据权利要求1所述的存储器系统,其中所述参数包括控制器参数和模块参数。
31.根据权利要求30所述的存储器系统,其中所述管理功能将优先级给予所述控制器参数。
32.根据权利要求1所述的存储器系统,其中所述管理功能将优先级给予所述模块参数。
33.根据权利要求1所述的存储器系统,其中所述控制参数指示所述控制器对所述管理功能的控制的量。
34.根据权利要求1所述的存储器系统,其中所述控制参数为初始化参数。
35.根据权利要求1所述的存储器系统,其中所述控制参数为操作参数。
36.根据权利要求1所述的存储器系统,其中所述控制参数包括区段大小、区段分配次序和块分配次序中的至少一者。
37.根据权利要求1所述的存储器系统,其中所述控制参数包括数值准则。
38.根据权利要求1所述的存储器系统,其中所述管理功能包括数据流管理。
39.根据权利要求1所述的存储器系统,其中所述控制参数指示交织是在编码之前还是在编码之后执行。
40.根据权利要求1所述的存储器系统,其中所述控制参数指示所述模块的编码器的配置。
41.根据权利要求1所述的存储器系统,其中所述控制参数指示所述模块的解码器的配置。
42.根据权利要求1所述的存储器系统,其中所述控制参数指示所述存储器装置的类型。
43.根据权利要求1所述的存储器系统,其中所述控制参数指示所述存储器装置的至少一部分的使用模式。
44.根据权利要求1所述的存储器系统,其中所述控制参数指示特定错误校正码。
45.根据权利要求1所述的存储器系统,其中所述控制参数指示错误容量设定。
46.根据权利要求1所述的存储器系统,其中所述存储器装置包括多个存储器装置,且其中所述控制参数与所述存储器装置的物理布置相关联。
47.根据权利要求1所述的存储器系统,其中所述管理功能为所述模块的硬件功能。
48.根据权利要求1所述的存储器系统,其中所述管理功能为所述模块的软件功能。
49.根据权利要求1所述的存储器系统,其中所述控制参数与SNR相关数据相关联。
50.根据权利要求1所述的存储器系统,其中所述管理功能为数据缓冲器功能。
51.根据权利要求1所述的存储器系统,其中所述管理功能为排序功能。
52.根据权利要求1所述的存储器系统,其中所述管理功能是至少基于所述控制参数而配置。
53.根据权利要求1所述的存储器系统,其中所述功能包括数据路径方向切换功能。
54.根据权利要求1所述的存储器系统,其中所述控制参数包含使用统计数据。
55.根据权利要求1所述的存储器系统,其中所述控制参数包含存储器配置。
56.根据权利要求1所述的存储器系统,其中所述控制参数包含磨损平衡配置。
57.根据权利要求1所述的存储器系统,其中所述控制参数包括要求块的重新分配的所述块内的过时页的数目。
58.根据权利要求1所述的存储器系统,其中所述控制参数包括存储器能力数据。
59.根据权利要求1所述的存储器系统,其中所述模块包含多个媒体端口,所述多个媒体端口中的每一者经配置以在读取/写入操作中存取至少一个存储器装置,且所述模块经配置以同时支持到具有第一存储器装置的第一媒体端口的第一写入操作以及到具有第二存储器装置的第二媒体端口的第二写入操作。
60.根据权利要求1所述的存储器系统,其中所述模块包含多个媒体端口,所述多个媒体端口中的每一者经配置以在读取/写入操作中存取至少一个存储器装置,且所述模块经配置以同时支持到具有第一存储器装置的第一媒体端口的写入操作以及从具有第二存储器装置的第二媒体端口的读取操作。
61.根据权利要求1所述的存储器系统,其中所述模块包含至少一个媒体端口,所述至少一个媒体端口经配置以在读取/写入操作中存取至少两个存储器装置,且所述媒体端口经配置以支持存取第一存储器装置、界定数据包的第一集合的第一读取/写入操作和存取第二存储器装置、界定数据包的第二集合的第二读取/写入操作且使数据包的所述第一集合与数据包的所述第二集合时分多路复用。
62.根据权利要求1所述的存储器系统,其中所述模块包含多个媒体端口,所述多个媒体端口中的每一者经配置以在读取/写入操作中存取至少一个存储器装置,且所述模块经配置以支持将单一数据单元分割成至少两个分区的写入操作和读取操作中的至少一个所选择操作,所述分区中的每一者与不同媒体端口相关联。
63.根据权利要求62所述的存储器系统,其中所述单一数据单元为具有若干页的块,且所述块基于所述页之间的页边界而被分割到所述媒体端口。
64.一种模块,其包括:
存储器装置,其中所述模块经配置以关于所述存储器装置基于控制参数及模块参数来执行管理功能,其中所述控制参数是由控制器提供,且所述模块参数是由所述模块的功能引擎提供,且其中所述模块经配置以至少基于一个或多个模块参数的第一集合针对所述功能以第一模式操作且基于一个或多个模块参数的第二集合针对所述功能以第二模式操作,其中模块参数的所述第一集合不同于模块参数的所述第二集合。
65.一种用于与主机装置进行数字数据通信以为所述主机装置提供数据存储容量的存储器系统,所述存储器系统包括:
包含非易失性存储器区段的至少一个模块,且所述模块经配置以基于一个或多个模块输入参数及一个或多个控制参数针对仅所述模块的所述非易失性存储器区段独立地执行磨损平衡功能、垃圾收集功能和位密度设定功能中的至少一者,其中所述一个或多个模块输入参数由所述至少一个模块的功能引擎确定,其中所述模块经配置以至少基于所述一个或多个模块输入参数的第一集合针对所述功能中的所选择功能以第一模式操作且基于所述一个或多个模块输入参数的第二集合针对所述功能中的所述所选择功能以第二模式操作,其中模块输入参数的所述第一集合不同于模块输入参数的所述第二集合;以及
控制器,其经配置以用于与所述主机装置的所述数字数据通信且经进一步配置以用于与所述模块的模块数字数据通信以使得流入和流出所述模块的任何数据都通过所述控制器,且至少所述控制器经配置以将所述一个或多个控制参数提供给所述模块以界定所述模块中的所述磨损平衡功能、所述垃圾收集功能和所述位密度功能中的至少一者的独立执行。
66.根据权利要求65所述的存储器系统,其中所述功能引擎经配置以执行所述独立执行。
67.根据权利要求65所述的存储器系统,其中所述模块经配置以基于所述模块输入参数将所述第一模式应用于所述非易失性存储器区段的第一部分且将所述第二模式应用于所述非易失性存储器区段的第二部分,其中所述第一部分不同于所述第二部分。
68.根据权利要求67所述的存储器系统,其中所述非易失性存储器区段包含多个存储器胞元,且所述模块经配置而以第一位密度对所述第一部分的所述存储器胞元编程且以不同于所述第一位密度的第二位密度对所述第二部分的所述存储器胞元编程。
69.根据权利要求68所述的存储器系统,其中所述模块经配置以基于所述模块输入参数确立用于所述存储器胞元的所述第一部分的所述第一位密度以及用于所述存储器胞元的所述第二部分的所述第二位密度。
70.根据权利要求68所述的存储器系统,其中针对所述模块的用于所述存储器胞元的所述第一部分的所述第一位密度和用于所述存储器胞元的所述第二部分的所述第二位密度是由所述模块基于所述模块的所述非易失性存储器区段的至少一个受监视特性确定。
71.根据权利要求70所述的存储器系统,其中所述受监视特性为所述模块的所述非易失性存储器区段的错误校正统计数据。
72.根据权利要求65所述的存储器系统,其包含多个所述模块,且所述模块中的第一模块包含第一非易失性存储器区段且所述第一模块经配置以将所述第一模式作为特定位密度应用于所述第一模块的所述非易失性存储器区段的至少一部分,且所述模块中的第二模块包含第二非易失性存储器区段且所述第二模块经配置以将所述第一模式作为所述特定位密度应用于所述第二模块的所述非易失性存储器区段的另一部分,以使得以所述特定位密度编程的所述第一模块的所述部分在大小上不同于以所述特定位密度编程的所述第二模块的所述非易失性存储器的所述另一部分。
73.根据权利要求65所述的存储器系统,其中所述模块经进一步配置以针对仅所述模块的所述非易失性存储器区段独立地执行逻辑到物理块寻址功能以用于与所述控制器的所述数字通信。
74.根据权利要求65所述的存储器系统,其中所述功能引擎经配置以针对仅所述模块的所述非易失性存储器区段自主地执行所述磨损平衡功能、所述垃圾收集功能和所述位密度设定功能中的至少一者而无来自所述控制器的监督。
75.一种用于与主机装置进行数字数据通信以为所述主机装置提供数据存储容量的存储器系统,所述存储器系统包括:
多个模块,每一模块包含非易失性存储器区段,且所述模块经配置以基于一个或多个模块输入参数及一个或多个控制参数针对仅所述模块的所述非易失性存储器区段独立地执行磨损平衡功能、垃圾收集功能和位密度设定功能中的至少一者,其中所述一个或多个模块输入参数由所述至少一个模块的功能引擎确定;以及
控制器,其经配置以用于与所述主机装置的所述数字数据通信且经进一步配置以用于与所述模块的模块数字数据通信以使得流入和流出所述模块的任何数据都通过所述控制器,且至少所述控制器经配置以将所述一个或多个控制参数提供给所述模块以界定所述模块中的所述磨损平衡功能、所述垃圾收集功能和所述位密度功能中的至少一者的独立执行,且
其中每一模块经配置以针对所述模块的所述非易失性存储器区段独立地执行单独快闪转译层。
76.一种用于与主机装置进行数字数据通信以为所述主机装置提供数据存储容量的存储器系统,所述存储器系统包括:
多个模块,每一模块包含非易失性存储器区段,且所述模块经配置以基于一个或多个模块输入参数及一个或多个控制参数针对仅所述模块的所述非易失性存储器区段独立地执行磨损平衡功能、垃圾收集功能和位密度设定功能中的至少一者,其中所述一个或多个模块输入参数由所述至少一个模块的功能引擎确定;以及
控制器,其经配置以用于与所述主机装置的所述数字数据通信且经进一步配置以用于与所述模块的模块数字数据通信以使得流入和流出所述模块的任何数据都通过所述控制器,且至少所述控制器经配置以将所述一个或多个控制参数提供给所述模块以界定所述模块中的所述磨损平衡功能、所述垃圾收集功能和所述位密度功能中的至少一者的独立执行,且
其中每一模块维持分布式快闪转译层的模块部分。
77.根据权利要求76所述的存储器系统,其中每一模块经配置以可选择地以第一模式操作以使得每一模块自主地可选择地执行所述分布式快闪转译层的每一模块部分,且在所述控制器的至少部分控制下可选择地以第二模式操作以使得每一模块与所述控制器合作而可选择地执行所述分布式快闪转译层的每一模块部分。
78.一种用于与主机装置进行数字数据通信以为所述主机装置提供数据存储容量的存储器系统,所述存储器系统包括:
包含非易失性存储器区段的至少一个模块,且所述模块经配置以基于一个或多个模块输入参数及一个或多个控制参数针对仅所述模块的所述非易失性存储器区段独立地执行磨损平衡功能、垃圾收集功能和位密度设定功能中的至少一者,其中所述一个或多个模块输入参数由所述至少一个模块的功能引擎确定;以及
控制器,其经配置以用于与所述主机装置的所述数字数据通信且经进一步配置以用于与所述模块的模块数字数据通信以使得流入和流出所述模块的任何数据都通过所述控制器,且至少所述控制器经配置以将所述一个或多个控制参数提供给所述模块以界定所述模块中的所述磨损平衡功能、所述垃圾收集功能和所述位密度功能中的至少一者的独立执行,
其中所述模块的所述非易失性存储器区段是由彼此相异的多个存储器装置组成,且所述模块经配置以将存储密度指派给每一存储器装置,以使得所述存储器装置的一个群组经配置而以高存储密度存储数据且所述存储器装置的另一群组经配置而以低存储密度存储数据,其中所述高存储密度大于所述低存储密度。
79.根据权利要求78所述的存储器系统,其中每一存储器装置是由多个存储器胞元组成,且所述高存储密度为每胞元两个以上位,而所述低存储密度为每胞元仅仅两个位。
80.一种用于与主机装置进行数字数据通信以为所述主机装置提供数据存储容量的存储器系统,所述存储器系统包括:
包含非易失性存储器区段的至少一个模块,且所述模块经配置以基于一个或多个模块输入参数及一个或多个控制参数针对仅所述模块的所述非易失性存储器区段独立地执行磨损平衡功能、垃圾收集功能和位密度设定功能中的至少一者,其中所述一个或多个模块输入参数由所述至少一个模块的功能引擎确定;以及
控制器,其经配置以用于与所述主机装置的所述数字数据通信且经进一步配置以用于与所述模块的模块数字数据通信以使得流入和流出所述模块的任何数据都通过所述控制器,且至少所述控制器经配置以将所述一个或多个控制参数提供给所述模块以界定所述模块中的所述磨损平衡功能、所述垃圾收集功能和所述位密度功能中的至少一者的独立执行,且
其中所述功能引擎具有报告区段,所述报告区段用于报告与所述模块的所述非易失性存储器相关的一个或多个使用统计数据,以使得所述使用统计数据可供所述功能引擎和所述控制器中的至少一者使用。
81.根据权利要求80所述的存储器系统,其中读回值是由所述报告区段响应于所述控制器执行的读取操作而产生,且其中所述使用统计数据包含读取操作期间的读取值的至少一个集合的平均读回值和所述读取操作期间的读取值的至少所述集合的读回值的标准差中的至少一者以及一个或多个错误校正统计数据。
82.根据权利要求81所述的存储器系统,其中所述错误校正统计数据包含累积错误计数和每块错误计数中的至少一者,其中所述读取操作对块错误校正码解码。
83.根据权利要求81所述的存储器系统,其中所述报告区段经配置以基于所述使用统计数据提供与所述非易失性存储器相关的健康指示。
84.根据权利要求83所述的存储器系统,其中所述模块经配置而以当前存储器存储密度型样对所述非易失性存储器区段编程且通过将所述当前存储器存储密度型样改变为经修改存储器存储密度型样来对所述健康指示作出响应,以使得所述非易失性存储器区段的至少一个部分是以所述经修改存储器存储密度型样中的经修改位密度编程,所述经修改位密度低于所述当前存储器存储密度型样中的用于所述部分的当前位密度。
85.根据权利要求83所述的存储器系统,其中所述模块的所述报告区段经配置以提供所述健康指示以作为所述模块的预测使用寿命终结。
86.一种用作存储器系统的一部分的模块,所述存储器系统用于与主机装置进行数字数据通信以为所述主机装置提供数据存储容量,所述存储器系统包含用于直接与所述主机装置介接以提供所述数字数据通信的控制器以及多个模块,所述多个模块与所述控制器介接以用于作为与所述主机装置的所述数字数据通信的部分的在所述控制器与所述模块之间的模块数字通信,所述多个模块中的至少一者为所述用作存储器系统的一部分的模块,所述用作存储器系统的一部分的模块包括:
非易失性存储器区段;
功能引擎,其用于确定关于所述非易失性存储器区段的多个模块输入参数;以及
一布置,其用于从所述功能引擎接收所述多个模块输入参数,以及从所述控制器接收一个或多个控制参数,以界定磨损平衡功能、垃圾收集功能和位密度功能中的至少一者,且所述布置用于基于所述模块输入参数及所述一个或多个控制参数针对仅所述模块的所述非易失性存储器区段独立地执行所述磨损平衡功能、所述垃圾收集功能和所述位密度设定功能中的至少一者的执行,
其中所述模块经配置以至少基于所述多个模块输入参数的第一集合针对所述功能中的所选择功能以第一模式操作且基于所述多个模块输入参数的第二集合针对所述功能中的所述所选择功能以第二模式操作,其中模块输入参数的所述第一集合不同于模块输入参数的所述第二集合。
87.一种在用于与主机装置进行数字数据通信以为所述主机装置提供数据存储容量的存储器系统中进行的方法,其包括:
接收具有存储器装置的模块中的控制参数;
由所述模块的功能引擎确定模块参数;以及
在所述模块中,关于所述存储装置至少部分地基于所述控制参数和所述模块参数来执行管理功能,
其中所述模块经配置以至少基于一个或多个模块参数的第一集合针对所述功能以第一模式操作且基于一个或多个模块参数的第二集合针对所述功能以第二模式操作,其中模块参数的所述第一集合不同于模块参数的所述第二集合。
88.一种在用于与主机装置进行数字数据通信以为所述主机装置提供数据存储容量的存储器系统中进行的方法,所述方法包括:
提供至少一个模块,所述模块包含非易失性存储器区段,且配置所述模块以基于一个或多个模块输入参数及一个或多个控制参数针对仅所述模块的所述非易失性存储器区段独立地执行磨损平衡功能、垃圾收集功能和位密度设定功能中的至少一者;
由所述至少一个模块的功能引擎确定所述一个或多个模块输入参数;
针对与所述主机装置的所述数字数据通信且针对与所述模块的模块数字数据通信来布置控制器,以使得流入和流出所述模块的任何数据都通过所述控制器,且配置至少所述控制器以将所述一个或多个控制输入参数提供给所述模块以界定所述模块中的所述磨损平衡功能、所述垃圾收集功能和所述位密度功能中的至少一者的独立执行;以及
配置所述模块,以使得所述模块至少基于所述一个或多个模块输入参数的第一集合针对所述功能中的所选择功能以第一模式操作且基于所述一个或多个模块输入参数的第二集合针对所述功能中的所述所选择功能以第二模式操作,其中模块输入参数的所述第一集合不同于模块输入参数的所述第二集合。
CN201280007135.XA 2011-02-02 2012-01-12 存储器系统中的至少半自主模块及其方法 Active CN103339617B (zh)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US13/019,977 2011-02-02
US13/019,977 US8595415B2 (en) 2011-02-02 2011-02-02 At least semi-autonomous modules in a memory system and methods
PCT/US2012/021093 WO2012106085A2 (en) 2011-02-02 2012-01-12 At least semi-autonomous modules in a memory system and methods

Publications (2)

Publication Number Publication Date
CN103339617A CN103339617A (zh) 2013-10-02
CN103339617B true CN103339617B (zh) 2017-06-23

Family

ID=46578360

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201280007135.XA Active CN103339617B (zh) 2011-02-02 2012-01-12 存储器系统中的至少半自主模块及其方法

Country Status (7)

Country Link
US (1) US8595415B2 (zh)
EP (1) EP2671159B1 (zh)
JP (2) JP5756187B2 (zh)
KR (1) KR101577512B1 (zh)
CN (1) CN103339617B (zh)
TW (1) TWI588651B (zh)
WO (1) WO2012106085A2 (zh)

Families Citing this family (87)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9189385B2 (en) * 2010-03-22 2015-11-17 Seagate Technology Llc Scalable data structures for control and management of non-volatile storage
US8615703B2 (en) * 2010-06-04 2013-12-24 Micron Technology, Inc. Advanced bitwise operations and apparatus in a multi-level system with nonvolatile memory
US11336303B2 (en) 2010-06-04 2022-05-17 Micron Technology, Inc. Advanced bitwise operations and apparatus in a multi-level system with nonvolatile memory
EP2646922A4 (en) 2010-12-01 2015-11-25 Lsi Corp DYNAMIC MANAGEMENT OF HIGHER LEVEL REDUNDANCY MODE WITH INDEPENDENT SILICON ELEMENTS
WO2012099937A2 (en) 2011-01-18 2012-07-26 Lsi Corporation Higher-level redundancy information computation
KR101861247B1 (ko) * 2011-04-06 2018-05-28 삼성전자주식회사 메모리 컨트롤러, 이의 데이터 처리 방법, 및 이를 포함하는 메모리 시스템
US8868854B2 (en) * 2011-12-15 2014-10-21 Lsi Corporation Systems and methods for handling out of order reporting in a storage device
US20130246686A1 (en) * 2012-03-19 2013-09-19 Hitachi, Ltd. Storage system comprising nonvolatile semiconductor storage device, and storage control method
US20140052899A1 (en) * 2012-08-18 2014-02-20 Yen Chih Nan Memory address translation method for flash storage system
US8910005B2 (en) 2012-12-03 2014-12-09 Lsi Corporation Systems and methods for selective retry data retention processing
US9190104B2 (en) 2012-12-13 2015-11-17 Avago Technologies General Ip (Singapore) Pte. Ltd. Systems and methods for data retry using averaging process
US11249652B1 (en) 2013-01-28 2022-02-15 Radian Memory Systems, Inc. Maintenance of nonvolatile memory on host selected namespaces by a common memory controller
US9652376B2 (en) 2013-01-28 2017-05-16 Radian Memory Systems, Inc. Cooperative flash memory control
US10445229B1 (en) * 2013-01-28 2019-10-15 Radian Memory Systems, Inc. Memory controller with at least one address segment defined for which data is striped across flash memory dies, with a common address offset being used to obtain physical addresses for the data in each of the dies
KR102050729B1 (ko) * 2013-02-12 2019-12-02 삼성전자 주식회사 메모리 시스템
US8949696B2 (en) 2013-02-19 2015-02-03 Lsi Corporation Systems and methods for trapping set disruption
WO2015070110A2 (en) * 2013-11-07 2015-05-14 Netlist, Inc. Hybrid memory module and system and method of operating the same
US9612973B2 (en) 2013-11-09 2017-04-04 Microsoft Technology Licensing, Llc Using shared virtual memory resources for performing memory-mapping
US9323625B2 (en) 2013-11-12 2016-04-26 Avago Technologies General Ip (Singapore) Pte. Ltd. Systems and methods for lost synchronization data set reprocessing
US9385758B2 (en) 2014-01-02 2016-07-05 Avago Technologies General Ip (Singapore) Pte. Ltd. Systems and methods for efficient targeted symbol flipping
US9645741B2 (en) * 2014-02-05 2017-05-09 Sandisk Technologies Llc Storage module and host device for storage module defragmentation
US9690489B2 (en) * 2014-03-08 2017-06-27 Storart Technology Co. Ltd. Method for improving access performance of a non-volatile storage device
US9454551B2 (en) * 2014-03-13 2016-09-27 NXGN Data, Inc. System and method for management of garbage collection operation in a solid state drive
US9710173B2 (en) 2014-05-20 2017-07-18 Micron Technology, Inc. Read cache memory with DRAM class promotion
US9652415B2 (en) 2014-07-09 2017-05-16 Sandisk Technologies Llc Atomic non-volatile memory data transfer
US9904621B2 (en) * 2014-07-15 2018-02-27 Sandisk Technologies Llc Methods and systems for flash buffer sizing
US9645744B2 (en) 2014-07-22 2017-05-09 Sandisk Technologies Llc Suspending and resuming non-volatile memory operations
US10552043B2 (en) * 2014-09-09 2020-02-04 Toshiba Memory Corporation Memory system
US9542118B1 (en) 2014-09-09 2017-01-10 Radian Memory Systems, Inc. Expositive flash memory control
US9582201B2 (en) 2014-09-26 2017-02-28 Western Digital Technologies, Inc. Multi-tier scheme for logical storage management
US9952978B2 (en) 2014-10-27 2018-04-24 Sandisk Technologies, Llc Method for improving mixed random performance in low queue depth workloads
US9753649B2 (en) 2014-10-27 2017-09-05 Sandisk Technologies Llc Tracking intermix of writes and un-map commands across power cycles
US11334478B2 (en) * 2014-10-30 2022-05-17 Kioxia Corporation Memory system and nonvolatile memory medium in which program is stored to optimize operating life
US9817752B2 (en) 2014-11-21 2017-11-14 Sandisk Technologies Llc Data integrity enhancement to protect against returning old versions of data
US9824007B2 (en) 2014-11-21 2017-11-21 Sandisk Technologies Llc Data integrity enhancement to protect against returning old versions of data
US9647697B2 (en) 2015-03-16 2017-05-09 Sandisk Technologies Llc Method and system for determining soft information offsets
US9652175B2 (en) 2015-04-09 2017-05-16 Sandisk Technologies Llc Locally generating and storing RAID stripe parity with single relative memory address for storing data segments and parity in multiple non-volatile memory portions
US10372529B2 (en) 2015-04-20 2019-08-06 Sandisk Technologies Llc Iterative soft information correction and decoding
US9778878B2 (en) 2015-04-22 2017-10-03 Sandisk Technologies Llc Method and system for limiting write command execution
US9870149B2 (en) 2015-07-08 2018-01-16 Sandisk Technologies Llc Scheduling operations in non-volatile memory devices using preference values
US10552058B1 (en) 2015-07-17 2020-02-04 Radian Memory Systems, Inc. Techniques for delegating data processing to a cooperative memory controller
US9715939B2 (en) 2015-08-10 2017-07-25 Sandisk Technologies Llc Low read data storage management
JP6377584B2 (ja) * 2015-09-02 2018-08-22 株式会社三共 遊技機
JP6700088B2 (ja) * 2015-09-24 2020-05-27 株式会社三共 遊技機
US9952788B2 (en) * 2015-09-29 2018-04-24 Cnex Labs, Inc. Method and apparatus for providing a shared nonvolatile memory system using a distributed FTL scheme
US10228990B2 (en) 2015-11-12 2019-03-12 Sandisk Technologies Llc Variable-term error metrics adjustment
US10126970B2 (en) 2015-12-11 2018-11-13 Sandisk Technologies Llc Paired metablocks in non-volatile storage device
US9990311B2 (en) * 2015-12-28 2018-06-05 Andes Technology Corporation Peripheral interface circuit
US9837146B2 (en) 2016-01-08 2017-12-05 Sandisk Technologies Llc Memory system temperature management
US10210121B2 (en) * 2016-01-27 2019-02-19 Quanta Computer Inc. System for switching between a single node PCIe mode and a multi-node PCIe mode
KR102529171B1 (ko) 2016-02-26 2023-05-04 삼성전자주식회사 메모리 장치 진단 시스템
US10732856B2 (en) 2016-03-03 2020-08-04 Sandisk Technologies Llc Erase health metric to rank memory portions
US9934151B2 (en) 2016-06-28 2018-04-03 Dell Products, Lp System and method for dynamic optimization for burst and sustained performance in solid state drives
US10481830B2 (en) 2016-07-25 2019-11-19 Sandisk Technologies Llc Selectively throttling host reads for read disturbs in non-volatile memory system
US10971241B2 (en) 2017-01-30 2021-04-06 Toshiba Memory Corporation Performance based method and system for patrolling read disturb errors in a memory unit
US11003381B2 (en) * 2017-03-07 2021-05-11 Samsung Electronics Co., Ltd. Non-volatile memory storage device capable of self-reporting performance capabilities
US11294594B2 (en) * 2017-08-07 2022-04-05 Kioxia Corporation SSD architecture supporting low latency operation
US10509722B2 (en) * 2017-08-31 2019-12-17 Micron Technology, Inc. Memory device with dynamic cache management
US10553285B2 (en) * 2017-11-28 2020-02-04 Western Digital Technologies, Inc. Single-port memory with opportunistic writes
KR102370278B1 (ko) * 2017-11-30 2022-03-07 에스케이하이닉스 주식회사 메모리 컨트롤러, 이를 포함하는 메모리 시스템, 및 그의 동작방법
CN108037725B (zh) * 2017-12-08 2019-09-03 中冶南方工程技术有限公司 一种读写plc数据的方法和装置
KR20190075353A (ko) * 2017-12-21 2019-07-01 에스케이하이닉스 주식회사 메모리 시스템 및 메모리 시스템의 동작 방법
US10564868B2 (en) * 2018-01-24 2020-02-18 Western Digital Technologies, Inc. Method and apparatus for selecting power states in storage devices
TWI670598B (zh) * 2018-05-14 2019-09-01 慧榮科技股份有限公司 管理快閃記憶體模組的方法及相關的快閃記憶體控制器及電子裝置
US10747613B2 (en) 2018-09-07 2020-08-18 Toshiba Memory Corporation Pooled frontline ECC decoders in memory systems
CN110119132B (zh) * 2019-04-09 2023-01-24 吴怡文 一种控制器实现功能设定多样化的方法和系统
US11366976B2 (en) * 2019-05-09 2022-06-21 Micron Technology, Inc. Updating manufactured product life cycle data in a database based on scanning of encoded images
JP7214758B2 (ja) 2019-11-15 2023-01-30 キオクシア株式会社 ストレージデバイスおよびストレージシステム
US11487544B2 (en) 2020-01-15 2022-11-01 Western Digital Technologies, Inc. Method and device for simultaneously decoding data in parallel to improve quality of service
US12009034B2 (en) * 2020-03-02 2024-06-11 Micron Technology, Inc. Classification of error rate of data retrieved from memory cells
US11740970B2 (en) 2020-03-02 2023-08-29 Micron Technology, Inc. Dynamic adjustment of data integrity operations of a memory system based on error rate classification
US11221800B2 (en) 2020-03-02 2022-01-11 Micron Technology, Inc. Adaptive and/or iterative operations in executing a read command to retrieve data from memory cells
US11086572B1 (en) 2020-03-02 2021-08-10 Micron Technology, Inc. Self adapting iterative read calibration to retrieve data from memory cells
US11029890B1 (en) 2020-03-02 2021-06-08 Micron Technology, Inc. Compound feature generation in classification of error rate of data retrieved from memory cells
US11257546B2 (en) 2020-05-07 2022-02-22 Micron Technology, Inc. Reading of soft bits and hard bits from memory cells
US11562793B2 (en) 2020-05-07 2023-01-24 Micron Technology, Inc. Read soft bits through boosted modulation following reading hard bits
US11081200B1 (en) 2020-05-07 2021-08-03 Micron Technology, Inc. Intelligent proactive responses to operations to read data from memory cells
US11693798B2 (en) 2020-07-10 2023-07-04 Samsung Electronics Co., Ltd. Layered ready status reporting structure
US11567831B2 (en) 2020-07-28 2023-01-31 Micron Technology, Inc. Generating a protected and balanced codeword
US11237906B1 (en) 2020-07-28 2022-02-01 Micron Technology, Inc. Generating a balanced codeword protected by an error correction code
US11494264B2 (en) 2020-07-28 2022-11-08 Micron Technology, Inc. Generating a protected and balanced codeword
US11556272B2 (en) * 2020-09-18 2023-01-17 Kioxia Corporation System and method for NAND multi-plane and multi-die status signaling
US11947806B2 (en) 2020-11-03 2024-04-02 Micron Technology, Inc. Life expectancy monitoring for memory devices
US11507296B2 (en) 2021-03-10 2022-11-22 Micron Technology, Inc. Repair operation techniques
US11622135B2 (en) * 2021-06-23 2023-04-04 Synamedia Limited Bandwidth allocation for low latency content and buffered content
US11907080B1 (en) 2022-10-20 2024-02-20 Dell Products L.P. Background-operation-based autonomous compute storage device system
US11983409B1 (en) 2022-10-20 2024-05-14 Dell Products L.P. Host-read-based autonomous compute storage device system

Family Cites Families (26)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH0950398A (ja) * 1995-08-10 1997-02-18 Fuji Xerox Co Ltd 記憶装置
US7007130B1 (en) * 1998-02-13 2006-02-28 Intel Corporation Memory system including a memory module having a memory module controller interfacing between a system memory controller and memory devices of the memory module
DE69836437T2 (de) * 1997-12-05 2007-09-27 Intel Corporation, Santa Clara Speichersystem mit speichermodul mit einem speichermodul-steuerbaustein
US7024518B2 (en) * 1998-02-13 2006-04-04 Intel Corporation Dual-port buffer-to-memory interface
US6968419B1 (en) * 1998-02-13 2005-11-22 Intel Corporation Memory module having a memory module controller controlling memory transactions for a plurality of memory devices
US6970968B1 (en) * 1998-02-13 2005-11-29 Intel Corporation Memory module controller for providing an interface between a system memory controller and a plurality of memory devices on a memory module
US8452912B2 (en) * 2007-10-11 2013-05-28 Super Talent Electronics, Inc. Flash-memory system with enhanced smart-storage switch and packed meta-data cache for mitigating write amplification by delaying and merging writes until a host read
US6684289B1 (en) * 2000-11-22 2004-01-27 Sandisk Corporation Techniques for operating non-volatile memory systems with data sectors having different sizes than the sizes of the pages and/or blocks of the memory
US20050138267A1 (en) * 2003-12-23 2005-06-23 Bains Kuljit S. Integral memory buffer and serial presence detect capability for fully-buffered memory modules
US7328309B2 (en) 2004-10-14 2008-02-05 International Business Machines Corporation On-demand cache memory for storage subsystems
US7421598B2 (en) 2005-02-09 2008-09-02 International Business Machines Corporation Dynamic power management via DIMM read operation limiter
US7193898B2 (en) * 2005-06-20 2007-03-20 Sandisk Corporation Compensation currents in non-volatile memory read operations
TWI303828B (en) * 2006-03-03 2008-12-01 Winbond Electronics Corp A method and a system for erasing a nonvolatile memory
JP2008117195A (ja) * 2006-11-06 2008-05-22 Hitachi Ltd 半導体記憶装置
CN101681282A (zh) * 2006-12-06 2010-03-24 弗森多系统公司(dba弗森-艾奥) 用于共享的、前端、分布式raid的装置、系统和方法
US7694099B2 (en) * 2007-01-16 2010-04-06 Advanced Risc Mach Ltd Memory controller having an interface for providing a connection to a plurality of memory devices
KR100823171B1 (ko) 2007-02-01 2008-04-18 삼성전자주식회사 파티션된 플래시 변환 계층을 갖는 컴퓨터 시스템 및플래시 변환 계층의 파티션 방법
US20090063895A1 (en) * 2007-09-04 2009-03-05 Kurt Smith Scaleable and maintainable solid state drive
TWI376603B (en) * 2007-09-21 2012-11-11 Phison Electronics Corp Solid state disk storage system with a parallel accessing architecture and a solid state disk controller
US8131912B2 (en) * 2007-09-27 2012-03-06 Kabushiki Kaisha Toshiba Memory system
US20100017650A1 (en) * 2008-07-19 2010-01-21 Nanostar Corporation, U.S.A Non-volatile memory data storage system with reliability management
US8412880B2 (en) 2009-01-08 2013-04-02 Micron Technology, Inc. Memory system controller to manage wear leveling across a plurality of storage nodes
US8250282B2 (en) * 2009-05-14 2012-08-21 Micron Technology, Inc. PCM memories for storage bus interfaces
US9123409B2 (en) * 2009-06-11 2015-09-01 Micron Technology, Inc. Memory device for a hierarchical memory architecture
WO2011010344A1 (ja) * 2009-07-22 2011-01-27 株式会社日立製作所 複数のフラッシュパッケージを有するストレージシステム
US8364929B2 (en) * 2009-10-23 2013-01-29 Seagate Technology Llc Enabling spanning for a storage device

Also Published As

Publication number Publication date
TWI588651B (zh) 2017-06-21
JP2015172965A (ja) 2015-10-01
EP2671159B1 (en) 2019-08-28
WO2012106085A2 (en) 2012-08-09
JP2014507724A (ja) 2014-03-27
EP2671159A4 (en) 2014-07-30
CN103339617A (zh) 2013-10-02
TW201237623A (en) 2012-09-16
EP2671159A2 (en) 2013-12-11
KR20130121165A (ko) 2013-11-05
KR101577512B1 (ko) 2015-12-14
JP5756187B2 (ja) 2015-07-29
US20120198129A1 (en) 2012-08-02
WO2012106085A3 (en) 2012-10-11
JP6063995B2 (ja) 2017-01-18
US8595415B2 (en) 2013-11-26

Similar Documents

Publication Publication Date Title
CN103339617B (zh) 存储器系统中的至少半自主模块及其方法
CN103339618B (zh) 用于存取面向块的非易失性存储器的控制装置、方法和存储器系统
US8924636B2 (en) Management information generating method, logical block constructing method, and semiconductor memory device
US8001317B2 (en) Data writing method for non-volatile memory and controller using the same
CN103092770B (zh) 一种磨损均衡处理时减少内存开销的方法
CN104903842A (zh) 用于在非易失性存储器中的异步裸芯操作的方法和系统
CN101681307A (zh) 存储器系统
US9582224B2 (en) Memory control circuit unit, memory storage apparatus and data accessing method
US10795768B2 (en) Memory reallocation during raid rebuild
US9946476B2 (en) Memory management method, memory control circuit unit and memory storage apparatus
US20170242597A1 (en) Wear leveling method, memory control circuit unit and memory storage device
CN101425338B (zh) 非易失性存储器的写入方法及使用此方法的控制器
CN106683701A (zh) 存储器管理方法、存储器储存装置及存储器控制电路单元
CN103198020A (zh) 一种提高闪存使用寿命的方法
CN104731710B (zh) 存储器管理方法、存储器控制电路单元与存储器储存装置
CN114442946A (zh) 物理块管理方法和固态硬盘
CN108958640B (zh) 存储器管理方法、存储器控制电路单元及存储器存储装置
CN101976576A (zh) 非易失性存储器的写入方法及使用此方法的控制器
CN107643876A (zh) 存储器管理方法、存储器存储装置及存储器控制电路单元
CN102455975B (zh) 用来进行数据整形的方法以及其记忆装置及控制器

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant