CN113419674A - 数据编程管理方法、存储器及其控制器,以及计算机系统 - Google Patents

数据编程管理方法、存储器及其控制器,以及计算机系统 Download PDF

Info

Publication number
CN113419674A
CN113419674A CN202110655575.7A CN202110655575A CN113419674A CN 113419674 A CN113419674 A CN 113419674A CN 202110655575 A CN202110655575 A CN 202110655575A CN 113419674 A CN113419674 A CN 113419674A
Authority
CN
China
Prior art keywords
data
programming
address information
memory
write
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
CN202110655575.7A
Other languages
English (en)
Other versions
CN113419674B (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.)
Maxio Technology Hangzhou Ltd
Original Assignee
Maxio Technology Hangzhou 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 Maxio Technology Hangzhou Ltd filed Critical Maxio Technology Hangzhou Ltd
Priority to CN202110655575.7A priority Critical patent/CN113419674B/zh
Publication of CN113419674A publication Critical patent/CN113419674A/zh
Application granted granted Critical
Publication of CN113419674B publication Critical patent/CN113419674B/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/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/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/0604Improving or facilitating administration, e.g. storage management
    • G06F3/0607Improving or facilitating administration, e.g. storage management by facilitating the process of upgrading existing storage systems, e.g. for improving compatibility between host and storage device
    • 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/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
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D10/00Energy efficient computing, e.g. low power processors, power management or thermal management

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)
  • Memory System (AREA)

Abstract

本申请公开了一种数据编程管理方法、存储器及其控制器,以及计算机系统,该数据编程管理方法包括:在存储器写数据时获取该写数据的数据类型;根据写数据的数据类型从预设的多个数据编程描述表中选择目标数据编程描述表,每个数据编程描述表包括某一数据类型的写数据进行编程时对应的编程地址信息;将该目标数据编程描述表中的编程地址信息转换为存储地址信息,并将前述的写数据按照该存储地址信息写入存储介质。由此可以只考虑数据的写入类型,不仅能有效降低数据的复杂度,同时对不同的NAND flash也更加友好,改善了数据写入的易操作性,提高了编程的性能。

Description

