[go: up one dir, main page]

CN111399750A - Flash data writing method and computer readable storage medium - Google Patents

Flash data writing method and computer readable storage medium Download PDF

Info

Publication number
CN111399750A
CN111399750A CN201910220318.3A CN201910220318A CN111399750A CN 111399750 A CN111399750 A CN 111399750A CN 201910220318 A CN201910220318 A CN 201910220318A CN 111399750 A CN111399750 A CN 111399750A
Authority
CN
China
Prior art keywords
host write
host
write command
queue
writing
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
CN201910220318.3A
Other languages
Chinese (zh)
Other versions
CN111399750B (en
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.)
Silicon Motion Inc
Original Assignee
Silicon Motion Inc
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 Silicon Motion Inc filed Critical Silicon Motion Inc
Priority to US16/445,702 priority Critical patent/US11288185B2/en
Publication of CN111399750A publication Critical patent/CN111399750A/en
Priority to US17/667,801 priority patent/US11960396B2/en
Application granted granted Critical
Publication of CN111399750B publication Critical patent/CN111399750B/en
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
    • 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
    • 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/0253Garbage collection, i.e. reclamation of unreferenced 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/0604Improving or facilitating administration, e.g. storage management
    • 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/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
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/72Details relating to flash memory management
    • G06F2212/7205Cleaning, compaction, garbage collection, erase control
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/72Details relating to flash memory management
    • G06F2212/7209Validity control, e.g. using flags, time stamps or sequence numbers
    • 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)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Human Computer Interaction (AREA)
  • Techniques For Improving Reliability Of Storages (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Memory System (AREA)

Abstract

The invention provides a data writing method of a flash memory, which is executed by a processing unit and comprises the following steps: before executing a part of logic-physical comparison table updating or garbage recycling program, judging whether a host writing instruction needing immediate processing exists in a submission queue; and when the host write command needing immediate processing exists, executing the host write command in a batch, and then executing the part of the logic-physical comparison table updating or garbage collection program.

Description

闪存数据写入方法及计算机可读取存储介质Flash data writing method and computer readable storage medium

技术领域technical field

本发明涉及存储装置,尤指一种闪存的数据写入方法及计算机可读取存储介质。The present invention relates to a storage device, in particular to a data writing method of a flash memory and a computer-readable storage medium.

背景技术Background technique

闪存通常分为NOR闪存与NAND闪存。NOR闪存为随机存取装置,主装置(Host)可在地址引脚上提供任何存取NOR闪存的地址,并及时地从NOR闪存的数据引脚上获得存储在该地址上的数据。相反地,NAND闪存并非随机存取,而是序列存取。NAND闪存无法像NOR闪存一样,可以存取任何随机地址,主装置反而需要写入序列的字节(Bytes)的值到NAND闪存中,用以定义请求命令(Command)的类型(如,读取、写入、抹除等),以及用在此命令上的地址。地址可指向一个页面(闪存中写入操作的最小数据块)或一个区块(闪存中抹除操作的最小数据块)。Flash memory is usually divided into NOR flash memory and NAND flash memory. The NOR flash memory is a random access device, and the host device (Host) can provide any address for accessing the NOR flash memory on the address pin, and obtain the data stored at the address from the data pin of the NOR flash memory in time. In contrast, NAND flash memory is not random access, but sequential access. NAND flash memory cannot access any random address like NOR flash memory. Instead, the host device needs to write the value of a sequence of bytes (Bytes) into the NAND flash memory to define the type of command requested (eg, read , write, erase, etc.), and the address used on this command. The address can point to a page (the smallest block of data in flash for write operations) or a block (the smallest block of data in flash for erase operations).

数据写入的延迟时间(Latency)是服务质量(Quality of Service QoS)的重要测项之一。此测试可先用4K的数据随机写入存储单元数小时,让存储单元处于脏乱模式(Dirty Mode),再用QD1/QD128的指令深度随机写入4K的数据180秒,并测量延迟时间。由于存储单元处于脏乱模式时,NAND闪存还需要安排时间写入静态随机存取存储器或动态随机存取存储器中的更新后逻辑-物理对照表(Host-Flash H2F Table)至存储单元,用以减少突然断电(Sudden Power Off SPO)后执行突然断电恢复(SPO Recovery SPOR)的时间。此外,NAND闪存于脏乱模式时还需要安排时间执行垃圾回收(Garbage Collection GC)操作,避免存储单元因空间不足而无法写入用户数据。本发明提出一种闪存的数据写入方法及计算器程序产品,用于当存储单元处于脏乱模式时还可以满足延迟时间的测项要求。The latency of data writing (Latency) is one of the important measurement items of Quality of Service QoS. In this test, 4K data can be randomly written to the memory cells for several hours, the memory cells are placed in Dirty Mode, and then the 4K data can be randomly written for 180 seconds with the command depth of QD1/QD128, and the delay time is measured. Since the storage unit is in the dirty mode, the NAND flash memory also needs to arrange time to write the updated logical-physical comparison table (Host-Flash H2F Table) in the static random access memory or the dynamic random access memory to the storage unit, so as to Reduced the time to perform SPO Recovery SPOR after Sudden Power Off SPO. In addition, when the NAND flash memory is in the dirty mode, it is necessary to arrange time to perform a garbage collection (Garbage Collection GC) operation to prevent the storage unit from being unable to write user data due to insufficient space. The present invention provides a data writing method of flash memory and a calculator program product, which are used to meet the measurement requirements of delay time when the storage unit is in the dirty mode.

发明内容SUMMARY OF THE INVENTION

有鉴于此,如何减轻或消除上述相关领域的缺失,实为有待解决的问题。In view of this, how to alleviate or eliminate the above-mentioned deficiencies in related fields is a problem to be solved.

本发明提出一种闪存的数据写入方法,该方法由处理单元在加载并执行软件或固件模块的程序码时实施,包含:在执行一部分的逻辑-物理对照表更新或垃圾回收程序前,判断递交队列中是否存在需要立即处理的主机写指令;以及当存在需要立即处理的该主机写指令时,先以一个批次执行该主机写指令,接着再执行该部分的逻辑-物理对照表更新或垃圾回收程序。The present invention provides a method for writing data in flash memory. The method is implemented by a processing unit when loading and executing program codes of software or firmware modules. Whether there is a host write command that needs to be processed immediately in the submission queue; and when there is a host write command that needs to be processed immediately, first execute the host write command in one batch, and then execute the part of the logical-physical comparison table update or Garbage collector.

本发明另提出一种闪存数据写入的计算机可读取存储介质,用于存储能够被处理单元执行的计算机程序,该计算机程序被该处理单元执行时实现以下步骤:在执行一部分的逻辑-物理对照表更新或垃圾回收程序前,判断递交队列中是否存在需要立即处理的主机写指令;以及当存在需要立即处理的该主机写指令时,先以一个批次执行该主机写指令,接着再执行该部分的逻辑-物理对照表更新或垃圾回收程序。The present invention further provides a computer-readable storage medium written with flash memory data, which is used for storing a computer program executable by a processing unit, and when the computer program is executed by the processing unit, the following steps are implemented: Before the comparison table is updated or the garbage collection program, it is judged whether there is a host write command that needs to be processed immediately in the submission queue; and when there is a host write command that needs to be processed immediately, first execute the host write command in one batch, and then execute it again This part of the logical-physical table update or garbage collector.

上述实施例的优点之一,通过如上所述的判断,可避免因逻辑-物理对照表更新或垃圾回收程序的执行而造成递交队列中的部分主机写指令的等待时间过长。One of the advantages of the above-mentioned embodiment is that, through the above judgment, it can avoid too long waiting time for some host write instructions in the delivery queue due to the update of the logical-physical comparison table or the execution of the garbage collection program.

本发明的其他优点将配合以下的说明和附图进行更详细的解说。Other advantages of the present invention will be explained in more detail in conjunction with the following description and drawings.

附图说明Description of drawings

此处所说明的附图用来提供对本申请的进一步理解,构成本申请的一部分,本申请的示意性实施例及其说明用于解释本申请,并不构成对本申请的不当限定。The drawings described herein are used to provide further understanding of the present application and constitute a part of the present application. The schematic embodiments and descriptions of the present application are used to explain the present application and do not constitute an improper limitation of the present application.

图1为依据本发明实施例的闪存存储器的系统架构示意图。FIG. 1 is a schematic diagram of a system architecture of a flash memory according to an embodiment of the present invention.

图2为闪存接口与LUN的连接示意图。FIG. 2 is a schematic diagram of the connection between the flash memory interface and the LUN.

图3为指令队列的示意图。FIG. 3 is a schematic diagram of an instruction queue.

图4为闪存转换层(Flash Translation Layer FTL)架构的示意图。FIG. 4 is a schematic diagram of a Flash Translation Layer (FTL) architecture.

图5为一些实施方式的数据写入方法的流程图。FIG. 5 is a flowchart of a data writing method of some embodiments.

图6为依据本发明实施例的主机写指令的处理方法流程图。FIG. 6 is a flowchart of a method for processing a host write command according to an embodiment of the present invention.

图7为依据本发明实施例的主机写指令的到达及处理示意图。FIG. 7 is a schematic diagram of the arrival and processing of a host write command according to an embodiment of the present invention.

图8为依据本发明实施例的逻辑-物理对照表(Host-Flash H2F Table)的更新方法流程图。8 is a flowchart of a method for updating a logical-physical comparison table (Host-Flash H2F Table) according to an embodiment of the present invention.

图9为物理存储对照示意图。FIG. 9 is a schematic diagram of physical storage comparison.

图10为依据本发明实施例的垃圾回收(Garbage Collection GC)程序的执行方法流程图。FIG. 10 is a flowchart of a method for executing a garbage collection (Garbage Collection GC) program according to an embodiment of the present invention.

【附图标记列表】【List of reference numerals】

100 电子装置100 Electronics

110 主装置110 Main unit

120、131 随机存取存储器120, 131 Random Access Memory

130 存储装置130 Storage

132 主机接口132 host interface

133 处理单元133 processing unit

135 闪存控制器135 Flash Controller

137 闪存接口137 Flash interface

139 LUN139 LUNs

139#0~139#11 LUN139#0 to 139#11 LUNs

CH#0~CH#3 输出输入通道CH#0~CH#3 Output input channel

CE#0~CE#2 使能信号CE#0~CE#2 enable signal

310 递交队列310 Delivery queue

330 完成队列330 Completion queue

CQH、CQT、SQH、SQT 指针CQH, CQT, SQH, SQT pointers

410、430、450、470 软件或固件模块410, 430, 450, 470 software or firmware modules

S510~S590、S611~S635、S810~S870、S1010~S1070 方法步骤S510~S590, S611~S635, S810~S870, S1010~S1070 Method steps

70 一个批次的主机写指令的执行70 Execution of a batch of host write commands

70a 开始运行时间点70a Start of operation time point

70b、T0、T1、T2、T3 结束运行时间点70b, T0, T1, T2, T3 end running time point

W0~W12 主机写指令W0~W12 Host write command

910 H2F表910 H2F Form

930 物理地址信息930 Physical address information

930-0 (物理)区块编号930-0 (physical) block number

930-1 (物理)页面编号及偏移量930-1 (physical) page number and offset

930-2 (物理)平面编号930-2 (Physical) Plane Number

930-3 逻辑单元编号930-3 Logical Unit Number

具体实施方式Detailed ways

以下将配合相关附图来说明本发明的实施例。在这些附图中,相同的标号表示相同或类似的组件或方法流程。The embodiments of the present invention will be described below with reference to the related drawings. In the figures, the same reference numbers refer to the same or similar components or method flows.

必须了解的是,使用在本说明书中的“包含”、“包括”等词,是用于表示存在特定的技术特征、数值、方法步骤、作业处理、组件和/或组件,但并不排除可加上更多的技术特征、数值、方法步骤、作业处理、组件、组件,或以上的任意组合。It must be understood that words such as "comprising" and "including" used in this specification are used to indicate the existence of specific technical features, values, method steps, job processes, components and/or components, but do not exclude the possibility of Plus more technical features, values, method steps, job processes, components, components, or any combination of the above.

本发明中使用如“第一”、“第二”、“第三”等词是用来修饰权利要求中的组件,并非用来表示之间具有优先权顺序,先行关系,或者是一个组件先于另一个组件,或者是执行方法步骤时的时间先后顺序,仅用来区别具有相同名字的组件。The use of words such as "first", "second" and "third" in the present invention is used to modify the components in the claims, and is not used to indicate that there is a priority order, a precedence relationship between them, or that a component comes first Another component, or the chronological order in which method steps are executed, is only used to distinguish components with the same name.

必须了解的是,当组件描述为“连接”或“耦接”至另一组件时,可以是直接连结、或耦接至其他组件,可能出现中间组件。相反地,当组件描述为“直接连接”或“直接耦接”至另一组件时,其中不存在任何中间组件。使用于描述组件之间关系的其他语词也可类似方式解读,例如“介于”相对于“直接介于”,或者是“邻接”相对于“直接邻接”等等。It must be understood that when an element is described as being "connected" or "coupled" to another element, it can be directly connected or coupled to the other element, and intervening elements may be present. In contrast, when a component is described as being "directly connected" or "directly coupled" to another component, there are no intervening components present. Other words used to describe the relationship between components may also be read in a similar fashion, such as "between" versus "directly intervening," or "adjacent" versus "directly adjoining," and the like.

参考图1。电子装置100包含主装置110、随机存取存储器(Random Access MemoryRAM)120及存储装置130。主装置110操作时可依据其需求而建立队列(Queue)。电子装置100例如是个人计算机、笔记本计算机(Laptop PC)、平板计算机、移动电话、数字相机、数字摄影机等电子产品。随机存取存储器120中的特定部分可配置作为数据缓冲器及队列等。存储装置130可包含处理单元133,也可以还包括随机存取存储器131以提高存储装置130的效能。处理单元133可通过主机接口(Host Interface)132从主装置110接收命令,并据此指示闪存控制器135执行数据读取、写入、抹除等操作。主装置110及处理单元133间可采用通用闪存存储(Universal Flash Storage UFS)、快速非易失存储器(Non-Volatile MemoryExpress NVMe)、通用序列总线(Universal Serial Bus USB)、先进技术附件(advancedtechnology attachment ATA)、序列先进技术附件(serial advanced technologyattachment SATA)、快速周边组件互联(peripheral component interconnect expressPCI-E)等通信协议以进行通信。主装置110及处理单元133中的任一个可使用多种方式实施,如使用通用硬件(例如,单处理器、具平行处理能力的多处理器、图形处理器或其他具运算能力的处理器),并且在执行软件和/或固件指令时,提供之后描述的功能。随机存取存储器120及131可存储执行过程中需要的数据,例如,变量、数据表等。Refer to Figure 1. The electronic device 100 includes a host device 110 , a random access memory (Random Access Memory RAM) 120 and a storage device 130 . The master device 110 may create a queue according to its needs during operation. The electronic device 100 is, for example, an electronic product such as a personal computer, a notebook computer (Laptop PC), a tablet computer, a mobile phone, a digital camera, and a digital video camera. Certain portions of random access memory 120 may be configured as data buffers, queues, and the like. The storage device 130 may include a processing unit 133 , and may also include a random access memory 131 to improve the performance of the storage device 130 . The processing unit 133 may receive commands from the host device 110 through the host interface (Host Interface) 132, and instruct the flash memory controller 135 to perform operations such as data reading, writing, and erasing accordingly. Universal Flash Storage UFS, Non-Volatile Memory Express NVMe, Universal Serial Bus USB, and Advanced Technology Attachment ATA can be used between the host device 110 and the processing unit 133. ), serial advanced technology attachment (serial advanced technology attachment SATA), peripheral component interconnect express PCI-E and other communication protocols for communication. Either of the main device 110 and the processing unit 133 may be implemented using a variety of ways, such as using general purpose hardware (eg, a single processor, multiprocessor capable of parallel processing, graphics processor, or other processor capable of computing) , and, when executing software and/or firmware instructions, provide the functionality described later. The random access memories 120 and 131 can store data required during execution, such as variables, data tables, and the like.

