CN105190524A - 用于生成去向和来自存储驱动器的非易失性半导体存储器的数据传送的描述符的装置和方法 - Google Patents

用于生成去向和来自存储驱动器的非易失性半导体存储器的数据传送的描述符的装置和方法 Download PDF

Info

Publication number
CN105190524A
CN105190524A CN201380072268.XA CN201380072268A CN105190524A CN 105190524 A CN105190524 A CN 105190524A CN 201380072268 A CN201380072268 A CN 201380072268A CN 105190524 A CN105190524 A CN 105190524A
Authority
CN
China
Prior art keywords
descriptor
module
data
generate
memory
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
CN201380072268.XA
Other languages
English (en)
Other versions
CN105190524B (zh
Inventor
李智刚
S-H·F·奥
朴正日
申呟锡
徐伟
何津津
孙飞
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.)
Kaiwei International Co
Marvell International Ltd
Marvell Asia Pte 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
Application filed by Mawier International Trade Co Ltd filed Critical Mawier International Trade Co Ltd
Publication of CN105190524A publication Critical patent/CN105190524A/zh
Application granted granted Critical
Publication of CN105190524B publication Critical patent/CN105190524B/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
    • 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
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/061Improving I/O performance
    • 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
    • G06F13/1668Details of memory controller
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0638Organizing or formatting or addressing of data
    • G06F3/064Management of blocks
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0655Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
    • G06F3/0659Command handling arrangements, e.g. command buffers, queues, command scheduling
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0673Single storage device
    • G06F3/0679Non-volatile semiconductor memory device, e.g. flash memory, one time programmable memory [OTP]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0683Plurality of storage devices
    • G06F3/0688Non-volatile semiconductor memory arrays
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C16/00Erasable programmable read-only memories
    • G11C16/02Erasable programmable read-only memories electrically programmable
    • G11C16/06Auxiliary circuits, e.g. for writing into memory
    • G11C16/32Timing circuits

Abstract

存储驱动器包括第一模块、第二模块、第三模块、第四模块和第五模块。第一模块被配置为控制在主机设备和存储驱动器之间的数据块传送。第二模块被配置为向存储驱动器中的非易失性半导体存储器传送数据块以及从存储驱动器中的非易失性半导体存储器传送数据块。第三模块被配置为生成第一描述符,第一描述符描述在第二模块和非易失性半导体存储器之间的数据块的传送。第四模块被配置为根据第一描述符生成第二描述符。第二描述符中的每个第二描述符对应于数据块中的相应数据块。第五模块被配置为基于第二描述符生成指令信号。第二模块被配置为基于指令信号在第一模块和非易失性半导体存储器之间传送数据块。

Description

