CN105229592A - 用于生成用以由于错误而重新访问存储驱动器的非易失性半导体存储器的描述符的装置和方法 - Google Patents

用于生成用以由于错误而重新访问存储驱动器的非易失性半导体存储器的描述符的装置和方法 Download PDF

Info

Publication number
CN105229592A
CN105229592A CN201480022050.8A CN201480022050A CN105229592A CN 105229592 A CN105229592 A CN 105229592A CN 201480022050 A CN201480022050 A CN 201480022050A CN 105229592 A CN105229592 A CN 105229592A
Authority
CN
China
Prior art keywords
descriptor
module
data block
data
access
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
CN201480022050.8A
Other languages
English (en)
Other versions
CN105229592B (zh
Inventor
徐伟
孙飞
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.)
Marvell World Trade Ltd
Mawier International Trade Co Ltd
Original Assignee
Mawier International Trade Co Ltd
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
Priority claimed from US14/132,810 external-priority patent/US9141538B2/en
Priority claimed from US14/208,814 external-priority patent/US9135168B2/en
Application filed by Mawier International Trade Co Ltd filed Critical Mawier International Trade Co Ltd
Publication of CN105229592A publication Critical patent/CN105229592A/zh
Application granted granted Critical
Publication of CN105229592B publication Critical patent/CN105229592B/zh
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/14Error detection or correction of the data by redundancy in operation
    • G06F11/1402Saving, restoring, recovering or retrying
    • G06F11/1405Saving, restoring, recovering or retrying at machine instruction level
    • G06F11/141Saving, restoring, recovering or retrying at machine instruction level for bus or memory accesses

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Quality & Reliability (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Techniques For Improving Reliability Of Storages (AREA)

Abstract

一种存储驱动器包括第一模块和第二模块。所述第一模块被配置为基于第一描述符的指令信号来向所述存储驱动器中的非易失性半导体存储器传输数据或者从所述存储驱动器中的所述非易失性半导体存储器传输所述数据块。所述第二模块被配置为:监控所述数据块的所述传输的状态;确定关于所述数据块的所述传输的错误是否存在;以及独立于与所述主机设备的通信,在所述错误存在时发起第二描述符的生成。所述第二模块被配置为根据所述第二描述符来执行重新访问事件,所述重新访问事件包括重新访问所述非易失性半导体存储器以再次向所述非易失性半导体存储器传输所述数据块或者从所述非易失性半导体存储器传输所述数据块。

Description

用于生成用以由于错误而重新访问存储驱动器的非易失性半导体存储器的描述符的装置和方法
相关申请的交叉引用
本公开内容要求于2014年3月13日提交的美国专利申请No.14/208,814的优先权,该申请是于2013年12月18日提交的美国专利申请No.14/132,810的部分继续申请。本申请要求于2013年3月15日提交的美国临时专利申请No.61/794,092的权益。美国专利申请No.14/132,810是于2011年6月22日提交的美国专利申请No.13/166,340的部分继续申请。美国专利申请No.14/132,810要求于2013年11月5日提交的美国临时专利申请No.61/900,104和于2012年12月19日提交的美国临时专利申请No.61/739,386的权益。美国专利申请No.13/166,340要求于2010年7月7日提交的美国临时专利申请No.61/362,251的权益。将上述申请的公开内容通过引用整体并入本文中。
技术领域
本公开内容涉及非易失性半导体存储器访问***,并且更具体地涉及针对非易失性半导体存储器的数据传输控制***。
背景技术
本文中提供的背景描述是出于大体呈现本公开内容的上下文的目的。当前署名的发明人的到在该背景技术部分中描述的工作的程度的工作、以及在提交的时候不可以称为现有技术的说明书的各个方面,既非明确地也非隐含地被认为是针对本公开内容的现有技术。
非易失性半导体存储器(NVSM)驱动器(例如,快闪驱动器)包括NVSM并且基于数据页的大小来操作。例如,向NVSM和从NVSM传输的数据被分组成数据集。数据集中的每个数据集具有与一个或多个数据页的长度相等的长度。例如,数据页可以具有8千字节(KB)的长度。
例如,NVSM驱动器可以包括NVSM接口、缓冲器管理模块、错误校正码(ECC)模块、接口管理模块和NVSM控制模块。NVSM接口可以与主机通信。在NVSM接口与主机之间传输数据。缓冲器管理模块在数据被存储在NVSM中之前从主机接收数据并在数据被传输到主机之前从NVSM接收数据。ECC模块对被提供到NVSM的数据进行编码并对从NVSM接收到的数据进行解码。接口管理模块控制在ECC模块与NVSM之间的数据传输。
NVSM控制模块执行固件以响应于从主机接收到的访问请求信号来生成描述符。例如,描述符可以指示要执行读取操作还是编程(即,写入)操作、要传输的数据量以及在NVSM中访问的地址。基于描述符来操作ECC模块和接口管理模块。
接口控制模块经由多个通道(例如,每个NVSM芯片8个通道)来与NVSM通信并且包括用于通道中的每个通道的先进先出(FIFO)寄存器。在读取操作和编程操作期间顺序地访问FIFO寄存器。FIFO寄存器中的每个FIFO寄存器的大小等于一个或多个数据页的大小。
在编程操作期间,ECC模块可以在数据被存储在NVSM中之前向接口控制模块传输基于页的格式的数据。ECC模块可以向FIFO寄存器中的每个FIFO寄存器传输一个或多个数据页(M页),其中M是大于或等于1的整数。ECC模块向FIFO寄存器中的每个FIFO寄存器传输的页的数量取决于NVSM驱动器的页格式。针对传输的每个M页的集合,可以生成单个描述符。
例如,如果ECC模块在具有单页格式的NVSM驱动器中操作,则1个数据页被传输到FIFO寄存器中的每个FIFO寄存器。在该示例中,FIFO寄存器中的每个FIFO寄存器的大小等于1个数据页的大小。如果ECC模块在具有双页格式的NVSM驱动器中操作,则2个数据页被传输到FIFO寄存器中的每个FIFO寄存器,并且FIFO寄存器中的每个FIFO寄存器的大小等于2个数据页的大小。M个数据页在向下一(或后续)FIFO寄存器传输数据之前被传输到当前FIFO寄存器。针对读取操作反向执行上述数据传输。
因为直到当前FIFO寄存器接收到M个数据页才向下一FIFO寄存器传输数据,所以可以导致数据传输延迟。这些延迟可以在FIFO寄存器中的一个或多个FIFO寄存器处出现并且可以随着较高阶的页格式而增加。页格式的阶是指在单个数据传输事件期间传输的页的数量。数据传输事件是指向NVSM的通道中的一个通道传输数据或者从NVSM的通道中的一个通道传输数据。例如,在具有2页格式的NVSM驱动器中,如果由于ECC模块与第一通道之间的速度差异而在第一FIFO寄存器处出现“瓶颈”,则延迟可以出现在第一FIFO寄存器处以及所有后续FIFO寄存器处。由于两个数据页被传输到单个FIFO寄存器,所以在第一数据页被延迟时第二数据页可以被延迟。此外,在将第二数据页传输到第一FIFO寄存器中的延迟使向第一FIFO寄存器之后的FIFO寄存器的数据传输延迟。
另外,数据错误可以在从NVSM读取数据期间出现。例如,数据错误可以由于对NVSM中的不准确的电压基准的使用而出现。NVSM中的存储单元的状态是基于电压基准可区分的。如果电压基准随时间变得不准确,则对检测到的对应于存储单元的状态的电压的解读可以是不准确的并且因此可以导致数据错误。为了校正所述数据错误,NVSM控制模块能够执行固件以生成用于重新读取具有对应的数据错误的存储单元的描述符。
发明内容
提供了一种存储驱动器,并且所述存储驱动器包括第一模块和第二模块。所述第一模块被配置为基于第一描述符的指令信号来向所述存储驱动器中的非易失性半导体存储器传输数据块或者从所述存储驱动器中的所述非易失性半导体存储器传输所述数据块。所述第二模块被配置为:监控所述数据块的所述传输的状态;确定关于所述数据块的所述传输的错误是否存在;以及独立于与主机设备的通信,在所述错误存在时发起第二描述符的生成。所述第二模块被配置为根据所述第二描述符来执行重新访问事件,所述重新访问事件包括重新访问所述非易失性半导体存储器以再次向所述非易失性半导体存储器传输所述数据块或者从所述非易失性半导体存储器传输所述数据块。
在其他特征中,所述存储驱动器还包括第三模块和第四模块。所述第三模块被配置为根据所述第一描述符来生成用于在所述第一模块与所述非易失性半导体存储器之间传输所述数据块的第三描述符。第四模块被配置为响应于所述第二描述符来生成所述指令信号。所述第二模块被配置为基于由所述第一模块对所述第三描述符的执行来监控所述数据块的所述传输的所述状态,确定关于所述数据块的所述传输的所述错误是否存在,并且在所述错误存在时发起所述第二描述符的所述生成。
在其他特征中,所述第三模块被配置为:访问模板;基于所述第一描述符中的参数来更新所述模板中的字段;以及根据所述模板来生成所述第二描述符或所述第三描述符。
在其他特征中,所述第二模块被配置为触发所述第三模块以生成分别对应于针对所述数据块的多个重新访问事件的重新访问描述符。所述重新访问描述符包括所述第二描述符。所述第三模块被配置为:访问针对所述重新访问事件中的每个重新访问事件的模板,其中所述模板中的每个模板包括字段;基于所述第一描述符来更新所述模板中的所述字段;以及根据所述模板来生成所述重新访问描述符。
在其他特征中,所述存储驱动器还包括第三模块和第四模块。第三模块被配置为处理在所述第一模块与所述非易失性半导体存储器之间传输的数据并且在所述错误存在时生成指示信号。所述第二模块被配置为基于所述指示信号来生成用于触发所述第二描述符的所述生成的触发信号。第四模块被配置为基于所述触发信号来生成所述第二描述符。
在其他特征中,所述存储驱动器还包括第三模块,所述第三模块被配置为设定针对所述数据块的重新访问事件的最大数量。所述第二模块被配置为跟踪针对所述数据块执行的重新访问事件的数量,触发分别对应于针对所述数据块执行的所述重新访问事件的重新访问描述符的生成,并且在重新访问事件的所述数量等于或大于重新访问事件的所述最大数量时停止重新访问描述符的生成。针对所述重新访问事件生成的所述重新访问描述符中的一个重新访问描述符是所述第二描述符。
在其他特征中,提供了一种方法,并且所述方法包括:基于第一描述符的指令信号来向存储驱动器中的非易失性半导体存储器传输数据块或者从所述存储驱动器中的所述非易失性半导体存储器传输所述数据块;监控所述数据块的所述传输的状态;确定关于所述数据块的所述传输的错误是否存在;以及在所述错误存在时发起第二描述符的生成。所述方法还包括根据所述第二描述符来执行重新访问事件,所述重新访问事件包括重新访问所述非易失性半导体存储器以再次向所述非易失性半导体存储器传输所述数据块或者从所述非易失性半导体存储器传输所述数据块。
在其他特征中,所述方法还包括根据所述第一描述符来生成用于向所述非易失性半导体存储器传输所述数据块或者从所述非易失性半导体存储器传输所述数据块的第三描述符。响应于所述第二描述符来生成所述指令信号。基于所述第三描述符的执行,监控所述数据块的所述传输的所述状态。执行对关于所述数据块的所述传输的所述错误是否存在的所述确定。在所述错误存在时发起所述第二描述符的所述生成。
在其他特征中,所述方法还包括:访问模板;基于所述第一描述符中的参数来更新所述模板中的字段;以及根据所述模板来生成所述第二描述符或所述第三描述符。
在其他特征中,所述方法还包括:触发分别对应于针对所述数据块的重新访问事件的重新访问描述符的生成,其中所述重新访问描述符包括所述第二描述符;访问针对所述重新访问事件中的每个重新访问事件的模板,其中所述模板中的每个模板包括字段;基于所述第一描述符来更新所述模板中的所述字段;并且根据所述模板来生成所述重新访问描述符。
在其他特征中,所述方法还包括:处理向所述非易失性半导体存储器或者从所述非易失性半导体存储器传输的数据;在所述错误存在时生成指示信号;基于所述指示信号来生成用于触发所述第二描述符的所述生成的触发信号;以及基于所述触发信号来生成所述第二描述符。
在其他特征中,所述方法还包括:设定针对所述数据块的重新访问事件的最大数量;跟踪针对所述数据块执行的重新访问事件的数量;触发分别对应于针对所述数据块执行的所述重新访问事件的重新访问描述符的生成,其中针对所述重新访问事件生成的所述重新访问描述符中的一个重新访问描述符是所述第二描述符;以及在重新访问事件的所述数量等于或大于重新访问事件的所述最大数量时停止重新访问描述符的生成。
在其他特征中,所述方法还包括:在所述错误由于针对所述数据块执行的所述重新访问事件中的一个重新访问事件清除所述错误而不再存在时,报告所述数据块的通过;以及在针对所述数据块执行的重新访问事件的所述数量等于或大于重新访问事件的所述最大数量时,报告所述数据块的通过或失败。
本公开内容的适用性的进一步领域将从详细的描述、权利要求书和附图变得显而易见。详细的描述和具体示例旨在仅出于说明的目的并且不旨在限制本公开内容的范围。
附图说明
本公开内容将从详细的描述和附图得到更完全的理解,在附图中:
图1是根据本公开内容的并入重新读取模块的NVSM存储***的功能性框图;
图2是根据本公开内容的接口管理控制***的一部分的功能性框图;
图3是根据本公开内容的图示了具有页大小的传输的多页编程事件的接口管理控制***的一部分的功能性框图;
图4是根据本公开内容的图示了具有分配块大小的传输的基于分配块的编程事件的接口管理控制***的一部分的功能性框图;
图5是根据本公开内容的并入多个编码器和解码器的接口管理控制***的一部分的功能性框图;
图6图示了根据本公开内容的操作NVSM存储***和NVSM驱动器的方法;
图7是根据本公开内容的图示了对每个分配单元生成固件描述符的框图;
图8是根据本公开内容的图示了对每个分配单元生成硬件描述符的框图;
图9图示了根据本公开内容的描述符生成方法;
图10图示了根据本公开内容的由NVSM控制模块生成的固件描述符的示例;
图11图示了针对图21的固件描述符的控制行的示例。
图12图示了根据本公开内容的状态寄存器的示例;
图13图示了根据本公开内容的固件描述符的示例;
图14图示了根据本公开内容的模板的示例;以及
图15图示了根据本公开内容的执行重新访问过程的方法。
具体实施方式
NVSM控制模块可以执行固件以生成用于从NVSM读取数据或将数据写入到NVSM的描述符。NVSM控制模块还可以生成用于在数据错误出现时重新访问NVSM的存储单元的描述符。生成用于读取、写入和重新访问NVSM的存储单元的描述符可以需要大量固件开销并且可以利用大量带宽和/或NVSM控制模块的处理时间。为了减少与生成描述符相关联的固件开销、带宽以及处理时间,下面公开了包括经由与NVSM控制模块分开的重新访问模块和/或硬件来生成描述符的示例。如下面描述的,重新访问模块和/或硬件可以包括用于生成描述符的电子电路或其他适当的硬件。尽管下面的示例主要被描述为利用为了这些目的的硬件,但是所述示例可以包括可以执行用于描述符生成的附加的固件的逻辑器件和/或处理器。重新访问模块和/或硬件可以生成用于在没有NVSM控制模块介入的情况下重新访问NVSM的描述符。
在下面的描述中,术语“非易失性半导体存储器(NVSM)”可以是指相变存储器(PCM)、电可擦可编程只读存储器(EEPROM)、只读存储器(ROM)和/或随机存取存储器(RAM)。一对EEPROM的示例是NAND快闪存储器和NOR快闪存储器。
此外,在下面的描述中,术语“主机”可以是指向NVSM驱动器传输数据和/或访问来自NVSM驱动器的数据的设备。NVSM驱动器可以是快闪驱动器、通用串行总线(USB)驱动器、固态存储器驱动器等等。
作为几个示例,主机可以是指计算机、相机、手持设备、便携式设备、蜂窝电话、打印机、个人数据助理、电子笔记本、电视、显示器、电器、监控***等等。计算机的示例是台式计算机、膝上型计算机、电子笔记本等等。电器的示例是洗衣机、烘干机、冰箱等等。NVSM驱动器包括NVSM并且可以不包括诸如硬盘驱动盘的旋转磁性存储介质。监控***的示例包括防盗监控器、烟雾检测***、婴儿监控器等等。
另外,本文中公开了各种***元件,诸如模块、网络设备以及电路部件。***元件的布置的示例被公开并且包括相邻元件和非相邻元件。相邻元件被示出为彼此直接连接。非相邻元件被示出为彼此间接连接。
图1示出了非易失性半导体存储器(NVSM)存储***10。NVSM***10包括重新访问模块11,重新访问模块11被配置为生成用于由于在对NVSM12的访问期间出现的错误而重新访问NVSM12的描述符。下面进一步描述对描述符的生成和对NVSM***10的操作。
NVSM存储***10包括主机13(或主机侧)和NVSM驱动器14(或NVSM侧)。主机13包括主机控制模块16和主机接口18。NVSM驱动器14经由NVSM驱动器接口20与主机13通信。NVSM驱动器14包括NVSM驱动器接口20、接收路径22、传输路径24、接口管理控制***26以及NVSM12。NVSM驱动器接口20与主机接口18通信。接收路径22和传输路径24在NVSM驱动器接口20与NVSM12之间传输数据。接口管理控制***26包括NVSM控制模块27。NVSM控制模块27控制向NVSM12和从NVSM12的数据传输。
接口管理控制***26基于数据的分配块(或分配单元(AU))的预定的大小、选定的大小和/或确定的大小来操作。这不像基于单个固定块大小操作的传统NVSM驱动器。在传统NVSM中,单个块大小等于数据页的大小。
在本公开内容中,数据的分配块是指由NVSM驱动器14设定的数据量(或大小边界)并且用于在NVSM驱动器14的设备和/或模块之间传输数据。去往和来自NVSM12的每个数据传输事件包括一个或多个数据分配块。数据传输事件可以是编程事件或读取事件。分配块的大小可以:针对不同的读取事件;针对不同的编程事件;和/或在读取事件与编程事件之间是相同的或不同的。分配块的大小可以由NVSM控制模块27确定、设定和/或调整。下面进一步描述分配块、分配块大小和分配块的传输。
主机控制模块16经由主机接口18向NVSM驱动器14传输主机数据并且从NVSM驱动器14接收主机数据。这可以包括访问事件,诸如读取事件、写入事件(或编程事件)和/或擦除访问事件。主机13可以基于接收到的数据对象来生成HDS和/或从NVSM驱动器14请求主机数据扇区。HDS可以是从主机13向NVSM驱动器14传输的最小长度数据元素。在接口18、20的相应端口之间传输HDS。例如,接口18、20可以是串行高级技术附件(SATA)接口、小型计算机***接口(SCSI)、串行附接的SCSI(SAS)、光纤通道接口、通用串行总线(USB)接口等等。
主机控制模块16还可以生成访问请求信号30,诸如数据编程信号、数据读取信号、数据擦除信号等等。访问请求信号30可以由NVSM控制模块27和/或由NVSM驱动器14的其他模块经由NVSM驱动器接口20接收。NVSM控制模块27基于访问请求信号30来控制对NVSM12的访问。NVSM驱动器14经由NVSM驱动器接口20接收HDS。NVSM控制模块27基于访问请求信号30来访问和/或请求来自NVSM12的驱动器数据扇区(DDS)。
接收路径22包括压缩模块40、加密模块42、缓冲器管理模块44、驱动器数据扇区(DDS)生成模块46、错误校正码(ECC)模块48、接口管理模块50以及NVSM12。传输路径24包括NVSM12、接口管理模块50、ECC模块48、HDS生成模块52、缓冲器管理模块44、解密模块54以及解压缩模块56。缓冲器管理模块44以及DDS生成模块46和HDS生成模块52可以被组合以形成单个模块。接口管理控制***26包括NVSM控制模块27、命令管理模块60、ECC模块48以及接口管理模块50。NVSM驱动器14的模块可以被称为NVSM存储***并且可以被组合成一个或多个模块。
NVSM驱动器接口20可以从主机接口18接收单个数据流或多个并发的并行数据流。数据流可以被传输到压缩模块40。多个并发的并行数据流可以在主机接口18和NVSM接口20例如是SAS接口时被接收。
压缩模块40在可行时并且并且在HDS被缓冲器管理模块44接收之前对从主机接口18接收到的所述HDS进行压缩。对于与从主机接口18接收到的HDS相同长度的HDS执行压缩。压缩模块40可以使用有损压缩方法和/或无损压缩方法。有损压缩和解压缩提供在压缩和解压缩之后与原始数据接近但不相同的数据。无损压缩和解压缩提供在压缩和解压缩之后与原始数据相同的数据的重建。无损数据压缩包括检测重复位模式并移除冗余。
压缩模块40在可行时对从主机13接收到主机数据扇区(HDS)进行压缩。HDS在被接收时可以是未压缩的、部分压缩的和/或完全压缩的。HDS可以是从主机13向NVSM驱动器14传输的最小长度数据元素。某些HDS可能是不能压缩的,例如,当使用无损压缩并且对应的数据模式不包含冗余时。
加密模块42对经压缩的HDS进行加密。加密模块42对从压缩模块40接收到的数据进行加密。加密可以包括一个或多个公钥和私钥。加密还可以包括特定于NVSM驱动器14或NVSM驱动器14的部件的一个或多个密钥,例如特定于NVSM控制模块27和/或NVSM12的密钥。
缓冲器管理模块44将HDS存储在缓冲器70中并且向DDS生成模块46转发HDS。缓冲器70可以包括易失性存储器,诸如RAM、动态RAM(DRAM)和/或静态RAM(SRAM)。缓冲器管理模块44可以在将一个或多个HDS存储在NVSM12中之前收集并存储该一个或多个HDS。
缓冲器管理模块44可以:在可行时将从加密模块42接收到的DDS转换为HDS;从(在缓冲器管理模块44与NVSM12之间的)缓冲器管理模块44的下游的部件接收HDS;和/或向解压缩模块56传输HDS。DDS中的每个DDS可以大于或等于HDS的大小。解压缩的HDS被传输到主机13。缓冲器管理模块44可以以预定的顺序组合并存储经压缩的和/或经加密的HDS,而无论HDS被接收的顺序如何。
例如,HDS可以以数字顺序被接收或可以以不同的顺序被接收。顺序地接收到的HDS可以被存储在不同的HDS寄存器72中以允许以数字顺序或预定的顺序对HDS进行重新排序。因此,HDS寄存器72可以用于针对相应的DDS(示出了HDS寄存器1-N和HDS集1-N)提供HDS集74。因为HDS寄存器被填充和/或预定的DDS长度限制被满足,所以HDS集可以从缓冲器管理模块44被释放并被传递到DDS生成模块46。例如,在没有另外的HDS可以和/或将要与当前DDS的其他HDS组合时,预定的DDS长度限制被满足。
DDS生成模块46基于HDS寄存器72中的组合的和/或存储的(一个或多个)HDS并且基于HDS信息和DDS信息来生成DDS。DDS生成模块46在将HDS存储在NVSM12中之前将HDS转换为DDS。可以从缓冲器管理模块44接收到HDS信息和DDS信息。HDS信息和DDS信息可以包括HDS信息位和DDS信息,诸如DDS长度、DDS位槽可用性等等。
DDS生成模块46可以生成具有相同位长度的每个DDS。多余数据(nuisancedata)是指被添加到一个或多个HDS使得生成的DDS具有预定的位长度的数据。经压缩的HDS可以具有不同的位长度。不同量的多余数据被添加以组合经压缩的HDS以生成具有等同长度的DDS。NVSM控制模块27通过添加多余数据来防止HDS被分割在两个DDS之间。取代于将HDS的部分与两个或更多个其他HDS一起存储,多余数据被附加。例如,多余数据可以包括全部为0、全部为1、空状态和/或用于使对NVSM控制模块27的编程和/或处理最小化的冗余数据。
ECC模块48和接口管理模块50可以基于来自命令管理模块60的参数信号来操作。命令管理模块60基于命令和/或从NVSM控制模块27和/或描述符生成模块103接收到的作业描述符84来生成第一参数信号80和第二参数信号82。
在数据传输事件期间,NVSM控制模块27或NVSM驱动器14的其他模块中的一个模块接收访问请求信号30。NVSM控制模块27可以被实施为片上***(SoC)并且包括或访问第一非易失性存储器90。第一非易失性存储器90存储由NVSM控制模块27执行的固件(FW)92。在执行固件92中,NVSM控制模块27基于访问请求信号30来生成描述符84(下面被称为FW描述符)。描述符84被存储在第二非易失性存储器94中和/或被提供给描述符生成模块103。如所示出的,第二非易失性存储器94可以是命令管理模块60的一部分或与命令管理模块60分开。第二非易失性存储器94可以存储由描述符生成模块103生成的描述符84和/或描述符95。使用固件生成的描述符,例如由NVSM控制模块27生成的描述符被称为固件描述符。使用硬件生成的描述符,诸如由描述符生成模块103生成的描述符被称为硬件描述符。如下面所述描述的,第二非易失性存储器94还可以存储用于解读描述符84、描述符95的参数信息96以确定参数并生成参数信号80、参数信号82。
在生成描述符84中,NVSM控制模块27可以确定:基于访问请求信号的数据分配块的大小,将数据块的大小与其他参数相关联的表,使用的应用等等。数据分配块的大小可以被称为分配单元(AU)大小或分配块大小。使用的应用可以指示,例如,主机的类型、NVSM驱动器的类型以及主机和NVSM驱动器的速度。NVSM控制模块27生成用于指示分配块大小的描述符84。描述符84可以分别包括:分配块大小;缓冲器寄存器位置;NVSM地址;NVSM通道标识符(ID);NVSM设备标识符(例如,存储器芯片ID);数据格式;要传输的数据量;操作位的类型(例如,读取位、编程位和/或擦除位)等等。下面描述硬件描述符95的生成。
每个分配块大小可以是基于页的、基于子页的或不基于页的。在分配块大小等于一个或多个数据页的大小时,分配块大小是基于页的。作为示例,单个数据页可以等于8千字节(KB)。其他示例页大小是4KB、16KB和32KB。在两个或更多个数据分配块的大小等于1个数据页的大小时,分配块大小是基于子页的。在分配块大小不是1页的整数倍并且分配块大小的整数倍不等于1个数据页的大小时,分配块大小是不基于页的。分配块可以包括任何数据量。
可以向NVSM12的通道100以及从NVSM12的通道100传输数据分配块。一个或多个数据分配块(“数据块”)的传输可以被称为数据传输事件。例如,数据传输事件还可以发生在与通道串联和/或通信的设备之间。在图2-5中示出了在示例设备和/或模块之间的示例数据传输事件。
命令管理模块60可以基于描述符84来确定:分配块大小、ECC校正能力(校正的每数据块位错误的数量);缓冲器寄存器位置;NVSM地址;数据格式;要传输的数据量;独立磁盘冗余阵列(RAID)操作;读取位、编程位和/或擦除位等等。命令管理模块60执行描述符84、描述符95和/或基于描述符84、描述符95来生成第一参数信号80和第二参数信号82。
第一参数信号80可以包括:ECC校正能力位;缓冲器寄存器位置位;NVSM地址位;数据格式位;要传输的数据量位;要传输的数据块的数量位;独立磁盘冗余阵列(RAID)操作位;读取位、编程位和/或擦除位等等。第二参数信号82可以包括:NVSM地址位;分配块大小位;要传输的数据块的数量位;读取位、编程位和/或擦除位等等。
ECC模块48执行错误校正并且对从NVSM12接收到的DDS和数据进行编码和解码。ECC模块48基于第一参数信号80来向接口管理模块50传输DDS并且从接口管理模块50接收DDS。接口管理模块50基于第二参数信号82来访问NVSM12。接口管理模块50向NVSM12传输指令信号102以控制对NVSM12的访问。NVSM12基于和/或根据指令信号102经由通道100来向接口管理模块50传输数据信号和/或从接口管理模块50接收数据信号。指令信号可以包括用于从NVSM12读取数据和/或将数据写入到NVSM12的命令。指令信号用于用信号通知NVSM12:要被执行的读取操作或编程操作;被传输的数据量和/或分配块的数量;分配块的地址等等。
对于每个描述符,可以生成一个或多个指令集。描述符可以是页描述符或分配块描述符。页描述符是指用于触发和/或传输一个或多个数据页的描述符。分配块描述符是指用于触发和/或传输一个或多个数据分配块的描述符。页描述符和分配块描述符可以是触发描述符、读取描述符或编程描述符。触发描述符用于初始化数据传输事件(读取事件或编程事件)。作为示例,触发描述符可以标识命令类型(读取或编程)、NVSM12和/或缓冲器管理模块44内的目标地址以及要传输多少数据(例如,页的数量和/或分配块的数量)。
读取描述符用于从NVSM12读取数据。编程描述符用于将数据编程到NVSM12。作为示例,读取描述符和编程描述符可以标识要传输多少数据和数据页内的数据的位置。描述符可以是触发描述符和读取描述符两者。描述符可以备选地是触发描述符和编程描述符两者。
ECC模块48和/或其他ECC模块可以:在压缩模块40与加密模块42之间被连接以对经压缩的HDS进行编码;在加密模块42与缓冲器管理模块44之间被连接以对经加密的HDS进行编码;在缓冲器管理模块44与DDS生成模块46之间被连接;和/或如所示出的在DDS生成模块46与NVSM12之间被连接。然后,DDS被存储在NVSM12中。
ECC模块48可以使用一种或多种ECC方法以防止在将数据写入到NVSM12以及从NVSM12读取数据时的错误。校验位可以在被存储到NVSM12中之前被生成并被添加到DDS和/或可以与DDS分开地被存储在NVSM12中。
接口管理模块50可以在NVSM12中的物理块地址(PBA)处存储DDS。DDS的PBA可以被存储在一个或多个位置中并且由接口管理模块50在访问NVSM12中的DDS的存储位置时获取。例如,PBA可以被存储在第一非易失性存储器90中和/或被存储在NVSM12中。第一非易失性存储器90或NVSM12可以存储PBA的映射表104,其可以基于分配块大小。作为示例,与分配块相关联的(一个或多个)PBA可以被标识在映射表104中。这不同于基于数据页的大小来存储PBA。分配块大小可以基于或独立于数据页的大小而被设定。因为固件92基于分配块大小来存储PBA,所以分配块大小的变化不需要固件指令的变化,而是简单地需要分配块大小设定调整。映射表104可以将逻辑块地址(LBA)与PBA相关联。映射表104可以由路径22、24中的模块中的任何模块访问。映射表104可以被存储在描述符生成模块103中和/或与描述符生成模块103共享。
接口管理模块50可以在向ECC模块48转发DDS之前访问NVSM12中的DDS。ECC模块48可以基于访问命令信号和/或与DDS相关联的校验信息来对从NVSM12访问的DDS进行解码。访问命令信号可以由NVSM控制模块27和/或命令管理模块60来生成并且包括第一参数信号80。访问命令信号可以包括一个或多个PBA。访问命令信号可以由NVSM控制模块27基于LBA和/或从主机13接收到的访问请求信号来生成。例如,HDS生成模块52基于从缓冲器管理模块44接收到的数据请求信号来访问或接收来自ECC模块48的DDS。
HDS生成模块52和/或缓冲器管理模块44将接收到的DDS分离成HDS。HDS生成模块52基于从ECC模块48接收到的经解密的DDS来生成一个或多个HDS。HDS生成模块52基于HDS标识信息和/或数据请求信号来生成HDS。数据请求信号可以包括一个或多个LBA。解密模块54对来自ECC模块48的经解码的DDS进行解密。由加密模块42使用的密钥可以由解密模块54共享、访问和/或生成。
尽管以特定顺序示出了路径22、路径24的模块,但是其可以以不同的顺序被重新布置。例如,加密模块42可以位于压缩模块40的上游。换言之,加密模块42可以被连接在NVSM驱动器接口20与压缩模块40之间。作为另一示例,解密模块54可以被连接在NVSM驱动器接口20与解压缩模块56之间。
HW描述符生成
接口管理控制***26包括NVSM控制模块27和描述符生成模块103。NVSM控制模块27可以根据存储在NVSM控制模块27的存储器90中的固件92来操作。描述符生成模块103被包括以减少用于经由固件生成描述符的固件开销。描述符生成模块103可以包括用于生成如本文中描述的描述符的电子电路或其他适当的硬件。尽管下面的示例将描述符生成模块103指代为包括硬件,但是描述符生成模块103可以包括可以执行用于描述符生成的固件的逻辑设备和/或处理器。由描述符生成模块103执行的固件可以与由NVSM控制模块27执行的固件92分开并且不同。描述符生成模块103和重新访问模块11可以被实施为相同的电子电路。
描述符生成模块103可以由NVSM控制模块27触发以生成描述符(例如,硬件描述符)。NVSM控制模块27生成固件(或第一)描述符84并向存储器94转发固件描述符84。NVSM控制模块27可以生成用于生成硬件描述符的描述符命令信号并向描述符生成模块103转发描述符命令信号。描述符命令信号可以被存储在描述符生成模块103中的先进先出(FIFO)存储器104中。描述符命令信号可以包括输入参数,描述符生成模块103基于所述输入参数来生成第二描述符(例如,硬件描述符)95。存储器94可以包括被分配以存储描述符84、描述符95的FIFO存储器。
然后,描述符生成模块103可以经由高级微控制器总线(AHB)105向NVSM控制模块27报告第二描述符被生成并被存储在存储器94中。第二描述符的生成可以经由完成状态标志被报告,所述完成状态标志由描述符生成模块103生成和/或由可以通过访问存储器94中的完成状态标志来检测完成状态标志的生成的NVSM控制模块27访问。作为另一示例,可以经由由描述符生成模块103生成并被发送到NVSM控制模块27的中断来指示生成第二描述符的完成。由描述符生成模块103生成第二描述符减少与描述符的生成相关联的NVSM控制模块27的处理时间的量。这允许NVSM控制模块27执行其他任务。
NVSM控制模块27执行固件92以实现下面公开的固件到硬件和/或单个到多个的描述符操作。作为示例,固件92生成固件描述符84,固件描述符84可以分别由描述符生成模块103转换为一个或多个其他描述符(例如,硬件描述符)。
命令管理模块60与描述符生成模块103通信并且可以接收和/或执行从描述符生成模块103接收到的描述符(例如,硬件描述符)。命令管理模块60经由例如高级可扩展接口(AXI)总线112与存储器94通信。命令管理模块60可以被称为定序器,因为命令管理模块60可以顺序地执行由描述符生成模块103生成的描述符的序列。存储器94可以存储参数信息96、描述符84以及模板106。描述符84可以包括固件描述符和/或硬件描述符。固件描述符可以从NVSM控制模块27和/或从描述符生成模块103接收。硬件描述符可以从描述符生成模块103接收。模板106可以用于生成第二描述符95,其可以包括响应于第一描述符84而生成的描述符和针对重新访问事件生成的描述符(例如,重新读取事件或重新写入事件)。
下面关于图4-14进一步描述硬件描述符生成。
重新访问控制
接口管理控制***26和对应的固件和硬件用于基于某些条件是否存在来重新访问NVSM12。固件(例如,固件92)可以用于发起重新访问描述符的生成和/或控制对重新访问描述符的生成。重新访问描述符是指与重新访问事件相关联的硬件描述符。固件可以提供诸如要传输的数据的大小的参数和用于读取事件或写入事件的开始地址和结束地址。这些参数被存储在存储器94中的硬件寄存器108中。固件92可以用于定义响应于其要执行重新访问事件的条件。这些条件可以由NVSM控制模块27基于固件92来设定、控制和/或监控。所述条件可以包括:对一个或多个数据错误(例如,读取错误或写入错误)的检测;对不可校正的错误的检测;和/或对媒体循环冗余检验(MCRC)错误的检测。另一示例条件包括确定是否已经执行了针对相同的一个或多个存储单元的预定数量和/或最大数量的重新访问事件。这些条件和/或对应的参数可以被存储在存储器94中。所述参数还可以包括针对每个重新访问的地址的重新访问尝试的数量。所述条件和/或参数可以被存储在硬件寄存器108中。
NVSM控制模块27还可以基于固件92来控制要执行硬判决重新读取模式还是多位重新读取模式。硬判决重新读取模式包括每个访问事件或重新访问事件感测一次存储单元的电压或值。多位重新读取模式包括每个访问事件多次感测存储单元的电压或值。多次重新读取值增大了ECC模块48能够恰当地确定数据位值和/或校正数据位值的可能性。
接口管理控制***26包括重新访问模块11和链表模块107。重新访问模块11被包括以减少与由于错误(例如,读取错误或写入错误)而重新访问NVSM12相关联的固件开销。重新访问模块11可以包括用于触发生成用以重新访问NVSM12的硬件描述符的电子电路和/或其他适当的硬件。重新访问模块11监控分配块的状态并且在存在错误时触发描述符生成模块103以生成用于重新访问NVSM12的硬件描述符。重新访问模块11可以独立于NVSM控制模块27和/或在没有NVSM控制模块27的介入的情况下触发针对相同的一个或多个分配块的一个或多个重新访问事件的硬件描述符的生成。尽管下面的示例将重新访问模块11指代为包括硬件,但是重新访问模块11可以包括可以执行用于触发描述符生成的固件的逻辑设备和/或处理器。由重新访问模块11执行的固件可以与由NVSM控制模块27执行的固件92分开并且不同。
链表模块107生成链表,其包括缓冲器70的地址,所述地址标识在哪里存储和/或访问从NVSM12接收到的和/或传输到NVSM12的数据。链表可以由ECC模块48使用以在缓冲器70与NVSM12之间传输分配块。
接口管理控制***26包括操作为触发、控制和执行重新访问事件的模块11、模块27、模块48、模块50、模块60、模块103、模块107。这包括执行固件92以进行以下操作的NVSM控制模块27:设定重新访问事件的最大数量(例如,4),安排重新访问数据流,在重新访问事件期间控制Vref调整,以及控制不同类型的解码。可以针对每个重新访问事件执行Vref调整。如果针对相同地址、存储单元和/或地址和/或存储单元的组执行多于一个重新访问事件,则可以执行多个Vref调整。作为示例,可以针对每个连续的重新访问事件执行不同的Vref调整。不同类型的解码可以包括硬判决解码、2位LDPC解码和/或其他适当的类型的解码。解码的类型可以由NVSM控制模块27设定并且可以由ECC模块48执行。下面关于图15的方法来进一步描述涉及重新访问事件的模块11、模块27、模块48、模块50、模块60、模块103、模块107的操作。模块11、模块27、模块48、模块50、模块60、模块103、模块107可以被实施为单个模块。模块11、模块27、模块48、模块50、模块60、模块103、模块107可以被实施为硬件和/或被实施为与模块27分离的单个电子电路。
图2示出了包括ECC模块48、接口管理模块50以及NVSM12的接口管理控制***26的部分120。ECC模块48包括编码器122和解码器124。编码器122对DDS进行编码并以数据分配块的形式向接口管理模块50转发经编码的DDS。编码器122可以组合整数倍的DDS以形成数据分配块。解码器124对来自接口管理模块50的数据分配块进行解码以生成DDS。
接口管理模块50包括例如示出的第一系列的FIFO寄存器126和第二系列的FIFO寄存器128。第一系列的FIFO寄存器126与编码事件相关联并且用于缓冲从ECC模块48向NVSM12传输的数据。第二系列的FIFO寄存器128与读取事件相关联并且用于缓冲从NVSM12向ECC模块48传输的数据。尽管FIFO寄存器系列被示出为针对编码器122和解码器124中的每一个,但是接口管理模块50可以包括可以由编码器122和解码器124共享的单个系列的FIFO寄存器。第一系列的FIFO寄存器126和第二系列的FIFO寄存器128可以包括例如SRAM或其他适当的存储器设备。
FIFO寄存器126、FIFO寄存器128中的每个FIFO寄存器的大小可以大于或等于由NVSM控制模块27设定的分配块大小。FIFO寄存器126、FIFO寄存器128中的每个FIFO寄存器的大小可以大于、等于或小于数据页的大小,因为分配块大小可以大于、等于或小于数据页的大小。在图7中示出了大小等于数据页的大小的FIFO寄存器的示例。在图14中示出了大小小于数据页的大小的FIFO寄存器的示例。
接口管理模块50通过通道1001-N与NVSM12通信。FIFO寄存器126、FIFO寄存器128中的每个FIFO寄存器与通道1001-N中的相应通道相关联。FIFO寄存器126、FIFO寄存器128在数据被存储在NVSM12中之前和/或在数据被传输到(图1中示出的)缓冲器管理模块44之前暂时地存储所述数据。NVSM12可以包括针对通道1001-N中的每个通道的缓冲器130。FIFO寄存器126、FIFO寄存器128和/或缓冲器130可以用于平衡在编码器122与NVSM12之间和/或解码器124与NVSM12之间的不同带宽(或速度)。
ECC模块48的带宽可以与NVSM12的带宽不同。编码器122和解码器124的速度可以比通道1001-N中的每个通道的速度快。例如,编码器122和解码器124中的每一个的速度可以比通道1001-N中的每个通道的速度快8-16倍。例如,速度差异还可以由于通道1001-N中的一个或多个通道中的数据流“瓶颈”或延迟导致,数据流“瓶颈”或延迟可以由于接口管理模块50和NVSM12的操作导致。FIFO寄存器126、FIFO寄存器128和缓冲器130帮助抵消速度差异。编码器122的速度可以被设定以将对通道1001-N的操作维持在峰值操作速度。解码器124的速度可以被设定以防止对第二组的FIFO寄存器128的填充并且将通道1001-N的输出维持在峰值操作速度。
在图3中,示出了接口管理控制***的部分210,图示了具有页大小的传输的多页编码事件。部分210可以被并入到图1的接口管理控制***26中。每次传输可以对接口管理模块50的FIFO寄存器26中的一个FIFO寄存器进行填充。传输的每个数据页可以具有两个相关联的页描述符。
FIFO寄存器126中的每个FIFO寄存器被连接到NVSM12的通道0-7中的相应通道。通道0-7可以被包含在图1的通道100中。尽管FIFO寄存器126的大小可以分别被设计为存储多于1个数据页,但是FIFO寄存器126分别被示为能够存储1个数据页。如果(如以上描述的)执行多页(M页)传输,则FIFO寄存器126的大小不需要被设计为存储M个数据页,因为传输的每个数据页使用一个或多个描述符。将FIFO寄存器126的大小设计为存储单个数据页而不是两个或更多个数据页减少了针对FIFO寄存器126分配的存储器并且降低数据传输时间。如果仅单个描述符用于传输M个数据页,则FIFO寄存器126中的每个FIFO寄存器的大小将需要被设计为等于数据页中的数据量,因为每个描述符与单个通道和/或单个FIFO寄存器相关联。
在多页传输事件中,被提供给接口管理模块50的数据被逐页传遍多个通道。示出了数据页数据1-16。在向通道0-7中的任何通道发送第二页之前,单页被传输到通道0-7中的每个通道。基于通道0-7和/或在NVSM12内部的设备的速度来将数据页从FIFO寄存器126传输到通道0-7。因为数据页被传输到FIFO寄存器126中的每个FIFO寄存器,所以在FIFO寄存器126中的任何一个FIFO寄存器处的数据瓶颈的可能性被减少。例如,如果第一通道(例如,通道0)的传输速度是慢的,则在对应的第一FIFO寄存器FIFO1处的瓶颈可能不出现,因为在将另一数据页加载到第一FIFO寄存器FIFO1之前数据页被加载到其他FIFO寄存器FIFO2-8
在图4中,示出了接口管理控制***的部分330,图示了基于具有分配块大小的传输的编程事件的分配块。该部分330可以被并入到图1的接口管理控制***26中。传输的每个数据分配块可以填充接口管理模块50的FIFO寄存器126’中的一个FIFO寄存器。传输的每个数据分配块可以具有例如两个或三个相关联的分配块描述符。
FIFO寄存器126’中的每个FIFO寄存器被连接到NVSM12的通道0-7中的一个通道。尽管FIFO寄存器126’的大小可以分别被设计为存储多于1个数据分配块,但是FIFO寄存器126’分别被示出为能够存储1个数据分配块。
FIFO寄存器126’中的每个FIFO寄存器的大小可以基于数据分配块的大小并且可以独立于数据页的大小。任何数量的分配块可以等于数据页的大小。减小数据分配块和FIFO寄存器126’的大小能够进一步提高数据传输速度,提高并行数据传输效率,并且防止数据瓶颈。
在多分配块传输事件中,被提供给接口管理模块50的数据被逐块地传遍多个通道。示出了数据分配块数据1-32。在向通道中的任何通道发送第二分配块之前,单个数据分配块被传输到通道中的每个通道。基于通道和/或在NVSM12内部的设备的速度来将数据分配块从FIFO寄存器126’传输到所述通道。因为数据分配块被传输到FIFO寄存器126’中的每个FIFO寄存器,所以在FIFO寄存器126’中的任何一个FIFO寄存器处的数据瓶颈的可能性被减少。
图5示出了接口管理控制***的部分340。部分340可以被并入到图1的接口管理控制***26中,替代图2的部分120,并且包括ECC模块48’、接口管理模块50’以及NVSM12。不像图2的实施方式,ECC模块48’包括多个编码器342和多个解码器344并且接口管理模块50’不包括FIFO寄存器。编码器342中的每个编码器可以以与NVSM12的通道100近似相同的速度来传输数据。
在编程事件期间,DDS生成模块46可以类似于如关于图2描述的数据分配块到FIFO寄存器的传播来向编码器342传播数据分配块。图5的实施方式通过不将FIFO寄存器并入在接口管理模块50’中来进一步降低用于向NVSM12以及从NVSM12传输数据的存储器的量。因为FIFO寄存器不被并入,所以该实施方式能够支持任何页大小或分配块大小。这提高固件92的开发灵活性。该实施方式还可以提高并行数据传输效率。
如在图4-5中描述的,对具有小于页的大小的FIFO寄存器的使用和/或对FIFO寄存器的消除使硬件/存储器需求最小化。
NVSM存储***10和/或NVSM驱动器14可以使用多种方法来操作,基于示例分配块的方法由图6的方法来提供。在图6中,示出了操作NVSM存储***和NVSM驱动器的方法。尽管主要关于图1-15的实施方式来描述下面的任务,但是所述任务可以容易地被修改以应用到本公开内容的其他实施方式。可以迭代地执行所述任务。所述方法可以在350开始。
在352,NVSM驱动器接口20从主机接口18接收访问请求信号,所述访问请求信号请求执行读取事件、编程事件和/或擦除事件。
在354,NVSM控制模块27基于访问请求信号来生成页描述符和/或分配块描述符。页描述符和/或分配块描述符可以被生成以执行一个或多个数据传输事件。数据传输事件中的每个数据传输事件可以是读取事件或编程事件并且包括仅一个读取准备周期或一个编程准备周期。针对每个数据传输事件生成的描述符的数量、传输的数据页和/或传输的数据分配块可以由NVSM控制模块27来确定。
数据传输事件中的每个数据传输事件包括两个或更多个描述符。每个传输事件的数据页的数量和/或数据分配块的数量还可以由NVSM控制模块27来确定并且在生成的描述符中被指示。每个数据传输事件可以传输一个或多个数据页和/或一个或多个数据分配块。页大小可以是预定的且固定的或者可以由NVSM控制模块27设定。
在356,命令管理模块60基于在354生成的页描述符和/或分配块描述符来如以上描述的生成第一参数信号80和第二参数信号82。
在358,ECC模块(例如,ECC模块48、ECC模块48’中的一个ECC模块)和接口管理模块(例如,接口管理模块50、接口管理模块50’中的一个接口管理模块)基于第一参数信号80和第二参数信号82来确定是否要执行读取事件或编程事件。在执行读取事件时执行任务360。在执行编程事件时执行任务370。
在360,接口管理模块生成用于指示NVSM12经由通道100从NVSM12向接口管理模块传输数据块的指令信号102。基于第二参数信号82来生成指令信号102。
在362,NVSM12准备数据页和/或数据分配块并且基于指令信号来向通道100中的一个或多个通道传输该数据页和/或数据分配块。数据页和/或数据分配块可以由接口管理模块的FIFO寄存器来接收。
在364,可以基于参数信号80、参数信号82来将数据页和/或数据分配块从接口管理模块传输到ECC模块。如图2-5中示出的,可以将数据页和/或数据分配块传输到ECC模块的一个或多个解码器。
在366,经由例如HDS生成模块52、缓冲器管理模块44、解密模块54以及解压缩模块56来将数据页和/或数据分配块传输到NVSM驱动器接口20。主机13可以从NVSM驱动器接口20接收数据页和/或数据分配块。如所示出的,在执行任务366之后,所述方法可以返回到任务352或在380结束。
在370,由NVSM驱动器接口20来接收数据页和/或数据分配块。在371,经由例如压缩模块40、加密模块42、缓冲器管理模块44以及DDS生成模块46来将数据页和/或数据分配块转发到ECC模块。
在372,ECC模块可以基于第一参数信号80来向接口管理模块传输数据页和/或数据分配块。如图2-4中示出的,数据页和/或数据分配块可以从ECC模块的编码器被传输并且传播到接口管理模块的一个或多个FIFO寄存器,。如图5中示出的,作为备选,数据页和/或数据分配块可以从ECC模块的多个编码器被传输到接口管理模块。
在374,接口管理模块生成指令信号以基于第二参数信号82来向NVSM12传输数据页和/或数据分配块。
在376,NVSM12经由通道100来接收数据页和/或数据分配块。如所示出的,在执行任务376之后,所述方法可以返回到任务352或在380结束。
图6的上述任务旨在为说明性示例;取决于应用,所述任务可以顺序地、同步地、同时地、连续地、在交叠的时间段期间或以不同顺序执行。例如,可以在执行任务376的同时执行任务374。
上述示例中的一些示例针对向NVSM传输的和/或从NVSM传输的每页使用(如以上所定义的)多个描述符和/或针对向NVSM传输的和/或从NVSM传输的每个分配块使用多个描述符。通过生成并使用多个描述符,通过每次传输仅使用单个描述符来提高固件灵活性。下面提供其他示例,包括每个分配块生成一个描述符。基于选择的分配块大小来执行数据传输允许读取事件和编程事件独立于页大小而被执行并且允许NVSM驱动器适应NVSM的任何页大小。小于页的大小的分配块对于NVSM控制模块的固件而言更容易处理、更容易编码和解码,并且对于主机而言更容易处理。与读取数据页相反,从NVSM读取分配块减少读取延迟。
此外,基于分配块的传输允许NVSM驱动器的接口管理模块的FIFO大小独立于页大小。此外,通过在每个传输事件的NVSM的多个通道上传播数据分配快来改进传输效率。数据可以在不等待附加的数据块被加载到已经接收到数据块的通道的FIFO中的情况下被传播到多个通道。这进一步减少传输延迟。
图7图示了对每个分配单元生成固件描述符。NVSM控制模块可以针对每个分配单元生成固件描述符,然后所述固件描述符可以被存储在存储器中。作为示例,示出了四个数据分配单元(或块)AU1-4。NVSM控制模块针对AU1-4生成固件描述符F/WDesc1-4以控制NVSM的操作。固件描述符F/WDesc1-4分别对应于数据分配单元AU1-4。数据分配单元AU1-4在固件描述符的生成之前共同地被示出为单个数据块420。数据分配单元AU1-4在对固件描述符的生成之后被单独地示出。数据分配单元AU1-4可以被分离以允许在相同时间段期间对数据分配单元AU1-4的并行传输。
如参考图1的实施例描述的,图8图示了对每个分配单元生成描述符(例如,硬件描述符)。NVSM控制模块27可以针对具有预定数量的数据分配单元AU1-4的单个数据块424生成固件(或第一)描述符422。固件描述符422可以被存储在存储器94中和/或被提供给描述符生成模块103。描述符生成模块103可以针对数据分配单元AU1-4中的每个数据分配单元生成第二描述符。第二描述符可以是硬件描述符并且被标识为H/WDesc1-4。第二描述符用于控制NVSM12。与第二描述符相关联的数据量和与由NVSM控制模块27生成的固件描述符422相关联的数据量相同。尽管在图8中示出了在第二描述符与数据分配单元AU1-4之间的一对一关系,但是第二描述符中的每个第二描述符可以与一个或多个数据分配单元AU1-4相关联。下面进一步描述从固件(第一)描述符到硬件(或第二)描述符的转换。
数据分配单元AU1-4中的每个数据分配单元可以具有任何数据量。数据分配单元AU1-4的大小可以是预定的、固定的和/或由NVSM控制模块27来设定。分配单元的大小可以小于、等于或大于数据页的大小。第二描述符中的每个第二描述符可以用于控制对一个或多个数据页的传输并且因此可以对应于单个或多平面读取操作和/或编程(写入)操作。描述符生成模块103可以生成用于向NVSM12的多个通道传播数据分配单元AU1-4的第二描述符,以使在接口管理模块50与NVSM12之间的数据的并行传输最大化。
图1和图8的上述特征允许NVSM控制模块27在执行数据的多平面(多页)传输时生成单个固件描述符。这是因为描述符生成模块103将单个固件描述符转换成多个描述符,所述多个描述符由命令管理模块60执行。由描述符生成模块103生成描述符允许NVSM控制模块27继续以NVSM12可识别的顺序来向NVSM12分派数据以及从NVSM12分派数据。描述符生成模块103可以代替NVSM控制模块27来执行地址映射。描述符生成模块103可以例如将用于数据分配单元的逻辑块地址映射到物理块地址。物理块地址是NVSM12中的存储器位置的地址。数据的分派、描述符的生成以及由描述符生成模块103执行的地址映射使由NVSM控制模块27在执行数据传输中执行的计算量最小化。
存储器94可以包括如例如在图2中示出的先进先出(FIFO)寄存器。FIFO寄存器中的每个FIFO寄存器可以与分配单元具有相同的大小。作为结果,FIFO寄存器的大小可以独立于数据的页大小。FIFO寄存器的大小与数据分配单元的大小的匹配防止在例如图2的ECC模块48与FIFO寄存器之间的速度不匹配。通过传输小于数据页的数据量,在每个传输事件的FIFO寄存器的出口中传输较少的数据,这允许更快的数据传输。这减少与FIFO寄存器相关联的数据传输延迟。为了进一步减少传输延迟,ECC模块48可以在从NVSM12接收数据以及向NVSM12传输数据时通过FIFO寄存器和/或对应的通道进行旋转。数据块可以在传输期间被分成两个或更多个数据部分。例如,16千字节(KB)的数据块可以被划分成两个8KB部分。第一部分可以在第二部分被传输到第二FIFO寄存器和/或从第二FIFO寄存器被传输的同时被传输到第一FIFO寄存器和/或从第一FIFO寄存器被传输。
如以上所述,可以使用多种方法来操作本文中公开的NVSM存储***。在图9中图示了另一示例方法。图9图示了描述符生成方法。尽管主要关于图1和图8的示例来描述图9的任务,但是所述任务可以被应用到本公开内容的其他实施例。可以迭代地执行所述任务。
所述方法可以在500开始。在502,NVSM控制模块27接收和/或检测对来自主机设备13的访问请求信号的接收。在504,NVSM控制模块27基于访问请求信号使用固件92来生成一个或多个固件(第一)描述符。图10示出了由NVSM控制模块27生成的固件描述符505的示例。固件描述符505可以包括3个控制行(被标识为行0-2)和64个参数行(被标识为行3-66)。控制行和参数行中的每个行可以具有信息字。字中的每个字可以被称为描述符字(或DWORD)。任何数量的控制行和参数行可以被包括在固件描述符中。在参数行中,每个字节的信息可以被称为输入参数。参数行中的每个DWORD可以包括4个字节的参数。由于每个固件描述符可以包括64个参数行,所以每个固件描述符可以包括256个参数。
固件描述符的控制行包括具有控制信息的控制字段。图11示出了针对图10的固件描述符的控制行的示例。第一控制行——行0包括控制字段PRMT_ROW_NUM、SRC_LEN以及SRC_PTR。第二控制行——行2包括控制字段DF_SEL和DST_PTR。第三控制行——行3包括控制字段SC0-SC9。保留字段RSVD可以用于其他控制信息。在下表中提供了对控制字段PRMT_ROW_NUM、SRC_LEN、SRC_PTR、DF_SEL和DST_PTR以及SC0-SC9的描述。
固件描述符字段表
除了上表中陈述的信息,固件描述符的控制字段中的每个控制字段还可以指示是否要使用(i)模板中的默认值和/或信息,或者(ii)利用固件描述符的参数行中的对应的值和/或信息来替换模板中的默认值和/或信息。例如,控制字段SC0可以包括默认位,默认位可以被设定为‘0’以指示对模板中的对应的默认字节值的使用。默认位可以被设定为‘1’以指示对被提供作为固件描述符的参数行中的参数中的一个参数的对应的字节值的使用。控制字段可以包括多于一个默认位。例如,控制字段SC3可以包括针对页地址、块地址和逻辑单元号地址中的每个地址的默认位以指示是否要使用默认页地址、默认块地址和/或默认逻辑单元号地址。另外,控制字段中的每个控制字段可以具有不同的格式并且控制字段的格式可以基于其中正在使用对应的NVSM***的应用而被设定。
在506,NVSM控制模块27向存储器94发送固件描述符。在507,NVSM控制模块27可以在存储固件描述符之后触发描述符生成模块103。NVSM控制模块27可以通过例如向描述符生成模块103发送指示向存储器94传输一个或多个固件描述符的描述符命令信号来触发描述符生成模块103。可以不执行任务507。作为另一示例,描述符生成模块103可以检测固件描述符的传输并且在没有从NVSM控制模块27接收到命令信号的情况下开始生成硬件描述符。
在508,描述符生成模块103访问FIFO存储器104并解析来自描述符命令信号和/或固件描述符中的一个或多个的命令参数。在510,描述符生成模块103从存储器94访问一个或多个描述符模板(下文被称为“模板”)并且基于一个或多个描述符命令信号和/或固件描述符中的命令参数来更新模板中的描述符字段。模板中的每个模板可以是通用描述符和/或灵活描述符。通用描述符可以具有在参数字段中的每个参数字段中具有预定默认值的预定的参数字段集。可以固定通用描述符的用途。灵活描述符是指参数字段能够针对其被更新和/或用于不同用途的描述符。例如,灵活描述符的字段可以用于设定NVSM的不同控制参数。
在512,描述符生成模块103将如在510修改的一个或多个模板存储在存储器94中。如修改的一个或多个模板不替换在510访问的对应的一个或多个模板。这允许相同的默认模板和/或经修改的模板被用于随后生成的描述符(硬件描述符和/或固件描述符)。
在514,描述符生成模块103针对固件描述符中的每个固件描述符并且根据对应的和经修改的模板生成一个或多个第二描述符(例如,硬件描述符)。可以针对(i)由NVSM控制模块27生成的固件描述符,和/或(ii)对应的和经修改的模板中的每一个来生成多个第二描述符。第二描述符可以包括硬件描述符和/或固件描述符。下面关于图13-14的实施例来描述生成多个硬件描述符的示例。
在516,描述符生成模块103将在514生成的第二描述符存储在存储器94中。在514生成的第二描述符可以被存储为对应的和经修改的模板的一部分或者与对应的和经修改的模板分开。在518并且在生成和/或保存第二描述符之后,描述符生成模块103可以向NVSM控制模块27指示完成了当前的一个或多个第二描述符的生成。描述符生成模块103可以通过以下操作来提供该指示:向NVSM控制模块27发送状态信号;设定经由例如AHB总线105对NVSM控制模块27可访问的标志;和/或通过生成中断。可以经由AHB总线105传输状态信号。
在520,描述符生成模块103可以确定是否存在由NVSM控制模块27生成以转换为例如多个硬件描述符的另一固件描述符。如果存在另一固件描述符,则可以执行任务508,否则所述方法在522结束。
在上述方法期间,例如在518,一个或多个状态寄存器可以针对生成的、执行的和/或转换为硬件描述符的固件描述符中的每个固件描述符被更新。描述符生成模块103可以在描述符生成模块103完成对一个或多个描述符的生成期间和/或之后更新状态寄存器中的字段。NVSM控制模块27可以跟踪这些字段以确定固件到硬件(或单个到多个)描述符转换是否已经被执行并完成。图12图示了可以用于这些跟踪用途的状态寄存器530的示例。
示出的状态寄存器530包括四个字段。被标识为DGE_GENDES_CNT的第一字段指示由描述符生成模块103针对特定固件描述符生成的描述符的数量(例如,硬件描述符和/或固件描述符的数量)。被标识为DES_FIFO_ADDR的第二字段是地址指针,该地址指针指示由描述符生成模块103生成的描述符被存储的存储器94中的地址。被标识为DGE_ERR_CODE的第三字段指示在固件到硬件和/或单个到多个描述符转换过程期间是否已经出现错误。作为示例,第三字段可以指示当在固件描述符的参数行中提供的参数是意指由描述符生成模块103不可识别的“出界”时。被标识为DES_FIFO_ADDR_WRAPPED的第四字段指示描述符是否已经封装环形存储器。例如,缓冲器或FIFO寄存器可以被用作环形存储器使得在填充缓冲器或FIFO寄存器时,剩余的数据被写入在缓冲器或FIFO寄存器的开始处的数据上。作为结果,如果描述符大于缓冲器或FIFO寄存器,则描述符的最后部分可以被写入在缓冲器或FIFO寄存器中的描述符的开始部分上。
图9的上述任务旨在为说明性示例;取决于应用,所述任务可以顺序地、同步地、同时地、连续地、在交叠的时间段期间或以不同顺序被执行。此外,取决于实施方式和/或事件的次序,所述任务中的任何任务可以不被执行或被跳过。
图13和图14分别图示了固件描述符540的示例和模板550的示例。固件描述符540可以由图1的NVSM控制模块27来生成。固件描述符540和模板550可以被存储在图1的存储器94中。在示出的示例中,固件描述符540针对多层单元实施例被生成,其中NVSM12的单元包含三层单元(TLC)。TLC中的每个TLC可以能够存储多个数据位。
在示出的示例中,固件描述符540包括多个字段,诸如字段SRC_PTR、SRC_LEN、PRMT_ROW_NUM。固件描述符540可以指示哪些字段要包括在由图1的描述符生成模块103生成的硬件(或第二)描述符中,诸如字段SC0、SC8、SC9和SC5。如所示出的,固件描述符540可以包括用于通道和/或设备标识符CH/DEVID的值、组命令识别符TRACK_ID、控制参数DQ0和/或对应于字段SC0、SC8、SC9和SC5的地址。
固件描述符540还可以包括用于更新模板550中的对应的描述符值的值。例如,固件描述符540的字节0-3对应于模板550的字段SC8。作为另一示例,固件描述符540的字节4-19包括用于模板550的字段DQ0-3的值。可以针对模板550中的前四个描述符中的每个描述符提供用于字段DQ0-3的值。固件描述符540还可以包括具有用于字段SC5的起始行地址的字节(例如,字节20-23)。
如所示出的,模板550包括用于5个描述符中的每个描述符的字段。模板550可以包括用于每个描述符的任意数量的字段并且可以具有用于任意数量的描述符的值。此外,可以使用模板550和/或与模板550中的描述符相关联的值来生成任何数量的描述符。可以经由字段SRC_PTR和SRC_LEN来指示基于模板550和/或模板550的一部分生成的描述符的数量。模板550可以是由用户定义的、预定的和/或由NVSM控制模块27生成并被存储在存储器94中。
对于TLC读取,可以在发出读取(或第五)描述符(例如,DES5)之前执行针对NVSM12的多达四个电压基准(VREF)阈值调整。出于这个原因,模板550可以包括用于VREF调整的描述符值。可以针对四个VREF调整来分别使用在模板550中提供的用于描述符DES1-4的描述符值。描述符值DES1-4可以包括具有值DQ0的控制参数字段SC9,其可以用于指示相应的VREF。在示出的示例中,未使用控制参数字段DQ1-3。作为示例,NVSM控制模块27可以生成具有针对存储单元的相应的上位、中位和低位的VREF调整值的固件描述符。VREF调整值可以提供用于确定存储单元的状态的阈值。在每个存储单元两位的示例中,VREF调整值可以提供针对存储单元00、01、10、11的阈值。阈值用于在检测到的对应于存储单元的状态的电压之间进行区分以确定存储单元的位值。
如所示出的,基于模板550来生成的描述符可以是通用描述符和/或灵活描述符。描述符中的每个描述符可以包括源控制字段SRC_CTRL,诸如字段SC0、SC8、SC9和SC5。如以上描述的,SC0字段可以指示通道CH和/或设备DEV。如以上描述的,SC8字段可以指示组命令(或磁道)标识符。SC5字段可以指示数据被存储在NVSM12中的起始行地址START_ROW_ADDR。描述符值DES1-5的字段SCO、SC8、SC9、SC5中的值是输入参数索引值,其可以从固件描述符获得并且可以替换模板中的对应的值。例如,如果如由第一描述符值DES1指示的字段DQ0等于4,则针对第一描述符值DES1的字段DQ0-3由输入参数字节4-7来替换。
描述符生成模块103基于在模板550中提供的描述符值DES1-5和固件描述符540中的输入命令参数来生成五个描述符,所述输入命令参数诸如存储在字节4-19中的输入命令参数。在示出的示例中,存储在字节4-19中的VREF是输入命令参数。其他输入命令参数(以上公开了其示例)可以经由固件描述符540来被提供并且在模板550中被更新。
公开的实施例允许模板和/或描述符被重新使用。作为示例,为了重新使用第四描述符值DES4,NVSM控制模块27可以设定字段SCR_PTR以指向第四描述符值DES4并设定字段SRC_LEN=2。这可以被完成以使用相同的模板550中的相同的值来生成两个描述符。
图15图示了重新访问方法。尽管主要关于图1的示例来描述图15的任务,但是所述任务可以被应用到本公开内容的其他实施例。可以迭代地执行所述任务。此外,尽管主要关于从NVSM读取数据来描述上述任务,但是所述任务可以被修改为向NVSM写入和/或重新写入数据。
所述方法可以在600开始。在602,NVSM控制模块27接收和/或检测对来自主机设备13的访问请求信号的接收。在604,NVSM控制模块27基于访问请求信号使用固件92来生成一个或多个固件(或第一)描述符。固件描述符可以被生成以从NVSM12读取数据和/或向NVSM12写入数据。在606,NVSM控制模块27向存储器94和/或描述符生成模块103发送固件描述符和/或向描述符生成模块103发送描述符命令信号。固件描述符可以直接被提供到描述符生成模块103或者可以经由命令管理模块60间接地被提供到描述符生成模块103。描述符命令信号和/或固件描述符可以用于触发命令管理模块60以发起描述符处理并启用例如模块11、48、50、103和107。对固件描述符的存储和/或传输可以触发命令管理模块60。任务602-606可以类似于以上关于图9描述的任务502-506。
在607,命令管理模块60可以解析固件描述符并启用接口管理控制***26的模块11、48、50、103和107。命令管理模块60可以启用如下的模块11、48、50、103和107。命令管理模块60可以向接口管理模块50发送描述符类型位HW_RRD以指示固件描述符正在与硬件描述符或重新访问描述符相反地被传输。出于这个原因,命令管理模块60不针对重新访问描述符触发链表模块107。描述符类型位HW_RRD指示被提供的描述符的类型(例如,固件、硬件或重新访问)。这向接口管理模块50指示在哪里发送具有如下面在任务617描述的状态信息的响应信号。ECC模块48基于来自命令管理模块60的分配块ID来获取来自存储器94的链表。
命令管理模块60针对固件描述符并且为了加载信息的目的标识新分配块以监控和初始化针对分配块和/或分配块的组中的每个分配块的重新访问计数CNT。重新访问计数CNT可以被设定等于零。加载的信息可以包括默认模板、重新访问模板、控制信息或涉及对固件描述符的执行和对应的数据的传输的其他信息。重新访问计数可以由重新访问模块11用于标识当前的重新访问事件。
在608,描述符生成模块103生成如以上在图5的任务510-518中描述的硬件(或第二描述符)或取决于是否要执行一个或多个重新访问事件来生成重新访问描述符(第三描述符)。在第一访问事件要被执行和/或重新访问事件不要被执行时生成第二描述符。第二描述符不是重新访问描述符。描述符生成模块103在要执行重新访问事件时生成第三描述符。针对一页或多页和/或一个或多个分配块来生成第三描述符。重新访问描述符FIFO指针可以被移动到下一描述符以在任务609之前被执行。
在609,NVSM控制模块27和/或描述符生成模块103触发命令管理模块60以开始对硬件描述符或重新访问描述符的处理。命令管理模块60接收第二描述符或第三描述符并且检查以下的可用性:用于编程(或写入)操作的数据;或用于读取操作的空间可用性。空间可用性可以是指接口管理模块50的FIFO中可用的空间。如以上示出的,命令管理模块60能够从NVSM控制模块27和描述符生成模块103接收命令(例如,固件描述符、硬件描述符、以及如下面进一步描述的重新访问描述符)。
在610,命令管理模块60向ECC模块48发送开始信号AU_START以发起ECC编码和/或解码。在612,命令管理模块60向链表模块107发送请求信号FLC_REQ以准备用于一个或多个分配块的链表。链表模块107可以被提供有和/或可以访问用于准备链表的信息。信息可以由命令管理模块60来提供并且可以包括地址、分配块格式和每页的分配块的数量。在614,命令管理模块60在发送请求信号FLC_REQ的同时还可以向接口管理模块50发送触发信号SET_DES以触发NVSM12的对应的操作。可以在执行任务612的同时执行任务614。
在616,在完成对第二描述符或第三描述符的执行之后,接口管理模块50和/或ECC模块48(i)处理由于对第二描述符或第三描述符的执行而传输的数据,并且(ii)针对传输的分配块和/或分配块的组中的每个分配块生成状态信息(例如,描述符ID、NVSM参数更新、以及错误信息)。作为示例,参数更新可以包括电压基准Vref变化或其他NVSM控制信息变化。可以由接口管理模块50来指示参数变化。错误信息可以指示错误的类型、错误的数量、是否存在错误和/或是否没有错误存在。错误信息可以指示完成了描述符的执行并且没有错误存在。可以经由接口管理模块50和/或ECC模块48指示错误信息。
在617,报告状态信息。接口管理模块50和ECC模块48可以向重新访问模块11、NVSM控制模块27和/或命令管理模块60报告状态信息。接口管理模块50可以向重新访问模块11、ECC模块48和/或命令管理模块60报告状态信息。状态信息可以基于描述符类型位HW_RRD并且包括描述符状态信息和控制参数的当前状态,诸如电压基准Vref的当前状态。描述符状态信息可以包括涉及执行的硬件描述符和/或重新访问描述符的信息。这可以包括针对当前访问事件的:描述符ID;分配块ID;是否完成对描述符中的每个描述符的执行的指示;是否存在与执行描述符中的每个描述符相关联的任何错误的指示;和/或是否存在与作为执行描述符的结果而传输的数据相关联的任何错误的指示。
ECC模块48可以提供状态针对每个分配块或分配块的组的更新和/或对应的信号。状态更新和/或对应的信号可以包括数据错误更新AU_FAIL、分配块出传输更新AU_DONE以及第一重新访问信号REACCESS1。ECC模块48可以向重新访问模块11报告第一重新访问信号REACCESS1以在已经满足用于执行重新访问事件的条件并且尚未超过针对一个或多个分配块的重新访问事件的最大数量时触发重新访问事件。存储器94中的重新访问信息FIFO109可以存储是否要执行重新访问事件的指示。数据错误更新AU_FAIL指示是否存在与传输的数据相关联的错误。在对NVSM12的访问期间和/或在ECC模块48中执行的编码或解码期间可能已经发生错误。分配块传输更新AU_DONE,AU_DONE指示是否完成分配块的传输和/或ECC模块48是否完成处理并传输分配块。
重新访问模块11可以在完成重新访问事件之后向状态FIFO110发送重新访问状态更新。NVSM控制模块27可以经由固件92来检查存储在状态FIFO110中的重新访问状态。
在618,命令管理模块60监控由ECC模块48和/或接口管理模块50生成的状态信息并将其存储到存储器94中的状态FIFO110中。命令管理模块60可以监控状态FIFO110并在某些条件(例如,完成了对一个或多个硬件描述符的生成和/或执行、已经检测到一个或多个分配块错误等等)存在时中断NVSM控制模块27。中断可以基于在110从接口管理模块50接收到的状态信息。命令管理模块60可以向重新访问模块11和/或ECC模块48发送指示是否要针对一个或多个分配块执行重新访问事件的第二重新访问信号REACCESS2。第二重新访问信号REACCESS2可以基于来自NVSM控制模块27的控制信号。
在620,NVSM控制模块27在执行固件92的同时可以设置、选择和/或改变重新访问模板,其可以被存储为存储器94中的模板106的一部分。重新访问模板可以与用于生成硬件描述符的模板(例如,关于图9的方法描述的模板)相同、相似、或不同。不同的重新访问模板可以用于与NVSM12中的一个或多个存储单元和/或一个或多个地址相关联的每个相继的重新访问事件。作为示例,如果重新访问尝试的最大数量是4,则可以使用4个不同的模板,针对每个重新访问尝试一个模板。作为备选,NVSM控制模块27和/或描述符生成模块103可以在重新访问事件之间调整相同的模板。对模板的使用和/或调整增大了校正错误的潜力。用于重新访问事件的模板的参数可以是不同的和/或经调整的。例如,在对应的描述符和模板中提供的诸如电压基准Vref的上述控制参数可以是不同的和/或被调整为更好地确定存储单元的状态。可以基于状态信息来更新重新访问模板的参数。
用于与NVSM12的相同的存储单元和/或地址相关联的相继重新访问事件的模板被称为一组模板。每组模板可以与描述符和对应数据的流相关联。作为示例,可以并行执行和传输预定数量的(例如,16个)描述符和对应数据的流。
尽管任务620被示出为在任务618之后并且响应于状态信息而被执行,但是任务620可以在任务618之前被执行并且可以不基于状态信息而被执行。例如,可以在604执行任务620和/或重新访问模板可以是预定的并被存储在存储器中。
在622,重新访问模块11监控状态信息。可以在执行任务618、620的同时执行任务622。可以在ECC模块48和接口管理模块50更新状态信息之后执行任务622。
在624,重新访问模块11确定:(i)ECC模块48(被标识为逻辑域)是否完成处理分配块,以及(ii)接口管理模块50(被标识为物理域)是否完成执行硬件描述符和/或重新访问描述符。如果逻辑域和物理域被完成,则执行任务626,否则执行任务617-622中的一个或多个任务。
在626,重新访问模块11确定是否存在要被重新访问的一个或多个分配块和/或是否存在要被执行的一个或多个重新访问事件。在存在要被执行的一个或多个重新访问事件时执行任务628,否则执行任务634。
在628,重新访问模块11确定重新访问计数CNT是否大于针对对应的分配块允许的重新访问事件的最大数量。如果重新访问计数CNT大于最大数量,则可以执行任务634,否则执行任务629。
分配块ID、重新访问计数以及最大数量可以被存储在重新访问信息FIFO109中并且由重新访问模块11访问和更新。ECC模块48还可以访问重新访问信息FIFO109以确定分配块是否已经通过(即,没有重新访问事件要被执行)或失败(即,满足执行重新访问事件的条件)。重新访问模块11可以针对每个分配块和/或分配块的组执行多达最大数量的重新访问事件。如果在最大数量的重新访问事件之后对应的分配块和/或分配块的组仍然具有证明执行重新访问事件合理的对应的错误,则重新访问模块11可以向ECC模块48报告分配块的状态为失败的。ECC模块48可以通过访问重新访问信息FIFO109来确定该状态并且在629指示通过或失败。可以在任务629之后执行任务634。
在630,重新访问模块11递增重新访问计数CNT。在631,可以重置针对在重新访问事件期间要被再次传输的分配块中的每个分配块的状态值。这允许状态值在下一重新访问事件期间被设定。
在632,重新访问模块11基于状态信息来触发描述符生成模块103以生成重新访问描述符(例如,重新读取描述符或重新写入描述符)。重新访问描述符是针对重新访问事件要针对其被执行的分配块。可以在任务632之后执行任务608。
在634,如果不执行重新访问事件,则清除分配块和/或加载到重新访问模块11中的对应的信息。所述方法可以在636结束。
图15的上述任务旨在为说明性示例;取决于应用,所述任务可以被顺序地、同步地、同时地、连续地、在交叠的时间段期间或以不同顺序执行。此外,取决于实施方式和/或事件的次序,所述任务中的任何任务可以不被执行或被跳过。
因为存在本公开内容的许多实施方式,所述布置未明确示出所有实施方式。例如,例如图1-5中示出的相邻元件和非相邻元件可以彼此直接连接或间接连接。相邻元件和非相邻元件可以彼此无线通信和/或可以经由有线链接彼此通信。在本公开内容中描述的无线通信能够在完全或部分符合IEEE标准802.11-2012、IEEE标准802.16-2009、IEEE标准802.20-2008、和/或蓝牙核心规范v4.0的情况下被执行。在各种实施方式中,蓝牙核心规范v4.0可以由蓝牙核心规范附录2、3或4中的一个或多个来修改。在各种实施方式中,IEEE802.11-2012可以由草拟IEEE标准802.11ac、草拟IEEE标准802.11ad和/或草拟IEEE标准802.11ah来补充。
前面的描述实质上仅仅是说明性的并且不旨在以任何方式限制本公开内容、其应用或使用。本公开内容的广泛教导能够以各种形式来实施。因此,尽管本公开内容包括特定示例,但是本公开内容的真实范围不应当由此被限制,因为其他修改在研究附图、说明书和以下权利要求书时将变得显而易见。如本文中使用的,短语A、B和C中的至少一个应当被解释为是指使用非排他性的逻辑或的逻辑(A或B或C)。应当理解,在不改变本公开内容的原理的情况下,方法内的一个或多个步骤可以以不同的顺序(或并发地)被运行。
在包括下面的定义的本申请中,术语模块可以利用术语电路来替换。术语模块可以是指以下各项的部分或包括以下各项:专用集成电路(ASIC);数字离散电路、模拟离散电路或混合的模拟/数字离散电路;数字集成电路、模拟集成电路或混合的模拟/数字集成电路;组合的逻辑电路;现场可编程门阵列(FPGA);执行代码的(共享或专用)处理器或处理器组;存储由处理器执行的代码的(共享、专用或组)存储器;提供所描述的功能的其他适当的硬件部件;或以上中的一些或所有的组合,诸如在片上***中。
如以上使用的术语代码可以包括软件、固件和/或微代码,并且可以是指程序、例程、函数、类和/或对象。术语共享处理器包含执行来自多个模块的一些或所有代码的单个处理器。术语组处理器包含与附加的处理器组合来执行来自一个或多个模块的一些或所有代码的处理器。术语共享存储器包含存储来自多个模块的一些或所有代码的单个存储器。术语组存储器包含与额外的存储器组合来存储来自一个或多个模块的一些或所有代码的存储器。术语存储器是术语计算机可读介质的子集。如本文中使用的,术语计算机可读介质不包含通过介质(诸如在载波上)传播的瞬态电信号或电磁信号;术语计算机可读介质可以因此被认为是有形的且非瞬态的。非瞬态、有形计算机可读介质的非限制性示例包括非易失性存储器(例如,快闪存储器)、易失性存储器(例如,静态随机访问存储器和动态随机访问存储器)、磁性存储设备(例如,磁带或硬盘驱动器)以及光存储设备。
在本申请中描述的装置和方法可以部分地或完全地通过由一个或多个处理器执行的一个或多个计算机程序来实施。计算机程序包括被存储在至少一个非瞬态、有形计算机可读介质上的处理器可执行指令。计算机程序还可以包括和/或依赖于存储的数据。
尽管术语第一、第二、第三等等可以在本文中用于描述各种元件、部件、通道、模块和/或设备,但是这些元件、部件、通道、模块和/或设备不应当受这些术语限制。这些术语可以仅仅用于将一个元件、部件、通道、模块和/或设备与另一元件、部件、通道、模块和/或设备区分开。除非由上下文清楚指示,诸如“第一”、“第二”和其他数字术语的术语当在本文中被使用时不暗示次序或顺序。因此,下面讨论的第一元件、部件、通道、模块和/或设备能够被称为第二元件、部件、通道、模块和/或设备而不偏离示例实施例的教导。
权利要求书(按照条约第19条的修改)
1.一种存储驱动器,包括:
第一模块,所述第一模块被配置为基于第一描述符的指令信号来向所述存储驱动器中的非易失性半导体存储器传输数据块或者从所述存储驱动器中的所述非易失性半导体存储器传输所述数据块;以及
第二模块,所述第二模块被配置为:
监控所述数据块的所述传输的状态,
确定关于所述数据块的所述传输的错误是否存在,以及
独立于与主机设备的通信,在所述错误存在时发起第二描述符的生成,
其中所述第一描述符和所述第二描述符中的每个描述符包括相应的指令集,
其中所述指令集中的每个指令集包括所述数据块的地址并且指示(i)在对应的数据传输事件期间要被传输的数据量,或者(ii)所述对应的数据传输事件是读取事件还是编程事件,并且
其中所述第二模块被配置为根据所述第二描述符来执行重新访问事件,所述重新访问事件包括重新访问所述非易失性半导体存储器以再次向所述非易失性半导体存储器传输所述数据块或者从所述非易失性半导体存储器传输所述数据块。
2.根据权利要求1所述的存储驱动器,还包括:
第三模块,所述第三模块被配置为控制所述数据块在所述主机设备与所述存储驱动器之间的传输,
其中所述第一模块被配置为在所述第三模块与所述非易失性半导体存储器之间传输所述数据块;
第四模块,所述第四模块被配置为生成用于在所述第一模块与所述非易失性半导体存储器之间传输所述数据块的所述第一描述符;以及
第五模块,所述第五模块被配置为基于所述第一描述符来生成所述指令信号,
其中所述第一模块在执行所述重新访问事件时重新访问所述非易失性半导体存储器以再次在所述第三模块与所述非易失性半导体存储器之间传输所述数据块。
3.根据权利要求1所述的存储驱动器,还包括:
第三模块,所述第三模块被配置为根据所述第一描述符、在所述数据块的所述传输之前、并且在所述第二描述符的所述生成之前生成用于在所述第一模块与所述非易失性半导体存储器之间传输所述数据块的第三描述符;以及
第四模块,所述第四模块被配置为(i)响应于所述第三描述符来生成所述指令信号,以及(ii)生成指示所述第三描述符的类型的描述符类型位,
其中所述第一模块被配置为基于所述描述符类型位来向所述第二模块传输状态信息,其中所述状态信息指示所述数据块的所述传输的状态,并且
其中所述第二模块被配置为(i)基于由所述第一模块对所述第三描述符的执行和所述状态信息来确定关于所述数据块的所述传输的所述错误是否存在,以及(ii)在所述错误存在时发起所述第二描述符的所述生成。
4.根据权利要求3所述的存储驱动器,其中所述第三模块被配置为:
访问模板;
基于所述第一描述符中的多个参数来更新所述模板中的字段;以及
根据所述模板来生成所述第二描述符或所述第三描述符。
5.根据权利要求4所述的存储驱动器,其中:
所述模板是第一模板;并且
所述第三模块被配置为访问所述第一模板以生成所述第二描述符以及访问第二模板以生成所述第三描述符。
6.根据权利要求4所述的存储驱动器,还包括第五模块,所述第五模块基于针对所述数据块的状态信息来设定所述多个参数的值。
7.根据权利要求3所述的存储驱动器,其中:
所述第二模块被配置为触发所述第三模块以生成分别对应于针对所述数据块的多个重新访问事件的多个重新访问描述符;
所述多个重新访问描述符包括所述第二描述符;
所述第三模块被配置为:
访问针对所述多个重新访问事件中的每个重新访问事件的模板,其中所述模板中的每个模板包括多个字段,
基于所述第一描述符来更新所述模板中的所述多个字段;以及
根据所述模板来生成所述多个重新访问描述符。
8.根据权利要求1所述的存储驱动器,还包括:
第三模块,所述第三模块被配置为处理在所述第一模块与所述非易失性半导体存储器之间传输的数据并且在所述错误存在时生成指示信号,
其中所述第二模块被配置为基于所述指示信号来生成用于触发所述第二描述符的所述生成的触发信号;以及
第四模块,所述第四模块被配置为基于所述触发信号来生成所述第二描述符。
9.根据权利要求1所述的存储驱动器,还包括第三模块,所述第三模块被配置为设定针对所述数据块的重新访问事件的最大数量,其中:
所述第二模块被配置为跟踪针对所述数据块执行的重新访问事件的数量,触发分别对应于针对所述数据块执行的所述重新访问事件的多个重新访问描述符的生成,并且在重新访问事件的所述数量等于或大于重新访问事件的所述最大数量时停止重新访问描述符的生成;以及
针对所述重新访问事件生成的所述多个重新访问描述符中的一个重新访问描述符是所述第二描述符。
10.根据权利要求9所述的存储驱动器,其中所述第二模块被配置为:
在所述错误由于针对所述数据块执行的所述重新访问事件清除所述错误而不再存在时,报告所述数据块的通过;以及
在针对所述数据块执行的重新访问事件的所述数量等于或大于重新访问事件的所述最大数量时,报告所述数据块的失败。
11.根据权利要求1所述的存储驱动器,还包括:
第三模块,
其中所述数据块是第一数据块;
第四模块,所述第四模块被配置为控制多个数据块在所述主机设备与所述存储驱动器之间的传输,
其中所述多个数据块包括所述第一数据块,并且
其中所述第一模块被配置为向所述存储驱动器中的所述非易失性半导体存储器传输所述多个数据块以及从所述存储驱动器中的所述非易失性半导体存储器传输所述多个数据块;以及
第五模块,所述第五模块被配置为生成用于在所述第二模块与所述非易失性半导体存储器之间传输所述多个数据块的所述第一描述符,
其中所述第三模块被配置为根据所述第一描述符来生成多个第三描述符,其中所述多个第三描述符中的每个第三描述符对应于所述多个数据块中的相应数据块,并且
其中所述第二模块被配置为基于所述第三描述符来在所述第二模块与所述非易失性半导体存储器之间传输所述多个数据块。
12.一种方法,包括:
基于第一描述符的指令信号来向存储驱动器中的非易失性半导体存储器传输数据块或者从所述存储驱动器中的所述非易失性半导体存储器传输所述数据块;
监控所述数据块的所述传输的状态;
确定关于所述数据块的所述传输的错误是否存在;
独立于与主机设备的通信,在所述错误存在时发起第二描述符的生成,
其中所述第一描述符和所述第二描述符中的每个描述符包括相应的指令集,并且
其中所述指令集中的每个指令集包括所述数据块的地址并且指示(i)在对应的数据传输事件期间要被传输的数据量,或者(ii)所述对应的数据传输事件是读取事件还是编程事件;以及
根据所述第二描述符来执行重新访问事件,所述重新访问事件包括重新访问所述非易失性半导体存储器以再次向所述非易失性半导体存储器传输所述数据块或者从所述非易失性半导体存储器传输所述数据块。
13.根据权利要求12所述的方法,还包括:
控制所述数据块在所述主机设备与所述存储驱动器之间的传输;
生成用于向所述非易失性半导体存储器传输所述数据块或者从所述非易失性半导体存储器传输所述数据块的所述第一描述符;以及
基于所述第一描述符来生成所述指令信号。
14.根据权利要求12所述的方法,还包括根据所述第一描述符、在所述数据块的所述传输之前、并且在所述第二描述符的所述生成之前生成用于向所述非易失性半导体存储器传输所述数据块或者从所述非易失性半导体存储器传输所述数据块的第三描述符,其中:
响应于所述第三描述符来生成所述指令信号;
生成指示所述第三描述符的类型的描述符类型位;
基于所述描述符类型位来生成状态信息,所述状态信息指示所述数据块的所述传输的状态;以及
基于所述第三描述符的执行和所述状态信息,
执行对关于所述数据块的所述传输的所述错误是否存在的所述确定,以及
在所述错误存在时发起所述第二描述符的所述生成。
15.根据权利要求14所述的方法,还包括:
访问模板;
基于所述第一描述符中的多个参数来更新所述模板中的字段;以及
根据所述模板来生成所述第二描述符或所述第三描述符。
16.根据权利要求15所述的方法,其中:
所述模板是第一模板;
访问所述第一模板以生成所述第二描述符;并且
访问第二模板以生成所述第三描述符。
17.根据权利要求15所述的方法,还包括基于针对所述数据块的状态信息来设定所述多个参数的值。
18.根据权利要求14所述的方法,还包括:
触发分别对应于针对所述数据块的多个重新访问事件的多个重新访问描述符的生成,其中所述多个重新访问描述符包括所述第二描述符;
访问针对所述多个重新访问事件中的每个重新访问事件的模板,其中所述模板中的每个模板包括多个字段;
基于所述第一描述符来更新所述模板中的所述多个字段;以及
根据所述模板来生成所述多个重新访问描述符。
19.根据权利要求12所述的方法,还包括:
处理向所述非易失性半导体存储器或者从所述非易失性半导体存储器传输的数据;
在所述错误存在时生成指示信号;
基于所述指示信号来生成用于触发所述第二描述符的所述生成的触发信号;以及
基于所述触发信号来生成所述第二描述符。
20.根据权利要求12所述的方法,还包括:
设定针对所述数据块的重新访问事件的最大数量;
跟踪针对所述数据块执行的重新访问事件的数量;
触发分别对应于针对所述数据块执行的所述重新访问事件的多个重新访问描述符的生成,其中针对所述重新访问事件生成的所述多个重新访问描述符中的一个重新访问描述符是所述第二描述符;以及
在重新访问事件的所述数量等于或大于重新访问事件的所述最大数量时停止重新访问描述符的生成。
21.根据权利要求20所述的方法,还包括:
在所述错误由于针对所述数据块执行的所述重新访问事件中的一个重新访问事件清除所述错误而不再存在时,报告所述数据块的通过;以及
在针对所述数据块执行的重新访问事件的所述数量等于或大于重新访问事件的所述最大数量时,报告所述数据块的失败。
22.根据权利要求12所述的方法,其中:
所述数据块是第一数据块;并且
所述方法还包括:
在所述主机设备与所述存储驱动器之间传输多个数据块,其中所述多个数据块包括所述第一数据块,
向所述存储驱动器中的所述非易失性半导体存储器传输所述多个数据块或者从所述存储驱动器中的所述非易失性半导体存储器传输所述多个数据块,
生成用于向所述非易失性半导体存储器传输所述多个数据块或者从所述非易失性半导体存储器传输所述多个数据块的所述第一描述符,
根据所述第一描述符来生成多个第三描述符,其中所述多个第三描述符中的每个第三描述符对应于所述多个数据块中的相应数据块,以及
基于所述第三描述符来向所述非易失性半导体存储器传输所述多个数据块或者从所述非易失性半导体存储器传输所述多个数据块。

Claims (22)

1.一种存储驱动器,包括:
第一模块,所述第一模块被配置为基于第一描述符的指令信号来向所述存储驱动器中的非易失性半导体存储器传输数据块或者从所述存储驱动器中的所述非易失性半导体存储器传输所述数据块;以及
第二模块,所述第二模块被配置为:
监控所述数据块的所述传输的状态,
确定关于所述数据块的所述传输的错误是否存在,以及
独立于与主机设备的通信,在所述错误存在时发起第二描述符的生成,
其中所述第二模块被配置为根据所述第二描述符来执行重新访问事件,所述重新访问事件包括重新访问所述非易失性半导体存储器以再次向所述非易失性半导体存储器传输所述数据块或者从所述非易失性半导体存储器传输所述数据块。
2.根据权利要求1所述的存储驱动器,还包括:
第三模块,所述第三模块被配置为控制所述数据块在所述主机设备与所述存储驱动器之间的传输,
其中所述第一模块被配置为在所述第三模块与所述非易失性半导体存储器之间传输所述数据块;
第四模块,所述第四模块被配置为生成用于在所述第一模块与所述非易失性半导体存储器之间传输所述数据块的所述第一描述符;以及
第五模块,所述第五模块被配置为基于所述第一描述符来生成所述指令信号,
其中所述第一模块在执行所述重新访问事件时重新访问所述非易失性半导体存储器以再次在所述第三模块与所述非易失性半导体存储器之间传输所述数据块。
3.根据权利要求1所述的存储驱动器,还包括:
第三模块,所述第三模块被配置为根据所述第一描述符来生成用于在所述第一模块与所述非易失性半导体存储器之间传输所述数据块的第三描述符;以及
第四模块,所述第四模块被配置为响应于所述第二描述符来生成所述指令信号,
其中所述第二模块被配置为基于由所述第一模块对所述第三描述符的执行来监控所述数据块的所述传输的所述状态,确定关于所述数据块的所述传输的所述错误是否存在,以及在所述错误存在时发起所述第二描述符的所述生成。
4.根据权利要求3所述的存储驱动器,其中所述第三模块被配置为:
访问模板;
基于所述第一描述符中的多个参数来更新所述模板中的字段;以及
根据所述模板来生成所述第二描述符或所述第三描述符。
5.根据权利要求4所述的存储驱动器,其中:
所述模板是第一模板;并且
所述第三模块被配置为访问所述第一模板以生成所述第二描述符以及访问第二模板以生成所述第三描述符。
6.根据权利要求4所述的存储驱动器,还包括第五模块,所述第五模块基于针对所述数据块的状态信息来设定所述多个参数的值。
7.根据权利要求3所述的存储驱动器,其中:
所述第二模块被配置为触发所述第三模块以生成分别对应于针对所述数据块的多个重新访问事件的多个重新访问描述符;
所述多个重新访问描述符包括所述第二描述符;
所述第三模块被配置为:
访问针对所述多个重新访问事件中的每个重新访问事件的模板,其中所述模板中的每个模板包括多个字段,
基于所述第一描述符来更新所述模板中的所述多个字段;以及
根据所述模板来生成所述多个重新访问描述符。
8.根据权利要求1所述的存储驱动器,还包括:
第三模块,所述第三模块被配置为处理在所述第一模块与所述非易失性半导体存储器之间传输的数据并且在所述错误存在时生成指示信号,
其中所述第二模块被配置为基于所述指示信号来生成用于触发所述第二描述符的所述生成的触发信号;以及
第四模块,所述第四模块被配置为基于所述触发信号来生成所述第二描述符。
9.根据权利要求1所述的存储驱动器,还包括第三模块,所述第三模块被配置为设定针对所述数据块的重新访问事件的最大数量,其中:
所述第二模块被配置为跟踪针对所述数据块执行的重新访问事件的数量,触发分别对应于针对所述数据块执行的所述重新访问事件的多个重新访问描述符的生成,并且在重新访问事件的所述数量等于或大于重新访问事件的所述最大数量时停止重新访问描述符的生成;以及
针对所述重新访问事件生成的所述多个重新访问描述符中的一个重新访问描述符是所述第二描述符。
10.根据权利要求9所述的存储驱动器,其中所述第二模块被配置为:
在所述错误由于针对所述数据块执行的所述重新访问事件清除所述错误而不再存在时,报告所述数据块的通过;以及
在针对所述数据块执行的重新访问事件的所述数量等于或大于重新访问事件的所述最大数量时,报告所述数据块的通过或失败。
11.根据权利要求1所述的存储驱动器,还包括:
第三模块,
其中所述数据块是第一数据块;
第四模块,所述第四模块被配置为控制多个数据块在所述主机设备与所述存储驱动器之间的传输,
其中所述多个数据块包括所述第一数据块,并且
其中所述第一模块被配置为向所述存储驱动器中的所述非易失性半导体存储器传输所述多个数据块以及从所述存储驱动器中的所述非易失性半导体存储器传输所述多个数据块;以及
第五模块,所述第五模块被配置为生成用于在所述第二模块与所述非易失性半导体存储器之间传输所述多个数据块的所述第一描述符,
其中所述第三模块被配置为根据所述第一描述符来生成多个第三描述符,其中所述多个第三描述符中的每个第三描述符对应于所述多个数据块中的相应数据块,并且
其中所述第二模块被配置为基于所述第三描述符来在所述第二模块与所述非易失性半导体存储器之间传输所述多个数据块。
12.一种方法,包括:
基于第一描述符的指令信号来向存储驱动器中的非易失性半导体存储器传输数据块或者从所述存储驱动器中的所述非易失性半导体存储器传输所述数据块;
监控所述数据块的所述传输的状态;
确定关于所述数据块的所述传输的错误是否存在;
独立于与主机设备的通信,在所述错误存在时发起第二描述符的生成;以及
根据所述第二描述符来执行重新访问事件,所述重新访问事件包括重新访问所述非易失性半导体存储器以再次向所述非易失性半导体存储器传输所述数据块或者从所述非易失性半导体存储器传输所述数据块。
13.根据权利要求12所述的方法,还包括:
控制所述数据块在所述主机设备与所述存储驱动器之间的传输;
生成用于向所述非易失性半导体存储器传输所述数据块或者从所述非易失性半导体存储器传输所述数据块的所述第一描述符;以及
基于所述第一描述符来生成所述指令信号。
14.根据权利要求12所述的方法,还包括根据所述第一描述符来生成用于向所述非易失性半导体存储器传输所述数据块或者从所述非易失性半导体存储器传输所述数据块的第三描述符,其中:
响应于所述第二描述符来生成所述指令信号;并且
基于所述第三描述符的执行,
监控所述数据块的所述传输的所述状态;
执行对关于所述数据块的所述传输的所述错误是否存在的所述确定,以及
在所述错误存在时发起所述第二描述符的所述生成。
15.根据权利要求14所述的方法,还包括:
访问模板;
基于所述第一描述符中的多个参数来更新所述模板中的字段;以及
根据所述模板来生成所述第二描述符或所述第三描述符。
16.根据权利要求15所述的方法,其中:
所述模板是第一模板;
访问所述第一模板以生成所述第二描述符;并且
访问第二模板以生成所述第三描述符。
17.根据权利要求15所述的方法,还包括基于针对所述数据块的状态信息来设定所述多个参数的值。
18.根据权利要求14所述的方法,还包括:
触发分别对应于针对所述数据块的多个重新访问事件的多个重新访问描述符的生成,其中所述多个重新访问描述符包括所述第二描述符;
访问针对所述多个重新访问事件中的每个重新访问事件的模板,其中所述模板中的每个模板包括多个字段;
基于所述第一描述符来更新所述模板中的所述多个字段;并且
根据所述模板来生成所述多个重新访问描述符。
19.根据权利要求12所述的方法,还包括:
处理向所述非易失性半导体存储器或者从所述非易失性半导体存储器传输的数据;
在所述错误存在时生成指示信号;
基于所述指示信号来生成用于触发所述第二描述符的所述生成的触发信号;以及
基于所述触发信号来生成所述第二描述符。
20.根据权利要求12所述的方法,还包括:
设定针对所述数据块的重新访问事件的最大数量;
跟踪针对所述数据块执行的重新访问事件的数量;
触发分别对应于针对所述数据块执行的所述重新访问事件的多个重新访问描述符的生成,其中针对所述重新访问事件生成的所述多个重新访问描述符中的一个重新访问描述符是所述第二描述符;以及
在重新访问事件的所述数量等于或大于重新访问事件的所述最大数量时停止重新访问描述符的生成。
21.根据权利要求20所述的方法,还包括:
在所述错误由于针对所述数据块执行的所述重新访问事件中的一个重新访问事件清除所述错误而不再存在时,报告所述数据块的通过;以及
在针对所述数据块执行的重新访问事件的所述数量等于或大于重新访问事件的所述最大数量时,报告所述数据块的通过或失败。
22.根据权利要求12所述的方法,其中:
所述数据块是第一数据块;并且
所述方法还包括:
在所述主机设备与所述存储驱动器之间传输多个数据块,其中所述多个数据块包括所述第一数据块,
向所述存储驱动器中的所述非易失性半导体存储器传输所述多个数据块或者从所述存储驱动器中的所述非易失性半导体存储器传输所述多个数据块,
生成用于向所述非易失性半导体存储器传输所述多个数据块或者从所述非易失性半导体存储器传输所述多个数据块的所述第一描述符,
根据所述第一描述符来生成多个第三描述符,其中所述多个第三描述符中的每个第三描述符对应于所述多个数据块中的相应数据块,以及
基于所述第三描述符来向所述非易失性半导体存储器传输所述多个数据块或者从所述非易失性半导体存储器传输所述多个数据块。
CN201480022050.8A 2013-03-15 2014-03-14 用于生成用以由于错误而重新访问存储驱动器的非易失性半导体存储器的描述符的装置和方法 Expired - Fee Related CN105229592B (zh)

Applications Claiming Priority (9)

Application Number Priority Date Filing Date Title
US201361794092P 2013-03-15 2013-03-15
US61/794,092 2013-03-15
US201361900104P 2013-11-05 2013-11-05
US61/900,104 2013-11-05
US14/132,810 US9141538B2 (en) 2010-07-07 2013-12-18 Apparatus and method for generating descriptors to transfer data to and from non-volatile semiconductor memory of a storage drive
US14/132,810 2013-12-18
US14/208,814 2014-03-13
US14/208,814 US9135168B2 (en) 2010-07-07 2014-03-13 Apparatus and method for generating descriptors to reaccess a non-volatile semiconductor memory of a storage drive due to an error
PCT/US2014/028286 WO2014144043A1 (en) 2013-03-15 2014-03-14 Apparatus and method for generating descriptors to reaccess a non-volatile semiconductor memory of a storage drive due to an error

Publications (2)

Publication Number Publication Date
CN105229592A true CN105229592A (zh) 2016-01-06
CN105229592B CN105229592B (zh) 2018-04-10

Family

ID=50625154

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201480022050.8A Expired - Fee Related CN105229592B (zh) 2013-03-15 2014-03-14 用于生成用以由于错误而重新访问存储驱动器的非易失性半导体存储器的描述符的装置和方法

Country Status (2)

Country Link
CN (1) CN105229592B (zh)
WO (1) WO2014144043A1 (zh)

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN108108810A (zh) * 2016-11-24 2018-06-01 三星电子株式会社 包括非易失性存储器件的存储装置及访问方法
CN109871339A (zh) * 2017-12-05 2019-06-11 爱思开海力士有限公司 存储器***以及该存储器***的操作方法
CN109933454A (zh) * 2017-12-19 2019-06-25 爱思开海力士有限公司 存储器***及其操作方法
CN111382088A (zh) * 2018-12-25 2020-07-07 瑞萨电子株式会社 半导体器件及用于控制数据访问的方法
CN115344881A (zh) * 2022-10-19 2022-11-15 无锡沐创集成电路设计有限公司 一种硬盘加密解密装置、方法、硬盘及i/o接口

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8868852B2 (en) 2010-07-07 2014-10-21 Marvell World Trade Ltd. Interface management control systems and methods for non-volatile semiconductor memory
US9135168B2 (en) 2010-07-07 2015-09-15 Marvell World Trade Ltd. Apparatus and method for generating descriptors to reaccess a non-volatile semiconductor memory of a storage drive due to an error
US9141538B2 (en) 2010-07-07 2015-09-22 Marvell World Trade Ltd. Apparatus and method for generating descriptors to transfer data to and from non-volatile semiconductor memory of a storage drive

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4901320A (en) * 1987-08-31 1990-02-13 Oki Electric Industry Co., Ltd. Self-correcting semiconductor memory device and microcomputer incorporating the same
CN101930406A (zh) * 2009-06-18 2010-12-29 慧国(上海)软件科技有限公司 非易失性存储器的写入错误管理方法、存储卡、及控制器
CN102193878A (zh) * 2010-03-17 2011-09-21 索尼公司 存储装置和存储***
CN101529522B (zh) * 2005-10-25 2012-08-29 晟碟以色列有限公司 从闪速存储器中的错误恢复的方法
US20130024751A1 (en) * 2011-07-21 2013-01-24 Tsung-Chieh Yang Flash memory controller and data reading method

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4901320A (en) * 1987-08-31 1990-02-13 Oki Electric Industry Co., Ltd. Self-correcting semiconductor memory device and microcomputer incorporating the same
CN101529522B (zh) * 2005-10-25 2012-08-29 晟碟以色列有限公司 从闪速存储器中的错误恢复的方法
CN101930406A (zh) * 2009-06-18 2010-12-29 慧国(上海)软件科技有限公司 非易失性存储器的写入错误管理方法、存储卡、及控制器
CN102193878A (zh) * 2010-03-17 2011-09-21 索尼公司 存储装置和存储***
US20130024751A1 (en) * 2011-07-21 2013-01-24 Tsung-Chieh Yang Flash memory controller and data reading method

Cited By (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN108108810A (zh) * 2016-11-24 2018-06-01 三星电子株式会社 包括非易失性存储器件的存储装置及访问方法
CN108108810B (zh) * 2016-11-24 2023-08-18 三星电子株式会社 包括非易失性存储器件的存储装置及访问方法
CN109871339A (zh) * 2017-12-05 2019-06-11 爱思开海力士有限公司 存储器***以及该存储器***的操作方法
CN109871339B (zh) * 2017-12-05 2023-12-15 爱思开海力士有限公司 存储器***以及该存储器***的操作方法
CN109933454A (zh) * 2017-12-19 2019-06-25 爱思开海力士有限公司 存储器***及其操作方法
CN109933454B (zh) * 2017-12-19 2022-12-06 爱思开海力士有限公司 存储器***及其操作方法
CN111382088A (zh) * 2018-12-25 2020-07-07 瑞萨电子株式会社 半导体器件及用于控制数据访问的方法
CN111382088B (zh) * 2018-12-25 2023-11-21 瑞萨电子株式会社 半导体器件及用于控制数据访问的方法
CN115344881A (zh) * 2022-10-19 2022-11-15 无锡沐创集成电路设计有限公司 一种硬盘加密解密装置、方法、硬盘及i/o接口

Also Published As

Publication number Publication date
WO2014144043A1 (en) 2014-09-18
WO2014144043A4 (en) 2014-11-20
CN105229592B (zh) 2018-04-10

Similar Documents

Publication Publication Date Title
CN105229592A (zh) 用于生成用以由于错误而重新访问存储驱动器的非易失性半导体存储器的描述符的装置和方法
CN105190524B (zh) 用于生成去向和来自存储驱动器的非易失性半导体存储器的数据传送的描述符的装置和方法
KR102328612B1 (ko) 호스트와 컨트롤러 간에 파티셔닝된 변환 계층
CN103620563B (zh) 用于非易失性存储器的可变超量配置
US9329991B2 (en) Translation layer partitioned between host and controller
KR102155191B1 (ko) 비휘발성 메모리에 대한 기록들의 관리 및 그 기록들의 영역 선택
US9037782B2 (en) Method of programming memory cells and reading data, memory controller and memory storage apparatus using the same
CN103052948B (zh) 用于非易失性半导体存储器的接口管理控制***和方法
TWI516921B (zh) 資料處理方法、記憶體儲存裝置與記憶體控制電路單元
CN102483687B (zh) 用于对非易失性半导体存储器中的数据进行压缩的***和方法
US9348693B2 (en) Data accessing method for flash memory module
TW201415468A (zh) 在一非揮發性記憶體中測量平均抹除之記憶體胞損壞
TW201434051A (zh) 在記憶體控制器中之資料完整性及方法
US10983858B2 (en) Data writing method, memory control circuit unit and memory storage device
US9135168B2 (en) Apparatus and method for generating descriptors to reaccess a non-volatile semiconductor memory of a storage drive due to an error
CN112115076A (zh) 使用者数据的加解密装置及方法
CN108664350B (zh) 数据保护方法、存储器存储装置及存储器控制电路单元
TW201913353A (zh) 資料儲存方法、記憶體控制電路單元及記憶體儲存裝置
KR20210147686A (ko) 오류 정정 회로 및 오류 정정 인코딩 방법
US11816355B2 (en) Data writing method based on different numbers of chip enabled regions, memory storage device and memory control circuit unit
TW202416133A (zh) 用來在主機效能增幅器架構中藉助於裝置側表資訊編碼與解碼進行記憶裝置的存取管理的方法及設備
KR20220048080A (ko) 메모리 시스템에서의 데이터 전달장치
CN112416240A (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
CB03 Change of inventor or designer information

Inventor after: Xu Wei

Inventor after: Sun Fei

Inventor before: Xu Wei

Inventor before: Sun Fei

CB03 Change of inventor or designer information
GR01 Patent grant
GR01 Patent grant
CF01 Termination of patent right due to non-payment of annual fee

Granted publication date: 20180410

Termination date: 20190314

CF01 Termination of patent right due to non-payment of annual fee