逻辑单元号(Logical Unit Number LUN)139提供大量的存储空间,通常是数百Gigabytes,甚至是Terabytes,可用于存储大量的用户数据,例如高分辨率图片、影片等。LUN139中包含控制电路以及存储器数组(Memory Array),存储器数组中的存储单元(Memory Cells)可为三层式单元(Triple Level Cells,TLCs)或四层式单元(Quad-LevelCells QLCs)。随机存取存储器131可用于缓存主装置110即将写入LUN139的用户数据,从LUN139读取并即将敲出给主装置110的用户数据,以及查找时所需的逻辑-物理对照表(Logical-Physical Mapping Table,L2P表)。随机存取存储器131还可存储在执行软件及固件指令的过程中所需要的数据,例如,变量、数据表等。随机存取存储器131可包含静态随机存取存储器(State Random Access Memory SRAM)、动态随机存取存储器(DynamicRandom Access Memory DRAM),或以上两者。The logical unit number (Logical Unit Number LUN) 139 provides a large amount of storage space, usually hundreds of Gigabytes, or even Terabytes, which can be used to store a large amount of user data, such as high-resolution pictures, movies, and the like. The LUN 139 includes a control circuit and a memory array, and the memory cells in the memory array may be triple level cells (TLCs) or quad-level cells (Quad-Level Cells QLCs). The random access memory 131 can be used to cache the user data that the main device 110 will write to the LUN 139, the user data that is read from the LUN 139 and will be typed out to the main device 110, and the logical-physical comparison table (Logical-Physical) required for searching. Mapping Table, L2P Table). Random access memory 131 may also store data required in the execution of software and firmware instructions, eg, variables, data tables, and the like. The random access memory 131 may include a state random access memory (SRAM), a dynamic random access memory (DRAM), or both.

