CN109582228B - 基于nand闪存控制器的自动读重试的硬件加速方法及装置 - Google Patents

基于nand闪存控制器的自动读重试的硬件加速方法及装置 Download PDF

Info

Publication number
CN109582228B
CN109582228B CN201811361460.1A CN201811361460A CN109582228B CN 109582228 B CN109582228 B CN 109582228B CN 201811361460 A CN201811361460 A CN 201811361460A CN 109582228 B CN109582228 B CN 109582228B
Authority
CN
China
Prior art keywords
nand flash
command
unit
read
reading
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
CN201811361460.1A
Other languages
English (en)
Other versions
CN109582228A (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.)
Shenzhen Union Memory Information System Co Ltd
Original Assignee
Shenzhen Union Memory Information System 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 Shenzhen Union Memory Information System Co Ltd filed Critical Shenzhen Union Memory Information System Co Ltd
Priority to CN201811361460.1A priority Critical patent/CN109582228B/zh
Publication of CN109582228A publication Critical patent/CN109582228A/zh
Application granted granted Critical
Publication of CN109582228B publication Critical patent/CN109582228B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • 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
    • 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/0658Controller construction arrangements
    • 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]

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Human Computer Interaction (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Techniques For Improving Reliability Of Storages (AREA)
  • Read Only Memory (AREA)

Abstract

本发明公开了一种基于NAND闪存控制器的自动读重试的硬件加速方法及装置,其中方法包括接收CPU下发的读NAND Flash命令;根据命令从NAND Flash中读取数据;对读取到的数据进行纠错;保存纠错数据,并向CDMA反馈纠错结果;根据纠错结果判定纠错是否成功;若不成功,则CORE接收有错的读命令,并返回所述根据命令从NAND Flash中读取数据的步骤;若成功,则读NAND Flash命令结束,并通知CPU。本发明可以灵活的在SSD系统中使用,能够大大减轻CPU的负担,提升闪存控制器以及整个SSD系统的读性能。

Description

基于NAND闪存控制器的自动读重试的硬件加速方法及装置
技术领域
本发明涉及NAND闪存控制器的读重试方法,更具体地说是基于NAND闪存控制器的自动读重试的硬件加速方法及装置。
背景技术
目前,基于NAND闪存控制器的读重试方法工作流程图如图1所示,CPU发送ReadNAND Flash命令给NFC,NFC解析命令,从NAND Flash中读取数据;NAND Flash返回数据,经过ECC(Error Correction Code)纠错模块,如果有错,进入步骤S3;如果没错,进入步骤S6;如果CPU发现有错,则进一步判断当前Read Retry的次数,如果达到了最大次数限定,则进入步骤S6,如果没有达到最大次数,则进入步骤S4;CPU判断阈值电压表有无结束,如果阈值电压表结束,则进入步骤S6;如果阈值电压表没有结束,则进入步骤S1;CPU下发SetFeature,恢复颗粒的阈值电压到默认值,结束。
经研究发现,上述步骤中,几乎每一个步骤均有CPU的介入,需要CPU不断的和硬件电路之间保持密切的同步,CPU处理的对象较多,很难与高速的硬件电路NFC保持高度的同步,CPU的性能得不到充分发挥,且读NAND Flash性能会受到明显的影响。
发明内容
本发明的目的在于克服现有技术的不足,提供基于NAND闪存控制器的自动读重试的硬件加速方法及装置。
为实现上述目的,本发明采用以下技术方案:基于NAND闪存控制器的自动读重试的硬件加速方法,所述方法包括以下步骤:
接收CPU下发的读NAND Flash命令;
根据命令从NAND Flash中读取数据;
对读取到的数据进行纠错;
保存纠错数据,并向CDMA反馈纠错结果;
根据纠错结果判定纠错是否成功;
若不成功,则CORE接收有错的读命令,并返回所述根据命令从NAND Flash中读取数据的步骤;
若成功,则读NAND Flash命令结束,并通知CPU。
其进一步技术方案为:所述若不成功,则CORE接收有错的读命令的步骤,具体包括以下步骤:
读取阈值电压链表中的一个阈值电压档位;
通过CORE将阈值电压档位以设置特性的形式下发给NAND Flash;
CDMA把当前读取数据有错的读NAND Flash命令下发给CORE。
其进一步技术方案为:所述根据命令从NAND Flash中读取数据的步骤,具体包括以下步骤:
CDMA解析读命令;
下发解析后的读命令给CORE;
CORE通过NAND物理层从NAND Flash中加载预读取的数据。
其进一步技术方案为:所述保存纠错数据,并向CDMA反馈纠错结果的步骤与所述根据纠错结果判定纠错是否成功的步骤之间包括以下步骤:
确定当前命令已执行读重试的次数;
将已执行读重试的次数与寄存器设定的最大读重试次数进行比较,若不同,则进入所述根据纠错结果判定纠错是否成功的步骤;若相同,则进入下一步骤;
读取恢复阈值电压档位;
将读取到的恢复阈值电压档位通过CORE以设置特性的形式下发给NAND Flash;
将颗粒的阈值电压恢复到默认值。
其进一步技术方案为:所述保存纠错数据,并向CDMA反馈纠错结果的步骤中,所述纠错数据保存于DDR或者SRAM中。
基于NAND闪存控制器的自动读重试的硬件加速,所述装置包括接收单元、第一读取单元、纠错单元、反馈单元、判定单元、通知单元以及返回单元;
所述接收单元,用于接收CPU下发的读NAND Flash命令;
所述第一读取单元,用于根据命令从NAND Flash中读取数据;
所述纠错单元,用于对读取到的数据进行纠错;
所述反馈单元,用于保存纠错数据,并向CDMA反馈纠错结果;
所述判定单元,用于根据纠错结果判定纠错是否成功;
所述返回单元,用于CORE接收有错的读命令,并返回所述读取单元;
所述通知单元,用于读NAND Flash命令结束之后,通知CPU。
其进一步技术方案为:所述返回单元包括读取模块、第一下发模块以及第二下发模块;
所示读取模块,用以读取阈值电压链表中的一个阈值电压档位;
所述第一下发模块,用于通过CORE将阈值电压档位以设置特性的形式下发给NANDFlash;
所述第二下发模块,用于CDMA把当前读取数据有错的读NAND Flash命令下发给CORE。
其进一步技术方案为:所述第一读取单元包括解析模块、第三下发模块以及加载模块;
所述解析模块,用于CDMA解析读命令;
所述第三下发模块,用于下发解析后的读命令给CORE;
所述加载模块,用于CORE通过NAND物理层从NAND Flash中加载预读取的数据。
其进一步技术方案为:所述装置还包括确定单元、比较单元、第二读取单元、下发单元以及恢复单元;
所述确定单元,用于确定当前命令已执行读重试的次数;
所述比较单元,用于将已执行读重试的次数与寄存器设定的最大读重试次数进行比较;
所述第二读取单元,用于读取恢复阈值电压档位;
所述下发单元,用于将读取到的恢复阈值电压档位通过CORE以设置特性的形式下发给NAND Flash;
所述恢复单元,用于将颗粒的阈值电压恢复到默认值。
本发明与现有技术相比的有益效果是:本发明基于NAND闪存控制器的自动读重试的硬件加速方法及装置通过闪存控制器接受CPU下发的读NAND Flash命令,并根据命令从NAND Flash中读取数据,对读取到的数据进行纠错保存纠错数据,并向CDMA反馈纠错结果,根据纠错结果判定纠错是否成功,若成功,则读NAND Flash命令结束,并通知CPU,若不成功,则CORE接收有错的读命令,并返回所述根据命令从NAND Flash中读取数据的步骤。当达到指定的读重试次数,或者把数据成功纠回,或者达到了阈值表的结束,则退出上述的循环。本方案可以灵活的在SSD系统中使用,能够大大减轻CPU的负担,提升闪存控制器以及整个SSD系统的读性能。
上述说明仅是本发明技术方案的概述,为了能够更清楚了解本发明技术手段,可依照说明书的内容予以实施,并且为了让本发明的上述和其它目的、特征及优点能够更明显易懂,以下特举较佳实施例,详细说明如下。
附图说明
图1为现有技术的流程图;
图2为本发明的架构图;
图3为本发明读重试阈值电压链表结构图;
图4为本发明基于NAND闪存控制器的自动读重试的硬件加速方法具体实施例的流程图;
图5为本发明基于NAND闪存控制器的自动读重试的硬件加速方法具体实施例中CORE接收有错的读命令的流程图;
图6为本发明基于NAND闪存控制器的自动读重试的硬件加速方法具体实施例中命令从NAND Flash中读取数据的流程图;
图7为本发明基于NAND闪存控制器的自动读重试的硬件加速装置具体实施例的示意性框图;
图8为本发明基于NAND闪存控制器的自动读重试的硬件加速装置具体实施例中返回单元的示意性框图;
图9为本发明基于NAND闪存控制器的自动读重试的硬件加速装置具体实施例中第一读取单元的示意性框图;
图10为发明的应用场景一;
图11为发明的应用场景二;
图12为发明的应用场景三。
具体实施方式
为了更充分理解本发明的技术内容,下面结合具体实施例对本发明的技术方案进一步介绍和说明,但不局限于此。
应当理解,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体/操作/对象与另一个实体/操作/对象区分开来,而不一定要求或者暗示这些实体/操作/对象之间存在任何这种实际的关系或者顺序。
还应当理解,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者系统不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者系统所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括该要素的过程、方法、物品或者系统中还存在另外的相同要素。
如图2-6所示,本发明提供了基于NAND闪存控制器的自动读重试的硬件加速方法,该方法包括以下步骤:
S10、接收CPU下发的读NAND Flash命令;
S20、根据命令从NAND Flash中读取数据;
S30、对读取到的数据进行纠错;
S40、保存纠错数据,并向CDMA反馈纠错结果;
S70、根据纠错结果判定纠错是否成功;
S701、若不成功,则CORE接收有错的读命令,并返回步骤S20;
若成功,则读NAND Flash命令结束,并通知CPU。
本方案可以灵活运用在目前主流的SSD系统中NFC(NAND闪存控制器,NAND FlashController)上,本实施例中,NFC内含CDMA(命令直接内存访问,Command Direct MemoryAccess),其主要用于接收CPU发过来的描述符命令。具体的,CPU通过AHB/AXI/APB或其它类型的总线,向CDMA下发Read NAND Flash(读NAND Flash)命令包地址,存放在CDMA内部的命令队列中,CDMA从内部命令队列中取出命令包地址,并通过AHB/AXI/APB或其它类型的总线从外部SRAM或DDR中获取真实的Read NAND Flash命令包,CDMA把该命令包通过内部接口,下发给CORE,CORE通过NAND PHY(NAND物理层)从Flash中加载预读取的数据。
在某些实施例中,步骤S701具体包括以下步骤:
S7011、读取阈值电压链表中的一个阈值电压档位;
S7012、通过CORE将阈值电压档位以设置特性的形式下发给NAND Flash;
S7013、CDMA把当前读取数据有错的读NAND Flash命令下发给CORE。
具体的,如图3所示,CDMA每次重新下发Read NAND Flash命令给CORE时候,先从该链表中读取一个阈值电压档位,通过CORE以Set Feature(设置特性)的形式下发给NANDFlash,阈值电压档位的末尾是一个指针,指向下一个阈值电压档位;阈值电压链表的指针由2个部分组成,一个部分称之为阈值电压链表基地址(param_type2_desc_base_addr[15:0]),由寄存器进行配置,另一部分称为阈值电压链表偏移地址(type2_desc_off_addr[15:0])位于CPU下发的Read NAND Flash命令包中,Read Retry的最大次数也是寄存器可配置的。
进一步的,步骤S40和步骤S70之间包括以下步骤:
S50、确定当前命令已执行读重试的次数;
S60、将已执行读重试的次数与寄存器设定的最大读重试次数进行比较,若不同,则进入S70步骤;若相同,则进入S80步骤;
S80、读取恢复阈值电压档位;
S90、将读取到的恢复阈值电压档位通过CORE以设置特性的形式下发给NANDFlash;
S100、将颗粒的阈值电压恢复到默认值。
具体的,通过CDMA确定当前命令已执行的Read Retry的次数,有无达到寄存器设定的Read Retry的次数(当前已执行读重试的次数与寄存器设定的最大读重试次数相同),若达到,则读取恢复阈值电压档位(恢复阈值电压档位位于DDR或者SRAM存储空间中),然后将颗粒的阈值电压恢复到默认值,以结束读NAND Flash。若达到,则对纠错结果进行判定。
在本实施例中,步骤S40中,纠错数据保存于DDR或者SRAM中。
应理解,上述实施例中各步骤的序号的大小并不意味着执行顺序的先后,各过程的执行顺序应以其功能和内在逻辑确定,而不应对本发明实施例的实施过程构成任何限定。
对应于上述实施例所述的基于NAND闪存控制器的自动读重试的硬件加速方法,本发明还提供了基于NAND闪存控制器的自动读重试的硬件加速装置,如图2、3、7-9所示,该装置包括接收单元10、第一读取单元20、纠错单元30、反馈单元40、判定单元50、通知单元60以及返回单元70;
接收单元10,用于接收CPU下发的读NAND Flash命令;
第一读取单元20,用于根据命令从NAND Flash中读取数据;
纠错单元30,用于对读取到的数据进行纠错;
反馈单元40,用于保存纠错数据,并向CDMA反馈纠错结果;
判定单元50,用于根据纠错结果判定纠错是否成功;
通知单元60,用于读NAND Flash命令结束之后,通知CPU。
返回单元70,用于CORE接收有错的读命令,并返回读取单元;
本方案可以灵活运用在目前主流的SSD系统中NFC(NAND闪存控制器,NAND FlashController)上,本实施例中,NFC内含CDMA(命令直接内存访问,Command Direct MemoryAccess),其主要用于接收CPU发过来的描述符命令。
其中,第一读取单元20包括解析模块201、第三下发模块202以及加载模块203;
解析模块201,用于CDMA解析读命令;
第三下发模块202,用于下发解析后的读命令给CORE;
加载模块203,用于CORE通过NAND物理层从NAND Flash中加载预读取的数据。
具体的,CPU通过AHB/AXI/APB或其它类型的总线,向CDMA下发Read NAND Flash(读NAND Flash)命令包地址,存放在CDMA内部的命令队列中,CDMA从内部命令队列中取出命令包地址,并通过AHB/AXI/APB或其它类型的总线从外部SRAM或DDR中获取真实的ReadNAND Flash命令包,CDMA把该命令包通过内部接口,下发给CORE,CORE通过NAND PHY(NAND物理层)从Flash中加载预读取的数据。
在某些实施例中,返回单元70包括读取模块701、第一下发模块702以及第二下发模块703;
所示读取模块701,用以读取阈值电压链表中的一个阈值电压档位;
第一下发模块702,用于通过CORE将阈值电压档位以设置特性的形式下发给NANDFlash;
第二下发模块703,用于CDMA把当前读取数据有错的读NAND Flash命令下发给CORE。
具体的,如图3所示,CDMA每次重新下发Read NAND Flash命令给CORE时候,先从该链表中读取一个阈值电压档位,通过CORE以Set Feature(设置特性)的形式下发给NANDFlash,阈值电压档位的末尾是一个指针,指向下一个阈值电压档位;阈值电压链表的指针由2个部分组成,一个部分称之为阈值电压链表基地址(param_type2_desc_base_addr[15:0]),由寄存器进行配置,另一部分称为阈值电压链表偏移地址(type2_desc_off_addr[15:0])位于CPU下发的Read NAND Flash命令包中,Read Retry的最大次数也是寄存器可配置的。
进一步的,该装置还包括确定单元80、比较单元90、第二读取单元100、下发单元110以及恢复单元120;
确定单元80,用于确定当前命令已执行读重试的次数;
比较单元90,用于将已执行读重试的次数与寄存器设定的最大读重试次数进行比较;
第二读取单元100,用于读取恢复阈值电压档位;
下发单元110,用于将读取到的恢复阈值电压档位通过CORE以设置特性的形式下发给NAND Flash;
恢复单元120,用于将颗粒的阈值电压恢复到默认值。
具体的,通过CDMA确定当前命令已执行的Read Retry的次数,有无达到寄存器设定的Read Retry的次数(当前已执行读重试的次数与寄存器设定的最大读重试次数相同),若达到,则读取恢复阈值电压档位(恢复阈值电压档位位于DDR或者SRAM存储空间中),然后将颗粒的阈值电压恢复到默认值,以结束读NAND Flash。若达到,则对纠错结果进行判定。
在本实施例中,纠错数据保存于DDR或者SRAM中。
另外,本方案可以引用以下场景中:
应用场景一,如图10所示,是基于PCIE接口的SSD SoC(System on Chip)系统,BM(Buffer Manager)是介于NFC和PCIE之间的缓存管理模块,NVME(Non-volative MemoryExpress)负责从Host获取命令,状态回写及数据搬移。
应用场景二,如图11所示,是基于SATA接口的SSD SoC(System on Chip)系统,AHCI(Advanced Host Controller Interface)负责从Host获取命令,状态回写及数据搬移。
应用场景三,如图12所示,是基于EMMC(Embeded Multi Media Card)或UFS(Universal Flash Storage)或USB(Universal Serial Bus)接口的SSD SoC(System onChip)。
所属领域的技术人员可以清楚地了解到,为了描述的方便和简洁,仅以上述各功能单元、模块的划分进行举例说明,实际应用中,可以根据需要而将上述功能分配由不同的功能单元、模块完成,即将所述装置的内部结构划分成不同的功能单元或模块,以完成以上描述的全部或者部分功能。实施例中的各功能单元、模块可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中,上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。另外,各功能单元、模块的具体名称也只是为了便于相互区分,并不用于限制本申请的保护范围。上述装置中单元、模块的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
本领域普通技术人员可以意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、或者计算机软件和电子硬件的结合来实现。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本发明的范围。
在本发明所提供的实施例中,应该理解到,所揭露的装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述模块或单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个装置,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通讯连接可以是通过一些接口,装置或单元的间接耦合或通讯连接,可以是电性,机械或其它的形式。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本发明各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。
所述集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明实施例的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)或处理器(processor)执行本发明实施例各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、磁碟或者光盘等各种可以存储程序代码的介质。
上述仅以实施例来进一步说明本发明的技术内容,以便于读者更容易理解,但不代表本发明的实施方式仅限于此,任何依本发明所做的技术延伸或再创造,均受本发明的保护。本发明的保护范围以权利要求书为准。