用于生成去向和来自存储驱动器的非易失性半导体存储器的数据传送的描述符的装置和方法
相关申请的交叉引用
本申请要求于2013年12月18日提交的美国专利申请No.14/132,810的优先权,以及于2013年11月5日提交的美国临时申请No.61/900,104和于2012年12月19日提交的美国临时申请No.61/739,386的权益。上述申请的公开内容通过引用方式整体并入于此。
技术领域
本公开涉及非易失性半导体存储器访问系统,并且更具体地涉及用于非易失性半导体存储器的数据传送控制系统。
背景技术
本文中提供的背景描述是为了总体上给出本公开的上下文的目的。当前提名的发明人的工作(到工作被描述在此背景部分中的程度)以及在提交时可能无法以其他方式有资格作为现有技术的说明书各方面,既不明确也不暗示地被承认为抵触本公开的现有技术。
非易失性半导体存储器(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寄存器的大小等于一个或多个数据页的大小。
在编程操作期间,在数据被存储在NVSM中之前,ECC模块以基于页的格式向接口控制模块传送数据。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个数据页的大小。在向下一(或随后)FIFO寄存器传送数据之前,M个数据页被传送向当前FIFO寄存器。针对读操作,逆向执行上述数据传送。
因为数据不会被传送向下一FIFO寄存器直到当前FIFO寄存器接收M个数据页,所以可能导致数据传送延迟。这些延迟可以在FIFO寄存器中的一个或多个处经历,并且可以随着更高阶的页格式而增加。页格式的阶指的是在单个数据传送事件期间传送的页数。数据传送事件指的是向NVSM的通道之一传送数据或从NVSM的通道之一传送数据。例如,在具有2页格式的NVSM驱动器中,如果由于ECC模块和第一通道之间的速度差异“瓶颈”出现在第一FIFO寄存器处,则延迟会出现在第一FIFO寄存器以及所有随后FIFO寄存器处。由于两个数据页被传送向单个FIFO寄存器,当第一数据页延迟时,第二数据页会被延迟。而且,向第一FIFO寄存器传送第二数据页中的延迟会延迟向继第一FIFO寄存器后的FIFO寄存器的数据传送。
发明内容
提供了存储驱动器,并且其包括第一模块、第二模块、第三模块、第四模块和第五模块。第一模块被配置为控制在主机设备和存储驱动器之间的数据块传送。第二模块被配置为向存储驱动器中的非易失性半导体存储器传送数据块以及从存储驱动器中的非易失性半导体存储器传送数据块。第三模块被配置为生成第一描述符,第一描述符描述在第二模块和非易失性半导体存储器之间的数据块的传送。第四模块被配置为根据第一描述符生成第二描述符。第二描述符中的每个第二描述符对应于数据块中的相应数据块。第五模块被配置为基于第二描述符生成指令信号。第二模块被配置为基于指令信号在第一模块和非易失性半导体存储器之间传送数据块。
在其它特征中,第四模块被配置为:访问模板;基于第一描述符中的参数,更新模板中的字段;以及根据模板,生成第二描述符。在其它特征中,第四模块被配置为用参数替换模板的字段的值。
在其它特征中,参数包括用于控制非易失性半导体存储器的控制参数。第四模块被配置为生成第二描述符中的包括控制参数的一些第二描述符以及第二描述符中的不包括控制参数的其它第二描述符。
在其它特征中,模板包括用于第二描述符的独立磁盘冗余阵列值。第四模块被配置为生成第二描述符,以分别包括独立磁盘冗余阵列值。第二模块被配置为基于独立磁盘冗余阵列值在第一模块和非易失性半导体存储器之间传送数据块。
在其它特征中,模板包括用于第二描述符中的每个第二描述符的通道值和存储器设备值。第二模块被配置为根据通道值和存储器设备值在相应通道上向非易失性半导体存储器传送数据的部分以及从非易失性半导体存储器传送数据的部分。
在其它特征中,第一描述符是固件描述符。第二描述符是硬件描述符。
在其它特征中,第三模块被配置为执行固件以生成第一描述符。第四模块包括电子电路,其中电子电路被配置为根据第一描述符生成第二描述符。
在其它特征中,提供了方法,并且其包括:控制在主机设备和存储驱动器之间的数据块传送;生成第一描述符,以向存储驱动器中的非易失性半导体存储器传送数据块或从存储驱动器中的非易失性半导体存储器传送数据块;根据第一描述符,生成第二描述符,其中第二描述符中的每个第二描述符对应于数据块中的相应数据块;基于第二描述符生成指令信号;以及基于指令信号,在主机设备和非易失性半导体存储器之间传送数据块。
在其它特征中,方法进一步包括:访问模板;基于第一描述符中的参数,更新模板中的字段;以及根据模板,生成第二描述符。
在其它特征中,方法进一步包括:用参数替换模板的字段的值,其中参数包括用于控制非易失性半导体存储器的控制参数;生成第二描述符中的包括控制参数的一些第二描述符;以及生成第二描述符中的不包括控制参数的其它第二描述符。
在其它特征中,第一描述符是固件描述符;以及第二描述符是硬件描述符。在其它特征中,方法进一步包括:执行固件以生成第一描述符;以及经由电子电路,根据第一描述符生成第二描述符。
在其它特征中,提供了控制系统,并且其包括控制模块,控制模块被配置为基于用于数据传送事件中的每个数据传送事件的至少两个描述符来控制在接口管理模块和非易失性半导体存储器之间的数据块的数据传送事件。非易失性半导体存储器为数据传送事件中的读事件或编程事件做准备。接口管理模块和非易失性半导体存储器被配置为在固态存储器驱动器内进行操作。命令管理模块被配置为基于至少两个描述符生成参数信号。接口管理模块被配置为基于参数信号生成指令信号,并且向非易失性半导体存储器传输指令信号,以执行读事件或编程事件。
在其它特征中,数据传送事件中的每个数据传送事件包括传送数据页。数据页的大小等于数据块中的至少两个数据块的大小。基于至少两个描述符中的相应描述符来传送数据块中的至少两个数据块。
在其它特征中,数据传送事件中的每个数据传送事件包括传送数据页。在其它特征中,接口管理模块被配置为生成用于数据传送事件中的每个数据传送事件的触发指令集,以发起数据块的传送。
在其它特征中,至少两个描述符的数目等于针对数据传送事件中的每个数据传送事件生成的触发指令集的数目。在其它特征中,在针对数据传送事件中的每个数据传送事件的准备时段之前,接口管理模块被配置为生成触发指令集。继准备时段之后,接口管理模块被配置为生成读指令集或编程指令集。数据传送事件中的每个数据传送事件包括触发指令集中的至少一个以及读指令集或编程指令集中的至少一个。
在其它特征中,至少两个描述符中的每个描述符指示分配块大小、非易失性半导体存储器的地址、以及数据传送事件是读事件、编程事件还是擦除事件。
在其它特征中,参数信号的比特指示要传送的数据量、非易失性半导体存储器的地址、以及数据传送事件是读事件、编程事件还是擦除事件。
在其它特征中,参数信号是第一参数信号。命令管理模块被配置为基于至少两个描述符生成第二参数信号。错误纠正码模块被配置为基于第二参数信号向接口管理模块传送数据块以及从接口管理模块传送数据块。
在其它特征中,接口管理模块包括先进先出寄存器。错误纠正码模块被配置为向先进先出寄存器散布数据块。先进先出寄存器中的每个先进先出寄存器的大小小于数据页的大小。
在其它特征中,提供了固态存储器驱动器,并且其包括控制系统、缓冲器管理模块和错误纠正码模块。缓冲器管理模块被配置为:从与固态存储器驱动器通信的主机接收主机数据扇区,基于主机数据扇区生成第一驱动器数据扇区,接收第二驱动器数据扇区,并且向主机传输主机数据扇区。错误纠正码模块被配置为从缓冲器管理模块向接口管理模块传送第一驱动器数据扇区并且从接口管理模块向缓冲器管理模块传送第二驱动器数据扇区。
本公开的适用性的其它方面将从详细描述、权利要求和附图中变得显而易见。详细描述和具体示例旨在仅用于说明的目的,而非旨在于限制本公开的范围。
附图说明
本公开将从详细描述和附图中变得被更充分地理解,其中:
图1是根据本公开的并入接口管理控制系统的NVSM存储系统的功能框图;
图2是根据本公开的接口管理控制系统的一部分的功能框图;
图3是图示根据本公开的用于基于页的传送的单页读事件的时序图;
图4是图示根据本公开的用于基于页的传送的单页编程事件的时序图;
图5是图示根据本公开的使用多个描述符的多页读事件的时序图;
图6是图示根据本公开的使用多个描述符的多页编程操作的时序图;
图7是根据本公开的图示具有页大小传送的多页编程事件的接口管理控制系统的一部分的功能框图;
图8是图示根据本公开的具有与传送的分配块相同数目的描述符的读事件的时序图;
图9是图示根据本公开的具有比传送的分配块更多的描述符的读事件的时序图;
图10是图示根据本公开的具有多个指令集的多分配块读事件的时序图;
图11是图示根据本公开的具有与传送的分配块相同数目的描述符的编程事件的时序图;
图12是图示根据本公开的具有比传送的分配块更多的描述符的编程事件的时序图;
图13是图示根据本公开的具有多个指令集的多分配块读事件的时序图;
图14是根据本公开的图示具有分配块大小传送的基于分配块的编程事件的接口管理控制系统的一部分的功能框图;
图15是根据本公开的并入多个编码器和解码器的接口管理控制系统的一部分的功能框图;
图16图示根据本公开的操作NVSM存储系统和NVSM驱动器的方法;
图17是根据本公开的并入描述符生成模块的NVSM存储系统的一部分的功能框图;
图18是图示根据本公开的每分配单元的固件描述符的生成的框图;
图19是图示根据本公开的每分配单元的硬件描述符的生成的框图;
图20图示根据本公开的描述符生成方法;
图21图示根据本公开的由NVSM控制模块生成的固件描述符的示例;
图22图示用于图21的固件描述符的控制行的示例;
图23图示根据本公开的状态寄存器的示例;
图24图示根据本公开的固件描述符的示例;
图25图示根据本公开的模板的示例;以及
图26图示根据本公开的用于独立磁盘冗余阵列(RAID)的硬件描述符的生成。
具体实施方式
在以下描述中,术语“非易失性半导体存储器(NVSM)”可以指的是相变存储器(PCM)、电可擦除可编程只读存储器(EEPROM)、只读存储器(ROM)和/或随机存取存储器(RAM)。EEPROM的一对示例是NAND闪速存储器和NOR闪速存储器。
而且,在以下描述中术语“主机”可以指的是向NVSM驱动器传送数据和/或从NVSM驱动器访问数据的设备。NVSM驱动器可以是闪存驱动器、通用串行总线(USB)驱动器、固态存储器驱动器等。
例如,主机可以指的是计算机、相机、手持式设备、便携式设备、蜂窝电话、打印机、个人数据助理、电子记事本、电视、显示器、电器、监控系统等。计算机的示例是台式计算机、膝上型计算机、电子记事本等。电器的示例是洗衣机、烘干机、冰箱等。NVSM驱动器包括NVSM,并且可以不包括诸如硬盘驱动器盘片之类的旋转磁存储介质。监控系统的示例包括防盗监控器、烟雾检测系统、婴儿监控器等。
此外,本文中公开了诸如模块、网络设备和电路部件之类的各种系统元件。系统元件的布置的示例被公开,并且包括邻近元件和非邻近元件。邻近元件被示出为直接彼此连接。非邻近元件被示出为间接彼此连接。
图1示出非易失性半导体存储器(NVSM)存储系统10。NVSM存储系统10包括主机12(或主机侧)和NVSM驱动器14(或NVSM侧)。主机12包括主机控制模块16和主机接口18。NVSM驱动器14经由NVSM驱动器接口20与主机12通信。NVSM驱动器14包括NVSM驱动器接口20、接收路径22、传输路径24、接口管理控制系统26和NVSM28。NVSM驱动器接口20与主机接口18通信。接收路径22和传输路径24在NVSM驱动器接口20和NVSM28之间传送数据。接口管理控制系统26包括NVSM控制模块27。NVSM控制模块27控制去向和来自NVSM28的数据传送。
接口管理控制系统26基于预定、选择和/或确定大小的数据分配块(或分配单元(AU))进行操作。这不像其基于单个固定的块大小进行操作的传统NVSM驱动器。在传统NVSM中,单个块大小等于数据页的大小。
在本公开中,数据的分配块指的是由NVSM驱动器14设置并且用于在NVSM驱动器14的设备和/或模块之间传送数据的数据量(或大小边界)。去向和来自NVSM28的每个数据传送事件包括一个或多个数据分配块。数据传送事件可以是编程事件或读事件。分配块的大小可以是相同的或不同的:对于不同的读事件;对于不同的编程事件;和/或在读事件和编程事件之间。分配块的大小可以由NVSM控制模块27确定、设置和/或调整。下面进一步描述分配块、分配块大小和分配块的传送。
主机控制模块16经由主机接口18向NVSM驱动器14传输主机数据并且从NVSM驱动器14接收主机数据。这可以包括读、写(或编程)和擦除访问事件。主机12可以基于接收的数据对象生成HDS和/或从NVSM驱动器14请求主机数据扇区(HDS)。HDS可以是从主机12向NVSM驱动器14传输的最小长度数据元素。HDS在接口18、20的相应端口之间传输。例如,接口18、20可以是串行高级技术附件(SATA)接口、小型计算机系统接口(SCSI)、串行附接的SCSI(SAS)、光纤通道接口、通用串行总线(USB)接口等。
主机控制模块16还可以生成诸如数据编程信号、数据读信号、数据擦除信号等之类的访问请求信号30。访问请求信号30可以由NVSM控制模块27和/或由NVSM驱动器14的其它模块经由NVSM驱动器接口20接收。NVSM控制模块27基于访问请求信号30来控制对NVSM28的访问。NVSM驱动器14经由NVSM驱动器接口20接收HDS。NVSM控制模块27可以基于访问请求信号30访问和/或请求来自NVSM28的驱动器数据扇区(DDS)。
接收路径22包括压缩模块40、加密模块42、缓冲器管理模块44、驱动器数据扇区(DDS)生成模块46、错误纠正码(ECC)模块48、接口管理模块50和NVSM28。传输路径24包括NVSM28、接口管理模块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接口时,可以接收多个并发并行数据流。
当可能时并且在HDS由缓冲器管理模块44接收之前,压缩模块40压缩从主机接口18接收的HDS。压缩针对与从主机接口18接收的HDS相同长度的HDS执行。压缩模块40可以使用有损和/或无损压缩方法。有损压缩和解压缩在压缩和解压缩之后提供与原始数据接近但不相同的数据。继压缩和解压缩后,无损压缩和解压缩提供与原始数据相同的数据重构。无损数据压缩包括检测重复比特模式并且移除冗余。
当可能时,压缩模块40压缩从主机12接收的主机数据扇区(HDS)。当被接收时,HDS可以是未压缩的、部分压缩的、和/或完全压缩的。HDS可以是从主机12向NVSM驱动器14传输的最小长度数据元素。某些HDS可能不是可压缩的,例如当使用无损压缩并且对应数据模式不包括冗余时。
加密模块42对压缩的HDS进行加密。加密模块42加密从压缩模块40接收的数据。加密可以包括一个或多个公共和私有密钥。加密还可以包括特定于NVSM驱动器14或者NVSM驱动器14的部件的一个或多个密钥,诸如特定于NVSM控制模块27和/或NVSM28的密钥。
缓冲器管理模块44将HDS存储在缓冲器70中,并且向DDS生成模块46转发HDS。缓冲器70可以包括诸如RAM、动态RAM(DRAM)和/或静态RAM(SRAM)之类的易失性存储器。在存储在NVSM28中之前,缓冲器管理模块44可收集并储存一个或多个HDS。
缓冲器管理模块44可以:当可能时将从加密模块42接收的DDS转换为HDS;从在缓冲器管理模块44下游(在缓冲器管理模块44和NVSM28之间)的部件接收HDS;和/或向解压缩模块56传送HDS。DDS中的每个DDS可以大于或等于HDS的大小。解压缩的HDS被传输向主机12。缓冲器管理模块44可以以预定顺序组合和存储压缩和/或加密的HDS,而不管接收HDS的顺序。
例如,HDS可以以数字顺序来接收,或者可以以不同顺序来接收。按序列接收的HDS可以存储在不同HDS寄存器72中,以允许以数字顺序或预定顺序对HDS重新排序。因而,HDS寄存器72可以用于提供针对相应DDS的HDS集74(示出HDS寄存器1-N和HDS集1-N)。在HDS寄存器被充满和/或满足预定DDS长度限制时,HDS集可以从缓冲器管理模块44被释放,并且被传递向DDS生成模块46。例如,当没有其它HDS可以和/或要与当前DDS的其它HDS组合时,满足预定DDS长度限制。
基于HDS寄存器72中组合和/或存储的一个或多个HDS,以及基于HDS和DDS信息,DDS生成模块46生成DDS。在存储在NVSM28中之前,DDS生成模块46将HDS转换为DDS。可以从缓冲器管理模块44接收HDS和DDS信息。HDS和DDS信息可以包括HDS信息比特以及诸如DDS长度、DDS比特槽可用性等之类的DDS信息。
DDS生成模块46可以生成每个DDS以具有相同的比特长度。滋扰(nuisance)数据指的是向一个或多个HDS添加使得生成的DDS具有预定比特长度的数据。压缩的HDS可以具有不同的比特长度。不同量的滋扰数据被添加,以组合压缩的HDS,以生成相等长度的DDS。NVSM控制模块27通过添加滋扰数据来防止HDS在两个DDS之间被分割。代替存储HDS与两个或更多其它HDS的部分,滋扰数据被附接。例如,滋扰数据可以包括全0、全1、空状态、和/或冗余数据,以最小化NVSM控制模块27的编程和/或处理。
ECC模块48和接口管理模块50可以基于来自命令管理模块60的参数信号进行操作。基于从NVSM控制模块27接收的命令和/或工作描述符84(统称为描述符),命令管理模块60生成第一参数信号80和第二参数信号82。
在数据传送事件期间,NVSM控制模块27或者NVSM驱动器14的其它模块之一接收访问请求信号30。NVSM控制模块27可以包括或访问第一非易失性存储器90。第一非易失性存储器90存储由NVSM控制模块27执行的固件92。在执行固件92中,NVSM控制模块27基于访问请求信号30生成描述符84。描述符84被存储在第二非易失性存储器94中。第二非易失性存储器94可以是命令管理模块60的部分,或者如示出的与命令管理模块60分离。第二非易失性存储器94可以存储描述符84和参数信息96,参数信息96用于解译从NVSM控制模块27接收的描述符84,以确定参数和生成参数信号80、82,如下面描述的。
在生成描述符84中,NVSM控制模块27可以确定:基于访问请求信号的数据的分配块的大小、使数据块的大小与其它参数相关的表、使用的应用等。数据的分配块的大小可以称为分配单元(AU)大小或分配块大小。例如,使用的应用可以指示主机的类型、NVSM驱动器的类型、以及主机和NVSM驱动器的速度。NVSM控制模块27生成描述符84以指示分配块大小。描述符84可以均包括:分配块大小;缓冲器寄存器位置;NVSM地址;NVSM通道标识符(ID);NVSM设备标识符(例如,存储器芯片ID);数据格式;要传送的数据量;操作比特的类型(例如,读、编程和/或擦除比特)等。
分配块大小中的每个可以基于页、基于子页、或基于非页。当分配块大小等于一个或多个数据页的大小时,分配块大小基于页。作为示例,单个数据页可以等于8千字节(KB)。其它示例页大小是4KB、16KB和32KB。当两个或更多数据分配块的大小等于1个数据页的大小时,分配块大小基于子页。当分配块大小不是1页的整数倍并且分配块大小的整数倍不等于1个数据页的大小时,分配块大小基于非页。分配块可以包括任何数据量。
数据分配块可以向NVSM28的通道100传送和从NVSM28的通道100传送。一个或多个数据分配块(“数据块”)的传送可以称为数据传送事件。例如,数据传送事件还可以发生在与通道串联和/或通信的设备之间。示例设备和/或模块之间的示例数据传送事件示出在图7、图14和图15中。
基于描述符84,命令管理模块60可以确定:分配块大小、ECC纠正功率(每数据块纠正的比特错误的数目);缓冲器寄存器位置;NVSM地址;数据格式;要传送的数据量;独立磁盘冗余阵列(RAID)操作;读、编程和/或擦除比特等。命令管理模块60执行描述符84,和/或基于描述符84来生成第一参数信号80和第二参数信号82。
第一参数信号80可以包括:ECC纠正功率比特;缓冲器寄存器位置比特;NVSM地址比特;数据格式比特;要传送的数据量比特;要传送的数据块数目比特;独立磁盘冗余阵列(RAID)操作比特;读、编程和/或擦除比特等。第二参数信号82可以包括:NVSM地址比特;分配块大小比特;要传送的数据块数目比特;读、编程和/或擦除比特等。
ECC模块48执行错误纠正,并且编码和解码从NVSM28接收的DDS和数据。基于第一参数信号80,ECC模块48向接口管理模块50传送DDS并且从接口管理模块50接收DDS。基于第二参数信号82,接口管理模块50访问NVSM28。接口管理模块50向NVSM28传输指令信号102,以控制对NVSM28的访问。基于和/或根据指令信号102,NVSM28经由通道100向接口管理模块50传输数据信号和/或从接口管理模块50接收数据信号。例如,指令信号102可以包括循环类型信号CT、时序选通信号DQx、以及状态寄存器比特信号SR[6],它们的示例示出在图4至图6和图8至图13中。
ECC模块48和/或其它ECC模块可以被连接:在压缩模块40和加密模块42之间以编码经压缩的HDS;在加密模块42和缓冲器管理模块44之间以编码经加密的HDS;在缓冲器管理模块44和DDS生成模块46之间;和/或如示出的在DDS生成模块46和NVSM28之间。然后DDS被存储在NVSM28中。
ECC模块48可以使用一个或多个ECC方法来防止当向NVSM28写数据和从NVSM28读数据时的错误。奇偶校验比特可以被生成并且在被存储在NVSM28中之前添加到DDS,和/或可以与DDS分开存储在NVSM28中。
接口管理模块50可以将DDS存储在NVSM28中的物理块地址(PBA)处。DDS的PBA可以存储在一个或多个位置中,并且由接口管理模块50在访问NVSM28中的DDS的存储位置时获取。例如,PBA可以存储在第一非易失性存储器90和/或NVSM28中。第一非易失性存储器90或NVSM28可以存储PBA的映射表104,这可以基于分配块大小。例如,与分配块相关联的一个或多个PBA可以被标识在映射表104中。这不同于基于数据页的大小来存储PBA。分配块大小可以基于或者独立于数据页的大小来设置。由于固件92基于分配块大小来存储PBA,分配块大小的改变不要求固件指令的改变,而是简单的分配块大小设置调整。映射表104可以使逻辑块地址(LBA)与PBA相关。映射表104可以由接收路径22和传输路径24中的模块中的任何模块来访问。
在将DDS转发向ECC模块48之前,接口管理模块50可以访问NVSM28中的DDS。基于访问命令信号和/或与DDS相关联的奇偶校验信息,ECC模块48可以解码从NVSM28访问的DDS。访问命令信号可以由NVSM控制模块27和/或命令管理模块60生成,并且包括第一参数信号80。访问命令信号可以包括一个或多个PBA。访问命令信号可以由NVSM控制模块27生成,并且基于LBA和/或从主机12接收的访问请求信号。基于例如从缓冲器管理模块44接收的数据请求信号,HDS生成模块52从ECC模块48访问或接收DDS。
HDS生成模块52和/或缓冲器管理模块44将接收的DDS分成HDS。基于从ECC模块48接收的经解密的DDS,HDS生成模块52生成一个或多个HDS。基于HDS标识信息和/或数据请求信号,HDS生成模块52生成HDS。数据请求信号可以包括一个或多个LBA。解密模块54解密来自ECC模块48的经解码的DDS。加密模块42所使用的密钥可以由解密模块54共享、访问和/或生成。
虽然接收路径22和传输路径24的模块以特定顺序示出,但是它们可以以不同顺序重新布置。例如,加密模块42可以位于压缩模块40的上游。换言之,加密模块42可以连接在NVSM驱动器接口20和压缩模块40之间。又例如,解密模块54可以连接在NVSM驱动器接口20和解压缩模块56之间。
以下的图2至图11图示NVSM存储系统10的实施方式的其它示例。
图2示出接口管理控制系统26的部分120,其包括ECC模块48、接口管理模块50和NVSM28。ECC模块48包括编码器122和解码器124。编码器122编码DDS,并且将经编码的DDS以数据分配块的形式转发向接口管理模块50。编码器122可以组合DDS的整数倍,以形成数据的分配块。解码器124解码来自接口管理模块50的数据分配块,以生成DDS。
对于示出的示例,接口管理模块50包括第一系列FIFO寄存器126和第二系列FIFO寄存器128。第一系列FIFO寄存器126与编程事件相关联,并且用于缓冲从ECC模块48向NVSM28传送的数据。第二系列FIFO寄存器128与读事件相关联,并且用于缓冲从NVSM28向ECC模块48传送的数据。虽然FIFO寄存器系列被示出用于编码器122和解码器124中的每个,但是接口管理模块50可以包括由编码器122和解码器124共享的单个系列的FIFO寄存器。第一FIFO寄存器126和第二FIFO寄存器128可以包括例如SRAM或者其它适合存储器设备。
FIFO寄存器126、128中的每个FIFO寄存器的大小可以大于或等于NVSM控制模块27设置的分配块大小。FIFO寄存器126、128中的每个FIFO寄存器的大小可以大于、等于或小于数据页的大小,因为分配块大小可以大于、等于或小于数据页的大小。大小等于数据页的大小的FIFO寄存器的示例示出在图7中。大小小于数据页的大小的FIFO寄存器的示例示出在图14中。
接口管理模块50通过通道1001-N与NVSM28通信。FIFO寄存器126、128中的每个FIFO寄存器与通道1001-N中的相应通道相关联。在数据被存储在NVSM28中之前和/或在数据被传送向缓冲器管理模块44(示出在图1中)之前,FIFO寄存器126、128临时存储数据。NVSM28可以包括用于通道1001-N中的每个通道的缓冲器130。FIFO寄存器126、128和/或缓冲器130可以用于平衡在编码器122和NVSM28之前和/或在解码器124和NVSM28之间的不同带宽(或速度)。
ECC模块48的带宽可以不同于NVSM28的带宽。编码器122和解码器124的速度可以快于通道1001-N中的每个通道的速度。例如,编码器122和解码器124中的每个的速度可以是通道1001-N中的每个通道的速度的8-16倍快。由于例如通道1001-N中的一个或多个通道中的数据流“瓶颈”或延迟(这可以是由于接口管理模块50和NVSM28的操作),也可以导致速度差异。FIFO寄存器126、128和缓冲器130帮助平衡掉速度差异。编码器122的速度可以被设置为使通道1001-N的操作保持在峰值操作速度。解码器124的速度可以被设置为防止第二组FIFO寄存器128填满,并且使通道1001-N的输出保持在峰值操作速度。
在以下的图3至图6和图8至图13中,示出多个时序图。时序图包括可以从图1的接口管理模块50向NVSM28传输的多个指令信号。指令信号102包括循环类型信号CT、时序选通信号DQx和状态寄存器比特信号SR[6]。循环类型信号CT标识时序选通信号DQx中正在提供的指令的类型。时序选通信号DQx可以包括例如由循环类型信号CT标识的命令指令CMD、NVSM地址指令ADDR、读指令DOUT、编程指令DIN。时序选通信号DQx标识命令、地址以及正被读取或编程的数据。命令的示例是读命令的开头(例如,00h、06h)、读命令的结尾(例如,30h、32h、EOh)、编程命令的开头(例如,80h)、以及编程命令的结尾(例如,10h)。地址的示例是列地址(例如,C1、C2)和行地址(例如,Rl、R2、R3)。
状态寄存器信号SR[6]指示在循环类型信号CT和时序选通信号DQx的指令集之间的等待时间。指令集可以是发起(或触发)指令集、读指令集或者编程指令集。触发指令集用于用信号通知NVSM28:要执行读操作或编程操作;正被传送的数据量和/或分配块数目;分配块的地址等。读指令集指的是什么时候从NVSM28向接口管理模块50或ECC模块48传送(或加载)数据。编程指令集指的是什么时候从接口管理模块50或ECC模块48向NVSM28传送数据。
等待时段可以包括触发准备时段tWB、读准备时段tR、准备好读时段tRR、触发加载时段tADL、编程准备时段tPROG、平面忙碌时段tPBSY、改变列建立时段tCCS等。在读准备时段tR和编程准备时段tPROG期间,NVSM28为数据传送事件做准备。每个数据传送事件具有单个读准备时段或单个编程准备时段。
而且,在以下的图3至图6和图8至图13中,示出多个指令集。指令集被提供作为循环类型和时序选通信号CT、DQx的部分。指令集中的每个指令集包括由上述等待时段中的一个或多个等待时段分开的指令组。指令被示出为六边形块。每个指令集可以包括任何数目的指令。
而且,在以下的图3至图6和图8至图13中,标识多个描述符。描述符的箭头不一定指的是描述符的时序。提供描述符的箭头,以标识基于描述符中的每个描述符生成的指令。对于描述符中的每个描述符,生成一个或多个指令集。例如,在图5中,多个页描述符1-3被示出具有相应箭头和对应指令。在图5所示指令被生成之前,页描述符1-3可以由NVSM控制模块27生成,并且传输向命令管理模块60。
图3至图6和图8至图13的描述符可以是页描述符或分配块描述符。页描述符指的是用于触发和/或传送一个或多个数据页的描述符。分配块描述符指的是用于触发和/或传送一个或多个数据分配块的描述符。页描述符和分配块描述符可以是触发描述符、读描述符或编程描述符。触发描述符用于初始化数据传送事件(读或编程事件)。作为示例,触发描述符可以标识命令类型(读或编程)、NVSM28和/或缓冲器管理模块44内的目的地址、以及多少数据要被传送(例如,页的数目和/或分配块的数目)。
读描述符用于从NVSM28读取数据。编程描述符用于向NVSM28进行数据编程。作为示例,读描述符和编程描述符可以标识多少数据要被传送以及数据页内的数据位置。描述符可以是触发描述符和读描述符两者。例如,参见图8的第一描述符(AU描述符1)。备选地,描述符可以是触发描述符和编程描述符两者。例如,参见图11的第一描述符(AU描述符1)。
图3示出图示用于基于页的传送的单页读事件的时序图。时序图包括基于具有箭头148的单个页描述符生成的指令信号CT(145)、DQx(146)和SR[6](147)。指令信号145-147是指令信号102的示例。如图示的,循环类型和时序选通信号145、146中的每个均包括两个指令集150、152。第一指令集150是触发指令集。第二指令集152是读指令集。指令集150、152中的每个均包括指令(示出为六边形块)。
页描述符可以由NVSM控制模块27生成。命令管理模块60基于页描述符生成第一参数信号80和第二参数信号82。接口管理模块50基于第二参数信号82生成指令信号145、146和147。在读准备时段tR期间,NVSM28基于指令信号的第一指令集为数据传送事件做准备。
继读准备时段tR后,NVSM28基于指令信号145、146和147经由通道100之一向接口管理模块50传送数据页。针对这一读事件传送的数据量(或者数据块的大小)可以等于1个数据页的大小。作为替代,传送的数据块的大小可以小于1个数据页。传送的数据量可以等于数据的分配块的大小。分配块的大小可以如上面描述的那样来设置。当传送数据分配块时,分配块描述符可以用作页描述符148的替代。分配块描述符指的是用于触发和/或传送一个或多个数据分配块的描述符。
图4示出图示用于基于页的传送的单页编程事件的时序图。时序图包括基于具有箭头160的单个页描述符生成的指令信号CT(155)、DQx(156)和SR[6](157)。指令信号155-157是指令信号102的示例。如图示的,信号155和156均包括两个指令集162、164。第一指令集162是触发指令集。第二指令集164是编程指令集。
图4的页描述符可以由NVSM控制模块27生成。生成页描述符,以发起(或触发)数据的传送和执行数据的传送两者。命令管理模块60基于页描述符160生成第一参数信号80和第二参数信号82。NVSM28基于第二参数信号82生成指令信号155-157。在触发加载时段tADL期间,NVSM28基于第一指令集162为数据传送事件做准备。
ECC模块48向接口管理模块50传送数据页。数据页可以存储在接口管理模块50的FIFO寄存器中。接口管理模块50经由通道100之一向NVSM28传送数据页。继触发加载时段tADL后并且在编程准备时段tPROG之前,数据被传送向通道。
针对这一编程事件传送的数据量(或数据块的大小)可以等于1个数据页的大小,如前所述或备选地,可以小于1个数据页。传送的数据量可以等于分配块的大小。数据的分配块的大小可以如上面描述的那样来设置。当传送数据分配块时,分配块描述符可以用作页描述符的替代。
图5示出图示使用多个页描述符的多页(或多平面)读事件的时序图。时序图包括基于具有箭头170、172、174的多个页描述符PageDescriptor1-3生成的指令信号CT(165)、DQx(166)和SR[6](167)。如图示的,信号165和166中的每个均包括六个指令集176、178、180、182、184、186。指令信号165-167是指令信号102的示例。第一和第二指令集176、178是用于多页读事件的触发指令集。第三和第五指令集180、184是用于每个页的触发指令。第四和第六指令集182,186是读指令集。
如示出的,六个指令集176-186用于传送2个数据页。对于附加页可以添加附加指令集。在这一示例中,每个信号的触发指令集的数目T等于传送的页的数目P的两倍(或T=2*P)。每个信号的读指令集的数目R等于传送的页的数目P(或R=P)。而且,页描述符的数目D等于页的数目加一(或D=P+1)。
页描述符PageDescriptor1-3可以由NVSM控制模块27生成。命令管理模块60基于页描述符PageDescriptor1-3生成第一参数信号80和第二参数信号82。NVSM28基于第二参数信号82生成指令信号165-167。NVSM28基于第一指令集176和第二指令集178为用于传送数据页的数据传送事件做准备。
然后,继读准备时段tR后,NVSM28基于指令信号(即指令集180-186)准备和传送经由通道100中的一个或多个通道向接口管理模块50的数据页中的每个数据页。针对每对读指令集182、186(用于CT信号的1个读指令集和用于DQx信号的1个读指令集)传送的数据量(或数据块的大小)可以等于1个数据页的大小。作为替代,传送的数据块的大小可以小于1个数据页。传送的数据量可以等于数据的分配块的大小。数据的分配块的大小可以如上面描述的那样来设置。当传送数据分配块时,分配块描述符可以用作页描述符PageDescriptor1-3的替代。这一情况的示例示出在图10中。
图6示出图示使用多个页描述符的多页编程事件的时序图。时序图包括基于具有箭头190、192的多个页描述符PageDescriptor1-2生成的指令信号CT(187)、DQx(188)和SR[6](189)。指令信号187-189是指令信号102的示例。如图示的,信号187和188均包括四个指令集194、196、198、200。第一指令集194和第三指令集198是用于多页读事件的触发指令集。第二指令集196和第四指令集200是编程指令集。
如示出的,四个指令集194-200用于传送2个数据页。对于附加页可以添加附加指令集。在这一示例中,每个信号的触发指令集的数目T等于传送的页的数目P的两倍(或T=P)。每个信号的编程指令集的数目G等于传送的页的数目P(或G=P)。而且,页描述符的数目D等于传送的页的数目(或D=P)。
页描述符PageDescriptor1-2可以由NVSM控制模块27生成。页描述符PageDescriptor1-2可以由NVSM控制模块27生成。命令管理模块60基于页描述符PageDescriptor1-2生成第一参数信号80和第二参数信号82。NVSM28基于第二参数信号82生成指令信号187-189。在相应触发加载时段tADLl、tADL2期间,NVSM28基于第一指令集194和第三指令集198为数据传送事件做准备。
ECC模块48向接口管理模块50传送数据页。数据页可以存储在接口管理模块50的FIFO寄存器中。接口管理模块50经由通道100之一向NVSM28传送数据页。继触发加载时段tADLl、tADL2后并且在编程准备时段tPROG之前,数据页被传送向通道。
针对编程指令196、200中的每个编程指令传送的数据量(或数据块的大小)可以等于1个数据页的大小,如上所述或备选地,可以小于1个数据页。传送的数据量可以等于数据的分配块的大小。分配块的大小可以如上面描述的那样来设置。当传送数据分配块时,分配块描述符可以用作页描述符PageDescriptor1-2的替代。这一情况的示例示出在图13中。
在上面的图5和图6中,由于存在单个读准备时段tR和信号编程时段tPROG,针对多页传送事件最小化等待时间。
在图7中,接口管理控制系统的部分210被示出为图示具有页大小传送的多页编程事件。部分210可以被并入到图1的接口管理控制系统26中。每个传送可以填充接口管理模块50的FIFO寄存器126之一。如上面关于图6描述的,传送的每个数据页可以具有两个相关联的页描述符(未示出)。
FIFO寄存器126中的每个FIFO寄存器连接到NVSM28的Channel0-7中的相应通道。Channel0-7可以包括在图1的通道100中。虽然FIFO寄存器126均可以设置大小为存储多于1个数据页,但是FIFO寄存器126均被示为能够存储1个数据页。如果执行多页(M页)传送(如上面描述的),FIFO寄存器126不需要设置大小为存储M个数据页,因为每个传送的数据页使用一个或多个页描述符。将FIFO寄存器126设置大小为存储单个数据页而非两个或更多数据页减少了被分配用于FIFO寄存器126的存储器并且降低了数据传送时间。如果仅单个描述符用于传送M个数据页,则FIFO寄存器126中的每个FIFO寄存器将需要设置大小为等于数据页中的数据量,因为每个描述符与单个通道和/或单个FIFO寄存器相关联。
在多页传送事件中,向接口管理模块50提供的数据逐页跨多个通道散布。示出数据Data1-16的页。在向Channel0-7中的任何通道发送第二页之前,单个页被传送向Channel0-7中的每个通道。基于Channel0-7和/或NVSM28内部的设备的速度,从FIFO寄存器126向Channel0-7传送数据页。由于数据页被传送向FIFO寄存器126中的每个FIFO寄存器,减少了FIFO寄存器126中的任何FIFO寄存器处的数据瓶颈的概率。例如,如果第一通道(例如,Channel0)的传送速度慢,则在对应的第一FIFO寄存器FIFO1处的瓶颈可以不发生,因为在将另一数据页加载到第一FIFO寄存器FIFO1中之前,数据页被加载到其它FIFO寄存器FIFO2-8中。
图8示出图示具有与传送的分配块相同数目的描述符的读事件的时序图。时序图包括基于具有箭头220、222的多个分配块描述符AUDescriptor1-2生成的指令信号CT(217)、DQx(218)和SR[6](219)。指令信号217-219是指令信号102的示例。如图示的,信号217和218均包括三个指令集224、226、228。第一指令集224是触发指令集。第二指令集226是第一读指令集。第三指令集228是第二读指令集。
读指令集226、228中的每个读指令集与数据分配块相关联。第一描述符AUDescriptor1与第一指令集226和第二指令集228相关联。第二描述符AUDescriptor2与第三指令集228相关联。
分配块描述符AUDescriptor1-2可以由NVSM控制模块27生成。命令管理模块60基于分配块描述符AUDescriptor1-2生成第一参数信号80和第二参数信号82。接口管理模块50基于第二参数信号82生成指令信号217-219。在读准备时段tR期间,NVSM28基于第一指令集224为数据传送事件做准备。
继读准备时段tR后,NVSM28基于指令信号217-219经由通道100之一向接口管理模块50传送数据分配块。数据分配块可以逐块散布至接口管理模块50的不同、邻近和/或序列FIFO寄存器。针对这一读事件传送的数据量(或数据分配块的大小)可以例如小于或等于1个数据页的大小。数据分配块的大小可以如上面描述的那样来设置。
图9示出图示具有比传送的分配块更多描述符的读事件的时序图。时序图包括基于具有箭头230、232、234的多个分配块描述符AUDescriptor1-3生成的指令信号CT(227)、DQx(228)和SR[6](229)。指令信号227-229是指令信号102的示例。分配块描述符的数目AUD等于传送的分配块的数目AB加一(或AUD=AB+1)。如图示的,信号227和228中的每个信号包括三个指令集236、238、240。第一指令集236是触发指令集。第二指令集238是第一读指令集。第三指令集240是第二读指令集。
每对读指令集238、240(CT信号中的1个读指令集和DQx信号中的1个读指令集)与数据分配块相关联。第一描述符AUDescriptor1与第一指令集236相关联。第二描述符AUDescriptor2与第二指令集238相关联。第三描述符AUDescriptor3与第三指令集240相关联。
分配块描述符AUDescriptor1-3可以由NVSM控制模块27生成。命令管理模块60基于分配块描述符AUDescriptor1-3生成第一参数信号80和第二参数信号82。接口管理模块50基于第二参数信号82生成指令信号227-229。在读准备时段tR期间,NVSM28基于第一指令集236为数据传送事件做准备。
继读准备时段tR后,NVSM28基于指令信号227-229经由通道100之一向接口管理模块50传送数据分配块。针对这一读事件传送的数据量(或数据分配块的大小)可以例如小于或等于1个数据页的大小。数据分配块的大小可以如上面描述的那样来设置。
图8的实施方式使用比图9的实施方式更少的描述符。使用更少的描述符可以降低在接口管理控制系统26的模块之间生成和传送的信号的数目。使用更少的描述符还可以减少映射表大小以及NVSM控制模块27的操作。通过图8的实施方式使用更多的描述符可以通过提供增加的指令集的数据传送控制和大小更小的分配块的管理来增加固件设计灵活性
图10示出图示具有多个指令集的多分配块读事件的时序图。图10的实施方式相似于图5的实施方式,除了分配块描述符被生成为传送数据分配块,而不是页描述符被生成为传送数据页。时序图包括基于具有箭头250、252、254的多个分配块描述符AUDescriptor1-3生成的指令信号CT(247)、DQx(248)和SR[6](249)。指令信号247-249是指令信号102的示例。
如图示的,信号247和248均包括六个指令集256、258、260、262、264、266。第一指令集256和第二指令集258是用于多页读事件的触发指令集。第三指令集260和第五指令集264是用于每个页的触发指令。第四指令集262和第六指令集266是读指令集。如示出的,六个指令集256-266用于传送2个数据页。对于附加页可以添加附加指令集。在这一示例中,每个信号的触发指令集的数目T等于传送的页的数目P的两倍(或T=2*P)。每个信号的读指令集的数目R等于传送的页的数目P(或R=P)。而且,页描述符的数目D等于页的数目减一(或D=P-1)。
分配块描述符AUDescriptor1-3可以由NVSM控制模块27生成。命令管理模块60基于分配块描述符AUDescriptor1-3生成第一参数信号80和第二参数信号82。NVSM28基于第二参数信号82生成指令信号247-249。NVSM28基于第一指令集256和第二指令集258为用于传送数据分配块的数据传送事件做准备。
然后,继读准备时段tR后,NVSM28基于指令信号247-249(即指令集260、264)准备和传送经由通道中的一个或多个通道向接口管理模块50的数据分配块中的每个数据分配块。针对每对读指令集262、266(用于CT信号的1个读指令集和用于DQx信号的1个读指令集)传送的数据量(或分配块大小)可以小于或等于1个数据页的大小。
图11示出图示具有与传送的分配块相同数目的描述符的编程事件的时序图。时序图包括基于具有箭头270、272的多个分配块描述符AUDescriptor1-2生成的指令信号CT(267)、DQx(268)和SR[6](269)。指令信号267-269是指令信号102的示例。如图示的,信号267和268均包括三个指令集274、276、278。第一指令集274是触发指令集。第二指令集276是第一编程指令集。第三指令集278是第二编程指令集。
分配块描述符AUDescriptor1-2可以由NVSM控制模块27生成。命令管理模块60基于分配块描述符AUDescriptor1-2生成第一参数信号80和第二参数信号82。NVSM28基于第二参数信号82生成指令信号267-269。在触发加载时段tADL期间,NVSM28基于第一指令集274为数据传送事件做准备。
ECC模块48向接口管理模块50传送数据分配块。数据分配块可以存储在接口管理模块50的FIFO寄存器中。接口管理模块50经由通道100之一向NVSM28传送数据分配块。继触发加载时段tADL后并且在编程准备时段tPROG之前,数据被传送向通道。针对这一编程事件传送的数据量(数据分配块的组合大小)可以小于或等于1个数据页的大小。
图12示出图示具有比传送的分配块更多的描述符的编程事件的时序图。时序图包括基于具有箭头280、282、284的多个分配块描述符AUDescriptor1-3生成的指令信号CT(277)、DQx(278)和SR[6](279)。指令信号277-279是指令信号102的示例。分配块描述符的数目AUD等于传送的分配块的数目AB加一(或AUD=AB+1)。如图示的,277和278信号均包括三个指令集286、288、290。第一指令集286是触发指令集。第二指令集288是第一编程指令集。第三指令集290是第二编程指令集。
分配块描述符AUDescriptor1-3可以由NVSM控制模块27生成。命令管理模块60基于分配块描述符AUDescriptor1-2生成第一和第二参数信号80、82。NVSM28基于第二参数信号82生成指令信号277-279。在触发加载时段tADL期间,NVSM28基于第一指令集286为数据传送事件做准备。
ECC模块48向接口管理模块50传送数据分配块。数据分配块可以存储在接口管理模块50的FIFO寄存器中。接口管理模块50经由通道100之一向NVSM28传送数据分配块。继触发加载时段tADL后并且在编程准备时段tPROG之前,数据被传送向通道。针对这一编程事件传送的数据量(数据分配块的组合大小)可以小于或等于1个数据页的大小。
图13示出图示具有多个指令集的多分配块读事件的时序图。图13的实施方式相似于图6的实施方式,除了分配块描述符被生成为传送数据分配块,而不是页描述符被生成为传送数据页。此外,每个传送的数据分配块生成两个页描述符,而不是每个传送的数据页生成单个页描述符。
图13的时序图包括基于具有箭头300、302、304、306的多个分配块描述符AUDescriptor1-4生成的指令信号CT(297)、DQx(298)和SR[6](299)。指令信号297-299是指令信号102的示例。如图示的,信号297和298均包括六个指令集308、310、312、314、316、318。第一指令集308和第四指令集314是用于多分配块读事件的触发指令集。第二指令集310和第五指令集316是用于第一数据分配块和第三数据分配块的编程指令集。第三指令集312和第六指令集318是用于传送第二数据分配块和第四数据分配块的编程指令集。对于附加数据分配块可以添加附加的触发和编程指令集。
在这一示例中,每个信号的触发指令集的数目T等于传送的数据分配块的数目AB的两倍(或T=2*AB)。每个信号的编程指令集的数目G等于传送的数据分配块的数目(或G=AB)。每个触发指令集的分配块的数目可以通过NVSM控制模块27增加。
分配块描述符AUDescriptor1-4可以由NVSM控制模块27生成。命令管理模块60基于分配块描述符AUDescriptor1-4生成第一参数信号80和第二参数信号82。NVSM28基于第二参数信号82生成指令信号297-299。在触发加载时段tADLl、tADL2期间,NVSM28基于第一指令集308、314为数据传送事件做准备。
ECC模块48向接口管理模块50传送数据分配块。第一数据分配块和第二数据分配块可以存储在接口管理模块50的第一FIFO寄存器中。第三数据分配块和第四数据分配块可以存储在接口管理模块50的第二FIFO寄存器中。接口管理模块50可以经由通道100中的两个通道向NVSM28传送数据分配块。继触发加载时段tADLl、tADL2后并且在编程准备时段tPROG之前,数据分配块被传送向通道。作为替代,第一数据块、第二数据块、第三数据块和第四数据块可以经由通道100之一被传送向第一FIFO寄存器和第二FIFO寄存器之一并且被传送向NVSM28。
针对每对编程指令集(第一编程指令集310和第二编程指令集312或者第三编程指令集316和第四编程指令集318)传送的数据量(或者数据分配块的大小)可以小于或等于1个数据页的大小。在示出的示例中,如果针对每对触发指令集(用于CT信号的1个触发指令集和用于DQx信号的1个触发指令集)传送1个数据页,则两个分配块的大小等于数据页的大小。数据页的每次传送的分配块数目可以通过减少分配块大小来增加。
在图14中,接口管理控制系统的部分330被示出为图示具有分配块大小传送的基于分配块的编程事件。这一部分330可以并入到图1的接口管理控制系统26中。传送的每个数据分配块可以填充接口管理模块50的FIFO寄存器126'之一。如上面关于图11和图12描述的,传送的每个数据分配块可以具有例如两个或三个相关联的分配块描述符(未示出)。
FIFO寄存器126'中的每个FIFO寄存器连接到NVSM28的Channel0-7之一。虽然FIFO寄存器126'均可以设置大小为存储多于1个数据分配块,但是FIFO寄存器126'均被示为能够存储1个数据分配块。
FIFO寄存器126'中的每个FIFO寄存器的大小可以基于数据分配块的大小,并且可以独立于数据页的大小。任何数目的分配块可以等于一个数据页的大小。减少数据分配块和FIFO寄存器126'的大小可以进一步增加数据传送速度、增加并行数据传送效率、并且防止数据瓶颈。
在多分配块传送事件中,向接口管理模块50提供的数据逐块跨多个通道散布。示出数据Data1-32的分配块。在向通道中的任何通道发送第二分配块之前,单个数据分配块传送向通道中的每个通道。基于通道和/或NVSM28内部的设备的速度,从FIFO寄存器126'向通道传送数据分配块。由于数据分配块被传送向FIFO寄存器126'中的每个FIFO寄存器,减少了FIFO寄存器126中的任何FIFO寄存器处的数据瓶颈的概率。
图15示出接口管理控制系统的部分340。部分340可以并入到图1的接口管理控制系统26中,替换图2的部分120,并且包括ECC模块48'、接口管理模块50'和NVSM28。不像图2的实施方式,ECC模块48'包括多个编码器342和多个解码器344,并且接口管理模块50'不包括FIFO寄存器。编码器342中的每个编码器可以以与NVSM28的通道100近似相同的速度传送数据。
在编程事件期间,相似于如关于例如图2和图8至图14的实施方式描述的向FIFO寄存器散布数据分配块,DDS生成模块46可以向编码器342散布数据分配块。图15的实施方式通过不在接口管理模块50'中并入FIFO寄存器,进一步降低了用于向NVSM28和从NVSM28传送数据的存储器的量。由于未并入FIFO寄存器,这一实施方式可以支持任何页大小或分配块大小。这增加了固件92的开发灵活性。这一实施方式还可以增加并行数据传送效率。
如在图14和图15中描述的,使用大小小于页大小的FIFO寄存器和/或去除FIFO寄存器最小化了硬件/存储器要求。
NVSM存储系统10和/或NVSM驱动器14可以使用众多方法进行操作,基于分配块的示例方法通过图16的方法来提供。在图16中,示出操作NVSM存储系统和NVSM驱动器的方法。虽然以下任务主要关于图1至图15的实施方式进行描述,但是可以容易地将任务修改为适用于本公开的其它实施方式。任务可以迭代执行。方法可以开始于350。
在352处,NVSM驱动器接口20从主机接口18接收访问请求信号,从而请求执行读、编程和/或擦除事件。
在354处,NVSM控制模块27基于访问请求信号生成页和/或分配块描述符。页和/或分配块描述符可以被生成为执行一个或多个数据传送事件。数据传送事件中的每个数据传送事件可以是读事件或编程事件,并且仅包括一个读准备时段或一个编程准备时段。每个数据传送事件、传送的数据页、和/或传送的数据分配块生成的描述符的数目可以由NVSM控制模块27确定。
数据传送事件中的每个数据传送事件包括两个或更多描述符。每个传送事件的数据页数目和/或数据分配块数目也可以由NVSM控制模块27确定并且指示在生成的描述符中。每个数据传送事件可以传送一个或多个数据页和/或一个或多个数据分配块。页大小可以是预定的并且固定的,或者可以由NVSM控制模块27设置。
在356处,如上面描述的,基于在354处生成的页和/或分配块描述符,命令管理模块60生成第一参数信号80和第二参数信号82。
在358处,基于第一参数信号80和第二参数信号82,ECC模块(例如,ECC模块48、48'之一)和接口管理模块(例如,接口管理模块50、50'之一)确定是要执行读事件还是编程事件。当执行读事件时,执行任务360。当执行编程事件时,执行任务370。
在360处,接口管理模块生成指令信号102,以指示NVSM28经由通道100从NVSM28向接口管理模块传送数据块。基于第二参数信号82生成指令信号102。
在362处,基于指令信号的指令集,NVSM28准备和传送向通道100中的一个或多个通道的数据页和/或数据分配块。指令集可以是如例如图3、图5、图8、图9和/或图10所示的。数据页和/或数据分配块可以由接口管理模块的FIFO寄存器接收。
在364处,基于参数信号80、82,从接口管理模块向ECC模块传送数据页和/或数据分配块。如图2、图7、图14和图15所示,数据页和/或数据分配块可以被传送向ECC模块的一个或多个解码器。
在366处,数据页和/或数据分配块经由例如HDS生成模块52、缓冲器管理模块44、解密模块54和解压缩模块56被传送向NVSM驱动器接口20。主机12可以从NVSM驱动器接口20接收数据页和/或数据分配块。继执行任务366后,如示出的,方法可以返回到任务352,或者结束于380。
在370处,数据页和/或数据分配块由NVSM驱动器接口20接收。在371处,数据页和/或数据分配块经由例如压缩模块40、加密模块42、缓冲器管理模块44和DDS生成模块46被转发向ECC模块。
在372处,基于第一参数信号80,ECC模块可以向接口管理模块传送数据页和/或数据分配块。如图2、图7或图14所示,数据页和/或数据分配块可以从ECC模块的编码器被传送并且被散布向接口管理模块的一个或多个FIFO寄存器。作为替代,如图15所示,数据页和/或数据分配块可以从ECC模块的多个编码器向接口管理模块传送。
在374处,接口管理模块基于第二参数信号82生成指令信号102,以向NVSM28传送数据页和/或数据分配块。指令信号102可以包括指令集。指令集可以是如例如图4、图6、图11、图12和/或图13所示的。
在376处,NVSM28经由通道100接收数据页和/或数据分配块。继执行任务376后,如示出的,方法可以返回到任务352,或者结束于380。
上述图16的任务意指说明性示例;根据应用,任务可以按序列、同步地、同时地、连续地、在重叠时间段期间或者以不同顺序来执行。例如,在执行任务376的同时,可以执行任务374。
上面描述的示例中的一些示例每个向NVSM和/或从NVSM传送的页使用多个描述符(如上面定义的),和/或每个向NVSM和/或从NVSM传送的分配块使用多个描述符。通过生成和使用多个描述符,相比于每次传送使用仅单个描述符,增加了固件灵活性。下面提供其它示例,其包括每个分配块生成一个描述符。基于选择的分配块大小执行数据传送允许要执行的读和编程事件独立于页大小,并且允许NVSM驱动器适应任何页大小的NVSM。小于页大小的分配块更加便于NVSM控制模块的固件来处理、更加便于编码和解码、并且更加便于主机来处理。与读取数据页截然相反,从NVSM读取分配块减少了读延时。
而且,基于分配块的传送允许NVSM驱动器的接口管理模块的FIFO大小与页大小无关。而且,通过每个传送事件在NVSM的多个通道之上散布数据分配块改善了传送效率。数据可以散布向多个通道,而无需等待附加数据块被加载到通道的FIFO中,该FIFO已经接收了数据块。这进一步降低了传送延时。
图17示出NVSM存储系统的部分400,其包括NVSM控制模块402和描述符生成模块404。NVSM控制模块402可以与图1的NVSM控制模块27相似的操作,但是被修改用于与描述符生成模块404一起操作(如下面描述的)。NVSM控制模块402可以根据NVSM控制模块402的存储器406中存储的固件405进行操作。图1的NVSM存储系统10可以被修改为包括部分400。
为了减少用于经由固件生成描述符的固件开销,包括描述符生成模块404。例如,描述符生成模块404可以包括用于生成如本文中描述的描述符的电子电路和/或其它适合硬件。虽然以下示例将描述符生成模块404称为包括硬件,但是描述符生成模块404可以包括其可以执行用于描述符生成的固件的逻辑设备和/或处理器。由描述符生成模块404执行的固件可以与由NVSM控制模块402执行的固件405分立和不同。
描述符生成模块404可以由例如NVSM控制模块402触发以生成描述符(例如,硬件描述符)。NVSM控制模块402可以生成固件(或第一)描述符,并且将固件描述符转发向描述符生成模块404中的先进先出(FIFO)存储器407。固件描述符可以包括输入参数,基于该输入参数,描述符生成模块404生成第二描述符(例如,硬件描述符)。相似于上面描述的其它描述符,第二描述符可以存储在存储器94中。存储器94可以包括被分配为存储描述符(固件和/或硬件描述符)的FIFO存储器。使用固件生成的描述符(诸如由NVSM控制模块402生成的那些)被称为固件描述符。使用硬件生成的描述符(诸如由描述符生成模块404生成的那些)被称为硬件描述符。
然后,描述符生成模块404可以经由高级微控制器总线(AHB)408向NVSM控制模块402报告第二描述符被生成并且存储在存储器94中。这可以经由例如由描述符生成模块404生成和/或由NVSM控制模块402访问的完成状态标志来实现。又例如,生成第二描述符的完成可以经由由描述符生成模块404生成并且被发送向NVSM控制模块402的中断来指示。由描述符生成模块404生成第二描述符减少了NVSM控制模块402与生成描述符相关联的处理时间量。这允许NVSM控制模块402执行其它任务。
NVSM存储系统的部分400包括NVSM控制模块402、描述符生成模块404、ECC模块48、命令管理模块410、接口管理模块50和NVSM28。NVSM控制模块402可以实现为片上系统(SoC),并且包括存储器406。存储器406可以存储固件405和表104。固件405可以相似于图1中的固件92,但是被修改为实现下面公开的固件到硬件和/或单个到多个描述符操作。固件405生成固件描述符,固件描述符均由描述符生成模块404转换为一个或多个其它描述符(例如,硬件描述符)。表104可以存储在描述符生成模块404中,和/或与描述符生成模块404共享。
命令管理模块410与图1的命令管理模块60相似的操作,但是被修改为与描述符生成模块404通信。命令管理模块410可以从描述符生成模块404接收描述符(例如,硬件描述符),并且执行从描述符生成模块404接收的描述符(例如,硬件描述符)。命令管理模块410经由例如高级可扩展接口(AXI)总线412与存储器94通信。命令管理模块410可以称为定序器,因为命令管理模块410可以按序列执行由描述符生成模块404生成的描述符的序列。存储器94可以存储参数信息96、描述符84和模板414。描述符84可以包括固件和/或硬件描述符。固件描述符可以从NVSM控制模块402和/或从描述符生成模块404接收。硬件描述符可以从描述符生成模块404接收。
图18图示每个分配单元的固件描述符的生成,并且关于图1的实施例进行描述。NVSM控制模块27可以生成每个分配单元的固件描述符,然后该固件描述符可以存储在存储器94中。作为示例,示出四个数据的分配单元(或块)AU1-4。NVSM控制模块402生成用于AU1-4的固件描述符F/WDesc1-4以控制NVSM28的操作。固件描述符F/WDesc1-4分别对应于数据的分配单元AU1-4。在生成固件描述符之前,数据的分配单元AU1-4集体示出为单个数据块420。继生成固件描述符后,分开示出数据分配单元AU1-4。数据分配单元AU1-4可以被分开为允许数据分配单元AU1-4在相同时间段期间的并行传送。
图19图示每个分配单元的描述符(例如,硬件描述符)的生成,如关于图17的实施例描述的。NVSM控制模块402可以生成用于单个数据块424的固件(或第一)描述符422,单个数据块424具有预定数目的数据分配单元AU1-4。固件描述符422可以存储在存储器94中和/或被提供向描述符生成模块404。描述符生成模块404可以生成用于数据分配单元AU1-4中的每个数据分配单元的第二描述符。第二描述符可以是硬件描述符,并且被标识为H/WDesc1-4。第二描述符用于控制NVSM28。与第二描述符相关联的数据量与由NVSM控制模块402生成的固件描述符422相关联的数据量相同。虽然在图19中示出第二描述符和数据分配单元AU1-4之间的一对一关系,但是第二描述符中的每个可以与一个或多个数据分配单元AU1-4相关联。下面进一步描述从固件(或第一)描述符向硬件(或第二)描述符的转换。
数据分配单元AU1-4中的每个数据分配单元可以具有任何数据量。数据分配单元AU1-4的大小可以是预定的、固定的和/或由NVSM控制模块402设置。分配单元的大小可以小于、等于或大于数据页的大小。第二描述符中的每个可以用于控制一个或多个数据页的传送,并且因而可以对应于单个或多平面读和/或编程(或写)操作。描述符生成模块404可以生成第二描述符,以将数据分配单元AU1-4散布向NVSM28的多个通道,以最大化在接口管理模块50和NVSM28之间的并行数据传送。
图17和图19的上述特征允许NVSM控制模块402当执行数据的多平面(多个页)传送时生成单个固件描述符。这是因为描述符生成模块404将单个固件描述符转换成由命令管理模块410执行的多个描述符。由描述符生成模块404生成描述符允许NVSM控制模块402继续以NVSM28可识别的顺序分派去向和来自NVSM28的数据。描述符生成模块404可以代替NVSM控制模块402来执行地址映射。描述符生成模块404可以将例如用于数据分配单元的逻辑块地址映射到物理块地址。物理块地址是NVSM28中的存储器位置的地址。由描述符生成模块404执行的数据分派、描述符生成和地址映射最小化了在执行数据传送中由NVSM控制模块402执行的计算量。
存储器94可以包括如例如图2所示的先进先出(FIFO)寄存器。FIFO寄存器中的每个FIFO寄存器的大小可以与分配单元相同。作为结果,FIFO寄存器的大小可以独立于数据的页大小。FIFO寄存器大小与数据分配单元大小的匹配防止了在例如图2的ECC模块48和FIFO寄存器之间的速度失配。通过传送小于数据页的数据量,每个传送事件较少的数据被传送进和传送出FIFO寄存器,这允许更快的数据传送。这减少了与FIFO寄存器相关联的数据传送延时。为了进一步减少传送延时,当从NVSM28接收数据以及向NVSM28传送数据时,ECC模块48可以循环通过FIFO寄存器和/或对应通道。在传送期间,数据块可以被分割成两个或更多部分的数据。例如,16千字节(KB)的数据块可以划分成两个8KB的部分。第一部分可以向和/或从第一FIFO寄存器传送,而第二部分向和/或从第二FIFO寄存器传送。
如上所述,本文中公开的NVSM存储系统可以使用众多方法来操作。另一示例方法图示在图20中。图20图示描述符生成方法。虽然图20的任务主要关于图1、图17和图19的示例进行描述,但是任务可以适用于本公开的其它实施例。任务可以迭代执行。
方法可以开始于500。在502处,NVSM控制模块402接收来自主机设备12的访问请求信号,和/或检测对来自主机设备12的访问请求信号的接收。在504处,通过使用固件405,NVSM控制模块402基于访问请求信号生成一个或多个固件(第一)描述符。图21示出由NVSM控制模块402生成的固件描述符505的示例。固件描述符505可以包括3个控制行(标识为Row0-2)和64个参数行(标识为Row3-66)。控制行和参数行中的每个可以具有信息的字。字中的每个字可以称为描述符字(或DWORD)。任何数目的控制行和参数行可以包括在固件描述符中。在参数行中,信息的每个字节可以称为输入参数。参数行中的每个DWORD可以包括参数的4个字节。由于每个固件描述符可以包括64个参数行,所以每个固件描述符可以包括256个参数。
固件描述符的控制行包括具有控制信息的控制字段。图22示出用于图21的固件描述符505的控制行的示例。第一控制行Row0包括控制字段PRMT_ROW_NUM、SRC_LEN和SRC_PTR。第二控制行Row2包括控制字段DF_SEL和DST_PTR。第三控制行Row3包括控制字段SC0-SC9。保留字段RSVD可以用于其它控制信息。对控制字段PRMT_ROW_NUM、SRC_LEN、SRC_PTR、DF_SEL和DST_PTR、以及SC0-SC9的描述提供在下表中。
描述符字段的表
除了上面表中陈述的信息之外,固件描述符的控制字段中的每个控制字段还可以指示是否使用(i)模板中的默认值和/或信息或者(ii)用固件描述符的参数行中的对应值和/或信息替换模板中的默认值和/或信息。例如,控制字段SC0可以包括默认比特,该默认比特可以被设置为‘0’,以指示使用模板中的对应默认字节值。默认比特可以被设置为‘1’,以指示使用被提供作为固件描述符的参数行中的参数之一的对应字节值。控制字段可以包括不只一个默认比特。例如,控制字段SC3可以包括用于页地址、块地址和lun地址中的每个地址的默认比特,以指示是否使用默认页地址、默认块地址和/或默认lun地址。在上面的表中定义了这些地址。此外,控制字段中的每个控制字段可以具有不同格式,并且可以基于其中使用对应NVSM系统的应用来设置控制字段的格式。
在506处,NVSM控制模块402向FIFO存储器407发送固件描述符。在507处,继存储固件描述符后,NVSM控制模块402可以触发描述符生成模块404。通过例如向描述符生成模块404发送指示向FIFO存储器407传送一个或多个固件描述符的命令信号,NVSM控制模块402可以触发描述符生成模块404。可以不执行任务507。又例如,描述符生成模块404可以检测固件描述符的传送,并且开始生成硬件描述符,而不接收来自NVSM控制模块402的命令信号。
在508处,描述符生成模块404访问FIFO存储器407,并且解析来自固件描述符中的一个或多个固件描述符的命令参数。在510处,基于一个或多个固件描述符中的命令参数,描述符生成模块404访问来自存储器94的一个或多个描述符模板(下文中被称为“模板”),并且更新模板中的描述符字段。模板中的每个模板可以是通用描述符和/或灵活描述符。通用描述符可以具有参数字段的预定集,参数字段的预定集具有参数字段中的每个参数字段中的预定默认值。通用描述符的目的可以固定。灵活描述符指的是参数字段可以更新和/或用于不同目的的描述符。例如,灵活描述符的字段可以用于设置NVSM的不同控制参数。
在512处,描述符生成模块404在存储器94中存储如510处修改的一个或多个模板。如修改的一个或多个模板不会替换510处访问的对应一个或多个模板。这允许相同的默认模板和/或修改模板用于随后生成的描述符(硬件和/或固件描述符)。
在514处,对于固件描述符中的每个固件描述符并且根据对应和修改的模板,描述符生成模块404生成一个或多个第二描述符(例如,硬件描述符)。可以针对以下项中的每个生成多个第二描述符:(i)由NVSM控制模块402生成的固件描述符,和/或(ii)对应和修改的模板。第二描述符可以包括硬件和/或固件描述符。下面关于图24-26的实施例描述生成多个硬件描述符的示例。
在516处,描述符生成模块404在存储器94中存储514处生成的第二描述符。514处生成的第二描述符可以被存储为对应和修改的模板的部分或者与对应和修改的模板分开存储。在518处并且继生成和/或保存第二描述符后,描述符生成模块404可以向NVSM控制模块402指示,完成了当前一个或多个第二描述符的生成。描述符生成模块404可以通过以下方式提供这一指示:向NVSM控制模块402发送状态信号;设置由NVSM控制模块402经由例如AHB总线408可访问的标志;和/或通过生成中断。状态信号可以经由AHB总线408来传输。
在520处,描述符生成模块404可以确定是否存在NVSM控制模块402生成的另一固件描述符要转换为例如多个硬件描述符。如果存在另一固件描述符,则可以执行任务508,否则方法可以结束于522。
在上述方法期间,例如在518处,针对生成、执行和/或转换为硬件描述符的固件描述符中的每个固件描述符,可以更新一个或多个状态寄存器。在描述符生成模块完成一个或多个描述符的生成期间和/或之后,描述符生成模块404可以更新状态寄存器中的字段。NVSM控制模块402可以跟踪这些字段,以确定固件到硬件(或单个到多个)描述符转换是否已经执行和完成。图23图示其可以用于这些跟踪目的的状态寄存器530的示例。
示出的状态寄存器530包括四个字段。标识为DGE_GENDES_CNT的第一字段指示针对特定固件描述符由描述符生成模块404生成的描述符的数目(例如,硬件和/或固件描述符的数目)。标识为DES_FIFO_ADDR的第二字段是地址指针,其指示描述符生成模块404生成的描述符被存储的存储器94中的地址。标识为DGE_ERR_CODE的第三字段指示在固件到硬件和/或单个到多个描述符转换过程期间是否已经发生错误。作为示例,第三字段可以指示什么时候固件描述符的参数行中提供的参数“在边界外”(意指描述符生成模块404难以辨别)。标识为DES_FIFO_ADDR_WRAPPED的第四字段指示描述符是否已经卷绕(wrap)环形存储器。例如,缓冲器或FIFO寄存器可以用作环形存储器,使得在填充缓冲器或FIFO寄存器时,剩余数据写在缓冲器或FIFO寄存器的开始处的数据之上。作为结果,如果描述符大于缓冲器或FIFO寄存器,则描述符的最后部分可以写在缓冲器或FIFO寄存器中的描述符的开始部分之上。
图20的上述任务意指说明性示例;根据应用,任务可以按序列、同步地、同时地、连续地、在重叠时间段期间或者以不同顺序来执行。而且,根据事件的实施方式和/或序列,可以不执行或跳过任务中的任何任务。
图24和图25分别图示固件描述符540的示例和模板550的示例。固件描述符540可以由图17的NVSM控制模块402生成。固件描述符540和模板550可以存储在图17的存储器94中。在示出的示例中,固件描述符540被生成用于多级单元实施例,其中NVSM28的单元包括三级单元(TLC)。TLC中的每个单元可以能够存储数据的多个比特。
在示出的示例中,固件描述符540包括诸如字段SRC_PTR、SRC_LEN、PRMT_ROW_NUM之类的多个字段。固件描述符540可以指示哪些字段要包括在由图17的描述符生成模块404生成的硬件(或第二)描述符中(诸如字段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的值。用于字段DQ0-3的值可以针对模板550中的前四个描述符中的每个描述符来提供。固件描述符540还可以包括具有用于字段SC5的开头行地址的字节(例如,字节20-23)。
如示出的,模板550包括用于5个描述符中的每个描述符的字段。模板550可以包括用于每个描述符的任何数目的字段,并且可以具有用于任何数目的描述符的值。而且,任何数目的描述符可以使用模板550和/或模板550中与描述符相关联的值来生成。基于模板550和/或模板550的一部分生成的描述符的数目可以经由字段SRC_PTR和SRC_LEN指示。模板550可以由用户定义、预定、和/或由NVSM控制模块402生成并且存储在存储器94中。
对于TLC读取,在发出读(或第五)描述符(例如DES5)之前,可以执行多达四次针对NVSM28的电压基准(VREF)阈值调整。出于这一原因,模板550可以包括用于VREF调整的描述符值。模板550中提供用于描述符DES1-4的描述符值可以分别用于四次VREF调整。描述符值DES1-4可以包括具有值DQ0的控制参数字段SC9,其可以用于指示相应VREF。在示出的示例中,未使用控制参数字段DQ1-3。作为示例,NVSM控制模块402可以生成具有用于存储器单元的相应高、中和低比特的VREF调整值的固件描述符。VREF调整值可以提供用于确定存储器单元的状态的阈值。在每存储器单元两比特的示例中,VREF调整值可以提供用于存储器单元状态00、01、10、11的阈值。阈值用于区分对应于存储器单元状态的检测电压,以确定存储器单元的比特值。
基于模板550生成的描述符可以是通用和/或灵活描述符。如示出的,描述符中的每个描述符可以包括诸如字段SC0、SC8、SC9和SC5之类的源控制字段SRC_CTRL。如上所述,SC0字段可以指示通道CH和/或设备DEV。如上所述,SC8字段可以指示组命令(或跟踪)标识符。SC5字段可以指示NVSM28中存储数据的开头行地址START_ROW_ADDR。描述符值DESl-5的字段SC0、SC8、SC9、SC5中的值是输入参数索引值,其可以从固件描述符获得并且可以替换模板中的对应值。例如,如果字段DQ0等于4(如由第一描述符值DESl指示的),则用于第一描述符值DESl的字段DQ0-3由输入参数字节4-7替换。
基于模板550中提供的描述符值DESl-5和固件描述符540中的输入命令参数(诸如字节4-19中存储的输入命令参数),描述符生成模块404生成五个描述符。在示出的示例中,字节4-19中存储的VREF是输入命令参数。其它输入命令参数(上面公开了其示例)可以经由固件描述符540提供并且在模板550中更新。
所公开的实施例允许再使用模板和/或描述符。作为示例,为了再使用第四描述符值DES4,NVSM控制模块402可以将字段SCR_PTR设置为指向第四描述符值DES4并且设置字段SRC_LEN=2。这可以完成使用相同模板550中的相同值来生成两个描述符。
图26图示用于独立磁盘冗余阵列(RAID)的硬件描述符的生成。RAID可以包括任何数目的存储器芯片(例如,NAND芯片),其中芯片中的每个芯片被称为存储器设备(或盘)。多个存储器设备可以共享单个通道。出于这一原因,当向存储器设备传送数据和从存储器设备传送数据时,提供对通道CH和存储器设备DEV的标识。上述字段SC0包括针对通道和存储器设备的值。
图26将固件描述符560示为由图17的NVSM控制模块402生成,并且将模板570示为具有基于固件描述符560生成的对应描述符值DES1-8。固件描述符560可以包括具有控制字段的控制行(标识为Row0-2)和输入命令参数行(标识为Row3-4)。虽然控制行被示为包括控制字段SC5和SC1,但是可以包括其它控制字段。描述符生成模块404可以基于描述符值DES1-8生成8个描述符。
在示出的示例中,在相同时间段期间,模板570被提供用于生成多个页描述符。在生成和/或执行多个页描述符中的其它页描述符的同时,可以生成和/或执行多个页描述符中的每个页描述符。这完成传送大量的数据(被称为“超级数据块”)。作为示例,在相同时间段期间,8个数据块可以在相应通道上并且向NVSM28中的相应存储器设备传送。NVSM28可以包括和/或被称为RAID。在示出的示例中,NVSM28包括RAID580。每个写操作可以包括在相应通道上向NVSM28中的相应存储器设备写入8个数据页。虽然未在图26中示出,用于通道和存储器设备中的每个的SC0字段可以包括在模板570中。
如示出的,模板570不包括用于存储器设备中的每个存储器设备的START_ROW_ADDR、RAID_CMD/RAID_ID字段。这些字段可以基于固件描述符560中提供的输入参数值来配置。例如,输入参数值PRMT0-3可以用于START_ROW_ADDR字段。输入参数值PRMT4-6可以用于RAID_CMD/RAID_lD字段。
在操作中,大量数据可以累积在例如图1的缓冲器70中。然后,NVSM控制模块402可以经由固件405访问和/或生成具有描述符值DES1-8的模板570。描述符值DES1-8可以是通用描述符值。模板的字段START_ROW_ADDR、RAID_CMD、RAID-ID被填充有来自固件描述符的对应输入参数值。模板570的字段可以包括数据字段。数据字段可以指示用于对应描述符的数据是否是开头数据、异或(XOR)数据或奇偶校验数据。开头数据指的是与描述符相关联的第一数据。XOR数据指的是其与XOR一起用于提供奇偶校验数据的数据。奇偶校验数据可以指的是用于数据恢复的冗余或错误纠正编码(ECC)数据。然后,图17的描述符生成模块404可以基于模板570生成8个描述符,以用于在对应8个通道上的并行数据传送。这允许NVSM控制模块402通过生成单个固件描述符来触发用于大量数据传送的许多描述符的生成。
因为存在众多本公开的实施方式,布置无法显式示出所有实施方式。例如,在例如图1、图2、图7、图14、图15和图17中示出的邻近和非邻近元件可以直接或间接地彼此连接。邻近和非邻近元件可以彼此无线通信,和/或可以经由有线链路彼此通信。本公开中描述的无线通信可以完全或部分遵守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中的至少一个应当被理解为意指使用非排他性逻辑OR的逻辑(A或B或C)。应当理解的是,方法中的一个或多个步骤可以以不同的顺序(或并发地)来执行,而不更改本公开的原理。
在本申请中,包括下面的定义,术语模块可以用术语电路替换。术语模块可以指的是、为其部分、或包括专用集成电路(ASIC);数字、模拟或混合模拟/数字分立电路;数字、模拟或混合模拟/数字集成电路;组合逻辑电路;现场可编程门阵列(FPGA);执行代码的处理器(共享的、专用的或组);其存储由处理器执行的代码的存储器(共享的、专用的或组);提供所描述的功能的其它适合硬件部件;或者以上中的一些或全部的组合(诸如在片上系统中)。
如上面使用的,术语代码可以包括软件、固件和/或微代码,并且可以指的是程序、例程、函数、类和/或对象。术语共享处理器包含执行来自多个模块的一些或所有代码的单个处理器。术语组处理器包含与附加处理器组合执行来自一个或多个模块的一些或所有代码的处理器。术语共享存储器包含其存储来自多个模块的一些或所有代码的单个存储器。术语组存储器包含与附加存储器组合存储来自一个或多个模块的一些或所有代码的存储器。术语存储器是术语计算机可读介质的子集。如本文中使用的,术语计算机可读介质不包含通过介质(诸如在载波上)传播的瞬态电或电磁信号;术语计算机可读介质因此可以被认为是有形和非瞬态的。非瞬态、有形计算机可读介质的非限制性示例包括非易失性存储器(诸如闪速存储器)、易失性存储器(诸如静态随机存取存储器和动态随机存取存储器)、磁存储(诸如磁带或硬盘驱动器)和光存储。
本申请中描述的装置和方法可以部分或完全由一个或多个处理器执行的一个或多个计算机程序来实现。计算机程序包括存储在至少一个非瞬态、有形计算机可读介质上的处理器可执行指令。计算机程序还可以包括和/或依靠存储的数据。
虽然术语第一、第二、第三等在本文中可以用于描述各种元件、部件、通道、模块和/或设备,但是这些元件、部件、通道、模块和/或设备不应当受这些术语的限制。这些术语仅可以用于区分一个元件、部件、通道、模块和/或设备与另一个元件、部件、通道、模块和/或设备。诸如“第一”、“第二”和其它数字术语之类的术语当在本文中使用时并不意味着序列或顺序,除非上下文明确指示。因而,下面讨论的第一元件、部件、通道、模块和/或设备可以被称为第二元件、部件、通道、模块和/或设备,而不脱离示例实施例的教导。
权利要求书(按照条约第19条的修改)
1.一种存储驱动器,包括:
第一模块,被配置为控制在主机设备和所述存储驱动器之间的多个数据块的传送;
第二模块,被配置为向所述存储驱动器中的非易失性半导体存储器传送所述多个数据块以及从所述存储驱动器中的非易失性半导体存储器传送所述多个数据块;
第三模块,被配置为生成第一描述符,所述第一描述符描述在所述第二模块和所述非易失性半导体存储器之间的所述多个数据块的传送;
第四模块,被配置为根据所述第一描述符生成多个第二描述符,其中所述多个第二描述符中的每个第二描述符对应于所述多个数据块中的相应数据块;
第五模块,被配置为基于所述多个第二描述符生成参数信号;以及
第六模块,被配置为基于所述参数信号生成指令信号,
其中所述第二模块被配置为基于所述指令信号在所述第一模块和所述非易失性半导体存储器之间传送所述多个数据块。
2.根据权利要求1所述的存储驱动器,其中所述第四模块被配置为:
访问模板;
基于所述第一描述符中的多个参数,更新所述模板中的字段;以及
根据所述模板,生成所述多个第二描述符。
3.根据权利要求2所述的存储驱动器,其中所述第四模块被配置为用所述多个参数替换所述模板的所述字段的值。
4.根据权利要求2所述的存储驱动器,其中:
所述多个参数包括用于控制所述非易失性半导体存储器的控制参数;以及
所述第四模块被配置为生成所述多个第二描述符中的包括所述控制参数的一些第二描述符以及所述多个第二描述符中的不包括所述控制参数的其它第二描述符。
5.根据权利要求2所述的存储驱动器,其中:
所述模板包括用于所述多个第二描述符的独立磁盘冗余阵列值;
所述第四模块被配置为生成所述多个第二描述符以分别包括所述独立磁盘冗余阵列值;以及
其中所述第二模块被配置为基于所述独立磁盘冗余阵列值在所述第一模块和所述非易失性半导体存储器之间传送所述多个数据块。
6.根据权利要求2所述的存储驱动器,其中:
所述模板包括用于所述多个第二描述符中的每个第二描述符的通道值和存储器设备值;以及
所述第二模块被配置为根据所述通道值和所述存储器设备值在相应通道上向所述非易失性半导体存储器传送所述数据的部分以及从所述非易失性半导体存储器传送所述数据的部分。
7.根据权利要求1所述的存储驱动器,其中所述第四模块被配置为向所述第三模块指示何时完成所述多个第二描述符的生成。
8.根据权利要求7所述的存储驱动器,其中所述第四模块被配置为生成中断,以向所述第三模块指示完成所述多个第二描述符的所述生成。
9.根据权利要求7所述的存储驱动器,其中所述第三模块被配置为轮询所述第四模块,以确定所述多个第二描述符的所述生成是否完成。
10.根据权利要求7所述的存储驱动器,其中:
所述第四模块被配置为更新状态寄存器的字段,其中所述状态寄存器的所述字段包括生成的描述符的数目和所述多个第二描述符的位置的地址;以及
所述第三模块被配置为访问所述状态寄存器,以确定所述多个第二描述符的所述生成是否完成。
11.根据权利要求1所述的存储驱动器,进一步包括被配置为存储状态信息的先进先出寄存器,其中所述状态信息包括指示所述多个第二描述符之一是否大于所述先进先出存储器的大小的字段。
12.根据权利要求1所述的存储驱动器,其中:
所述第一描述符是固件描述符;以及
所述多个第二描述符是硬件描述符。
13.根据权利要求1所述的存储驱动器,其中:
所述第三模块被配置为执行固件以生成所述第一描述符;以及
所述第四模块包括电子电路,其中所述电子电路被配置为根据所述第一描述符生成所述多个第二描述符。
14.一种方法,包括:
控制在主机设备和存储驱动器之间的多个数据块的传送;
生成第一描述符,以向所述存储驱动器中的非易失性半导体存储器传送所述多个数据块或者从所述存储驱动器中的非易失性半导体存储器传送所述多个数据块;
根据所述第一描述符,生成多个第二描述符,其中所述多个第二描述符中的每个第二描述符对应于所述多个数据块中的相应数据块;
基于所述多个第二描述符生成参数信号;
基于所述参数信号生成指令信号;以及
基于所述指令信号,在所述主机设备和所述非易失性半导体存储器之间传送所述多个数据块。
15.根据权利要求14所述的方法,进一步包括:
访问模板;
基于所述第一描述符中的多个参数,更新所述模板中的字段;以及
根据所述模板,生成所述多个第二描述符。
16.根据权利要求15所述的方法,进一步包括:
用所述多个参数替换所述模板的所述字段的值,
其中所述多个参数包括用于控制所述非易失性半导体存储器的控制参数;
生成所述多个第二描述符中的包括所述控制参数的一些第二描述符;以及
生成所述多个第二描述符中的不包括所述控制参数的其它第二描述符。
17.根据权利要求14所述的方法,进一步包括指示何时完成所述多个第二描述符的生成。
18.根据权利要求14所述的方法,进一步包括在先进先出寄存器中存储状态信息,其中所述状态信息包括指示所述多个第二描述符之一是否大于所述先进先出存储器的大小的字段。
19.根据权利要求14所述的方法,其中:
所述第一描述符是固件描述符;以及
所述多个第二描述符是硬件描述符。
20.根据权利要求14所述的方法,进一步包括:
执行固件以生成所述第一描述符;以及
经由电子电路,根据所述第一描述符生成所述多个第二描述符。

Claims (20)

1.一种存储驱动器,包括:
第一模块,被配置为控制在主机设备和所述存储驱动器之间的多个数据块的传送;
第二模块,被配置为向所述存储驱动器中的非易失性半导体存储器传送所述多个数据块以及从所述存储驱动器中的非易失性半导体存储器传送所述多个数据块;
第三模块,被配置为生成第一描述符,所述第一描述符描述在所述第二模块和所述非易失性半导体存储器之间的所述多个数据块的传送;
第四模块,被配置为根据所述第一描述符生成多个第二描述符,其中所述多个第二描述符中的每个第二描述符对应于所述多个数据块中的相应数据块;以及
第五模块,被配置为基于所述多个第二描述符生成指令信号,
其中所述第二模块被配置为基于所述指令信号在所述第一模块和所述非易失性半导体存储器之间传送所述多个数据块。
2.根据权利要求1所述的存储驱动器,其中所述第四模块被配置为:
访问模板;
基于所述第一描述符中的多个参数,更新所述模板中的字段;以及
根据所述模板,生成所述多个第二描述符。
3.根据权利要求2所述的存储驱动器,其中所述第四模块被配置为用所述多个参数替换所述模板的所述字段的值。
4.根据权利要求2所述的存储驱动器,其中:
所述多个参数包括用于控制所述非易失性半导体存储器的控制参数;以及
所述第四模块被配置为生成所述多个第二描述符中的包括所述控制参数的一些第二描述符以及所述多个第二描述符中的不包括所述控制参数的其它第二描述符。
5.根据权利要求2所述的存储驱动器,其中:
所述模板包括用于所述多个第二描述符的独立磁盘冗余阵列值;
所述第四模块被配置为生成所述多个第二描述符以分别包括所述独立磁盘冗余阵列值;以及
其中所述第二模块被配置为基于所述独立磁盘冗余阵列值在所述第一模块和所述非易失性半导体存储器之间传送所述多个数据块。
6.根据权利要求2所述的存储驱动器,其中:
所述模板包括用于所述多个第二描述符中的每个第二描述符的通道值和存储器设备值;以及
所述第二模块被配置为根据所述通道值和所述存储器设备值在相应通道上向所述非易失性半导体存储器传送所述数据的部分以及从所述非易失性半导体存储器传送所述数据的部分。
7.根据权利要求1所述的存储驱动器,其中所述第四模块被配置为向所述第三模块指示何时完成所述多个第二描述符的生成。
8.根据权利要求7所述的存储驱动器,其中所述第四模块被配置为生成中断,以向所述第三模块指示完成所述多个第二描述符的所述生成。
9.根据权利要求7所述的存储驱动器,其中所述第三模块被配置为轮询所述第四模块,以确定所述多个第二描述符的所述生成是否完成。
10.根据权利要求7所述的存储驱动器,其中:
所述第四模块被配置为更新状态寄存器的字段,其中所述状态寄存器的所述字段包括生成的描述符的数目和所述多个第二描述符的位置的地址;以及
所述第三模块被配置为访问所述状态寄存器,以确定所述多个第二描述符的所述生成是否完成。
11.根据权利要求1所述的存储驱动器,进一步包括被配置为存储状态信息的先进先出寄存器,其中所述状态信息包括指示所述多个第二描述符之一是否大于所述先进先出存储器的大小的字段。
12.根据权利要求1所述的存储驱动器,其中:
所述第一描述符是固件描述符;以及
所述多个第二描述符是硬件描述符。
13.根据权利要求1所述的存储驱动器,其中:
所述第三模块被配置为执行固件以生成所述第一描述符;以及
所述第四模块包括电子电路,其中所述电子电路被配置为根据所述第一描述符生成所述多个第二描述符。
14.一种方法,包括:
控制在主机设备和存储驱动器之间的多个数据块的传送;
生成第一描述符,以向所述存储驱动器中的非易失性半导体存储器传送所述多个数据块或者从所述存储驱动器中的非易失性半导体存储器传送所述多个数据块;
根据所述第一描述符,生成多个第二描述符,其中所述多个第二描述符中的每个第二描述符对应于所述多个数据块中的相应数据块;
基于所述多个第二描述符生成指令信号;以及
基于所述指令信号,在所述主机设备和所述非易失性半导体存储器之间传送所述多个数据块。
15.根据权利要求14所述的方法,进一步包括:
访问模板;
基于所述第一描述符中的多个参数,更新所述模板中的字段;以及
根据所述模板,生成所述多个第二描述符。
16.根据权利要求15所述的方法,进一步包括:
用所述多个参数替换所述模板的所述字段的值,
其中所述多个参数包括用于控制所述非易失性半导体存储器的控制参数;
生成所述多个第二描述符中的包括所述控制参数的一些第二描述符;以及
生成所述多个第二描述符中的不包括所述控制参数的其它第二描述符。
17.根据权利要求14所述的方法,进一步包括指示何时完成所述多个第二描述符的生成。
18.根据权利要求14所述的方法,进一步包括在先进先出寄存器中存储状态信息,其中所述状态信息包括指示所述多个第二描述符之一是否大于所述先进先出存储器的大小的字段。
19.根据权利要求14所述的方法,其中:
所述第一描述符是固件描述符;以及
所述多个第二描述符是硬件描述符。
20.根据权利要求14所述的方法,进一步包括:
执行固件以生成所述第一描述符;以及
经由电子电路,根据所述第一描述符生成所述多个第二描述符。
CN201380072268.XA 2012-12-19 2013-12-19 用于生成去向和来自存储驱动器的非易失性半导体存储器的数据传送的描述符的装置和方法 Active CN105190524B (zh)

Applications Claiming Priority (7)

Application Number Priority Date Filing Date Title
US201261739386P 2012-12-19 2012-12-19
US61/739,386 2012-12-19
US201361900104P 2013-11-05 2013-11-05
US61/900,104 2013-11-05
US14/132,810 2013-12-18
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
PCT/US2013/076437 WO2014100362A1 (en) 2012-12-19 2013-12-19 Apparatus and method for generating descriptors to transfer data to and from non-volatile semiconductor memory of a storage drive

Publications (2)

Publication Number Publication Date
CN105190524A true CN105190524A (zh) 2015-12-23
CN105190524B CN105190524B (zh) 2018-04-10

Family

ID=49918916

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201380072268.XA Active CN105190524B (zh) 2012-12-19 2013-12-19 用于生成去向和来自存储驱动器的非易失性半导体存储器的数据传送的描述符的装置和方法

Country Status (4)

Country Link
US (1) US9141538B2 (zh)
KR (1) KR102217966B1 (zh)
CN (1) CN105190524B (zh)
WO (1) WO2014100362A1 (zh)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN116483280A (zh) * 2023-04-26 2023-07-25 珠海妙存科技有限公司 固件存储方法、固件查找方法、设备及介质

Families Citing this family (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
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
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
US9423961B2 (en) 2014-09-08 2016-08-23 Apple Inc. Method to enhance programming performance in multilevel NVM devices
WO2016081190A1 (en) 2014-11-20 2016-05-26 Rambus Inc. Memory systems, modules, and methods for improved capacity
US10467155B2 (en) * 2015-10-26 2019-11-05 Micron Technology, Inc. Command packets for the direct control of non-volatile memory channels within a solid state drive
US10114549B2 (en) * 2016-03-17 2018-10-30 Sandisk Technologies Llc Error correction code processing and data shaping for reducing wear to a memory
US10152237B2 (en) 2016-05-05 2018-12-11 Micron Technology, Inc. Non-deterministic memory protocol
US10534540B2 (en) 2016-06-06 2020-01-14 Micron Technology, Inc. Memory protocol
US11003602B2 (en) * 2017-01-24 2021-05-11 Micron Technology, Inc. Memory protocol with command priority
CN112840317A (zh) * 2018-12-14 2021-05-25 深圳鲲云信息科技有限公司 基于文件传输协议的数据传输方法、装置和电子设备
CN113760793A (zh) * 2020-06-01 2021-12-07 富泰华工业(深圳)有限公司 自动数据传输方法、装置及存储介质

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101965559A (zh) * 2007-12-27 2011-02-02 普莱恩特技术股份有限公司 包括将处理器与内部存储器连接的交叉切换器的用于闪存的存储控制器
US20120159052A1 (en) * 2010-12-20 2012-06-21 Chi Kong Lee Descriptor Scheduler

Family Cites Families (53)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4611278A (en) 1983-04-01 1986-09-09 Honeywell Information Systems Inc. Wraparound buffer for repetitive decimal numeric operations
JP2509297B2 (ja) 1987-08-31 1996-06-19 沖電気工業株式会社 自己訂正機能付半導体記憶装置及びマイクロコンピュ―タ
US5426747A (en) 1991-03-22 1995-06-20 Object Design, Inc. Method and apparatus for virtual memory mapping and transaction management in an object-oriented database system
US5475860A (en) 1992-06-15 1995-12-12 Stratus Computer, Inc. Input/output control system and method for direct memory transfer according to location addresses provided by the source unit and destination addresses provided by the destination unit
JPH09212411A (ja) 1996-02-06 1997-08-15 Tokyo Electron Ltd メモリシステム
US7953931B2 (en) * 1999-08-04 2011-05-31 Super Talent Electronics, Inc. High endurance non-volatile memory devices
US7877542B2 (en) * 2000-01-06 2011-01-25 Super Talent Electronics, Inc. High integration of intelligent non-volatile memory device
JP2001051904A (ja) 1999-08-11 2001-02-23 Hitachi Ltd 不揮発性半導体メモリを用いた外部記憶装置
JP4842417B2 (ja) 1999-12-16 2011-12-21 ソニー株式会社 記録装置
US20080320209A1 (en) * 2000-01-06 2008-12-25 Super Talent Electronics, Inc. High Performance and Endurance Non-volatile Memory Based Storage Systems
DE60036777T2 (de) 2000-02-09 2008-07-24 Texas Instruments Inc., Dallas Gerät zur Signalsynchronisierung zwischen zwei Taktbereichen
JP2001331377A (ja) 2000-05-22 2001-11-30 Hitachi Ltd 再生エラーの処理方法及びこれを用いたディスク装置
JP3574078B2 (ja) 2001-03-16 2004-10-06 東京エレクトロンデバイス株式会社 記憶装置と記憶装置制御方法
US7617515B1 (en) 2001-05-24 2009-11-10 Vixs Systems, Inc. Method and apparatus for managing resources in a multimedia system
US7155560B2 (en) 2001-06-27 2006-12-26 Intel Corporation Method and apparatus for storing data in flash memory
US6895408B1 (en) 2002-03-19 2005-05-17 Oracle International Corporation Method and apparatus to facilitate interaction management between loosely coupled applications
WO2003093980A2 (en) * 2002-04-30 2003-11-13 Koninklijke Philips Electronics N.V. Apparatus and method for fetching data from memory
US6795872B2 (en) 2002-05-09 2004-09-21 Renesas Technology America, Inc. Maintaining at least partial functionality of a device as defined by a hardware configuration at a USB bus enumeration while the device memory is programmed
TWI220959B (en) * 2003-06-05 2004-09-11 Carry Computer Eng Co Ltd Storage device with optimized compression management mechanism
US7237141B2 (en) 2003-06-19 2007-06-26 Lsi Corporation Method for recovering data from a redundant storage object
KR100475125B1 (ko) 2003-06-21 2005-03-14 삼성전자주식회사 데이터 버스 폭 변경이 자유로운 이동형 저장 장치 및이에 대한 데이터 버스 폭 설정 방법
KR100546348B1 (ko) 2003-07-23 2006-01-26 삼성전자주식회사 플래시 메모리 시스템 및 그 데이터 저장 방법
EP1690185A4 (en) * 2003-10-20 2007-04-04 Rhode Island Education UPPER MEMORY MEMORY STRUCTURE FOR STORAGE SERVERS
KR100608592B1 (ko) * 2004-01-27 2006-08-03 삼성전자주식회사 플래시 메모리의 데이터 관리 장치 및 방법
US7313649B2 (en) 2004-04-28 2007-12-25 Matsushita Electric Industrial Co., Ltd. Flash memory and program verify method for flash memory
US7212440B2 (en) 2004-12-30 2007-05-01 Sandisk Corporation On-chip data grouping and alignment
JP4456490B2 (ja) 2005-01-14 2010-04-28 富士通株式会社 Dma装置
JP4416694B2 (ja) 2005-05-12 2010-02-17 株式会社ソニー・コンピュータエンタテインメント データ転送調停装置およびデータ転送調停方法
US7546392B2 (en) 2005-05-13 2009-06-09 Texas Instruments Incorporated Data transfer with single channel controller controlling plural transfer controllers
US20070011396A1 (en) 2005-06-30 2007-01-11 Utstarcom, Inc. Method and apparatus for bandwidth efficient and bounded latency packet buffering
US7409489B2 (en) * 2005-08-03 2008-08-05 Sandisk Corporation Scheduling of reclaim operations in non-volatile memory
TW200717527A (en) 2005-08-10 2007-05-01 Seiko Epson Corp Semiconductor memory device
US7954037B2 (en) 2005-10-25 2011-05-31 Sandisk Il Ltd Method for recovering from errors in flash memory
US7600090B2 (en) 2005-11-28 2009-10-06 Atmel Corporation Microcontroller based flash memory digital controller system
JP2007200457A (ja) 2006-01-26 2007-08-09 Renesas Technology Corp 不揮発性半導体記憶装置
JP4863749B2 (ja) 2006-03-29 2012-01-25 株式会社日立製作所 フラッシュメモリを用いた記憶装置、その消去回数平準化方法、及び消去回数平準化プログラム
US8074022B2 (en) 2006-09-28 2011-12-06 Virident Systems, Inc. Programmable heterogeneous memory controllers for main memory with different memory modules
KR20080038991A (ko) * 2006-10-31 2008-05-07 주식회사 하이닉스반도체 메모리 소자의 테스트 장치 및 방법
KR100869675B1 (ko) 2007-02-05 2008-11-21 지인정보기술 주식회사 디스크립터 배열을 이용한 플래시 메모리 제어 시스템 및방법
US7716448B2 (en) * 2007-02-28 2010-05-11 Red Hat, Inc. Page oriented memory management
US20080222365A1 (en) 2007-03-08 2008-09-11 Staktek Group L.P. Managed Memory System
CN100511193C (zh) 2007-03-28 2009-07-08 华为技术有限公司 一种外部存储器控制器时序配置的装置及方法
JP5087347B2 (ja) 2007-09-06 2012-12-05 株式会社日立製作所 半導体記憶装置及び半導体記憶装置の制御方法
US8046542B2 (en) 2007-11-21 2011-10-25 Micron Technology, Inc. Fault-tolerant non-volatile integrated circuit memory
US8190950B2 (en) 2007-12-21 2012-05-29 Atmel Corporation Dynamic column redundancy replacement
KR101553532B1 (ko) 2008-04-17 2015-09-16 삼성전자주식회사 스토리지 장치
US8195909B2 (en) 2009-10-05 2012-06-05 Seagate Technology Llc Data management in a data storage system
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
US8868852B2 (en) 2010-07-07 2014-10-21 Marvell World Trade Ltd. Interface management control systems and methods for non-volatile semiconductor memory
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
CN103597454B (zh) * 2011-06-10 2016-02-03 松下知识产权经营株式会社 配置决定装置、配置决定方法、数据结构的构成方法、存储器、访问装置及存储器访问方法
TWI446160B (zh) 2011-07-21 2014-07-21 Silicon Motion Inc 快閃記憶體控制器及資料讀取方法
CN105229592B (zh) 2013-03-15 2018-04-10 马维尔国际贸易有限公司 用于生成用以由于错误而重新访问存储驱动器的非易失性半导体存储器的描述符的装置和方法

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101965559A (zh) * 2007-12-27 2011-02-02 普莱恩特技术股份有限公司 包括将处理器与内部存储器连接的交叉切换器的用于闪存的存储控制器
US20120159052A1 (en) * 2010-12-20 2012-06-21 Chi Kong Lee Descriptor Scheduler

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN116483280A (zh) * 2023-04-26 2023-07-25 珠海妙存科技有限公司 固件存储方法、固件查找方法、设备及介质
CN116483280B (zh) * 2023-04-26 2023-11-28 珠海妙存科技有限公司 固件存储方法、固件查找方法、设备及介质

Also Published As

Publication number Publication date
KR20150095900A (ko) 2015-08-21
WO2014100362A1 (en) 2014-06-26
US9141538B2 (en) 2015-09-22
US20140108714A1 (en) 2014-04-17
KR102217966B1 (ko) 2021-02-22
CN105190524B (zh) 2018-04-10

Similar Documents

Publication Publication Date Title
CN105190524A (zh) 用于生成去向和来自存储驱动器的非易失性半导体存储器的数据传送的描述符的装置和方法
CN103620563B (zh) 用于非易失性存储器的可变超量配置
TWI506638B (zh) 用於非揮發性半導體記憶體之介面管理控制系統及方法
KR102155191B1 (ko) 비휘발성 메모리에 대한 기록들의 관리 및 그 기록들의 영역 선택
KR102328612B1 (ko) 호스트와 컨트롤러 간에 파티셔닝된 변환 계층
JP5980798B2 (ja) 独立したシリコン素子の動的な上位レベルの冗長モード管理
US8938624B2 (en) Encryption key destruction for secure data erasure
US9239754B2 (en) Single read based soft-decision decoding of non-volatile memory
CN105229592B (zh) 用于生成用以由于错误而重新访问存储驱动器的非易失性半导体存储器的描述符的装置和方法
KR102307382B1 (ko) 가변 크기 플래시 변환 계층
WO2012148812A2 (en) Encrypted transport solid-state disk controller
KR20120064462A (ko) 메모리 컨트롤러, 이의 오류정정 방법, 및 이를 포함하는 메모리 시스템
KR20140101690A (ko) 리텐션 드리프트 이력 기반 비휘발성 메모리 판독 임계치 최적화
WO2013166200A1 (en) Zero-one balance management in a solid-state disk controller
TW201434051A (zh) 在記憶體控制器中之資料完整性及方法
US20150026509A1 (en) Storage device having a data stream converter
US9135168B2 (en) Apparatus and method for generating descriptors to reaccess a non-volatile semiconductor memory of a storage drive due to an error
CN112214163A (zh) 存储器控制器以及包括其的存储器系统
US20190065101A1 (en) Data storing method, memory control circuit unit and memory storage device
CN106920572B (zh) 存储器管理方法、存储器控制电路单元及存储器储存装置
KR20210147686A (ko) 오류 정정 회로 및 오류 정정 인코딩 방법
CN116097233A (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: Li Zhigang

Inventor after: Au Siu-hung Fred

Inventor after: Park zhengri

Inventor after: Shen Juanxi

Inventor after: Xu Wei

Inventor after: He Jinjin

Inventor after: Sun Fei

Inventor before: Li Zhigang

Inventor before: Au Siu-hung Fred

Inventor before: Park zhengri

Inventor before: Shen Juanxi

Inventor before: Xu Wei

Inventor before: He Jinjin

Inventor before: Sun Fei

CB03 Change of inventor or designer information
GR01 Patent grant
GR01 Patent grant
TR01 Transfer of patent right

Effective date of registration: 20200427

Address after: Singapore City

Patentee after: Marvell Asia Pte. Ltd.

Address before: Ford street, Grand Cayman, Cayman Islands

Patentee before: Kaiwei international Co.

Effective date of registration: 20200427

Address after: Ford street, Grand Cayman, Cayman Islands

Patentee after: Kaiwei international Co.

Address before: Hamilton, Bermuda

Patentee before: Marvell International Ltd.

Effective date of registration: 20200427

Address after: Hamilton, Bermuda

Patentee after: Marvell International Ltd.

Address before: Babado J San Mega Le

Patentee before: MARVELL WORLD TRADE Ltd.

TR01 Transfer of patent right