存储装置130还包含闪存控制器135、闪存接口137及LUN139,并且闪存控制器135通过闪存接口137与LUN139通信,详细来说,可采用双倍数据率(Double Data Rate DDR)通信协议,例如,开放NAND闪存(Open NAND Flash Interface ONFI)、双倍数据率开关(DDRToggle)或其他接口。存储装置130的闪存控制器135通过闪存接口137写入用户数据到LUN139中的指定地址(目的地址),以及从LUN139中的指定地址(来源地址)读取用户数据。闪存接口137使用多个电子信号来协调闪存控制器135与LUN139间的数据与命令传递,包含数据线(Data Line)、时钟信号(clock signal)与控制信号(control signal)。数据线可用以传递命令、地址、读出及写入的数据;控制信号线可用以传递芯片使能(Chip EnableCE)、地址提取使能(Address Latch Enable ALE)、命令提取使能(Command Latch EnableCLE)、写入使能(Write Enable WE)等控制信号。处理单元133与闪存控制器135可分开存在或整合于同一芯片中。The storage device 130 further includes a flash memory controller 135, a flash memory interface 137 and a LUN 139, and the flash memory controller 135 communicates with the LUN 139 through the flash memory interface 137. In detail, a double data rate (Double Data Rate DDR) communication protocol can be used, for example, Open NAND Flash (Open NAND Flash Interface ONFI), Double Data Rate Switch (DDRToggle) or other interfaces. The flash controller 135 of the storage device 130 writes user data to a designated address (destination address) in the LUN 139 through the flash interface 137 , and reads user data from a designated address (source address) in the LUN 139 . The flash memory interface 137 uses a plurality of electronic signals to coordinate data and command transfer between the flash memory controller 135 and the LUN 139 , including data lines, clock signals, and control signals. Data lines can be used to transmit commands, addresses, read and written data; control signal lines can be used to transmit Chip Enable CE, Address Latch Enable ALE, Command Latch Enable CLE ), write enable (Write Enable WE) and other control signals. The processing unit 133 and the flash memory controller 135 may exist separately or be integrated in the same chip.

参考图2,闪存接口137可包含四个输出输入通道(I/O channels,以下简称通道)CH#0至CH#3,每一个通道连接三个LUN,例如,通道CH#0连接LUN139#0、139#4及139#8。需注意的是,为满足不同的系统需求,本领域技术人员可在闪存接口137中设置多个通道,并且将每个通道连接上至少一个LUN,本发明并不因此局限。闪存控制器135可驱动闪存接口137发出使能信号CE#0至CE#2中的一个来使能LUN139#0至139#3、139#4至139#7、或139#8至139#11,接着以并行的方式从使能的LUN读取用户数据,或者写入用户数据至使能的LUN。Referring to FIG. 2 , the flash memory interface 137 may include four I/O channels (I/O channels, hereinafter referred to as channels) CH#0 to CH#3, each channel is connected to three LUNs, for example, channel CH#0 is connected to LUN139#0 , 139#4 and 139#8. It should be noted that, in order to meet different system requirements, those skilled in the art can set multiple channels in the flash memory interface 137, and connect each channel to at least one LUN, and the present invention is not limited thereby. Flash controller 135 may drive flash interface 137 to issue one of enable signals CE#0 to CE#2 to enable LUNs 139#0 to 139#3, 139#4 to 139#7, or 139#8 to 139#11 , and then read user data from the enabled LUN, or write user data to the enabled LUN in parallel.

参考图3,指令队列可包含递交队列(Submission Queue SQ)310及完成队列(Completion Queue CQ)330,分别用以暂存主装置指令以及完成组件(CompletionElement CE)。递交队列310及完成队列330较佳建立在同一装置中,例如,递交队列310及完成队列330较佳建立在主机端(Host Side)的随机存取存储器120中,亦可建立在存储装置130的随机存取存储器131中。递交队列310及完成队列330亦可建立在不同的装置中。递交队列310及完成队列330中的每一者包含多笔项目(Entry)的集合。递交队列310中的每一笔项目可存储一个输出输入指令(I/O Command),如抹除、读取、写入指令等。集合中的项目依序存放。集合的操作基本原则是由结束位置(如指针SQT或CQT所指的位置)新增条目(可称为入列),并且由开始位置(如指针SQH或CQH所指的位置)移除条目(可称为出列)。也就是说,第一个新增至递交队列310的指令,也将会是第一个被移出的。主装置110可写入多个写指令至递交队列310,并且处理单元133从递交队列310读取(或称为提取Fetch)最早到达的写指令并执行。在写指令执行完成后,处理单元133写入完成组件至完成队列330,主装置110可读取或提取完成组件而判断写指令的执行结果。Referring to FIG. 3 , the command queue may include a Submission Queue (SQ) 310 and a Completion Queue (CQ) 330, which are used to temporarily store the host device command and the CompletionElement CE, respectively. The submit queue 310 and the completion queue 330 are preferably created in the same device, for example, the submit queue 310 and the completion queue 330 are preferably created in the random access memory 120 on the host side, or can also be created in the storage device 130 in random access memory 131. The submit queue 310 and the completion queue 330 may also be established in different devices. Each of submit queue 310 and completion queue 330 includes a collection of multiple entries. Each item in the submission queue 310 can store an I/O command, such as an erase, read, write command, and so on. The items in the collection are stored sequentially. The basic principle of the operation of the set is to add an entry (may be called enqueue) from the end position (such as the position pointed to by the pointer SQT or CQT), and remove the entry (such as the position pointed to by the pointer SQH or CQH) ( may be called dequeue). That is, the first instruction added to the submit queue 310 will also be the first to be removed. The host device 110 may write a plurality of write commands to the submit queue 310 , and the processing unit 133 reads (or called fetch fetch) the earliest arriving write command from the submit queue 310 and executes it. After the execution of the write instruction is completed, the processing unit 133 writes the completion element to the completion queue 330, and the host device 110 can read or extract the completion element to determine the execution result of the write instruction.

参考图4,闪存转换层(Flash Translation Layer FTL)架构包含写指令读取模块410、写指令执行模块430、H2F表写入模块450及垃圾回收(Garbage Collection GC)操作模块470。函数HW_PushIOCmdInfoPrdInfo()可包含写指令读取模块410的程序码,并且当处理单元133加载并执行时从递交队列读取指定数目的主机写指令(Host Write Commands),并且将写主机指令欲写入的特定逻辑地址(Logical Address)的用户数据暂存至随机存取存储器131。函数FTL_HandlePrdInfo()可包含写指令执行模块430的程序码,并且当处理单元133加载并执行时依据主机写指令将随机存取存储器131暂存的用户数据通过闪存控制器135及闪存接口137写入LUN139,从闪存控制器135恢复的信息中取得物理地址(Physical Address),接着将逻辑地址及物理地址间的对应关系更新至随机存取存储器131中H2F表的适当位置。函数SaveMap()可包含H2F表写入模块450的程序码,并且当处理单元133加载并执行时将更新过的H2F表通过闪存控制器135及闪存接口137写入LUN139。处理单元133加载并执行GC操作模块470时,将多个物理页面中破碎的用户数据搜集起来,并通过闪存控制器135及闪存接口137将搜集的用户数据写入LUN139中新的物理页面,用以让这些释放出来的物理页面可于抹除后被其他用户数据使用。Referring to FIG. 4 , the Flash Translation Layer (FTL) architecture includes a write command read module 410 , a write command execution module 430 , an H2F table write module 450 and a garbage collection (Garbage Collection GC) operation module 470 . The function HW_PushIOCmdInfoPrdInfo() can include the program code of the write command reading module 410, and when the processing unit 133 loads and executes it, reads a specified number of host write commands (Host Write Commands) from the delivery queue, and writes the host write commands to be written. The user data of the specific logical address (Logical Address) is temporarily stored in the random access memory 131 . The function FTL_HandlePrdInfo() may include the program code of the write instruction execution module 430, and when the processing unit 133 loads and executes the write instruction from the host, the user data temporarily stored in the random access memory 131 is written through the flash controller 135 and the flash interface 137 according to the host write instruction The LUN 139 obtains the physical address (Physical Address) from the information recovered by the flash controller 135 , and then updates the corresponding relationship between the logical address and the physical address to an appropriate position in the H2F table in the random access memory 131 . The function SaveMap( ) may contain the program code of the H2F table writing module 450 and write the updated H2F table to the LUN 139 through the flash controller 135 and the flash interface 137 when the processing unit 133 loads and executes it. When the processing unit 133 loads and executes the GC operation module 470, it collects broken user data in multiple physical pages, and writes the collected user data into a new physical page in the LUN 139 through the flash controller 135 and the flash interface 137, using So that these freed physical pages can be used by other user data after erasing.