数据编程管理方法、存储器及其控制器,以及计算机系统
技术领域
本公开涉及存储器领域,具体涉及一种用于存储器的数据编程管理方法、存储器及其控制器,以及计算机系统。
背景技术
随着嵌入式系统的迅速发展和广泛应用,大量需要一种能多次编程,容量大,读写、擦除快捷、方便、简单,外围器件少,价格低廉的非易挥发存储器件。闪存(FlashMemory)存储介质就是在这种背景需求下应运而生的。
闪存包括NOR型和NAND型闪存,NOR型与NAND型闪存的区别很大,具体的,NOR型闪存更像内存,有独立的地址线和数据线,但价格比较贵,容量比较小;而NAND型更像硬盘,地址线和数据线是共用的I/O线,类似硬盘的所有信息都通过一条硬盘线传送一般,而且NAND型与NOR型闪存相比,成本要低一些,而容量大得多。因此,NOR型闪存比较适合频繁随机读写的场合,通常用于存储程序代码并直接在闪存内运行,手机就是使用NOR型闪存的大户,所以手机的“内存”容量通常不大;NAND型闪存主要用来存储资料,我们常用的闪存产品,如闪存盘、数码存储卡都是用NAND型闪存。
随着制作工艺的提升,NAND flash的存储容量也在不断上升,从SLC,MLC到现在已广泛使用的TLC,QLC。在NAND flash里面存储的不仅是用户写入的数据,还有SSD固件维护其正常运转的数据。但是NAND flash本身有对数据写入的要求,编程的顺序也不尽相同。NAND flash的读写的基本单元是Page,但是擦除的基本单位是Block。且编程的时候,是要按照Page的序号依次编程。
而现在已有的技术都是根据输入的数据实时的构建编程所需的各种信息,既要考虑数据输入类型是用户写入数据还是固件维护产生的数据,又要考虑数据写入的类型是SLC Page、MLC Page、TLC Page或是QLC Page。实时的构建编程所需的信息加大了编程的延时,降低了编程的性能。且此种方案对不同的NAND flash不够友好。
发明内容
为了解决上述技术问题,本公开提供了一种用于存储器的数据编程管理方法、存储器及其控制器,以及计算机系统,可以只考虑数据的写入类型,不仅能有效降低数据的复杂度,同时对不同的NAND flash也更加友好,改善了数据写入的易操作性,提高了编程的性能。
一方面本公开提供了一种用于存储器的数据编程管理方法,该存储器包括存储器控制器和存储介质,前述的数据编程管理方法由存储器控制器执行,该数据编程管理方法包括:
在存储器写数据时获取该写数据的数据类型;
根据该写数据的数据类型从预设的多个数据编程描述表中选择目标数据编程描述表,其中,每个数据编程描述表包括某一数据类型的写数据进行编程时对应的编程地址信息;
将前述目标数据编程描述表中的编程地址信息转换为存储地址信息,并将该写数据按照前述的存储地址信息写入存储介质。
优选地,前述的编程地址信息包括:对应前述数据类型的写数据进行编程时所需的地址以及编程地址的顺序。
优选地,前述的数据类型包括:SLC Page、MLC Page、TLC Page和QLC Page中的一种。
优选地,在将前述目标数据编程描述表中的编程地址信息转换为存储地址信息的步骤包括:
根据在先写数据的存储地址信息,将前述目标数据编程描述表中的编程地址信息,依序逐个转换为该写数据编程时的存储地址信息,
该存储地址信息表征前述的写数据写入存储介质的物理地址。
优选地,在前述根据该写数据的数据类型从多个数据编程描述表中选择目标数据编程描述表的步骤之前,该数据编程管理方法还包括:
初始化前述的多个数据编程描述表。
优选地,前述初始化前述的多个数据编程描述表的步骤包括:
建立对应某一数据类型进行存储编程的编程地址信息;
构建多个数据类型的数据编程描述表,并基于某一数据类型形成与之对应的目标数据编程描述表的索引。
另一方面本公开提供了一种存储器控制器,包括耦接的控制单元和存储单元,前述控制单元执行如前所述的数据编程管理方法,前述存储单元用于存储数据编程描述表。
另一方面本公开还提供了一种存储器,包括如前所述的存储器控制器和用作存储介质的闪存芯片。
另一方面本公开又提供了一种计算机系统,其包括主机和如前所述的存储器。
本公开的有益效果是:本公开提供了一种用于存储器的数据编程管理方法、存储器及其控制器,以及计算机系统,可以只考虑数据的写入类型,对不同的NAND flash也更加友好,通过在存储器写数据时获取该写数据的数据类型;根据该写数据的数据类型从预设的多个数据编程描述表中选择目标数据编程描述表,其中,每个数据编程描述表包括某一数据类型的写数据进行编程时对应的编程地址信息;将前述目标数据编程描述表中的编程地址信息转换为存储地址信息,并将该写数据按照前述的存储地址信息写入存储介质,这样能有效降低数据的复杂度,改善数据写入的易操作性,由此提高了编程的性能。
附图说明
通过以下参照附图对本公开实施例的描述,本公开的上述以及其他目的、特征和优点将更为清楚。
图1示出现有技术的计算机系统的示意性框图;
图2示出本实施例提供的用于存储器的数据编程管理方法的流程图;
图3示出应用有图2所示数据编程管理方法的数据编程管理模型示意图。
具体实施方式
为了便于理解本公开,下面将参照相关附图对本公开进行更全面的描述。附图中给出了本公开的较佳实施例。但是,本公开可以通过不同的形式来实现,并不限于本文所描述的实施例。相反的,提供这些实施例的目的是使对本公开内容的理解更加透彻全面。
除非另有定义,本文所使用的所有的技术和科学术语与属于本公开的技术领域的技术人员通常理解的含义相同。在本公开的说明书中所使用的术语只是为了描述具体的实施例的目的,不是旨在于限制本公开。附图中的流程图、框图图示了本公开实施例的系统、方法、装置的可能的体系框架、功能和操作,流程图和框图上的方框可以代表一个模块、程序段或仅仅是一段代码,所述模块、程序段和代码都是用来实现规定逻辑功能的可执行指令。也应当注意,所述实现规定逻辑功能的可执行指令可以重新组合,从而生成新的模块和程序段。因此附图的方框以及方框顺序只是用来更好的图示实施例的过程和步骤,而不应以此作为对发明本身的限制。
【术语解释】
地址映射:负责逻辑地址到物理地址的映射,核心中的核心,是许多其他模块的基础。
损耗均衡:避免某一个块使用过于频繁,过早达到使用寿命。
垃圾回收:GC,Garbage Collection,异地更新产生的脏数据所占空间的回收工作。
错误处理:erase/program/read error,坏块管理。
掉电恢复:POR,Power off Recovery。
下面,参照附图对本公开进行详细说明。
图1示出现有技术的计算机系统的示意性框图。计算机系统100包括主机110、存储器控制器120和存储器130。在下文以固态硬盘为例进行描述。固态硬盘例如包括图中所示的存储器控制器120和存储器130。主机110经由存储器控制器120访问存储器130。在本示例中,存储器130采用当前目前最主流的闪存芯片(Flash Memory)131作为存储介质。
在存储器控制器120中,控制单元123提供整个存储控制器120的控制逻辑,根据该控制逻辑控制数据读取和数据写入,常见的接口单元121有SATA,PCIe等,用于在主机110和存储器控制器120之间实现接口转换,例如数据格式转换、协议转换等,高速DRAM(DynamicRandom Access Memory,动态随机存取存储器)140和SRAM(Static Random AccessMemory,静态随机存取存储器)122用作存储器控制器120的缓存,DRAM140设置在存储器控制器120的外部,SRAM122设置在存储器控制器120的内部,闪存控制器125用于实现对存储器130进行读写操作,即存储器控制器120通过闪存控制器125将数据写入到存储器130,以及从存储器130中读取数据。
存储器130包括闪存芯片阵列。为了提高数据读写性能,存储器控制器120可以经由多个通道CH0和CH1对存储器130的闪存芯片131进行读写。每个通道连接一组闪存芯片。每个闪存芯片包括多个物理块(Block),每个物理块包括多个物理页(Page),每个物理页(Page)的大小通常是4KB或8KB或16KB,而每个物理页(Page)又是由大量的单元(Cell)构成,Cell也是闪存的最小工作单位,用于执行数据存储的任务。对闪存芯片的数据访问操作包括读、写和擦除,由于闪存芯片的物理特性,数据读写操作的基本单位例如是物理页(Page),擦除操作的基本单位例如是物理块(Block)。即如果你需要读取512字节的数据,那在闪存层面上就必须把包含这512字节数据的整个物理页(Page)内容全部读出(实际发生的读取,例如为16KB)。闪存根据每个单元内可存储的数据量能分成SLC(Single LevelCell,单层单元-1bit/Cell)、MLC(Multi-Level Cell,多层单元-2bit/Cell)、TLC(Trinary-Level Cell,三层单元-3bit/Cell)和QLC(Quad-Level Cell,四层单元-4bit/Cell)这四种类型,成本依次降低,容量依次增大,耐用度也依次降低。
在主机110执行数据读写操作时,存储器控制器120从主机110接收到指令。存储器控制器120将指令中的逻辑地址映射成物理地址,该物理地址用于表征存储器130中的位置,包括通道、物理块和物理页等。
但是,已有的技术都是根据输入的数据实时的构建编程所需的各种信息,既要考虑数据输入类型,又要考虑数据写入的类型。实时的构建编程所需的信息加大了编程的延时,也降低了编程的性能。且此种方案对不同的NAND flash不够友好。
基于此,在本申请方案中,不关心这些数据是来自用户输入的还是固件产生的,只关心数据写入的情况,如写入的是SLC Page,MLC Page,TLC Page或是QLC Page,因为对应不同数据类型的Page对编程有着不同的要求。由此可以有效降低了数据的复杂度,改善数据写入的易操作性,进而提高编程的性能。
图2示出本实施例提供的用于存储器的数据编程管理方法的流程图,图3示出应用有图2所示数据编程管理方法的数据编程管理模型示意图。
在本实施例中,存储器参考图1所示,虽然未示出,但是存储器控制器120可以包含有一个FTL(Flash Translation Layer,闪存转换层),它是搭建在闪存芯片131之上的核心软件层,使操作系统和文件系统能够像访问硬盘一样访问闪存芯片131,该FTL还有例如支持所有SLC(Single Level Cell,单层单元)和MLC(Multi-Level Cell,多层单元)、支持坏块管理、损耗均衡、垃圾回收、断电恢复、写平衡技术等特点。而根据本实施例提供的用于存储器的数据编程管理方法可构成在FTL之上的应用层或者包含在FTL中的功能模块,因此数据编程管理方法可以和FTL一样,由图1存储器控制器120中的控制单元123来执行。
结合图2和图3,该数据编程管理方法在(主机110)接收到写数据开始,首先判断是否有数据写入,如果否,则直接结束数据写操作;如果是,则具体可以执行以下步骤:
步骤110:在存储器写数据时获取该写数据的数据类型。
在步骤110中,前述的数据类型包括数据写入的内存单元中存储信息的比特位数分类的:SLC Page、MLC Page、TLC Page和QLC Page中的至少一种。
可知的,上一写数据结束时的写入地址由上一写数据的初始写入地址和上一写数据的总长度决定。在先写数据是当前写数据之前的一个或前几个写数据,在一些情形下,按时间顺序发送的多个写数据,其到达顺序与发送顺序并不相同,例如:用户输入的数据顺序是0-1-2-3,但是具体到达的顺序可能是3-2-1-0。或者是在另一种情形下,真实写入到NANDFlash的数据的顺序并不一定是和用户输入的顺序相保持一致的,例如:用户输入的数据顺序是0-1-2-3,但是具体写入的顺序可能是2-1-3-0。因此需要对当前写数据的初始写入地址与在先写数据结束时的写入地址是否连续进行判断,当连续时,即表示在先写数据为实际待写数据的一部分,待写数据需要至少两条连续的写数据才能完成写入闪存系统;当不连续时,即表示在先写数据已完成,或当前新写入的数据为其他待写的数据的一部分,通过新增条目再依序处理当前写数据和后续的写数据,以便于后续基于地址映射关系将其写入到存储器中。
根据相关技术,计算机内部的信息交换以及计算机与外部设备之间的信息交换,是通过输入输出接口实现的。按照数据传送方式来分,有并行输入输出和串行输入输出两种。不仅外存设备可以实现输出输入操作的并行,在内存上也可以实现并行输入输出。串行输入输出因传输位少,存储系统在写数据时处理方便,响应速度更快;而并行输入输出同时传输多位比特信息,可在一定程度上提高存储系统的传输效率。
在一可选的实施例中,在存储器写数据时获取该写数据的数据类型及其实际位置信息的步骤可以包括:在存储器串行写数据时获取前述串行写数据的数据类型;以及确定前述串行写数据的写入顺序(如时间顺序)。
在另一可选的实施例中,在存储器写数据时获取该写数据的数据类型及其实际位置信息的步骤也可以包括:在存储器并行写数据时获取前述并行写数据的数据类型;以及根据前述并行写数据的处理顺序依次对前述并行写数据进行标记,以便后续步骤对该(并行)写数据的位置进行识别。
在此步骤中,本公开实施例可以只考虑数据的写入类型,因此能有效降低数据的复杂度,进而提高系统存储数据时的编程性能。
步骤120:根据前述写数据的数据类型从预设的多个数据编程描述表中选择目标数据编程描述表。
在步骤120中,每个数据编程描述表包括某一数据类型的写数据进行编程时对应的编程地址信息,且在存储器写数据的开始阶段会完成预设的多个数据编程描述表的初始化,以便能根据写数据的数据类型从预设的多个数据编程描述表中索引到与之对应的目标数据编程描述表,而前述的编程地址信息包括但不限于:对应所述数据类型的写数据编程时所需的地址以及编程地址的顺序。该编程地址信息不包含存储介质中实际的物理地址,而是表征某一数据类型的写数据编程时,该写数据中各数据之间相对的位置关系。
在特定的NAND flash中,编程的顺序是固定的(按照物理页(page)的顺序),所以需要维护一个表(即数据编程描述表),在编程前根据即将编程的写数据信息可以确定物理页(page)类型和编程所需的长度,进而来选择目标数据编程描述表,并将目标数据编程描述表中的编程地址信息,更新为写数据要编程到存储介质中的哪一个物理块(Block)的哪一个物理页(page)的存储地址信息。
可选的,在前述存储器写数据的步骤中,在根据写数据的数据类型从多个数据编程描述表中选择目标数据编程描述表之前,前述的数据编程管理方法还包括:初始化前述的多个数据编程描述表,即根据不同NAND flash的编程特性,分别初始化数据编程描述表中对应不同数据类型的编程模式,具体的,例如可以建立起对应某一数据类型进行存储编程的编程地址信息;再完成构建与多个数据类型构成一一映射关系的多个数据编程描述表,并基于特定的数据类型形成与之对应的目标数据编程描述表的索引。对应在在图3中,根据写数据的数据类型从预设的多个数据编程描述表中选择目标数据编程描述表时,需要根据地址映射关系会相应的选择不同的page类型,例如:Page类型A为SLC Page,对应1bit/Cell,Page类型B为MLC Page,对应2bit/Cell,Page类型C为TLC Page,对应3bit/Cell,Page类型D为QLC Page,对应4bit/Cell,根据写数据的数据类型索引到对应的目标数据编程描述表,确定该数据类型的写数据对应编程时的编程地址及该编程地址的顺序等。
在此步骤120中,本公开实施例可以实现对不同的NAND flash的兼容处理,即不同的NAND flash有不同的编程模式,或同一款NAND flash的不同Page有不同的编程模式,以此有效扩展了数据编程的适用性。
步骤130:将前述目标数据编程描述表中的编程地址信息转换为存储地址信息,并将写数据按照该存储地址信息写入存储介质。
在步骤130中,具体可以包括:根据在先写数据的存储地址信息,将前述目标数据编程描述表中的编程地址信息,依序逐个转换为该写数据编程时的存储地址信息,其中,该存储地址信息表征前述的写数据写入存储介质的物理地址。
在一实施方式中,可以根据在先写数据的存储地址信息,将前述目标数据编程描述表中的编程地址信息,依序逐个更新为写数据要编程到存储介质中的哪一个物理块(Block)的哪一个物理页(page)的存储地址信息。示意性地,假设在先写数据的存储地址信息为:{502,503,504},在先写数据中最后一个数据的物理地址为504,假设数据类型为TLCPage的第一写数据包括3个数据,则在选择TLC Page类型的目标数据编程描述表中,编程地址信息{0,1,2}转换成实际写入存储介质(如NAND Flash)的存储地址信息{505,506,507},存储地址信息中的首个物理地址为:在先写数据的存储地址信息中最后一个物理地址加1。假设在接收到第一写数据之后,又接收到两组数据类型为TLC Page的第二写数据,第二写数据包括6个数据,则目标数据编程描述表中,编程地址信息{0,1,2}转换为{{508,509,510},{511,512,513}}。
在一可选实施例中,若写数据为串行写数据,则可以通过确定首个写数据的初始写入地址与在先写数据结束时的写入地址是否连续,若不连续,则为前述串行写数据新增一个条目并根据该写数据的相对位置关系,依序将目标数据编程描述表中的编程地址信息转换为存储地址信息;若连续,则跟随前述在先写数据的写入地址,根据该写数据的相对位置关系,依序将目标数据编程描述表中的编程地址信息转换为存储地址信息。
在另一可选实施例中,若写数据为并行写数据,则可以通过确定首个处理的写数据的初始写入地址与在先写数据结束时的写入地址是否连续,若不连续,则为前述并行写数据新增一个条目并根据该写数据的相对位置关系,依序将目标数据编程描述表中的编程地址信息转换为存储地址信息,以便于后续步骤中基于地址映射关系将其写入到存储器;若连续,则跟随前述在先写数据的写入地址,根据该写数据的相对位置关系,依处理顺序将目标数据编程描述表中的编程地址信息转换为存储地址信息。
应该理解,由于闪存芯片131的读写单位为页,而页的大小一般为4KB或8KB,但是经由主机110发送过来的写数据通常是按照硬盘的扇区尺寸进行的(一般为512个字节),因此从主机110接收的写数据需要转换为一个以闪存的页为单位组织的写数据,但是主机110还需要访问这些写数据,因此需要建立逻辑地址(后续主机110可基于逻辑地址访问写数据)和物理地址(用于指定实际的写数据在存储介质130的存储位置)的地址映射关系。
在一可选实施例中,将前述目标数据编程描述表中的编程地址信息转换为存储地址信息,这些存储地址信息在上述步骤中可临时存在缓存SRAM 122中,以便在步骤140中通过地址映射关系写入存储介质(物理地址)中。
在一可选实施例中,前述写数据可以是串行写入数据的方式,也可以是并行写入数据的方式,串行写数据的实际位置信息可以对应串行写数据的写入顺序(如时间顺序),前述将写数据按照该存储地址信息写入存储介质可以是对应多个串行的写数据的存储地址信息(写入顺序),将串行写数据依序写入存储介质130上。
对于并行写入数据的方式,该并行写数据的实际位置信息可以对应该并行写数据的处理顺序,前述将写数据按照该存储地址信息写入存储介质可以是先获取并行写数据(处理顺序)的标记(如序列号),再根据该多个并行写数据的存储地址信息(处理顺序),将并行写数据依序写入存储介质130上。
在图3中,完成在根据目标数据编程描述表中内容对(当前)写数据进行编程后,可以循环执行数据是否写入的检测判断,直到检测到当前没有数据写入,则结束当前的数据写操作。
由此,本公开实施例提供的用于存储器的数据编程管理方法,可以只考虑数据的写入类型,对不同的NAND flash也更加友好,不仅能有效降低数据的复杂度,同时也可以改善数据写入的易操作性,由此提高了编程的性能。
可选的,本公开实施例还提供了一种存储器控制器,该存储器控制器例如可以包括耦接的控制单元和存储单元,该控制单元执行如述实施例中所述的数据编程管理方法,该存储单元用于存储前述实施例中所述的数据编程描述表。
可选的,存储器控制器可以是闪存存储器控制器,可以采用以下形式:例如处理电路、一个或多个微处理器或处理器(也称为中央处理单元(CPU))以及存储可由(微)处理器执行的计算机可读程序代码的计算机可读介质(例如,软件或固件)、逻辑门、开关、专用集成电路(ASIC)、可编程逻辑控制器和嵌入式微控制器。该存储器控制器可以配置有硬件和/或固件,以执行上文描述并且在流程图中示出的各种功能。另外,示出为在控制器内部的一些部件也可存储在控制器外部,并且可以使用其他部件。
可选的,本公开实施例还提供了一种存储器,包括如前述实施例中所述的存储器控制器和用作存储介质的闪存芯片。
在上述实施例的描述中,该存储器可以是闪存存储器。
可选的,本公开实施例还提供了一种计算机系统,其包括主机和如前述实施例中所述的存储器。
可选的,该存储器可以是固态硬盘,该计算机系统可以为闪存系统。在操作中,当主机需要从闪存存储器读取数据或向闪存存储器写入数据时,它将与闪存存储器控制器通信。如果主机提供要读取/写入数据的逻辑地址,则闪存存储器控制器可以将从主机接收的逻辑地址转换为闪存存储器中的物理地址。闪存存储器控制器还可执行前文中描述的存储器管理功能,诸如但不限于损耗均衡(分配写入以避免损耗否则将被重复写入的特定存储器块)和垃圾收集(在块已满之后,仅将有效的数据页面移动到新块,因此可以擦除并且重用完整块)。
以上中所涉及使用的术语“模块”可以指代以下各项、作为以下各项的一部分或者包括以下各项:专用集成电路(ASIC)、电子电路、执行一个或多个软件或固件程序的处理器(共享、专用或群组)和/或存储器(共享、专用或群组)、组合逻辑电路和/或提供所描述的功能性的其他合适的组件。
应当说明的是,在本公开的描述中,需要理解的是,术语“上”、“下”、“内”等指示方位或位置关系,仅是为了便于描述本公开和简化描述,而不是指示或暗示所指的组件或元件必须具有特定的方位,以特定的方位构造和操作,因此不能理解为对本公开的限制。
此外,在本文中,所含术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
本领域技术人员可以理解,根据本公开的数据处理系统的各个模块或单元可以通过硬件、固件或软件实现。软件例如包括采用JAVA、C/C++/C#、SQL等各种编程语言形成的编码程序。虽然在方法以及方法图例中给出本公开实施例的步骤以及步骤的顺序,但是所述步骤实现规定的逻辑功能的可执行指令可以重新组合,从而生成新的步骤。所述步骤的顺序也不应该仅仅局限于所述方法以及方法图例中的步骤顺序,可以根据功能的需要随时进行调整。例如将其中的某些步骤并行或按照其他顺序执行。
根据本发明的数据处理系统和方法可以部署在单个或多个服务器上。例如,可以将不同的模块分别部署在不同的服务器上,形成专用服务器。或者,可以在多个服务器上分布式部署相同的功能单元、模块或系统,以减轻负载压力。所述服务器包括但不限于在同一个局域网以及通过Internet连接的多个PC机、PC服务器、刀片机、超级计算机等。
以上所述仅为本公开的优选实施例,并不用于限制本公开,对于本领域技术人员而言,本公开可以有各种改动和变化。凡在本公开的精神和原理之内所作的任何修改、等同替换、改进等,均应包含在本公开的保护范围之内。

