CN103577119A - 用于下一代固态硬盘控制器中乱序传输数据的系统和方法 - Google Patents

用于下一代固态硬盘控制器中乱序传输数据的系统和方法 Download PDF

Info

Publication number
CN103577119A
CN103577119A CN201310254883.4A CN201310254883A CN103577119A CN 103577119 A CN103577119 A CN 103577119A CN 201310254883 A CN201310254883 A CN 201310254883A CN 103577119 A CN103577119 A CN 103577119A
Authority
CN
China
Prior art keywords
allocation units
data
linked list
data structure
nand
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
CN201310254883.4A
Other languages
English (en)
Other versions
CN103577119B (zh
Inventor
申呟锡
Y-T·吴
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 CN103577119A publication Critical patent/CN103577119A/zh
Application granted granted Critical
Publication of CN103577119B publication Critical patent/CN103577119B/zh
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

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

Abstract

提供了一种用于通过发出用于读取分配单元的指令而从基于NAND的存储设备往返地传输数据的系统和方法。可以相对于数据的相继顺序乱序地发出该指令。在链表数据结构中存储与分配单元相关的信息。可以相对于数据的相继顺序乱序地访问该存储的链表数据结构,用于处理与分配单元相关的信息。

Description

用于下一代固态硬盘控制器中乱序传输数据的系统和方法
相关申请的交叉引用
本申请基于35U.S.C.§119(e)要求在2012年6月19日提交的美国临时专利申请No.61/661,743的优先权,通过引用将其全部内容并入于此。
技术领域
本公开总体涉及一种用于固态硬盘的控制器。
背景技术
本文提供的背景描述是出于总体呈现本公开的上下文的目的。本文的发明人的工作(到在本背景技术部分描述的工作的程度),以及在提交申请时可能无法以其他方式作为现有技术的衡量的说明书的多个方面,既没有明确地也没有暗示地被承认是本公开的现有技术。
固态硬盘(SSD)可以用于在基于NAND的存储内存和/或基于动态随机访问的内存上存储数据。具体地,该SSD典型地包括具有若干个数据通道的SSD控制器,这些数据通道用于向NAND闪存设备传输数据或者从该NAND闪存设备传输数据。例如:NAND闪存设备可以划分为数据块,并且针对访问每个数据块指定一个数据通道。SSD控制器可以以要访问的数据的顺序来发出指令用于向基于NAND的存储内存传输数据或者从基于NAND的存储内存的传输数据。除了发出指令,SSD控制器还可以存储与正向该NAND设备传输的数据相关的信息。可以将与该数据相关的信息存储在SSD控制器的先入先出(“FIFO”)数据结构中。可以根据数据的相继顺序将与该数据相关的信息进行排序。
通过纠错单元使用与该数据相关的信息以对获取的或者正向基于NAND的存储设备传输的数据进行后续处理。因此,还以数据的相继顺序来发出用于访问来自NAND设备的数据的指令,使得向每个数据块施加正确的后续处理参数。然而,由于以数据的相继顺序发出用于访问的指令防止了用于对来自基于NAND的存储设备的数据进行访问的多个数据通道的最优利用,因此这一实现方式是次优的。
发明内容
根据本公开的实施方式,提供了一种用于最优利用多数据通道的系统和方法,该数据通道用于针对基于NAND的存储设备往返地传输数据。
在一些实施方式中,发出指令用于读取分配单元。可以相对于数据的相继顺序乱序地发出这些指令。在链表数据结构中存储与分配单元相关的信息。可以相对于数据的相继顺序乱序地访问所存储的链表数据结构,用于处理与分配单元相关的信息。
在一些实现方式中,与分配单元相关的信息可以包括至少一个参数。链表数据结构可以包括数据头映射,该数据头映射标识针对与分配单元相关的信息存储的至少一个参数。
在一些实现方式中,基于NAND的存储器设备具有多读取通道并且以最优利用读取通道的顺序发出用于读取分配单元的指令。
附图说明
本发明的上述和其它特征将在考虑与以下附图结合进行的下文具体描述时更为清楚,这些特征包括本公开内容的性质及其各种优点,在附图中:
图1示出根据本公开的实施方式的固态硬盘(SSD)系统的说明性框图;
图2示出根据本公开的实施方式的固态硬盘控制器的说明性框图;
图3示出根据本公开的实施方式的定序器核心的说明性框图;
图4示出根据本公开的实施方式的用于存储与分配单元相关的信息的数据头管理单元的说明性示图;
图5示出根据本公开的实施方式的乱序地从基于NAND的存储设备读取数据的方法的说明性流程图;
图6示出根据本公开的实施方式的在链表数据结构中存储与分配单元相关的信息的方法的说明性流程图;
图7示出根据本公开的实施方式的用于调度指令以从基于NAND的存储设备乱序地读取数据的方法的说明性流程图;以及
图8示出根据本公开的实施方式的用于对从基于NAND的存储设备乱序地读取的数据进行后续处理的方法的说明性流程图。
具体实施方式
为了提供对本发明的全面了解,现在将对包括用于从基于NAND的存储设备以乱序访问数据的系统的某些示例性的实施方式进行描述。然而,本领域的普通技术人员应当理解,可以改变和修改这里描述的系统和方法以此提供用于其它适当应用的系统和方法,并且在不脱离本发明的范围内,可以进行其它添加和修改。
图1示出根据本公开的实施方式的固态硬盘(SSD)系统100的说明性框图。该SSD系统可以具有从计算机系统接收指令的SSD控制器102、固件模块、嵌入式控制器、分布式计算应用、服务器系统和/或访问固态存储单元104的其它适合的系统。因此,SSD控制器102可以基于接收到的指令从存储单元104读取和/或向存储单元104写入数据。SSD控制器102可以变更读/写指令的执行的顺序以便将硬件资源最优利用。SSD控制器102可以执行与存储设备上的数据的维护相关联的指令。用于数据的维护的指令可以包含:用于损耗平衡、将指令从主机系统变换到闪存转换层、将固态存储设备的读取通道最优利用的指令,和/或用于访问和/或维护固态存储单元104上的数据的其它合适的指令。
所述存储单元104可以由动态随机访问存储器、相变存储器、基于NOR的存储器、基于NAND的存储器和/或基于其它合适的晶体管存储内存。例如,该固态控制器102可以从主机系统接收指令以从存储设备读取逻辑块地址。取决于使用的存储器的类型,可以随着时间而变更用于读取存储器的通道的数目,和/或由于SSD控制器102的损耗平衡算法的数据的移动,与逻辑块地址对应的数据的物理位置。因此,SSD控制器102作为在由主机处理器使用的抽象寻址方案和操作系统之间的转译层。因此,SSD控制器102可以将高层逻辑块地址转译成具有低抽象层的地址。该低抽象层可以对应于存储设备的存储器技术。
图2是根据本公开的实施方式的SSD控制器202和SSD控制器202的不同功能模块的说明性框图200。在一些实现方式中,SSD控制器202使用通信接口模块204与主机系统进行通信。通信接口模块204使用异步和/或同步通信协议与该主机系统的其它电路建立接口。在一些实施方式中,通信接口模块204使用同步总线与该主机系统进行通信。同步总线具有与主机系统的处理器电路的时钟相同步的时钟。这里的同步意味着指该主机系统和该同步总线的时钟的上升沿和下降沿在时间上是对齐的。该主机系统和该通信接口模块202可以使用同步的总线以起到用于信息连续地流动的通道的作用。在一些实施方式中,主机系统的时钟的频率可以远高于通信总线的时钟的频率。
在一些实现方式中,该主机系统和SSD控制器202的接口模块204在异步总线上进行通信。在该异步总线的情况下,通信接口模块204和该主机系统建立通信信道使用握手机制建立通信通道。该主机系统可以在异步总线上传输同步信号。响应于该同步信号,通信接口模块204可以在总线上读取数据以及使同步信号有效以告知收到来自主机的数据。通信接口模块204还可以在总线上向主机系统提供数据。响应于来自通信接口模块204的同步信号,该主机可以读取总线上的数据。响应于读取总线上的数据,该主机可以使先前提高的同步信号无效。响应与主机使该同步信号无效,通信接口模块204也可以使该同步信号无效。
因此,通信接口模块204包括配置为与主机系统建立通信通道的电路。通信接口模块204可以包括配置为与串行ATA总线、SCSI总线、PCI总线、PCI高速总线和/或其他适合的总线架构建立接口的电路。
在与主机系统建立连接时,通信接口模块204可以接收指令以从基于NAND的存储设备读取数据或者向基于NAND的存储设备写入数据。用于从主机系统读取数据和/或向主机系统写入数据的请求可以包括逻辑块地址、要写入的数据和/或支持从操作读取数据和/或向操作写入数据的其它合适的元数据。在从主机系统接收到指令时,通信接口模块204可以使用合适的元数据来更新SSD控制器202中存在的电子寄存器。通信接口模块204可以用信号通知固件模块206以向定序器模块208发出定序器指令,其中,定序器指令可以对应于来自主机的指令。
固件模块206可以包括用于存储用于控制SSD控制器202的程序代码的非易失性存储电路。程序代码可以包括比特集从而解码该比特集会引起定序器模块208执行预定程序的操作。该预定程序的操作可以包括在基于NAND的存储设备212上的读/写操作、基于NAND的存储设备212的失效页面的擦除、写入到基于NAND的存储设备的块的损耗平衡、和/或执行用于读/写和/或维护基于NAND的存储设备212上的数据的其它合适的操作。定序器模块208可以包括配置为执行预定程序的操作的电路。固件模块206可以向定序器模块208发出对应于该程序代码的指令。
定序器模块208可以包括配置为从固件模块206接收指令的电路。定序器模块208可以包括配置为功能地执行从固件模块206接收的指令的电路。在一些实现方式中,该电路可以配置为将从固件模块206接收的指令高级指令转译为用于NAND闪存接口设备的低级指令。例如:用于读取来自逻辑块地址的数据的长度的指令可以转译为用于读取来自基于NAND的存储设备212上的一个或多个相应物理块的数据的一个或多个指令。在一些实现方式中,用于向逻辑块地址写入数据的高级指令可以转译为从至少一个对应的物理块读取数据并且将从该物理块地址读取的数据和/或来自该写入指令的数据写入到与从其读取数据的物理块地址不同的物理块地址。在一些实现方式中,从其读取数据的物理块地址可以添加到垃圾收集数据结构。垃圾收集数据结构中的物理块地址可以周期性地擦除。在一些实现方式中,擦除基于NAND的存储设备212上的物理块可以包含将该块的比特设置为1的值。
除了将高级指令转译为低级指令,定序器模块208可以配置为管理基于NAND的存储设备212的损耗平衡。基于NAND的存储设备212可能随着写入到该基于NAND的存储设备212的数目的增加而变坏(deteriorate)。为了确保基于NAND的存储设备212的写入损耗是均匀分布的,定序器模块208可以从基于NAND的存储设备212上的一个物理块上到该基于NAND的存储设备的另一个物理块周期性地移动数据。从一个块到另一个块的数据的移动被称为损耗平衡。定序器模块208可以包括配置为对基于NAND的存储设备212上的块的损耗平衡进行管理的电路。在已经将定序器模块208图示为将高级读/写指令转译为低级读/写指令并且执行损耗平衡时,定序器模块208不限于执行所述功能,还可以对定序器模块208进行修改和适配以实现这里公开的系统和方法。
定序器208可以向NAND闪存接口(NFIF)210发出用于从基于NAND的存储设备212读取和/或向基于NAND的存储设备212写入的低级指令。定序器208可以以不同于正访问的数据的相继顺序的顺序来发出该指令。例如:如果正读取的数据块的相继顺序是块B跟随块A、块C跟随块B,则定序器模块208可以以读取块A、读取块C、读取块B的顺序发出读取指令。定序器模块208可以对指令进行重新排序以将用于访问基于NAND的存储设备212的最优利用。
NAND闪存接口(NFIF)210可以包括用于控制基于NAND的存储设备212的数据通道的电路。为了控制数据通道,NAND闪存接口210可以生成选择信号、使能信号以及用于从基于NAND的存储设备212读取数据和/或向基于NAND的存储设备212写入数据的其它相关信号。
基于NAND的存储设备212可以在基于晶体管的存储单元中存储数据。基于NAND的存储设备212的最小单元可以包括两个晶体管栅极。该两个栅极可以包括第一控制栅极和第二浮置栅极。控制栅极可以配置为控制值是否应该存储或者重写。浮置栅极可以配置为存储比特的值。与硬盘驱动器相反,基于NAND的存储设备可以不包括用于控制数据通道的机械移动部件,数据通道可以通过从NAND闪存接口210接收到的信号来进行控制而不是移动部件。
NAND闪存接口(NFIF)210可以以硬件分配单元块的方式发出指令以从基于NAND的存储设备212读取数据和/或向基于NAND的存储设备212写入数据。分配单元可以是可以从基于NAND的存储设备212读取的最小尺寸的数据。类似地,固件模块206也可以包括固件分配单元,其中,固件分配单元的尺寸可以是为其固件模决206能够发出读取和/或写入指令的数据的最小尺寸。在一些实现方式中,该固件分配单元的尺寸和硬件分配单元的尺寸可以是相同的。在一些实现方式中,硬件分配单元的尺寸可以大于固件分配单元的尺寸。
基于NAND的存储设备212可能会遭受读取干扰。在读取干扰的情况下,当一个对块进行读取之后一段时间内,该块的相邻单元的数据可能会变更。这给数据引入了不可预知的错误。为了纠正这些错误,SSD控制器202可以包括用于纠正错误的纠错单元214。
纠错单元214可以包括用于对可能由于读取干扰而发生的数据中的错误进行纠正的电路。在一些实现方式中,纠错单元214可以包括可以基于定序器模块的存储器部分中存储的相关信息来执行数据的后续处理的信号处理电路。
因此,读取操作和/或写入操作可能导致数据经由NAND闪存接口210从基于NAND的存储设备212向纠错单元214返回。纠错单元214接着基于合适纠错方案使用信号处理电路来检查数据的错误。纠错单元214还可以基于定序器模块208的存储器中存储的相关信息来提供后续处理。纠错单元可以以定序器模块208发出读取和/或写入指令的顺序纠正错误。在读取操作的情况下,后续处理的数据可以经由通信接口模块204返回到主机系统。在写入操作的情况下,后续处理的数据可以写回到基于NAND的存储设备212。
图3示出根据本公开的实施方式的定序器模块302的说明性框图300。定序器模块302可以与图2的定序器模块208相类似。定序器模块302可以从固件模块(与图2的固件模块206相类似)接收指令以访问来自基于NAND的存储设备的数据,该基于NAND的存储设备可以与图2的基于NAND的存储设备212相类似。固件模块304可以使用先入先出(“FIFO”)数据结构306对指令进行通信。该FIFO数据结构306是指由固件304写入的第一指令可以是由数据头管理(DMA)单元308读取的第一指令的数据结构。来自固件304的指令可以包括:除了别的之外,与从基于NAND的存储设备读取的或者向该基于NAND的存储设备写入的后续处理的数据相关的数据。该涉及后续处理的数据可以包括:AUX插入、AUX比较、HLBA比较、压缩解码、压缩编码、缓慢重试、和/或用于对从基于NAND的存储设备读取的或写入该基于NAND的存储设备的数据进行后续处理的其他适合的数据。
数据头管理(DMA)单元308可以经由FIFO数据结构306从固件304接收指令。数据头管理单元308从该指令中提取一个或多个后续处理参数。因此,数据头管理单元308在存储设备的链表数据结构中存储该处理参数。在一些实现方式中,存储设备可以是静态随机访问存储设备并且可以提供比基于NAND的存储设备更快的访问时间。在示例性实现方式中,存储设备可以是动态随机访问存储器并且可以提供比基于NAND的存储设备更快的访问时间。响应于在存储设备中存储处理参数,数据头管理单元308可以向固件304返回描述符。该描述符可以包括指向链表数据结构的数据头的指针。将在图4的描述中讨论该链表数据结构和所有组成链表数据结构的元素。在从数据头管理单元308接收描述符之后,固件304向调度模块310发出对应于该描述符的指令。
顾名思义,调度模块310可以包括配置为对从固件304接收到的指令进行排序的电路,使得用于访问基于NAND的存储设备的数据通道可以最优利用。可以理解的是,这里的优化是指在以数据访问的顺序执行指令的方案上的数据通道的利用率的提高。在一些实现方式中,调度模块310可以基于将数据通道映射到访问数据的地址对指令进行重新排序。例如,如果有三条用于访问数据块A、B和C的指令,以及将数据通道DA指派给块A和B并且将数据通道DC指派给块C,则调度模块310可以对指令进行排序以访问A、C并且然后B。这里描述的指令的重新排序可以提高与访问DA上的数据的延迟要重叠的访问DC上的数据的延迟。因此,调度模块310可以包括用于对指令进行排序的电路。该指令可以向定序器核心312发出。定序器核心312可以经由NAND闪存接口模块316访问来自基于NAND的存储设备的数据。NAND闪存接口模块316可以与图2中的NAND闪存接口模块210相类似。
定序器核心312可以包括用于实现将高级指令转译为低级指令以便向NAND闪存接口316发出的逻辑的处理电路。定序器核心312可以包括配置为执行损耗平衡、垃圾收集、和/或与在基于NAND的存储器上的数据的维护有关的其它合适的任务的处理器电路。定序器模块312可以向NAND闪存接口316发出转译后的低级指令。
图4示出根据本公开的实施方式的用于存储与分配单元相关的信息和获取与分配单元相关的信息的数据头管理(DMA)单元400的说明性示图。数据头管理单元400可以与图3中的数据头管理(DMA)单元308相类似。数据头管理单元400可以从与图3中的固件模块304相类似的固件模块接收指令,以存储与分配单元相关的信息。数据头管理单元400还可以从与图2中的纠错单元214类似的纠错单元接收请求,用于访问存储的分配单元信息。数据头管理单元400可以包括主控制器418。主控制器418可以包括配置为接收指令和请求的电路。在一些实现方式中,指令可以包含存储与分配单元相关的信息。主控制器418接着分配一个或多个数据头,以及一个或多个基于与指令相关联的寄存器的内容的参数节点。在从纠错单元接收请求时,主控制器418可以使用在请求中包含的数据头信息以访问在数据头链表数据结构402中的相应的数据头。为了访问数据头,主控制器418可以向数据头控制器420提供数据头位置。数据头控制器420可以使用该数据头位置以访问对应于该请求的数据头信息的数据头404。数据头404可以包括下一数据头链接(NHEAD)、数据头映射(HMAP)、链接、和/或用于访问链表数据结构的其它合适的信息。
在一些实现方式中,纠错单元可以请求读取多于一个数据头用于处理硬件分配单元的数据。为了适应第二数据头的存储,下一数据头链接的数据头404可以包括到数据头链表数据结构402内的第二数据头的链接。当硬件分配单元可以对应多于一个数据头404时,该下一数据头链接可以用于纠错单元的服务请求。在一些实现方式中,该硬件分配单元可以只对应一个数据头,并且因此该下一数据头链接可以是空的。
数据头映射(HMAP)可以是在链表数据结构中存储的用于标识参数的比特集。例如,每个参数可以通过数据头映射中的一个比特进行标识,并且当在链表中存储该对应的参数时该单一比特可以被设置为1。当在链表中没有存储该对应的参数时,该单一比特可以被设置为0。应当理解的是,上述的位映射方案是用于对用于标识在链表数据结构中存储的参数的信息进行存储的示例性实现方式。这里提到的方案可以因此进行修改和适配支持本文公开的系统和方法。
数据头404中存储的链接可以对应于下一参数节点(NHEAD)的地址。下一HEAD指针(NHEAD)是在数据头链表数据结构402中的。数据头控制器420可以向主控制器418返回链接404地址。主控制器418可以连同数据头映射和参数控制器422、424或者426而使用该链接,以分别访问参数链表406、410或者414。参数链表406、410或者414可以包括通过从数据头404接收到的NHEAD寻址的参数节点。在一些实现方式中,当数据头映射包括对在链表中存储第一已知参数进行标识的比特,主控制器418可以使用NHEAD以访问第一参数链接406。主控制器418可以向第一参数控制器422传输请求以访问第一参数链表406。第一参数控制器422可以包括配置为与主控制器418进行通信和/或对第一参数链表406的节点408进行访问的电路。节点408可以包括与分配单元相关的信息的第一参数和用于对下一参数节点进行定位的链接。在一些实现方式中,如果链表中没有其他参数时,链接可以是空的。参数链表数据结构410和414可以与第一参数链表406相类似。参数链表数据结构410和414可以分别包括第二和第n参数链表,并且可能与第一参数链表节点408相类似。参数链表控制器424和426可以与第一参数控制器422相类似。第二和第n参数链表410和414的链表节点412和416可以分别与第一参数链表节点408相类似。每个参数链表可以对应于不同类型的参数。例如:第一参数链表406可以对应于SSD参数。第二参数链表410可以对应于HLBA参数,以及其他参数链表可以对应于与分配单元相关的信息相关联的其他参数。在一些实现方式中,“n”可以是能够配置用于与分配单元相关的信息的参数的总数目。这样,数据头管理单元400可以具有用于存储n个参数的n个链表数据结构。应当理解的是,如图4所示的数据头链表数据结构402以及参数链表数据结构406、410和414是存储器方案的说明性示例。可以对存储器方案进行修改和适配以支持这里公开的系统和方法。
数据头管理(DMA)单元400可以用来存储与分配单元相关的信息。本文描述的链表数据结构有助于处理可以从基于NAND的存储设备乱序访问的数据。例如,与图2中纠错单元214相类似的纠错单元可以向数据头管理单元400提供数据头用于访问与分配单元相关的信息。这样的数据头的存在和这里描述的支撑链表结构使得在纠错单元处的处理对于从基于NAND的存储设备接收数据的顺序不可知。
图5示出根据本公开的实施方式的用于乱序地从基于NAND的存储设备读取数据的方法500的流程图,其中基于NAND的存储设备可以与图2的基于NAND的存储设备212相类似。该方法500在502开始。
在502中,与图2的SSD控制器202相类似的SSD控制器可以发出指令用于乱序地读取分配单元。用于相对于数据的相继顺序乱序地读取分配单元的指令可以通过于图2的定序器模块208相类似的定序器模块发出。定序器可以发出指令以乱序地读取与分配单元相关的信息。指令可以乱序地发出以对用于从基于NAND的存储设备读取数据的多数据通道的使用进行优化。
在504,定序器模块可以存储对应于502中发出的指令的与分配单元相关的信息。定序器模块可以使用与图4的数据头管理单元400相类似的数据头管理单元存储与分配单元相关的信息。
在506中,定序器模块可以访问存储的与分配单元相关的信息。响应于从与图2的纠错单元214类似的纠错单元接收的请求,定序器模块可以访问存储的与分配单元相关的信息。该请求可以包含,除了其他信息之外,用于存储的与分配单元相关的信息的数据头。数据头管理(DMA)单元可以使用数据头信息以访问对应的与图4的链表数据结构402、406、410和414相类似的链表数据结构。
图6示出根据本公开的实施方式的用于在链表数据结构中存储与分配单元相关的信息的方法600的流程图。该方法在602开始。
在602,与图2的定序器模块208相类似的定序器模块可以接收指令以从与图2的固件模块206相类似的固件模块读取分配单元。该指令还可以包括与分配单元相关的信息用于响应于接收到指令来对可以基于指令读取的分配单元进行后续处理。该方法600进行到604。
在604处,所述定序器模块在与图4中的链表数据结构402、406、410和414相类似的链表数据结构中存储与分配单元相关的信息。为了存储与分配单元相关的信息,该定序器模块可以将与分配单元相关的信息向与图4中的数据头管理单元400相类似的数据头管理单元进行通信。响应于存储该指令,数据头管理单元可以将与存储的与分配单元相关的信息相对应的数据头向定序器模块进行传输。响应于接收到数据头,定序器模块可以进行606。
在606,定序器模块可以向固件模块传输数据头。
图7示出根据本公开的实施方式的用于调度指令以从与图2的基于NAND的存储设备212相类似的基于NAND的存储设备乱序地读出数据的方法700的流程图。该方法700在702开始。
在702,与图2的定序器模块208相类似的定序器模块可以从与图2的固件模块206相类似的固件模块接收描述符。描述符可以包含用于读取分配单元的指令、用于与分配单元相关的信息的数据头地址,其中与分配单元相关的信息对应于分配单元。响应于接收描述符,定序器模块可以进行704。
在704,定序器模块可以调度指令以从基于NAND的存储设备读取数据。在一些实现方式中,定序器模块可以以将可用于从基于NAND的存储设备读取数据的多数据通道最优利用的顺序的方式进行调度。指令的调度可以包含相对于数据的相继顺序乱序地对指令进行排序。响应于对指令进行调度,定序器模块可以进行706。
在706,定序器模块可以以预定的顺序发出指令以从基于NAND的存储设备进行读取。
图8示出根据本公开的实施方式的对从与图2的基于NAND的存储设备212相类似的基于NAND的存储设备乱序地读取的数据进行后续处理的方法800的流程图。该方法800在802开始。
在802,与图2的定序器模块208相类似的定序器模块可以从与图2的纠错单元214相类似的纠错单元接收数据头地址。数据头地址可以对应于与图4的数据头管理单元400相类似的数据头管理单元上存储的与分配单元相关的信息的数据头的位置,响应于从纠错单元接收的数据头地址,定序器模块可以进行804。
在804,定序器模块可以访问与数据头管理单元的链接数据结构402、406、410和414相类似的链接数据结构,以获取与分配单元相关的信息。响应于获取与分配单元相关的信息,定序器模块可以进行806。
在806,定序器模块可以向纠错单元传输获取的与分配单元相关的信息。纠错单元可以使用与分配单元相关的信息以进行808。
在808,纠错单元可以使用与分配单元相关的信息以对相应分配单元数据执行后续处理。后续处理可以包括用于纠错、对数据进行压缩和/或解压缩、对数据进行编码和/或解码、和/或针对基于NAND的存储设备上存储的数据的其他合适的信号处理的方法。
应当理解的是,当本文涉及到的流程图包括用于读取数据的方法时,该流程图可以相应地适配用于向基于NAND的存储设备写入数据。
尽管本公开的各种实施方式已经在此处示出和描述,对本领域的技术人员而言明显地这些实施方式只以示例的方式提供。本领域的技术人员现在将想到许多的变化、改变,以及替代而不背离本公开内容。应当理解,此处描述的公开的实施方式的各种备选可以被使用于实践本公开内容。旨在于由下面的权利要求限定本公开的范围,以及覆盖这些权利要求的范围内的方法和结构以及它们的等同物。

Claims (20)

1.一种用于从基于NAND的存储设备读取数据的方法,所述方法包括:
发出用于读取分配单元的指令,其中相对于所述数据的相继顺序乱序地发出所述指令;
在链表数据结构中存储与分配单元相关的信息;以及
相对于所述数据的相继顺序乱序地访问所存储的链表以用于处理所述与分配单元相关的信息。
2.根据权利要求1所述的方法,其中在随机访问存储设备中存储所述链表数据结构。
3.根据权利要求1所述的方法,其中:
所述与分配单元相关的信息包括至少一个参数;以及
所述链表数据结构包括数据头映射以标识针对所述与分配单元相关的信息存储的所述至少一个参数。
4.根据权利要求3所述的方法,其中所述至少一个参数包括以下内容的组中的一个:AUX插入、AUX比较、HLBA比较、压缩解码器、压缩编码器和缓慢重试。
5.根据权利要求1所述的方法,其中所述链表数据结构包括:下一数据头链接,其中当每个硬件分配单元只有一个固件分配单元时,所述下一数据头链接是空的。
6.根据权利要求1所述的方法,其中所述链表数据结构包括下一数据头链接,其中当每个硬件分配单元有多个固件分配单元时,所述下一数据头链接是非空的。
7.根据权利要求1所述的方法,其中所述基于NAND的存储设备包括多个读取通道,其中以最优利用所述读取通道的顺序发出用于读取所述分配单元的所述指令。
8.根据权利要求1所述的方法,还包括:
从纠错单元接收所述链表数据结构的数据头存储器位置;以及
向所述纠错单元传输对应于所述链表数据结构的所述数据头存储器位置的所述与分配单元相关的信息。
9.根据权利要求1所述的方法,还包括:
存储标识所述链表数据结构中存储的所述与分配单元相关的信息的至少一个参数的第一比特集;
存储用于定位所述链表数据结构的数据头存储器位置的第二比特集;以及
存储与所述与分配单元相关的信息的所述至少一个参数相关联的第三比特集。
10.根据权利要求1所述的方法,还包括:
从固件接收所述与分配单元相关的信息;以及
向所述固件传输对应于所接收到的所述与分配单元相关的信息的所述链表数据结构的数据头存储器位置。
11.一种用于从基于NAND的存储设备读取数据的系统,所述系统包括电路,所述电路被配置为:
发出用于读取分配单元的指令,其中相对于所述数据的相继顺序乱序地发出所述指令;
在链表数据结构中存储与分配单元相关的信息;以及
相对于所述数据的相继顺序乱序地访问所存储的链表以用于处理所述与分配单元相关的信息。
12.根据权利要求11所述的系统,其中在随机访问存储设备中存储所述链表数据结构。
13.根据权利要求11所述的系统,其中:
所述与分配单元相关的信息包括至少一个参数;以及
所述链表数据结构包括数据头映射以标识针对所述与分配单元相关的信息存储的所述至少一个参数。
14.根据权利要求13所述的系统,其中所述至少一个参数包括以下内容的组中的一个:AUX插入、AUX比较、HLBA比较、压缩解码器、压缩编码器和缓慢重试。
15.根据权利要求11所述的系统,其中所述链表数据结构包括:下一数据头链接,其中当每个硬件分配单元只有一个固件分配单元时,所述下一数据头链接是空的。
16.根据权利要求11所述的系统,其中所述链表数据结构包括下一数据头链接,其中当每个硬件分配单元有多个固件分配单元时,所述下一数据头链接是非空的。
17.根据权利要求11所述的系统,其中所述基于NAND的存储设备包括多个读取通道,其中以最优利用所述读取通道的顺序发出用于读取所述分配单元的所述指令。
18.根据权利要求11所述的系统,其中所述电路还被配置为:
从纠错单元接收所述链表数据结构的数据头存储器位置;以及
向所述纠错单元传输对应于所述链表数据结构的所述数据头存储器位置的所述与分配单元相关的信息。
19.根据权利要求11所述的系统,其中所述电路还被配置为:
存储标识所述链表数据结构中存储的所述与分配单元相关的信息的至少一个参数的第一比特集;
存储用于定位所述链表数据结构的数据头存储器位置的第二比特集;以及
存储与所述与分配单元相关的信息的所述至少一个参数相关联的第三比特集。
20.根据权利要求11所述的系统,其中所述电路还被配置为:
从固件接收所述与分配单元相关的信息;以及
向所述固件传输对应于所接收到的所述与分配单元相关的信息的所述链表数据结构的数据头存储器位置。
CN201310254883.4A 2012-06-19 2013-06-19 用于下一代固态硬盘控制器中乱序传输数据的系统和方法 Expired - Fee Related CN103577119B (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US201261661743P 2012-06-19 2012-06-19
US61/661,743 2012-06-19

Publications (2)

Publication Number Publication Date
CN103577119A true CN103577119A (zh) 2014-02-12
CN103577119B CN103577119B (zh) 2018-05-18

Family

ID=49757003

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201310254883.4A Expired - Fee Related CN103577119B (zh) 2012-06-19 2013-06-19 用于下一代固态硬盘控制器中乱序传输数据的系统和方法

Country Status (2)

Country Link
US (1) US20130339583A1 (zh)
CN (1) CN103577119B (zh)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN109271108A (zh) * 2018-09-03 2019-01-25 青岛镕铭半导体有限公司 一种存储器控制装置及数据存储设备
CN109947678A (zh) * 2019-03-26 2019-06-28 联想(北京)有限公司 一种存储装置、电子设备及数据交互方法

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10353631B2 (en) * 2013-07-23 2019-07-16 Intel Corporation Techniques for moving data between a network input/output device and a storage device
US10318361B2 (en) 2014-07-02 2019-06-11 Atheer, Inc. Methods and systems for multiple access to a single hardware data stream
KR102395477B1 (ko) 2017-11-20 2022-05-09 삼성전자주식회사 호스트 메모리에 대한 메모리 액세스를 스케쥴링하는 장치 컨트롤러, 및 이를 포함하는 저장 장치

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6772300B1 (en) * 2000-08-30 2004-08-03 Intel Corporation Method and apparatus for managing out of order memory transactions
CN101594302A (zh) * 2009-07-01 2009-12-02 华为技术有限公司 数据出队的方法及装置
CN101715575A (zh) * 2006-12-06 2010-05-26 弗森多系统公司(dba弗森-艾奥) 采用数据管道管理数据的装置、系统和方法
US20100262740A1 (en) * 2009-04-08 2010-10-14 Google Inc. Multiple command queues having separate interrupts

Family Cites Families (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5592664A (en) * 1991-07-29 1997-01-07 Borland International Inc. Database server system with methods for alerting clients of occurrence of database server events of interest to the clients
US5778430A (en) * 1996-04-19 1998-07-07 Eccs, Inc. Method and apparatus for computer disk cache management
JP3522527B2 (ja) * 1998-03-27 2004-04-26 富士通株式会社 入出力制御装置および入出力制御方法
US6651146B1 (en) * 2000-02-24 2003-11-18 International Business Machines Corporation Method and apparatus for managing access contention to a linear list without the use of locks
GB0103472D0 (en) * 2001-02-13 2001-03-28 Lsi Logic Corp Data processing system
US7191271B2 (en) * 2001-09-20 2007-03-13 Lockheed Martin Corporation Two level multi-tier system bus
US8489817B2 (en) * 2007-12-06 2013-07-16 Fusion-Io, Inc. Apparatus, system, and method for caching data
WO2009039222A2 (en) * 2007-09-19 2009-03-26 Marvell World Trade Ltd. Flexible sequencer design architecture for solid state memory controller
US8351508B1 (en) * 2007-12-11 2013-01-08 Marvell International Ltd. Multithreaded descriptor based motion estimation/compensation video encoding/decoding
US8745353B2 (en) * 2009-10-23 2014-06-03 Seagate Technology Llc Block boundary resolution for mismatched logical and physical block sizes

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6772300B1 (en) * 2000-08-30 2004-08-03 Intel Corporation Method and apparatus for managing out of order memory transactions
CN101715575A (zh) * 2006-12-06 2010-05-26 弗森多系统公司(dba弗森-艾奥) 采用数据管道管理数据的装置、系统和方法
US20100262740A1 (en) * 2009-04-08 2010-10-14 Google Inc. Multiple command queues having separate interrupts
CN101594302A (zh) * 2009-07-01 2009-12-02 华为技术有限公司 数据出队的方法及装置

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN109271108A (zh) * 2018-09-03 2019-01-25 青岛镕铭半导体有限公司 一种存储器控制装置及数据存储设备
CN109947678A (zh) * 2019-03-26 2019-06-28 联想(北京)有限公司 一种存储装置、电子设备及数据交互方法
CN109947678B (zh) * 2019-03-26 2021-07-16 联想(北京)有限公司 一种存储装置、电子设备及数据交互方法

Also Published As

Publication number Publication date
US20130339583A1 (en) 2013-12-19
CN103577119B (zh) 2018-05-18

Similar Documents

Publication Publication Date Title
CN102354299B (zh) 存储卡和半导体器件
US20080195833A1 (en) Systems, methods and computer program products for operating a data processing system in which a file system's unit of memory allocation is coordinated with a storage system's read/write operation unit
KR101560469B1 (ko) 메모리 시스템 컨트롤러들을 포함하는 장치 및 관련 방법들
US8386699B2 (en) Method for giving program commands to flash memory for writing data according to a sequence, and controller and storage system using the same
CN102723099A (zh) 包括用于处理多命令描述符块以便利用并发性的主机接口的闪存装置
CN103136116A (zh) 存储器存储系统及其中控装置、管理方法与断电恢复方法
CN103577119A (zh) 用于下一代固态硬盘控制器中乱序传输数据的系统和方法
CN102779095A (zh) 闪存装置、存储器控制装置、存储器控制方法及存储系统
US9569381B2 (en) Scheduler for memory
CN108628543B (zh) 垃圾回收方法以及使用该方法的装置
CN106909516A (zh) 存储系统及其操作方法
CN112765055B (zh) 存储设备的控制部件
CN109086168A (zh) 一种利用硬件备份固态硬盘写速度的方法及其系统
CN109213423A (zh) 基于地址屏障无锁处理并发io命令
CN112764669A (zh) 用于存储控制器的加速器
KR102645983B1 (ko) 오픈 채널 벡터 커맨드 실행
CN114253462A (zh) 提供混合通道存储设备的方法
CN114253461A (zh) 混合通道存储设备
CN213338708U (zh) 一种控制部件及存储设备
CN115993930A (zh) 用于有序访问块修改存储器中的数据的系统、方法和装置
CN115576867A (zh) 存储设备的扩展地址空间
CN115269454A (zh) 数据访问方法、电子设备和存储介质
CN114610654A (zh) 一种固态存储设备以及向其写入数据的方法
CN105739919A (zh) 资料存取系统及方法
CN113419674B (zh) 数据编程管理方法、存储器及其控制器,以及计算机系统

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
CI01 Publication of corrected invention patent application

Correction item: Priority

Correct: 61/661,743 2012.06.19 US

False: 61/661,743 2012.07.19 US

Number: 07

Volume: 30

CI02 Correction of invention patent application

Correction item: Priority

Correct: 61/661,743 2012.06.19 US

False: 61/661,743 2012.07.19 US

Number: 07

Page: The title page

Volume: 30

ERR Gazette correction

Free format text: CORRECT: PRIORITY DATA; FROM: 61/661,743 2012.07.19 US TO: 61/661,743 2012.06.19 US

RECT Rectification
EXSB Decision made by sipo to initiate substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant
TR01 Transfer of patent right
TR01 Transfer of patent right

Effective date of registration: 20200424

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: 20200424

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: 20200424

Address after: Hamilton, Bermuda

Patentee after: Marvell International Ltd.

Address before: Babado J San Mega Le

Patentee before: MARVELL WORLD TRADE Ltd.

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

Granted publication date: 20180518