在一些实施方式中,处理单元133可于加载并执行控制模块的程序码时实施如图5所示的方法流程。当处理单元133侦测到主装置110开始将主机写指令写入递交队列310时,可反复执行循环(步骤S510至S590),直到递交队列310中不存在任何主机写指令为止(步骤S590中“否”的路径)。在每一回合(Iteration)中,处理单元133可依序执行写指令读取模块410、写指令执行模块430、H2F表写入模块450及GC操作模块470。然而,当H2F表写入模块450或GC操作模块470的运行时间过长,可能使得递交队列310中的主机写指令的等待时间过长,因而造成无法满足服务质量(Quality of Service QoS)的延迟时间测项的要求。此外,由于主装置110可在任意时间点写入任意数目的主机写指令至递交队列310,而主机接口132(可简称为硬件Hardware HW)最多只能读取上限数目的主机写指令。如果主装置110一次发出超过上限数目的主机写指令,主机接口132也只能读取上限数目的主机写指令来让写指令读取模块410处理。剩余的主机写指令只能由指令读取模块410在下一回合处理。由于缺乏每个主机写指令到达递交队列310的时间信息,以至于控制模块(可简称为固件Firmware FW)无法知道从硬件取得的主机写指令已经延迟了多久。In some embodiments, the processing unit 133 may implement the method flow shown in FIG. 5 when loading and executing the program code of the control module. When the processing unit 133 detects that the host device 110 starts to write the host write command into the delivery queue 310, the loop (steps S510 to S590) may be repeatedly executed until there is no host write command in the delivery queue 310 (in step S590 "" No" path). In each iteration (Iteration), the processing unit 133 may execute the write command reading module 410 , the write command executing module 430 , the H2F table writing module 450 and the GC operation module 470 in sequence. However, when the running time of the H2F table writing module 450 or the GC operation module 470 is too long, the waiting time for submitting the host write command in the queue 310 may be too long, thereby causing a delay that cannot meet the quality of service (QoS) requirements. Time metric requirements. In addition, since the host device 110 can write any number of host write commands to the submission queue 310 at any time point, the host interface 132 (referred to as hardware HW for short) can only read the upper limit number of host write commands at most. If the host device 110 issues more than the upper limit number of host write commands at one time, the host interface 132 can only read the upper limit number of host write commands for the write command reading module 410 to process. The remaining host write commands can only be processed by the command read module 410 in the next round. Due to the lack of information on the time when each host write command arrives at the delivery queue 310, the control module (which may be referred to as Firmware FW for short) cannot know how long the host write command obtained from the hardware has been delayed.

为了补足主机写指令到达于递交队列310的时间信息,在一些实施例中,写指令读取模块410可修改为在处理主机写指令的期间附加时间戳到新到达递交队列310的主机写指令。参考图6所示的主机写指令的处理方法的实施例,此方法由处理单元133加载并执行写指令读取模块410的程序码时实施。首先,反复执行一个循环(步骤S611至S613),用于以一个批次(Batch)读取递交队列310中所有需要立即处理的主机写指令。因为硬件的限制,处理单元133每回合读取不超过上限数目的主机写指令。在首次进入循环的步骤S611,处理单元133可从随机存取存储器131读取主机写指令到达递交队列310的时间信息,并且依据时间信息决定需要立即处理的主机写指令。到达递交队列310的时间信息可使用下表1实施:To complement the time information of host write commands arriving at submit queue 310 , in some embodiments, write command reading module 410 may be modified to append a timestamp to newly arriving host write commands in submit queue 310 during processing of the host write commands. Referring to the embodiment of the method for processing a host write instruction shown in FIG. 6 , the method is implemented when the processing unit 133 loads and executes the program code of the write instruction reading module 410 . First, a cycle (steps S611 to S613 ) is repeatedly executed for reading all host write commands that need to be processed immediately in the delivery queue 310 in one batch (Batch). Due to hardware limitations, the processing unit 133 reads no more than the upper limit number of host write instructions per round. In step S611 of entering the loop for the first time, the processing unit 133 may read the time information of the host write command arriving in the submission queue 310 from the random access memory 131, and determine the host write command to be processed immediately according to the time information. Time information to arrive at the submission queue 310 can be implemented using Table 1 below:

表1Table 1

指令集编号instruction set number 主机写指令编号Host write command number 到达时间戳arrival timestamp S0S0 W0-W4W0-W4 T0T0 S1S1 W5-W9W5-W9 T1T1

表1中的每个项目可关联于一个指令集,包含指令集编号、此数据集包含的主机写指令的编号以及关联于所有主机写指令的到达时间戳。例如,指令集“S0”包含主机写指令“W0”至“W4”,并且它们到达递交队列310的时间为“T0”。“W0”至“W4”亦可代表递交队列310中第0至4个项目的主机写指令。处理单元133可使用公式(1)来判断一个指令集中的主机写指令是否需要立即处理:Each entry in Table 1 can be associated with an instruction set, containing the instruction set number, the number of the host write instructions contained in this data set, and the arrival timestamps associated with all host write instructions. For example, the instruction set "S0" contains host write instructions "W0" to "W4", and their arrival time in the commit queue 310 is "T0". "W0" to "W4" may also represent the host write commands that submit the 0th to 4th items in the queue 310. The processing unit 133 can use the formula (1) to determine whether the host write instruction in an instruction set needs to be processed immediately:

Tnow-Ti>TtrTnow-Ti>Ttr

其中,Tnow代表目前时间,i代表正整数,Ti代表递交队列310中第i个主机写指令的到达时间点,Tr代表阀值。阀值的设定可参考延迟时间测项的需求,例如,如果延迟时间测项要求99%的主机写指令的延迟时间需要小于5毫秒(ms),则阀值可设为介于4~5毫秒间的值。当公式(1)的条件满足时,代表递交队列310中第i个主机写指令需要立即处理。Wherein, Tnow represents the current time, i represents a positive integer, Ti represents the arrival time point of the i-th host write command in the delivery queue 310 , and Tr represents a threshold. The setting of the threshold can refer to the requirements of the delay time measurement item. For example, if the delay time measurement item requires that the delay time of 99% of the host write commands needs to be less than 5 milliseconds (ms), the threshold value can be set between 4 and 5 The value in milliseconds. When the condition of formula (1) is satisfied, it means that the i-th host write command in the delivery queue 310 needs to be processed immediately.

在缓存模式(Cache Mode),处理单元133可通过主机接口132从递交队列310取得每个主机写指令,并且依据主机写指令中的地址信息通过主机接口132从随机存取存储器120读取待写入LUN139的用户数据,并存储用户数据至随机存取存储器131。由于用户数据存储至随机存取存储器131的时候即执行完成主机写指令,处理单元133可通过主机接口132写入对应此主机写指令的完成组件(Completion Element CE)至完成队列330。之后,处理单元133可安排时间执行写指令执行模块430的程序码,用于通过闪存控制器135及闪存接口137将随机存取存储器131中暂存的用户数据写入LUN139。In the cache mode (Cache Mode), the processing unit 133 can obtain each host write command from the submission queue 310 through the host interface 132, and read the pending write command from the random access memory 120 through the host interface 132 according to the address information in the host write command. user data into the LUN 139 , and store the user data in the random access memory 131 . Since the completion host write command is executed when the user data is stored in the random access memory 131 , the processing unit 133 can write the Completion Element CE corresponding to the host write command to the completion queue 330 through the host interface 132 . Afterwards, the processing unit 133 can schedule time to execute the program code of the write instruction execution module 430 for writing the user data temporarily stored in the random access memory 131 into the LUN 139 through the flash memory controller 135 and the flash memory interface 137 .

在非缓存模式(Non-cache Mode)或存储装置130不配置暂存用户数据的存储空间,处理单元133通过主机接口132取得一个或多个主机写指令及待写入的用户数据后,可直接跳到执行写指令执行模块430的程序码,用于通过闪存接口137将用户数据写入LUN139。在成功写入LUN139后,处理单元133可转回执行写指令执行模块430的程序码,用于写入对应该(些)主机写指令的完成组件至完成队列330。在一些实施例中,写指令执行模块430及写指令执行模块430可整合为单一模块,而不受限于FTL架构。In the non-cache mode or the storage device 130 is not configured with a storage space for temporarily storing user data, after the processing unit 133 obtains one or more host write commands and the user data to be written through the host interface 132, the processing unit 133 can directly Jump to executing the program code of the write instruction execution module 430 for writing user data to the LUN 139 through the flash memory interface 137 . After successfully writing to the LUN 139 , the processing unit 133 may switch back to executing the program code of the write command execution module 430 for writing the completion components corresponding to the host write command(s) to the completion queue 330 . In some embodiments, the write instruction execution module 430 and the write instruction execution module 430 can be integrated into a single module and are not limited to the FTL architecture.

在循环执行完毕,处理单元133从随机存取存储器131取得代表上一批次的主机写指令的读取结束的时间戳Tpre(步骤S631),更新随机存取存储器131中的到达时间信息,用于删除处理完的主机写指令的记录,以及附加Tpre到递交队列310中的新进主机写指令的记录(步骤S633),及更新Tpre为代表目前时间的时间戳,供下一个批次的主机写指令的执行参考(步骤S635)。After the loop is executed, the processing unit 133 obtains from the random access memory 131 the time stamp Tpre representing the read end of the last batch of host write commands (step S631 ), updates the arrival time information in the random access memory 131, and uses After deleting the record of the processed host write command, and adding Tpre to the record of the new host write command in the submission queue 310 (step S633), and updating Tpre to a timestamp representing the current time for the next batch of hosts The execution reference of the write command (step S635).

以下举实例辅助说明图6所述的方法流程。参考图7,上一个批次的写指令读取模块410的执行结束于时间点T2且这一个批次的写指令读取模块410的执行70开始于时间点70a并结束于时间点T3(70b)。在时间点70a,随机存取存储器131存储上一个批次的主机写指令的执行结束时间戳Tpre为时间点T2,以及如表1所述的主机写指令“W0”至“W9”到达递交队列310的时间信息。假设指令集“S0”(也就是主机写指令“W0”至“W4”)满足公式(1)的条件,需要立即被处理。于是,处理单元133读取递交队列310中的主机写指令“W0”至“W4”(步骤S631)。在接近时间点T3时,主机写指令“W0”至“W4”的读取操作结束。操作结束后,处理单元133从随机存取存储器131读取上一个批次的主机写指令的执行结束时间戳Tpre(=T2)(步骤S633)。假设在时间点T2至T3间,主装置110写入主机写指令“W10”至“W12”至递交队列310,并改变指针SQT,用于指向递交队列310中的第13个项目。借由比较随机存取存储器131中的到达时间信息以及指针SQT目前所指的地址,处理单元131可知道主装置110新写入主机写指令“W10”至“W12”至递交队列310。接着,处理单元131更新到达时间信息如表2所示(步骤S633):The following example is used to assist in explaining the method flow shown in FIG. 6 . Referring to FIG. 7 , the execution of the write instruction reading module 410 of the previous batch ends at time point T2 and the execution 70 of the write instruction reading module 410 of this batch starts at time point 70a and ends at time point T3 (70b ). At time point 70a, the random access memory 131 stores the execution end timestamp Tpre of the last batch of host write commands as time point T2, and the host write commands "W0" to "W9" as described in Table 1 arrive at the submission queue 310 time information. Assuming that the instruction set "S0" (that is, the host write instructions "W0" to "W4") satisfies the condition of the formula (1), it needs to be processed immediately. Then, the processing unit 133 reads the host write commands "W0" to "W4" in the submit queue 310 (step S631). Near the time point T3, the read operation of the host write commands "W0" to "W4" ends. After the operation ends, the processing unit 133 reads the execution end timestamp Tpre (= T2 ) of the last batch of host write commands from the random access memory 131 (step S633 ). Suppose that between time points T2 and T3, the host device 110 writes the host write commands "W10" to "W12" to the submit queue 310, and changes the pointer SQT to point to the thirteenth item in the submit queue 310. By comparing the arrival time information in the random access memory 131 with the address currently pointed by the pointer SQT, the processing unit 131 can know that the host device 110 newly writes the host write commands "W10" to "W12" to the submit queue 310. Next, the processing unit 131 updates the arrival time information as shown in Table 2 (step S633):

表2Table 2

指令集编号instruction set number 主机写指令编号Host write command number 到达时间戳arrival timestamp S1S1 W5-W9W5-W9 T1T1 S2S2 W10-W12W10-W12 T2T2

虽然主机写指令“W10”至“W12”的实际到达时间晚于时间点T2,但由于写指令读取模块410不知道任何主机写指令的实际到达时间,使用最早可能到达时间T2当作时间戳,可降低主机写指令的实际延迟时间超出时间测项需求的可能性。Although the actual arrival time of the host write commands "W10" to "W12" is later than the time point T2, since the write command reading module 410 does not know the actual arrival time of any host write command, the earliest possible arrival time T2 is used as the timestamp , which can reduce the possibility that the actual delay time of the host write command exceeds the time measurement requirement.

虽然图3只显示两个队列310及330,但主机端可依据不同应用需求建立更多数量的递交子队列(Submission Sub-queues)及完成子队列(Completion Sub-queues)。表1可修改为包含不同递交子队列中的主机写指令的到达时间信息,并针对所有递交子队列中的主机写指令是否需要立即处理做总合性的判断,本发明并不因此受限。Although only two queues 310 and 330 are shown in FIG. 3 , the host can create a larger number of Submission Sub-queues and Completion Sub-queues according to different application requirements. Table 1 can be modified to include the arrival time information of the host write commands in different delivery sub-queues, and make an aggregate judgment on whether the host write commands in all the delivery sub-queues need to be processed immediately, and the present invention is not limited by this.

为解决LUN139处于脏乱模式时产生的技术问题,图8及图10所示的方法流程为一种闪存的数据写入方法,此方法由处理单元133加载并执行相关软件或固件模块的程序码时实施,包含以下步骤:在执行一部分的H2F表更新或GC操作前,判断递交队列310中是否存在至少一个需要立即处理的主机写指令;以及当存在需要立即处理的主机写指令时,先以一个批次执行该(些)主机写指令,接着再执行此部分的H2F表更新或GC操作;以及当不存在需要立即处理的主机写指令时,直接执行此部分的H2F表的更新或GC操作。所属技术领域人员理解H2F表更新及GC操作为存储装置130自己启动用以优化存储装置130效能的操作,而不是像主机写指令由主装置110发动。详细说明如下:In order to solve the technical problem generated when the LUN 139 is in the dirty mode, the method flow shown in FIG. 8 and FIG. 10 is a data writing method of a flash memory, and this method is loaded by the processing unit 133 and executes the program code of the relevant software or firmware module. It is implemented at the time of implementation, including the following steps: before executing a part of the H2F table update or GC operation, determine whether there is at least one host write command that needs to be processed immediately in the submission queue 310; and when there is a host write command that needs to be processed immediately, first One batch executes the host write command(s), and then executes the H2F table update or GC operation in this part; and when there is no host write command that needs to be processed immediately, directly executes the H2F table update or GC operation in this part . Those skilled in the art understand that H2F table update and GC operations are operations initiated by the storage device 130 to optimize the performance of the storage device 130 , rather than initiated by the host device 110 like a host write command. Details are as follows:

为避免频繁更新LUN139中的H2F表,处理单元133可暂存全部或部分的H2F表于随机存取存储器131(通常是DRAM),并于写入操作完成后更新暂存H2F表中的内容。为缩短突然断电(Sudden Power Off SPO)后执行突然断电后恢复(SPO Recovery SPOR)的时间,处理单元133每更新一定数目的记录后就要将暂存H2F表的更新后内容写入LUN139。当存储装置130处于脏乱模式时,这样的H2F表的写入操作可能会更频繁。然而,处理单元133及闪存接口137需要一段时间完成整个需要更新部分的写入操作,可能造成递交队列310中的部分主机写指令的等待时间过长而无法满足QoS的延迟时间测项的要求。为了避免如上所述问题,在一些实施例中,H2F表写入模块450可修改为将H2F表中所有更新后的内容分成数段,并且在写入一段更新后内容前先判断是否存在需要立即处理的主机写指令。当存在需要立即处理的主机写指令时,优先处理这些主机写指令。To avoid frequently updating the H2F table in the LUN 139, the processing unit 133 may temporarily store all or part of the H2F table in the random access memory 131 (usually DRAM), and update the contents of the temporarily stored H2F table after the write operation is completed. In order to shorten the time for performing SPO Recovery SPOR after a sudden power failure (Sudden Power Off SPO), the processing unit 133 will write the updated content of the temporary H2F table into the LUN 139 after updating a certain number of records. . Such H2F table write operations may be more frequent when storage device 130 is in dirty mode. However, the processing unit 133 and the flash memory interface 137 need a period of time to complete the entire write operation of the part that needs to be updated, which may cause the waiting time of some host write commands in the delivery queue 310 to be too long to meet the delay time measurement requirement of QoS. In order to avoid the above problems, in some embodiments, the H2F table writing module 450 can be modified to divide all the updated content in the H2F table into several segments, and determine whether there is a need for immediate Handles the host write command. When there are host write commands that need to be processed immediately, these host write commands are processed first.

参考图9,H2F表910较佳依照顺序存储对应于每一逻辑地址(或逻辑区块地址Logical Block Address LBA)的物理地址信息。H2F表910所需的空间较佳与逻辑地址的总数成正比。逻辑地址可以逻辑区块地址表示,每一个LBA对应到一个固定大小的逻辑区块,例如512字节(Bytes),并存储至物理地址。举例来说,H2F表910依序存储从LBA#0至LBA#65535的物理地址信息。数个连续逻辑地址(例如LBA#0至LBA#7)的数据可形成一个主页面(Host Page)。物理地址信息330例如包括四个字节,其中,930-0记录(物理)区块编号((Physical)Block Number)),930-1记录(物理)页面编号及偏移量(offset);930-2记录(物理)平面编号,930-3记录逻辑单元编号以及输出输入通道编号等等。例如,对应于LBA#2的物理地址信息930可指向区块950中的一个局部951。Referring to FIG. 9, the H2F table 910 preferably stores physical address information corresponding to each logical address (or Logical Block Address LBA) in order. The space required for H2F table 910 is preferably proportional to the total number of logical addresses. The logical address can be represented by a logical block address, and each LBA corresponds to a logical block of a fixed size, such as 512 bytes (Bytes), and is stored in a physical address. For example, the H2F table 910 sequentially stores physical address information from LBA#0 to LBA#65535. Data of several consecutive logical addresses (eg LBA#0 to LBA#7) can form a host page. The physical address information 330 includes, for example, four bytes, wherein 930-0 records the (physical) block number ((Physical) Block Number), and 930-1 records the (physical) page number and offset (offset); 930 -2 records the (physical) plane number, 930-3 records the logical unit number and the output input channel number and so on. For example, physical address information 930 corresponding to LBA #2 may point to a local 951 in block 950 .

参考图8所示的H2F表的更新方法的实施例,此方法由处理单元133加载并执行H2F表写入模块450的程序码时实施。处理单元133可反复执行一个循环(步骤S810至S870),用于分段写入H2F表中所有更新后的内容至LUN139。例如,暂存H2F表中关于LBA#0至LBA#2047中的物理地址信息被更新时,处理单元133可于一个批次先写入关于LBA#0至LBA#1023(也就是第一段)的物理地址信息,并且于下一个批次写入关于LBA#1028至LBA#2047(也就是第二段)的物理地址信息。在每一回合,处理单元133先判断是否存在需要立即处理的主机写指令(步骤S810)。主机写指令的判断可参考如上所述表1、步骤S613及公式(1)的说明,为求简明不再赘述。当存在需要立即处理的主机写指令时(步骤S810中“是”的路径),处理单元133先读取需要立即处理的主机写指令(步骤S830),接着再存储H2F表中一段更新后的内容至LUN139(步骤S850)。当不存在需要立即处理的主机写指令时(步骤S810中“否”的路径),直接存储H2F表中一段更新后的内容至LUN139(步骤S850)。Referring to the embodiment of the H2F table updating method shown in FIG. 8 , the method is implemented when the processing unit 133 loads and executes the program code of the H2F table writing module 450 . The processing unit 133 may repeatedly execute a loop (steps S810 to S870 ) for segmenting and writing all the updated contents in the H2F table to the LUN 139 . For example, when the physical address information about LBA#0 to LBA#2047 in the temporary H2F table is updated, the processing unit 133 may first write the information about LBA#0 to LBA#1023 (ie, the first segment) in one batch. physical address information, and write the physical address information about LBA#1028 to LBA#2047 (that is, the second segment) in the next batch. In each round, the processing unit 133 first determines whether there is a host write command that needs to be processed immediately (step S810). For the determination of the host write command, reference may be made to the descriptions in Table 1, step S613 and formula (1) above, which will not be repeated for brevity. When there is a host write command that needs to be processed immediately (the "Yes" path in step S810 ), the processing unit 133 first reads the host write command that needs to be processed immediately (step S830 ), and then stores the updated content in the H2F table to LUN 139 (step S850). When there is no host write command that needs to be processed immediately ("No" path in step S810), a segment of updated content in the H2F table is directly stored to the LUN 139 (step S850).

当存储装置130处于脏乱模式时,LUN139中的许多物理页面可能包含有效及无效区段(又称为过期区段),其中,有效区段存储有效的用户数据,无效区段存储无效的(旧的)用户数据。当处理单元133侦测到LUN139的可用空间不足时,可指示闪存控制器135读取并搜集来源区块中有效区段中的用户数据,接着,指示闪存控制器135重新写入搜集起来的有效的用户数据至主动区块(或目的区块)的空物理页面,使得这些包含无效的用户数据的数据区块(来源区块)可变更成为闲置区块。之后,闲置区块于抹除后,可作为主动区块以提供数据存储空间。如上所述的程序称为垃圾回收。When storage device 130 is in dirty mode, many physical pages in LUN 139 may contain valid and invalid sections (also called expired sections), where valid sections store valid user data and invalid sections store invalid ( old) user data. When the processing unit 133 detects that the free space of the LUN 139 is insufficient, it can instruct the flash controller 135 to read and collect the user data in the valid sectors in the source block, and then instruct the flash controller 135 to rewrite the collected valid sectors. The user data is transferred to the empty physical pages of the active block (or destination block), so that these data blocks (source blocks) containing invalid user data can be changed into idle blocks. After that, after erasing, the idle block can be used as an active block to provide data storage space. A procedure like the above is called garbage collection.

然而,处理单元133及闪存接口137需要一段时间完成整个GC程序,可能造成递交队列310中的部分主机写指令的等待时间过长而无法满足QoS的延迟时间测项的要求。为了避免如上所述问题,在一些实施例中,GC操作模块470可修改为将整个垃圾回收程序分成数个阶段,并且在执行一个阶段的工作前先判断是否存在需要立即处理的主机写指令。当存在需要立即处理的主机写指令时,优先处理这些主机写指令。However, the processing unit 133 and the flash memory interface 137 need a period of time to complete the entire GC procedure, which may cause the waiting time of some host write commands in the submission queue 310 to be too long to meet the delay time requirement of QoS. In order to avoid the above problems, in some embodiments, the GC operation module 470 can be modified to divide the entire garbage collection process into several stages, and determine whether there is a host write command that needs to be processed immediately before executing the work of one stage. When there are host write commands that need to be processed immediately, these host write commands are processed first.

在一些实施例中,整个GC程序可分为五个阶段的操作:处理单元133可在第一阶段决定有效的用户数据在来源区块的来源地址,以及目的区块的目的地址。在第二阶段,处理单元133可指示闪存控制器135从LUN139的来源地址读取用户数据,并且指示闪存控制器135将读取的用户数据写入LUN139的目的地址。在第三及第四阶段,处理单元133可分别更新H2F表及物理-逻辑对照表(Physical-Logical Mapping Table,P2L表)。处理单元133可于第五阶段将目的区块变更为闲置区块。以上的五个阶段仅为示例,本领域技术人员可依据处理单元133、闪存控制器135及闪存接口137的工作速度在GC操作模块470中将几个阶段合并成单一阶段,或者将一个阶段拆成数个子阶段。此外,GC操作模块470可根据处理状态优化这五个阶段的执行顺序,例如,将第一至第二阶段安排成一个循环,直到目的区块无法再写入来自来源区块的用户数据后,再执行第三至第五阶段。In some embodiments, the entire GC procedure can be divided into five stages of operations: the processing unit 133 can determine the source address of the valid user data in the source block and the destination address of the destination block in the first stage. In the second stage, the processing unit 133 may instruct the flash controller 135 to read user data from the source address of the LUN 139 and instruct the flash controller 135 to write the read user data to the destination address of the LUN 139 . In the third and fourth stages, the processing unit 133 can update the H2F table and the Physical-Logical Mapping Table (P2L table) respectively. The processing unit 133 may change the target block to an idle block in the fifth stage. The above five stages are only examples, and those skilled in the art can combine several stages into a single stage in the GC operation module 470 according to the working speed of the processing unit 133, the flash memory controller 135 and the flash memory interface 137, or split one stage into a single stage. into several sub-stages. In addition, the GC operation module 470 can optimize the execution sequence of the five stages according to the processing state. For example, the first to second stages are arranged in a cycle until the destination block can no longer write user data from the source block. Then perform the third to fifth stages.

参考图10所示的GC程序的执行方法的实施例,此方法由处理单元133加载并执行GC操作模块470的程序码时实施。处理单元133可反复执行一个循环(步骤S1010至S1070),用于分阶段执行GC程序。在每一批次,处理单元133先判断是否存在需要立即处理的主机写指令(步骤S1010)。主机写指令的判断可参考如上所述表1、步骤S613及公式(1)的说明,为求简明不再赘述。当存在需要立即处理的主机写指令时(步骤S1010中“是”的路径),处理单元133先读取需要立即处理的主机写指令(步骤S1030),接着再执行第一个或下一个阶段的GC操作(步骤S1050)。当不存在需要立即处理的主机写指令时(步骤S1010中“否”的路径),直接执行第一个或下一个阶段的GC操作(步骤S1050)。Referring to the embodiment of the execution method of the GC program shown in FIG. 10 , the method is implemented when the processing unit 133 loads and executes the program code of the GC operation module 470 . The processing unit 133 may repeatedly execute a cycle (steps S1010 to S1070 ) for executing the GC procedure in stages. In each batch, the processing unit 133 first determines whether there is a host write command that needs to be processed immediately (step S1010 ). For the determination of the host write command, reference may be made to the descriptions in Table 1, step S613 and formula (1) above, which will not be repeated for brevity. When there is a host write command that needs to be processed immediately (the "Yes" path in step S1010 ), the processing unit 133 first reads the host write command that needs to be processed immediately (step S1030 ), and then executes the first or next stage of the write command. GC operation (step S1050). When there is no host write command that needs to be processed immediately (the "No" path in step S1010 ), the GC operation of the first or next stage is directly executed (step S1050 ).

在步骤S830或S1030的一些实施例,处理单元133可调用并执行函数HW_PushIOCmdInfoPrdInfo(),用于完成如图6所述的方法步骤。在步骤S830或S1030的另一些实施例,H2F表写入模块450或GC操作模块470可嵌入如图6所述的方法步骤的程序码,以供处理单元133执行。In some embodiments of step S830 or S1030, the processing unit 133 may call and execute the function HW_PushIOCmdInfoPrdInfo( ) to complete the method steps described in FIG. 6 . In other embodiments of step S830 or S1030, the H2F table writing module 450 or the GC operation module 470 may embed the program codes of the method steps described in FIG. 6 for the processing unit 133 to execute.

本发明所述的方法中的全部或部分步骤可以计算器程序实现,例如计算机的操作系统、计算机中特定硬件的驱动程序、或软件程序。此外,也可实现在如上所示的其他类型程序。所属技术领域具有通常知识者可将本发明实施例的方法撰写成计算器程序,为求简明不再加以描述。依据本发明实施例方法实施的计算器程序可存储在适当的计算机可读取数据载体,例如DVD、CD-ROM、USB、硬盘,亦可置于可通过网络(例如,互联网,或其他适当载体)存取的网络服务器。All or part of the steps in the method of the present invention can be implemented by a computer program, such as an operating system of a computer, a driver program of specific hardware in the computer, or a software program. In addition, other types of programs as shown above can also be implemented. Those skilled in the art can write the method of the embodiment of the present invention into a calculator program, which will not be described for the sake of brevity. The calculator program implemented by the method according to the embodiment of the present invention can be stored in a suitable computer-readable data carrier, such as DVD, CD-ROM, USB, hard disk, or can be placed on a computer that can be accessed through a network (for example, the Internet, or other suitable carrier). ) to access the web server.