Claims (9)

1.一种用于存储器的数据编程管理方法,所述存储器包括存储器控制器和存储介质,所述数据编程管理方法由所述存储器控制器执行,所述数据编程管理方法包括:
在所述存储器写数据时获取所述写数据的数据类型;
根据所述写数据的数据类型从预设的多个数据编程描述表中选择目标数据编程描述表,其中,每个所述数据编程描述表包括某一数据类型的写数据进行编程时对应的编程地址信息;
将所述目标数据编程描述表中的编程地址信息转换为存储地址信息,并将所述写数据按照所述存储地址信息写入所述存储介质。
2.根据权利要求1所述的数据编程管理方法,其中,所述编程地址信息包括:对应所述数据类型的写数据进行编程时所需的地址以及编程地址的顺序。
3.根据权利要求2所述的数据编程管理方法,其中,所述数据类型包括:SLC Page、MLCPage、TLC Page和QLC Page中的一种。
4.根据权利要求3所述的数据编程管理方法,其中,所述将所述目标数据编程描述表中的编程地址信息转换为存储地址信息的步骤包括:
根据在先写数据的存储地址信息,将所述目标数据编程描述表中的编程地址信息,依序逐个转换为所述写数据编程时的存储地址信息,
所述存储地址信息表征所述写数据写入所述存储介质的物理地址。
5.根据权利要求2所述的数据编程管理方法,其中,在所述根据所述写数据的数据类型从多个数据编程描述表中选择目标数据编程描述表的步骤之前,所述数据编程管理方法还包括:
初始化所述多个数据编程描述表。
6.根据权利要求5所述的数据编程管理方法,其中,所述初始化所述多个数据编程描述表的步骤包括:
建立对应某一数据类型进行存储编程的编程地址信息;
构建多个数据类型的数据编程描述表,并基于某一数据类型形成与之对应的所述目标数据编程描述表的索引。
7.一种存储器控制器,包括耦接的控制单元和存储单元,所述控制单元执行如1至6任一项所述的数据编程管理方法,所述存储单元用于存储数据编程描述表。
8.一种存储器,包括如权利要求7所述的存储器控制器和用作存储介质的闪存芯片。
9.一种计算机系统,包括主机和如权利要求8所述的存储器。
CN202110655575.7A 2021-06-11 2021-06-11 数据编程管理方法、存储器及其控制器,以及计算机系统 Active CN113419674B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202110655575.7A CN113419674B (zh) 2021-06-11 2021-06-11 数据编程管理方法、存储器及其控制器,以及计算机系统

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202110655575.7A CN113419674B (zh) 2021-06-11 2021-06-11 数据编程管理方法、存储器及其控制器,以及计算机系统