Claims (5)

1.基于NAND闪存控制器的自动读重试的硬件加速方法,其特征在于,所述方法包括以下步骤:
接收CPU下发的读NAND Flash命令;
根据命令从NAND Flash中读取数据;
对读取到的数据进行纠错;
保存纠错数据,并向CDMA反馈纠错结果;
根据纠错结果判定纠错是否成功;
若不成功,则CORE接收有错的读命令,并返回所述根据命令从NAND Flash中读取数据的步骤;
若成功,则读NAND Flash命令结束,并通知CPU;
所述若不成功,则CORE接收有错的读命令的步骤,具体包括以下步骤:
读取阈值电压链表中的一个阈值电压档位;
通过CORE将阈值电压档位以设置特性的形式下发给NAND Flash;
CDMA把当前读取数据有错的读NAND Flash命令下发给CORE;
所述根据命令从NAND Flash中读取数据的步骤,具体包括以下步骤:
CDMA解析读命令;
下发解析后的读命令给CORE;
CORE通过NAND物理层从NAND Flash中加载预读取的数据。
2.根据权利要求1所述的基于NAND闪存控制器的自动读重试的硬件加速方法,其特征在于,所述保存纠错数据,并向CDMA反馈纠错结果的步骤与所述根据纠错结果判定纠错是否成功的步骤之间包括以下步骤:
确定当前命令已执行读重试的次数;
将已执行读重试的次数与寄存器设定的最大读重试次数进行比较,若不同,则进入所述根据纠错结果判定纠错是否成功的步骤;若相同,则进入下一步骤;
读取恢复阈值电压档位;
将读取到的恢复阈值电压档位通过CORE以设置特性的形式下发给NAND Flash;
将颗粒的阈值电压恢复到默认值。
3.根据权利要求1所述的基于NAND闪存控制器的自动读重试的硬件加速方法,其特征在于,所述保存纠错数据,并向CDMA反馈纠错结果的步骤中,所述纠错数据保存于DDR或者SRAM中。
4.基于NAND闪存控制器的自动读重试的硬件加速装置,其特征在于,所述装置包括接收单元、第一读取单元、纠错单元、反馈单元、判定单元、通知单元以及返回单元;
所述接收单元,用于接收CPU下发的读NAND Flash命令;
所述第一读取单元,用于根据命令从NAND Flash中读取数据;
所述纠错单元,用于对读取到的数据进行纠错;
所述反馈单元,用于保存纠错数据,并向CDMA反馈纠错结果;
所述判定单元,用于根据纠错结果判定纠错是否成功;
所述返回单元,用于CORE接收有错的读命令,并返回所述读取单元;
所述通知单元,用于读NAND Flash命令结束之后,通知CPU;
所述返回单元包括读取模块、第一下发模块以及第二下发模块;
所示读取模块,用以读取阈值电压链表中的一个阈值电压档位;
所述第一下发模块,用于通过CORE将阈值电压档位以设置特性的形式下发给NANDFlash;
所述第二下发模块,用于CDMA把当前读取数据有错的读NAND Flash命令下发给CORE;
所述第一读取单元包括解析模块、第三下发模块以及加载模块;
所述解析模块,用于CDMA解析读命令;
所述第三下发模块,用于下发解析后的读命令给CORE;
所述加载模块,用于CORE通过NAND物理层从NAND Flash中加载预读取的数据。
5.根据权利要求4所述的基于NAND闪存控制器的自动读重试的硬件加速装置,其特征在于,所装置还包括确定单元、比较单元、第二读取单元、下发单元以及恢复单元;
所述确定单元,用于确定当前命令已执行读重试的次数;
所述比较单元,用于将已执行读重试的次数与寄存器设定的最大读重试次数进行比较;
所述第二读取单元,用于读取恢复阈值电压档位;
所述下发单元,用于将读取到的恢复阈值电压档位通过CORE以设置特性的形式下发给NAND Flash;
所述恢复单元,用于将颗粒的阈值电压恢复到默认值。
CN201811361460.1A 2018-11-15 2018-11-15 基于nand闪存控制器的自动读重试的硬件加速方法及装置 Active CN109582228B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201811361460.1A CN109582228B (zh) 2018-11-15 2018-11-15 基于nand闪存控制器的自动读重试的硬件加速方法及装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201811361460.1A CN109582228B (zh) 2018-11-15 2018-11-15 基于nand闪存控制器的自动读重试的硬件加速方法及装置