虽然图1中包含了以上描述的组件,但不排除在不违反发明的精神下,使用更多其他的附加组件,已达成更佳的技术效果。此外,虽然图6、图8及图10的流程图采用指定的顺序来执行,但是在不违反发明精神的情况下,所属技术领域的技术人员可以在达到相同效果的前提下,修改这些步骤间的顺序,所以,本发明并不局限于仅使用如上所述的顺序。此外,所属技术领域的技术人员也可以将若干步骤整合为一个步骤,或者是除了这些步骤外,循序或平行地执行更多步骤,本发明也不因此而局限。Although the components described above are included in FIG. 1 , it is not excluded that more other additional components can be used to achieve better technical effects without violating the spirit of the invention. In addition, although the flowcharts in FIGS. 6 , 8 and 10 are executed in the specified order, those skilled in the art can modify the steps between these steps under the premise of achieving the same effect without violating the spirit of the invention. order, therefore, the present invention is not limited to use only the above-mentioned order. In addition, those skilled in the art can also integrate several steps into one step, or in addition to these steps, perform more steps sequentially or in parallel, and the present invention is not limited thereby.

虽然本发明使用以上实施例进行说明,但需要注意的是,这些描述并非用于限缩本发明。相反地,此发明涵盖了所属技术领域中的技术人员显而易见的修改与相似设置。所以,权利要求范围须以最宽广的方式解释来包含所有显而易见的修改与相似设置。Although the present invention is described using the above embodiments, it should be noted that these descriptions are not intended to limit the present invention. On the contrary, this invention covers modifications and similar arrangements obvious to those skilled in the art. Therefore, the scope of the claims is to be construed in the broadest manner so as to encompass all obvious modifications and similar arrangements.