Publications (2)

Publication Number Publication Date
CN113419674A true CN113419674A (zh) 2021-09-21
CN113419674B CN113419674B (zh) 2023-04-11

Family

ID=77788334

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202110655575.7A Active CN113419674B (zh) 2021-06-11 2021-06-11 数据编程管理方法、存储器及其控制器,以及计算机系统

Country Status (1)

Country Link
CN (1) CN113419674B (zh)

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102169466A (zh) * 2010-06-22 2011-08-31 上海盈方微电子有限公司 一种基于页操作的可编程Nandflash控制器
CN110471861A (zh) * 2019-07-10 2019-11-19 华为技术有限公司 一种闪存设备中的数据存储方法及闪存设备
CN112015329A (zh) * 2019-05-29 2020-12-01 爱思开海力士有限公司 存储系统及其操作方法

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102169466A (zh) * 2010-06-22 2011-08-31 上海盈方微电子有限公司 一种基于页操作的可编程Nandflash控制器
CN112015329A (zh) * 2019-05-29 2020-12-01 爱思开海力士有限公司 存储系统及其操作方法
CN110471861A (zh) * 2019-07-10 2019-11-19 华为技术有限公司 一种闪存设备中的数据存储方法及闪存设备

Also Published As

Publication number Publication date
CN113419674B (zh) 2023-04-11