Publications (2)

Publication Number Publication Date
CN109582228A CN109582228A (zh) 2019-04-05
CN109582228B true CN109582228B (zh) 2022-02-01

Family

ID=65922647

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201811361460.1A Active CN109582228B (zh) 2018-11-15 2018-11-15 基于nand闪存控制器的自动读重试的硬件加速方法及装置

Country Status (1)

Country Link
CN (1) CN109582228B (zh)

Families Citing this family (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN109726032B (zh) * 2019-01-18 2022-07-15 记忆科技(深圳)有限公司 Ssd异常处理方法、装置、计算机设备和存储介质
CN110471624A (zh) * 2019-08-07 2019-11-19 深圳忆联信息系统有限公司 Ssd读重试的加速方法、装置、计算机设备及存储介质
CN111459413B (zh) * 2020-03-31 2024-04-02 深圳忆联信息系统有限公司 提升ssd性能的方法、装置、计算机设备及存储介质
CN112596681B (zh) * 2020-12-25 2023-12-22 深圳大普微电子科技有限公司 一种重读命令处理方法、闪存控制器及固态硬盘
CN113094296B (zh) * 2021-04-29 2023-10-10 深圳忆联信息系统有限公司 Ssd读加速的实现方法、装置、计算机设备及存储介质
CN113687791B (zh) * 2021-09-07 2023-09-26 天津津航计算技术研究所 基于预读取和分支判断机制的存储器数据快速读取装置
CN113687792B (zh) * 2021-09-07 2023-09-26 天津津航计算技术研究所 一种存储器数据快速读取方法

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101354906A (zh) * 2008-08-11 2009-01-28 湖南源科创新科技股份有限公司 应用于固态硬盘的闪存控制器
CN107094370A (zh) * 2012-05-04 2017-08-25 希捷科技有限公司 固态硬盘控制器的0‑1平衡管理
CN108052414A (zh) * 2017-12-28 2018-05-18 湖南国科微电子股份有限公司 一种提升ssd工作温度范围的方法及系统
CN108628755A (zh) * 2017-03-17 2018-10-09 爱思开海力士有限公司 存储器系统
CN108647109A (zh) * 2018-03-27 2018-10-12 深圳忆联信息系统有限公司 一种固态硬盘提升ldpc纠错能力的方法

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101354906A (zh) * 2008-08-11 2009-01-28 湖南源科创新科技股份有限公司 应用于固态硬盘的闪存控制器
CN107094370A (zh) * 2012-05-04 2017-08-25 希捷科技有限公司 固态硬盘控制器的0‑1平衡管理
CN108628755A (zh) * 2017-03-17 2018-10-09 爱思开海力士有限公司 存储器系统
CN108052414A (zh) * 2017-12-28 2018-05-18 湖南国科微电子股份有限公司 一种提升ssd工作温度范围的方法及系统
CN108647109A (zh) * 2018-03-27 2018-10-12 深圳忆联信息系统有限公司 一种固态硬盘提升ldpc纠错能力的方法

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
Quality-of-Service Implications of Enhanced Program Algorithms for Charge-Trapping NAND in Future Solid-State Drives;Alessandro Grossi;《 IEEE Transactions on Device and Materials Reliability》;20150622;第15卷(第3期);全文 *
用于NAND FLASH的纠检错算法的FPGA实现;郑晶晶;《空间电子技术》;20171025;第14卷(第5期);全文 *

Also Published As

Publication number Publication date
CN109582228A (zh) 2019-04-05

Similar Documents

Publication Publication Date Title
CN109582228B (zh) 基于nand闪存控制器的自动读重试的硬件加速方法及装置
US9582416B2 (en) Data erasing method, memory control circuit unit and memory storage apparatus
US9176865B2 (en) Data writing method, memory controller, and memory storage device
US11294586B2 (en) Method for performing read acceleration, associated data storage device and controller thereof
US20130262810A1 (en) Memory space management method and memory controller and memory storage device using the same
US11204864B2 (en) Data storage devices and data processing methods for improving the accessing performance of the data storage devices
US11157399B2 (en) Data storage devices and data processing methods with dynamic programming scheme
US10866736B2 (en) Memory controller and data processing circuit with improved system efficiency
TW201737097A (zh) 用於在資料儲存裝置上管理不可變資料之技術
CN109426581B (zh) 用以检测数据储存装置的数据储存方法及其数据储存装置
US9384125B2 (en) Method for accessing flash memory having pages used for data backup and associated memory device
US20220138096A1 (en) Memory system
CN111444030A (zh) 数据储存装置及避免固件失效的方法
CN104281413A (zh) 命令队列管理方法、存储器控制器及存储器储存装置
CN108628760B (zh) 原子写命令的方法与装置
CN113741798A (zh) 数据存储装置及其操作方法
US20200125285A1 (en) Memory system and operating method thereof
CN108628761B (zh) 原子命令执行方法与装置
CN112328526A (zh) Io操作方法和装置
US10635583B2 (en) Memory management method and storage controller
CN110825653B (zh) 存储器管理方法以及存储控制器
US20180203813A1 (en) Methods for processing return entities associated with multiple requests in single interrupt service routine thread and apparatuses using the same
US10838621B2 (en) Method and flash memory controller capable of avoiding inefficient memory block swap or inefficient garbage collection
US9652378B2 (en) Writing method, memory controller and memory storage device
CN112099731A (zh) 数据储存装置与数据处理方法

Legal Events

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