Claims (16)

1. A flash memory data writing method implemented by a processing unit when loading and executing program codes of a software or firmware module, comprising:
before executing a part of logic-physical comparison table updating or garbage recycling program, judging whether a host writing instruction needing immediate processing exists in a submission queue; and
when the host write command needing immediate processing exists, the host write command is executed in a batch, and then the logic-physical comparison table updating or garbage collection program of the part is executed.
2. The method of claim 1, comprising:
when there is no host write instruction that needs immediate processing, the logical-to-physical lookup table update or garbage collection procedure for that portion is performed.
3. The method as claimed in any one of claims 1 to 2, wherein the following formula is used to determine whether the host write command requiring immediate processing exists in the delivery queue:
Tnow-Ti>Ttr
wherein Tnow represents the current time, i represents a positive integer, Ti represents the arrival time point of the ith host write instruction in the submission queue, and Tr represents a threshold value; when the condition of the formula is satisfied, it represents that the ith host write instruction in the submission queue needs to be processed immediately.
4. The method as claimed in claim 3, wherein the arrival time of each host write command in the issue queue is the time point of the last batch of host write commands when the processing unit detects that the host write command entered the issue queue.
5. The method of any of claims 1-2, wherein the partial logical-to-physical mapping table update comprises writing physical address information associated with a contiguous segment of logical addresses to the memory unit via the flash interface.
6. The method as claimed in any one of claims 1 to 2, wherein the garbage collection process is divided into a plurality of stages, and the part of the garbage collection process comprises a one-stage operation.
7. The method of claim 6, wherein the multi-stage operations comprise: determining a source address of a segment containing valid user data and a destination address of an empty physical page of an idle block or an active block; instructing a flash memory controller to read user data from the source address of a memory cell and to write the read user data to the destination address of the memory cell; updating a logic-physical comparison table; or instruct the flash memory controller to erase the data block containing the source address in the memory unit.
8. The method of any of claims 1-2, wherein performing each of the host write commands comprises retrieving the host write command from the delivery queue through a host interface; reading user data to be written into the storage unit from the random access memory through the host interface according to the address information in the host write command; storing the user data in a random access memory; and writing a completion component corresponding to the host write instruction into a completion queue through the host interface.
9. The method of any of claims 1-2, wherein performing each of the host write commands comprises retrieving the host write command from the delivery queue through a host interface; reading user data to be written into the storage unit from the random access memory through the host interface according to the address information in the host write command; writing the user data to the storage unit through a flash memory interface; and writing a completion component corresponding to the host write instruction into a completion queue through the host interface.
10. A computer-readable storage medium into which flash data is written, for storing a computer program executable by a processing unit, the computer program, when executed by the processing unit, implementing the steps of:
before executing a part of logic-physical comparison table updating or garbage recycling program, judging whether a host writing instruction needing immediate processing exists in a submission queue; and
when the host write command needing immediate processing exists, the host write command is executed in a batch, and then the logic-physical comparison table updating or garbage collection program of the part is executed.
11. The computer-readable storage medium for writing data into a flash memory of claim 10, wherein the following formula is used to determine whether the host write command requiring immediate processing exists in the delivery queue:
Tnow-Ti>Ttr
wherein Tnow represents the current time, i represents a positive integer, Ti represents the arrival time point of the ith host write instruction in the submission queue, and Tr represents a threshold value; when the condition of the formula is satisfied, it represents that the ith host write instruction in the submission queue needs to be processed immediately.
12. The computer-readable storage medium of claim 11, wherein the time of arrival of each host write command in the issue queue is a time of completion of execution of a previous batch of host write commands when the processing unit detects that the host write command entered the issue queue.
13. The computer-readable storage medium of claim 10, wherein the partial logical-to-physical mapping table update comprises writing physical address information associated with a contiguous segment of logical addresses to the memory unit via the flash interface.
14. The computer-readable storage medium of claim 10, wherein the garbage collection process is divided into a plurality of stages, and the portion of the garbage collection process comprises a stage of operation.
15. The computer-readable storage medium of any of claims 10 to 14, wherein performing each of the host write commands comprises retrieving the host write command from the delivery queue via a host interface; reading user data to be written into the storage unit from the random access memory through the host interface according to the address information in the host write command; storing the user data in a random access memory; and writing a completion component corresponding to the host write instruction into a completion queue through the host interface.
16. The computer-readable storage medium of any of claims 10 to 14, wherein performing each of the host write commands comprises retrieving the host write command from the delivery queue via a host interface; reading user data to be written into the storage unit from the random access memory through the host interface according to the address information in the host write command; writing the user data to the storage unit through a flash memory interface; and writing a completion component corresponding to the host write instruction into a completion queue through the host interface.
CN201910220318.3A 2019-01-03 2019-03-22 Flash memory data writing method and computer readable storage medium Active CN111399750B (en)