Similar Documents

Publication Publication Date Title
US8166233B2 (en) Garbage collection for solid state disks
US8166258B2 (en) Skip operations for solid state disks
KR100389867B1 (ko) 플래시 메모리 관리방법
US8386698B2 (en) Data accessing method for flash memory and storage system and controller using the same
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
US8645613B2 (en) Data writing method for flash memory and control circuit and storage system using the same
CN106354615B (zh) 固态硬盘日志生成方法及其装置
US8812784B2 (en) Command executing method, memory controller and memory storage apparatus
US8214578B2 (en) Method of storing data into flash memory according to usage patterns of addresses and data storage system using the same
KR100816761B1 (ko) 낸드 플래시 메모리 및 에스램/노어 플래시 메모리를포함하는 메모리 카드 및 그것의 데이터 저장 방법
US20100057979A1 (en) Data transmission method for flash memory and flash memory storage system and controller using the same
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
US9021218B2 (en) Data writing method for writing updated data into rewritable non-volatile memory module, and memory controller, and memory storage apparatus using the same
US7245539B2 (en) Memory card, semiconductor device, and method of controlling semiconductor memory
CN103270500A (zh) 事务日志恢复
US8037236B2 (en) Flash memory writing method and storage system and controller using the same
CN111796759B (zh) 多平面上的片段数据读取的计算机可读取存储介质及方法
CN107943710B (zh) 存储器管理方法及使用所述方法的存储控制器
US7278001B2 (en) Memory card, semiconductor device, and method of controlling semiconductor memory
CN114968096A (zh) 一种存储器的控制方法、存储器与存储系统
CN114036079B (zh) 映射表压缩方法、系统、存储器控制器、固态硬盘及数据读取方法
US9501397B2 (en) Data writing method, memory controller, and memory storage apparatus
CN112230849A (zh) 存储器控制方法、存储器存储装置及存储器控制器
US8589620B2 (en) Data writing method, memory controller, and memory storage apparatus
CN113419674B (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
CB02 Change of applicant information

Address after: 310051 room c1-604, building C, No. 459, Qianmo Road, Xixing street, Binjiang District, Hangzhou, Zhejiang Province

Applicant after: Lianyun Technology (Hangzhou) Co.,Ltd.

Address before: 6 / F, block C1, spotlight center, 459 Qianmo Road, Binjiang District, Hangzhou City, Zhejiang Province, 310051

Applicant before: MAXIO TECHNOLOGY (HANGZHOU) Ltd.

CB02 Change of applicant information
GR01 Patent grant
GR01 Patent grant