Priority Applications (2)

Application Number Priority Date Filing Date Title
US16/445,702 US11288185B2 (en) 2019-01-03 2019-06-19 Method and computer program product for performing data writes into a flash memory
US17/667,801 US11960396B2 (en) 2019-01-03 2022-02-09 Method and computer program product for performing data writes into a flash memory

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US201962787810P 2019-01-03 2019-01-03
US62/787,810 2019-01-03

Publications (2)

Publication Number Publication Date
CN111399750A true CN111399750A (en) 2020-07-10
CN111399750B CN111399750B (en) 2023-05-26

Family

ID=71428322

Family Applications (2)

Application Number Title Priority Date Filing Date
CN201910220318.3A Active CN111399750B (en) 2019-01-03 2019-03-22 Flash memory data writing method and computer readable storage medium
CN201910486615.2A Active CN111399752B (en) 2019-01-03 2019-06-05 Control devices and methods for different types of storage units

Family Applications After (1)

Application Number Title Priority Date Filing Date
CN201910486615.2A Active CN111399752B (en) 2019-01-03 2019-06-05 Control devices and methods for different types of storage units

Country Status (2)

Country Link
CN (2) CN111399750B (en)
TW (3) TWI739075B (en)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN114490106A (en) * 2020-11-13 2022-05-13 瑞昱半导体股份有限公司 Information exchange system and method
CN115617706A (en) * 2021-07-13 2023-01-17 美光科技公司 Optimizing garbage collection using logical to physical table searches

Families Citing this family (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN111949580B (en) * 2020-08-12 2021-11-12 深圳安捷丽新技术有限公司 Multi-frequency memory interface and configuration method thereof
CN114327240B (en) 2020-09-29 2024-12-06 慧荣科技股份有限公司 Computer readable storage medium, data storage method and device for flash memory
TWI754396B (en) * 2020-09-29 2022-02-01 慧榮科技股份有限公司 Method and apparatus and computer program product for storing data in flash memory
CN112379830B (en) * 2020-11-03 2022-07-26 成都佰维存储科技有限公司 Method and device for creating effective data bitmap, storage medium and electronic equipment

Citations (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20040215914A1 (en) * 2003-04-23 2004-10-28 Dussud Patrick H. Systems and methods for multiprocessor scalable write barrier
US20080034175A1 (en) * 2006-08-04 2008-02-07 Shai Traister Methods for phased garbage collection
CN102375779A (en) * 2010-08-16 2012-03-14 深圳市朗科科技股份有限公司 Data processing method and data processing module
CN102799534A (en) * 2012-07-18 2012-11-28 上海宝存信息科技有限公司 Storage system and method based on solid state medium and cold-hot data identification method
US20130198416A1 (en) * 2012-01-27 2013-08-01 Marvell World Trade Ltd. Systems And Methods For Dynamic Priority Control
US20150301763A1 (en) * 2014-04-16 2015-10-22 Sandisk Technologies Inc. Storage Module and Method for Adaptive Burst Mode
US20160011966A1 (en) * 2013-10-29 2016-01-14 Seagate Technology Llc Solid state memory command queue in hybrid device
CN107844431A (en) * 2017-11-03 2018-03-27 合肥兆芯电子有限公司 Map table updating method, memorizer control circuit unit and memory storage apparatus

Family Cites Families (17)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8296467B2 (en) * 2000-01-06 2012-10-23 Super Talent Electronics Inc. Single-chip flash device with boot code transfer capability
KR101404083B1 (en) * 2007-11-06 2014-06-09 삼성전자주식회사 Semiconductor disk and method of operation thereof
US7409489B2 (en) * 2005-08-03 2008-08-05 Sandisk Corporation Scheduling of reclaim operations in non-volatile memory
US7716411B2 (en) * 2006-06-07 2010-05-11 Microsoft Corporation Hybrid memory device with single interface
US7441071B2 (en) * 2006-09-28 2008-10-21 Sandisk Corporation Memory systems for phased garbage collection using phased garbage collection block or scratch pad block as a buffer
CN101599295B (en) * 2008-06-02 2011-12-07 联阳半导体股份有限公司 integrated storage device and control method thereof
TWI442222B (en) * 2010-07-21 2014-06-21 Silicon Motion Inc Flash memory device and method for managing a flash memory device
US9417820B2 (en) * 2012-12-06 2016-08-16 Kabushiki Kaisha Toshiba Low-overhead storage of a hibernation file in a hybrid disk drive
US9645895B2 (en) * 2013-12-26 2017-05-09 Silicon Motion, Inc. Data storage device and flash memory control method
CN104361113B (en) * 2014-12-01 2017-06-06 中国人民大学 A kind of OLAP query optimization method under internal memory flash memory mixing memory module
CN106326136A (en) * 2015-07-02 2017-01-11 广明光电股份有限公司 Method for collecting garbage blocks by solid state disk
US20170060434A1 (en) * 2015-08-27 2017-03-02 Samsung Electronics Co., Ltd. Transaction-based hybrid memory module
US10409719B2 (en) * 2016-03-17 2019-09-10 Samsung Electronics Co., Ltd. User configurable passive background operation
TWI595412B (en) * 2016-09-09 2017-08-11 大心電子(英屬維京群島)股份有限公司 Data transmitting method, memory storage device and memory control circuit unit
US10359933B2 (en) * 2016-09-19 2019-07-23 Micron Technology, Inc. Memory devices and electronic systems having a hybrid cache including static and dynamic caches with single and multiple bits per cell, and related methods
US10359953B2 (en) * 2016-12-16 2019-07-23 Western Digital Technologies, Inc. Method and apparatus for offloading data processing to hybrid storage devices
CN108959108B (en) * 2017-05-26 2021-08-24 上海宝存信息科技有限公司 Solid state disk access method and device using same

Patent Citations (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20040215914A1 (en) * 2003-04-23 2004-10-28 Dussud Patrick H. Systems and methods for multiprocessor scalable write barrier
US20080034175A1 (en) * 2006-08-04 2008-02-07 Shai Traister Methods for phased garbage collection
CN102375779A (en) * 2010-08-16 2012-03-14 深圳市朗科科技股份有限公司 Data processing method and data processing module
US20130198416A1 (en) * 2012-01-27 2013-08-01 Marvell World Trade Ltd. Systems And Methods For Dynamic Priority Control
CN102799534A (en) * 2012-07-18 2012-11-28 上海宝存信息科技有限公司 Storage system and method based on solid state medium and cold-hot data identification method
US20160011966A1 (en) * 2013-10-29 2016-01-14 Seagate Technology Llc Solid state memory command queue in hybrid device
US20150301763A1 (en) * 2014-04-16 2015-10-22 Sandisk Technologies Inc. Storage Module and Method for Adaptive Burst Mode
CN107844431A (en) * 2017-11-03 2018-03-27 合肥兆芯电子有限公司 Map table updating method, memorizer control circuit unit and memory storage apparatus

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN114490106A (en) * 2020-11-13 2022-05-13 瑞昱半导体股份有限公司 Information exchange system and method
CN115617706A (en) * 2021-07-13 2023-01-17 美光科技公司 Optimizing garbage collection using logical to physical table searches
CN115617706B (en) * 2021-07-13 2025-01-14 美光科技公司 Optimizing garbage collection using logical to physical table searches

Also Published As

Publication number Publication date
TWI739075B (en) 2021-09-11
TWI719494B (en) 2021-02-21
TWI828963B (en) 2024-01-11
TW202026893A (en) 2020-07-16
CN111399752A (en) 2020-07-10
CN111399750B (en) 2023-05-26
TW202026891A (en) 2020-07-16
TW202137017A (en) 2021-10-01
CN111399752B (en) 2023-11-28

Similar Documents

Publication Publication Date Title
CN111399750B (en) Flash memory data writing method and computer readable storage medium
TWI678618B (en) Method and apparatus for performing operations to namespaces of a flash memory device
US9772802B2 (en) Solid-state device management
US11675698B2 (en) Apparatus and method and computer program product for handling flash physical-resource sets
US20110208898A1 (en) Storage device, computing system, and data management method
US11960396B2 (en) Method and computer program product for performing data writes into a flash memory
KR101811297B1 (en) Memory controller controlling a nonvolatile memory
CN110989918B (en) Write control method, data storage device and controller thereof
CN111897743B (en) Data storage device and loading method of logical-to-physical address mapping table
TWI726314B (en) A data storage device and a data processing method
US11537328B2 (en) Method and apparatus for executing host commands
US11494113B2 (en) Computer program product and method and apparatus for scheduling execution of host commands
CN106775436A (en) Data access method, memory control circuit unit and memory
TWI792534B (en) Method of performing garbage collection with partial clean operation and related controller and storage system
US9575883B2 (en) Control device, storage device, and storage control method
CN112578993B (en) Method and memory device for processing programming errors of multi-plane NVM
JP6215631B2 (en) Computer system and data management method thereof
US11941246B2 (en) Memory system, data processing system including the same, and operating method thereof
CN112099731B (en) Data storage device and data processing method
TWI758745B (en) Computer program product and method and apparatus for scheduling executions of host commands
US20250123959A1 (en) Memory controllers and operation methods thereof and memory systems
CN111159065A (en) Hardware buffer management unit with key word (BMU)
TW202422344A (en) Method and computer program product and apparatus for executing host commands
CN118069028A (en) Storage medium, method and device for executing host command

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