TWI739075B - Method and computer program product for performing data writes into a flash memory - Google Patents

Method and computer program product for performing data writes into a flash memory Download PDF

Info

Publication number
TWI739075B
TWI739075B TW108109906A TW108109906A TWI739075B TW I739075 B TWI739075 B TW I739075B TW 108109906 A TW108109906 A TW 108109906A TW 108109906 A TW108109906 A TW 108109906A TW I739075 B TWI739075 B TW I739075B
Authority
TW
Taiwan
Prior art keywords
write command
host
host write
flash memory
data
Prior art date
Application number
TW108109906A
Other languages
Chinese (zh)
Other versions
TW202026891A (en
Inventor
黃國庭
Original Assignee
慧榮科技股份有限公司
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 慧榮科技股份有限公司 filed Critical 慧榮科技股份有限公司
Publication of TW202026891A publication Critical patent/TW202026891A/en
Application granted granted Critical
Publication of TWI739075B publication Critical patent/TWI739075B/en

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

Abstract

A method for performing data writes of a flash memory device, performed by a processing unit, includes: determining whether a host write command of a submission queue has required to execute immediately before an execution of a portion of Host-Flash (H2F) table update or Garbage Collection (GC) process; and when the determination is positive, executing the host write command that has required to execute immediately in a batch, and then, executing the portion of H2F table update or GC process.

Description

閃存的資料寫入方法及電腦程式產品 Flash memory data writing method and computer program product

本發明涉及儲存裝置,尤指一種閃存的資料寫入方法及電腦程式產品。 The invention relates to a storage device, in particular to a flash memory data writing method and a computer program product.

閃存通常分為NOR閃存與NAND閃存。NOR閃存為隨機存取裝置,中央處理器(Host)可於位址腳位上提供任何存取NOR閃存的位址,並及時地從NOR閃存的資料腳位上獲得儲存於該位址上的資料。相反地,NAND閃存並非隨機存取,而是序列存取。NAND閃存無法像NOR閃存一樣,可以存取任何隨機位址,中央處理器反而需要寫入序列的位元組(Bytes)的值到NAND閃存中,用以定義請求命令(Command)的類型(如,讀取、寫入、抹除等),以及用在此命令上的位址。位址可指向一個頁面(閃存中寫入作業的最小資料塊)或一個區塊(閃存中抹除作業的最小資料塊)。 Flash memory is generally divided into NOR flash memory and NAND flash memory. NOR flash memory is a random access device. The central processing unit (Host) can provide any address to access the NOR flash memory on the address pin, and obtain the data stored at that address from the data pin of the NOR flash memory in time material. On the contrary, NAND flash memory is not random access, but serial access. NAND flash memory cannot access any random address like NOR flash memory. Instead, the central processing unit needs to write the value of the sequence of bytes (Bytes) into the NAND flash memory to define the type of request command (Command) (such as , Read, write, erase, etc.), and the address used in this command. The address can point to a page (the smallest data block for a write operation in the flash memory) or a block (the smallest data block for an erase operation in the flash memory).

資料寫入的延遲時間(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)操作,避免儲存單元因空間不足而無法寫入使用者資料。本發明提出一種閃存的資料寫入方法及電腦程式產品,用於當儲存單元處於髒亂模式時還可以滿足延遲時間的測項要求。 Latency of data writing is one of the important measurement items of Quality of Service QoS. In this test, 4K data can be randomly written into the storage unit for several hours, and the storage unit is in Dirty Mode. Then, the QD1/QD128 command depth can be used to randomly write 4K data for 180 seconds, and the delay time can be measured. Because the storage unit is in the dirty mode, 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 dynamic random access memory to the storage unit. It is used to reduce the time to perform SPO Recovery SPOR after Sudden Power Off SPO. In addition, NAND flash memory needs time to be arranged in the dirty mode Perform garbage collection (Garbage Collection GC) operation to avoid the storage unit being unable to write user data due to insufficient space. The present invention provides a flash memory data writing method and a computer program product, which can be used to meet the test item requirements of the delay time when the storage unit is in the dirty mode.

有鑑於此,如何減輕或消除上述相關領域的缺失,實為有待解決的問題。 In view of this, how to reduce or eliminate the deficiencies in the above-mentioned related fields is indeed a problem to be solved.

本發明提出一種閃存的資料寫入方法,該方法由處理單元於載入並執行軟體或韌體模組的程式碼時實施,包含:於執行一部份的邏輯-物理對照表更新或垃圾回收程序前,判斷遞交佇列中是否存在需要立即處理的主機寫指令;以及當存在需要立即處理的該主機寫指令時,先以一個批次執行該主機寫指令,接著再執行該部份的邏輯-物理對照表更新或垃圾回收程序。 The present invention provides a flash memory data writing method, which is implemented by a processing unit when loading and executing the program code of a software or firmware module, including: performing a part of the logic-physical comparison table update or garbage collection Before the program, determine 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 a batch, and then execute the part of the logic -Physical comparison table update or garbage collection procedure.

本發明另提出一種電腦程式產品,用於由處理單元載入並執行,包含以下的程式碼:於執行一部份的邏輯-物理對照表更新或垃圾回收程序前,判斷遞交佇列中是否存在需要立即處理的主機寫指令;以及當存在需要立即處理的該主機寫指令時,先以一個批次執行該主機寫指令,接著再執行該部份的邏輯-物理對照表更新或垃圾回收程序。 The present invention also provides a computer program product, which is loaded and executed by a processing unit, and includes the following program code: before executing a part of the logic-physical comparison table update or garbage collection process, it is determined whether there is a submission queue The host write command that needs to be processed immediately; and when there is a host write command that needs to be processed immediately, the host write command is executed in one batch, and then the logic-physical comparison table update or garbage collection procedure is executed.

上述實施例的優點之一,通過如上所述的判斷,可避免因邏輯-物理對照表更新或垃圾回收程序的執行而造成遞交佇列中的部分主機寫指令的等待時間過長。 One of the advantages of the above-mentioned embodiment is that through the above-mentioned judgment, it is possible to avoid too long waiting time for submitting some host write commands in the 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 with the following description and drawings.

100:電子裝置 100: electronic device

110:中央處理器 110: central processing unit

120、131:隨機存取記憶體 120, 131: random access memory

130:儲存裝置 130: storage device

132:主機介面 132: Host Interface

133:處理單元 133: Processing Unit

135:快閃控制器 135: Flash Controller

137:閃存介面 137: Flash memory interface

139:LUN 139: LUN

139#0~139#11:LUN 139#0~139#11:LUN

CH#0~CH#3:輸出入通道 CH#0~CH#3: Input and output channels

CE#0~CE#2:致能訊號 CE#0~CE#2: Enabling signal

310:遞交佇列 310: Submission Queue

330:完成佇列 330: Complete Queue

CQH、CQT、SQH、SQT:指標 CQH, CQT, SQH, SQT: indicators

410、430、450、470:軟體或韌體模組 410, 430, 450, 470: software or firmware module

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 execution time

70b、T0、T1、T2、T3:結束執行時間點 70b, T0, T1, T2, T3: end execution 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: (Entity) Plane Number

930-3:邏輯單元編號 930-3: Logical unit number

圖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的連接示意圖。 Figure 2 is a schematic diagram of the connection between the flash memory interface and the LUN.

圖3為指令佇列的示意圖。 Figure 3 is a schematic diagram of a command queue.

圖4為閃存轉譯層(Flash Translation Layer FTL)架構的示意圖。 Figure 4 is a schematic diagram of the Flash Translation Layer (Flash Translation Layer FTL) architecture.

圖5為一些實施方式的資料寫入方法的流程圖。 FIG. 5 is a flowchart of a data writing method according to 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)的更新方法流程圖。 FIG. 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為實體儲存對照示意圖。 Figure 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.

以下說明為完成發明的較佳實現方式,其目的在於描述本發明的基本精神,但並不用以限定本發明。實際的發明內容必須參考之後的權利要求範圍。 The following descriptions are preferred implementations for completing the invention, and their purpose is to describe the basic spirit of the invention, but not to limit the invention. The actual content of the invention must refer to the scope of the claims that follow.

必須了解的是,使用於本說明書中的”包含”、”包括”等詞,用以表示存在特定的技術特徵、數值、方法步驟、作業處理、元件以及/或組件,但並不排除可加上更多的技術特徵、數值、方法步驟、作業處理、元件、組件,或以上的任意組合。 It must be understood that the words "including" and "including" used in this specification are used to indicate the existence of specific technical features, values, method steps, operations, elements, and/or components, but they do not exclude the possibility of adding More technical features, values, method steps, job processing, components, components, or any combination of the above.

於權利要求中使用如”第一”、"第二"、"第三"等詞是用來修飾權利要求中的元件,並非用來表示之間具有優先順序,前置關係,或者是一個元件先於另一個元件,或者是執行方法步驟時的時間先後順序,僅用來區別具有相同名字的元件。 Words such as "first", "second", and "third" used in the claims are used to modify the elements in the claims, and are not used to indicate that there is a precedence, prerequisite relationship, or an element. Prior to another element, or the chronological order of execution of method steps, is only used to distinguish elements 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 other elements, and intermediate elements may appear. Conversely, when an element is described as being "directly connected" or "directly coupled" to another element, there are no intervening elements. Other terms used to describe the relationship between elements can also be interpreted in a similar manner, such as "between" and "directly between", or "adjacent" as opposed to "directly abutting" and so on.

參考圖1。電子裝置100包含中央處理器110、隨機存取記憶體(Random Access Memory RAM)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 Memory Express NVMe)、通用序列匯流排(Universal Serial Bus USB)、先進技術附著(advanced technology attachment ATA)、序列先進技術附著(serial advanced technology attachment SATA)、快速周邊元件互聯(peripheral component interconnect express PCI-E)等通信協定以進行溝通。中央處理器110及處理單元133中的任一個可使用多種方式實施,如使用通用硬體(例如,單一處理器、具平行處理能力的多處理器、圖形處理器或其他具運算能力的處理器),並且在執行軟體以及/或韌體指令時,提供之後描述的功能。隨機存取記憶體120及131可儲存執行過程中需要的資料,例如,變數、資料表等。 Refer to Figure 1. The electronic device 100 includes a central processing unit 110, a random access memory (Random Access Memory RAM) 120 and a storage device 130. When the central processing unit 110 operates, a queue can be established according to its requirements. The electronic device 100 is, for example, an electronic product such as a personal computer, a laptop PC, a tablet computer, a mobile phone, a digital camera, and a digital video camera. The specific area in the random access memory 120 can be configured as a data buffer, a queue, and so on. The storage device 130 may include a processing unit 133, or may further include a random access memory 131 to improve the performance of the storage device 130. The processing unit 133 can receive commands from the central processing unit 110 through a host interface 132, and instruct the flash controller 135 to perform data reading, writing, and erasing operations accordingly. The central processing unit 110 and the processing unit 133 can use universal flash storage (Universal Flash Storage UFS), fast non-volatile memory (Non-Volatile Memory Express NVMe), universal serial bus (Universal Serial Bus USB), advanced technology Attach (advanced technology attachment ATA), serial advanced technology attachment (SATA), rapid peripheral component interconnect (peripheral component interconnect express PCI-E) and other communication protocols for communication. Any one of the central processing unit 110 and the processing unit 133 can be implemented in a variety of ways, such as using general-purpose hardware (for example, a single processor, a multi-processor with parallel processing capabilities, a graphics processor, or other processors with computing capabilities. ), and provide the functions described later when executing software and/or firmware commands. The random access memories 120 and 131 can store data needed during execution, such as variables, data tables, and so on.

邏輯單元號(Logical Unit Number LUN)139提供大量的儲存空間,通常是數百Gigabytes,甚至是Terabytes,可用於儲存大量的使用者資料,例如高解析度圖片、影片等。LUN 139中包含控制電路以及記憶體陣列,記憶體陣列中的記憶單元可為三層式單元(Triple Level Cells,TLCs)或四層式單元(Quad-Level Cells QLCs)。隨機存取記憶體131可用於緩存中央處理器110即將寫入LUN 139的使用 者資料,從LUN 139讀取並即將敲出給中央處理器110的使用者資料,以及查找時所需的邏輯-物理對照表(Logical-Physical Mapping Table,L2P表)。隨機存取記憶體131另可儲存於執行軟體及韌體指令的過程中所需要的資料,例如,變數、資料表等。隨機存取記憶體131可包含靜態隨機存取記憶體(State Random Access Memory SRAM)、動態隨機存取記憶體(Dynamic Random Access Memory DRAM),或以上兩者。 The 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, videos, and so on. The LUN 139 includes a control circuit and a memory array. The memory cells in the memory array can be triple level cells (TLCs) or quad-level cells (QLCs). The random access memory 131 can be used to cache the use of the CPU 110 to be written into the LUN 139 User data, the user data read from LUN 139 and will be knocked out to CPU 110, and the logical-physical mapping table (Logical-Physical Mapping Table, L2P table) required for searching. The random access memory 131 can also store data needed in the process of executing software and firmware commands, such as variables, data tables, and so on. The random access memory 131 may include a static random access memory (State Random Access Memory SRAM), a dynamic random access memory (Dynamic Random Access Memory DRAM), or both.

儲存裝置130另包含快閃控制器135、閃存介面137及LUN 139,並且快閃控制器135透過閃存介面137與LUN 139溝通,詳細來說,可採用雙倍資料率(Double Data Rate DDR)通訊協定,例如,開放NAND快閃(Open NAND Flash Interface ONFI)、雙倍資料率開關(DDR Toggle)或其他介面。儲存裝置130的快閃控制器135透過閃存介面137寫入使用者資料到LUN 139中的指定位址(目的位址),以及從LUN 139中的指定位址(來源位址)讀取使用者資料。閃存介面137使用數個電子訊號來協調快閃控制器135與LUN 139間的資料與命令傳遞,包含資料線(Data Line)、時脈訊號(clock signal)與控制訊號(control signal)。資料線可用以傳遞命令、位址、讀出及寫入的資料;控制訊號線可用以傳遞晶片致能(Chip Enable CE)、位址提取致能(Address Latch Enable ALE)、命令提取致能(Command Latch Enable CLE)、寫入致能(Write Enable WE)等控制訊號。處理單元133與快閃控制器135可分開存在或整合於同一晶片中。 The storage device 130 further includes a flash controller 135, a flash memory interface 137 and a LUN 139, and the flash controller 135 communicates with the LUN 139 through the flash memory interface 137. Specifically, double data rate (DDR) communication can be used Protocols, such as Open NAND Flash Interface ONFI, DDR Toggle or other interfaces. The flash controller 135 of the storage device 130 writes user data to the specified address (destination address) in LUN 139 through the flash memory interface 137, and reads the user from the specified address (source address) in LUN 139 material. The flash memory interface 137 uses several electronic signals to coordinate data and command transmission between the flash controller 135 and the LUN 139, including data lines, clock signals, and control signals. The data line can be used to transfer commands, addresses, read and write data; the control signal line can be used to transfer Chip Enable CE, Address Latch Enable ALE, and Command Extraction Enable ( Control signals such as Command Latch Enable CLE and Write Enable WE. The processing unit 133 and the flash 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 Figure 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. The present invention is not limited thereby. Flash control The controller 135 can drive the flash memory interface 137 to send one of the enabling signals CE#0 to CE#2 to enable LUN139#0 to 139#3, 139#4 to 139#7, or 139#8 to 139#11, Then read user data from the enabled LUN in a parallel manner, or write user data to the enabled LUN.

參考圖3,指令佇列可包含遞交佇列(Submission Queue SQ)310及完成佇列(Completion Queue CQ)330,分別用以暫存中央處理器指令以及完成元件(Completion Element 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可讀取或提取完成元件而判斷寫指令的執行結果。 3, the command queue may include a submission queue (Submission Queue SQ) 310 and a completion queue (Completion Queue CQ) 330, which are used to temporarily store CPU commands and completion elements (Completion Element CE), respectively. The submission queue 310 and the completion queue 330 are preferably created in the same device. For example, the submission queue 310 and the completion queue 330 are preferably created in the random access memory 120 on the host side. In the random access memory 131 of the storage device 130. The submission queue 310 and the completion queue 330 can also be created in different devices. Each of the submission queue 310 and the completion queue 330 includes a collection of multiple entries. Each item in the submission queue 310 can store an I/O command, such as erase, read, and write commands. The items in the collection are stored in order. The basic principle of the set operation is to add new entries (which can be called enqueues) from the end position (such as the position pointed by the indicator SQT or CQT), and remove the entries from the starting position (such as the position pointed by the indicator SQH or CQH) ( Can be called dequeue). In other words, the first instruction added to the submission queue 310 will also be the first to be removed. The central processing unit 110 can write a plurality of write instructions to the delivery queue 310, and the processing unit 133 reads (or fetches) the earliest arrival write instruction from the delivery queue 310 and executes it. After the execution of the write instruction is completed, the processing unit 133 writes the completed element to the completion queue 330, and the central processing unit 110 can read or retrieve the completed 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寫入LUN 139,從快閃控制器135回覆的訊息中取得實體位址(Physical Address),接著將邏輯位址及實體位址間的對應關係更新至隨機存取記憶體131中H2F表的適當位置。函數SaveMap()可包含H2F表寫入模組450的程式碼,並且當處理單元133載入並執行時時將更新過的H2F表通過快閃控制器135及閃存介面137寫入LUN 139。處理單元133載入並執行GC操作模組470時,將多個實體頁面中破碎的使用者資料搜集起來,並通過快閃控制器135及閃存介面137將搜集的使用者資料寫入LUN 139中新的實體頁面,用以讓這些釋放出來的實體頁面可於抹除後被其他使用者資料使用。 4, the Flash Translation Layer (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 code of the write command reading module 410, and read a specified number of hosts from the delivery queue when the processing unit 133 is loaded and executed Write commands (Host Write Commands), and temporarily store user data of a specific logical address (Logical Address) to be written by the host write command to the random access memory 131. The function FTL_HandlePrdInfo() can include the program code of the write command execution module 430, and when the processing unit 133 is loaded and executed, the user data temporarily stored in the random access memory 131 is passed through the flash controller 135 and according to the host write command when the processing unit 133 is loaded and executed. Flash memory interface 137 writes LUN 139, obtains the physical address (Physical Address) from the response message from flash controller 135, and then updates the correspondence between logical address and physical address to H2F in random access memory 131 The appropriate location of the table. The function SaveMap() may include the code of the H2F table writing module 450, and when the processing unit 133 is loaded and executed, the updated H2F table is written into the LUN 139 through the flash controller 135 and the flash memory interface 137. 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 the LUN 139 through the flash controller 135 and the flash memory interface 137 The new physical pages are used to allow the released physical pages to be used by other users' data after being erased.

於一些實施方式中,處理單元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 CPU 110 starts to write the host write command into the submission queue 310, it can repeat the loop (steps S510 to S590) until there is no host write command in the submission queue 310 ( The path of "No" in step S590). In each round (Iteration), the processing unit 133 may sequentially execute the write instruction reading module 410, the write instruction execution module 430, the H2F table writing module 450, and the GC operation module 470 in sequence. However, when the execution 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, and the quality of service (Quality of Service QoS) may not be satisfied. ) Requirements for the delay time measurement items. In addition, since the central processing unit 110 can write any number of host write commands to the submission queue 310 at any point in time, the host interface 132 (which can be referred to as Hardware HW for short) can only read the upper limit number of host write commands. . If the central processing unit 110 issues a host write command exceeding the upper limit at a time, the host The machine 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 reading module 410 in the next round. Due to the lack of information about the time when each host write command arrives in the submission queue 310, the control module (referred to as the 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實施:

Figure 108109906-A0305-02-0010-1
表1中的每個項目可關聯於一個指令集,包含指令集編號、此資料集包含的主機寫指令的編號以及關聯於所有主機寫指令的到達時間戳記。例如,指令集“S0”包含主機寫指令“W0”至“W4”,並且它們到達遞交佇列310的時間為“T0”。“W0”至“W4”亦可代表遞交佇列310中第0至4個項目的主機寫指令。處理單元133可使用公式(1)來判斷一個指令集中的主機寫指令是否需要立即處理:Tnow-Ti>Ttr 其中,Tnow代表目前時間,i代表正整數,Ti代表遞交佇列310中第i個主機寫指令的到達時間點,Ttr代表閥值。閥值的設定可參考延遲時間測項的需求,例如,如果延遲時間測項要求99%的主機寫指令的延遲時間需要小於5毫秒(ms),則閥值可設為介於4~5毫秒間的值。當公式(1)的條件滿足時,代表遞交佇列310中第i個主機寫指令需要立即處理。 In order to supplement the time information when the host write command arrives in the submission queue 310, in some embodiments, the write command reading module 410 can be modified to add a time stamp to the host newly arrived in the submission queue 310 during the processing of the host write command. Write instructions. Referring to the embodiment of the method for processing a host write command shown in FIG. 6, this method is implemented when the processing unit 133 loads and executes the program code of the write command reading module 410. First, a loop is repeatedly executed (steps S611 to S613) for reading all host write commands in the delivery queue 310 that need to be processed immediately in one batch (Batch). Due to hardware limitations, the processing unit 133 reads host write commands that do not exceed the upper limit number per round. In step S611 when the loop is entered for the first time, the processing unit 133 can read the time information of the host write command arriving at the delivery queue 310 from the random access memory 131, and determine the host write command that needs to be processed immediately according to the time information. The time information of arrival in the submission queue 310 can be implemented using Table 1 below:
Figure 108109906-A0305-02-0010-1
Each item in Table 1 can be associated with a command set, including the command set number, the host write command number contained in this data set, and the arrival timestamp associated with all host write commands. For example, the command set "S0" contains the host write commands "W0" to "W4", and the time they arrive at the delivery queue 310 is "T0". "W0" to "W4" can also represent host write commands for submitting the 0th to 4th items in the queue 310. The processing unit 133 can use formula (1) to determine whether a host write command in an instruction set needs to be processed immediately: Tnow-Ti>Ttr where Tnow represents the current time, i represents a positive integer, and Ti represents the i-th in the submission queue 310 The arrival time point of the host write command, Ttr represents the threshold. The threshold setting can refer to the requirements of the delay time measurement item. For example, if the delay time measurement item requires 99% of the host's write command delay time to be less than 5 milliseconds (ms), the threshold can be set between 4~5 milliseconds Value between. When the condition of formula (1) is satisfied, it means that the write command of the i-th host in the submission queue 310 needs to be processed immediately.

於快取模式(Cache Mode),處理單元133可通過主機介面132從遞交佇列310取得每個主機寫指令,並且依據主機寫指令中的位址資訊通過主機介面132從隨機存取記憶體120讀取待寫入LUN 139的使用者資料,並儲存使用者資料至隨機存取記憶體131。由於使用者資料儲存至隨機存取記憶體131的時候即執行完成主機寫指令,處理單元133可通過主機介面132寫入相應此主機寫指令的完成元件(Completion Element CE)至完成佇列330。之後,處理單元133可安排時間執行寫指令執行模組430的程式碼,用於通過快閃控制器135及閃存介面137將隨機存取記憶體131中暫存的使用者資料寫入LUN 139。 In Cache Mode, the processing unit 133 can obtain each host write command from the submission queue 310 through the host interface 132, and access the memory 120 from the random access memory 120 through the host interface 132 according to the address information in the host write command. Read user data to be written into LUN 139, and store the user data in random access memory 131. Because the 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 (Completion Element CE) corresponding to the host write command to the completion queue 330 through the host interface 132. After that, the processing unit 133 can schedule time to execute the program code of the write command execution module 430 for writing the user data temporarily stored in the random access memory 131 into the LUN 139 through the flash controller 135 and the flash memory interface 137.

於非快取模式(Non-cache Mode)或儲存裝置130不配置暫存使用者資料的記憶空間,處理單元133通過主機介面132取得一或多個主機寫指令及待寫入的使用者資料後,可直接跳執行寫指令執行模組430的程式碼,用於通過閃存介面137將使用者資料寫入LUN 139。於成功寫入LUN 139後,處理單元133可轉回執行寫指令執行模組430的程式碼,用於寫入相應該(些)主機寫指令的完成元件至完成佇列330。於一些實施例中,寫指令讀取模組410及寫指令執行模組430可整合為單一模組,而不受限於FTL架構。 In the non-cache mode or the storage device 130 is not configured with a memory space for temporarily storing user data, the processing unit 133 obtains one or more host write commands and the user data to be written through the host interface 132 , The program code of the write command execution module 430 can be skipped directly, which is used to write user data into the LUN 139 through the flash memory interface 137. After the LUN 139 is successfully written, the processing unit 133 can switch back to the program code of the execution module 430 for executing the write command for writing the completion components corresponding to the host write command(s) to the completion queue 330. In some embodiments, the write command read module 410 and the write command execution module 430 can be integrated into a single module without being 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 end of the reading of the host write command of the previous batch (step S631), and updates the arrival time in the random access memory 131 Information, used to delete processed host writes The record of the command, and the record of the new host write command added Tpre to the submission queue 310 (step S633), and update Tpre as a time stamp representing the current time for reference for the execution of the host write command in the next batch (step S633) 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目前所指的位址,處理單元133可知道中央處理器110新寫入主機寫指令“W10”至“W12”至遞交佇列310。接著,處理單元133更新到達時間資訊如表2所示(步驟S633):

Figure 108109906-A0305-02-0012-13
雖然主機寫指令“W10”至“W12”的實際到達時間晚於時間點T2,但由於寫指令讀取模組410不知道任何主機寫指令的實際到達時間,使用最早可能到達時間T2當作時間戳記,可降低主機寫指令的實際 延遲時間超出時間測項需求的可能性。 The following examples are given to assist in explaining the process of the method described in FIG. 6. Referring to FIG. 7, the execution of the write command reading module 410 of the previous batch ends at time T2 and the execution 70 of the write command reading module 410 of this batch starts at time 70a and ends at time T3. (70b). At time 70a, the random access memory 131 stores the execution end time stamp Tpre of the host write command of the previous batch as time T2, and the host write commands "W0" to "W9" as described in Table 1 arrive and are delivered Queue 310 time information. Assume that the instruction set "S0" (that is, the host write instructions "W0" to "W4") meets the condition of formula (1) and needs to be processed immediately. Then, the processing unit 133 reads the host write commands "W0" to "W4" in the delivery queue 310 (step S631). When approaching 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 time stamp Tpre (=T2) of the host write command of the previous batch from the random access memory 131 (step S633). Suppose that between time points T2 and T3, the central processing unit 110 writes the host write commands “W10” to “W12” to the submission queue 310 and changes the index SQT to point to the thirteenth item in the submission queue 310. By comparing the arrival time information in the random access memory 131 with the address currently pointed to by the indicator SQT, the processing unit 133 can know that the CPU 110 newly writes the host write commands "W10" to "W12" to the submission queue 310. Next, the processing unit 133 updates the arrival time information as shown in Table 2 (step S633):
Figure 108109906-A0305-02-0012-13
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 commands, the earliest possible arrival time T2 is used as the time Stamping can reduce the possibility that the actual delay time of the host writing command exceeds the time measurement item requirement.

雖然圖3只顯示二個佇列310及330,但主機端可依據不同應用需求建立更多數量的遞交子佇列(Submission Sub-queues)及完成子佇列(Completion Sub-queues)。表1可修改為包含不同遞交子佇列中的主機寫指令的到達時間資訊,並針對所有遞交子佇列中的主機寫指令是否需要立即處理做總合性的判斷,本發明並不因此受限。 Although FIG. 3 only shows two queues 310 and 330, the host can create more 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 submission sub-queues, and make a general judgment on whether the host write commands in all submission sub-queues need to be processed immediately. The present invention is not affected by this. limit.

為解決LUN 139處於髒亂模式時產生的技術問題,圖8及圖10所示的方法流程為一種閃存的資料寫入方法,此方法由處理單元133載入並執行相關軟體或韌體模組的程式碼時實施,包含以下步驟:於執行一部份的H2F表更新或GC操作前,判斷遞交佇列310中是否存在至少一個需要立即處理的主機寫指令;以及當存在需要立即處理的主機寫指令時,先以一個批次執行該(些)主機寫指令,接著再執行此部份的H2F表更新或GC操作;以及當不存在需要立即處理的主機寫指令時,直接執行此部份的H2F表的更新或GC操作。所屬技術領域人員理解H2F表更新及GC操作為儲存裝置130自己啟動用以優化儲存裝置130效能的作業,而不是像主機寫指令由中央處理器110發動。詳細說明如下:為避免頻繁更新LUN 139中的H2F表,處理單元133可暫存全部或部分的H2F表於隨機存取記憶體131(通常是DRAM),並於寫入操作完成後更新暫存H2F表中的內容。為縮短突然斷電(Sudden Power Off SPO)後執行突然斷電後回復(SPO Recovery SPOR)的時間,處理單元133每更新一定數目的紀錄後就要將暫存H2F表的更新後內容寫入LUN 139。當儲存裝置130處於髒亂模式時,這樣的H2F表的寫入操作可能會更頻繁。然而,處理單元133及閃存介面137需要一段時間完成整個需要更新部分的寫入操作,可能造成遞交佇列310中的部分主機寫指令的等待時間過長而無法滿足QoS的延遲時間測項的要求。為了避免如上所述問題,於一些實施例中,H2F表寫入 模組450可修改為將H2F表中所有更新後的內容分成數段,並且於寫入一段更新後內容前先判斷是否存在需要立即處理的主機寫指令。當存在需要立即處理的主機寫指令時,優先處理這些主機寫指令。 In order to solve the technical problem when LUN 139 is in the dirty mode, the method flow shown in Figure 8 and Figure 10 is a flash memory data writing method, this method is loaded and executed by the processing unit 133 related software or firmware module The program code is implemented, including the following steps: before performing a part of the H2F table update or GC operation, determine whether there is at least one host write command in the submission queue 310 that needs to be processed immediately; and when there is a host that needs to be processed immediately When writing commands, first execute the host write command(s) in one batch, and then execute this part of the H2F table update or GC operation; and when there is no host write command that needs to be processed immediately, execute this part directly H2F table update or GC operation. Those skilled in the art understand that H2F table update and GC operations are operations that the storage device 130 initiates to optimize the performance of the storage device 130, rather than being initiated by the CPU 110 like a host write command. The detailed description is as follows: To avoid frequent updating of the H2F table in LUN 139, the processing unit 133 can temporarily store all or part of the H2F table in the random access memory 131 (usually DRAM), and update the temporary storage after the write operation is completed. The contents of the H2F table. In order to shorten the time required to perform SPO Recovery SPOR after a sudden power off (Sudden Power Off SPO), the processing unit 133 must write the updated content of the temporary H2F table into the LUN every time a certain number of records are updated. 139. When the storage device 130 is in the dirty mode, such H2F table write operations may be more frequent. However, it takes a period of time for the processing unit 133 and the flash memory interface 137 to complete the entire write operation that needs to be updated, which may cause the waiting time of submitting some host write commands in the queue 310 to be too long to meet the requirements of the QoS delay time measurement item. . In order to avoid the above-mentioned problems, in some embodiments, the H2F table writes The module 450 can be modified to divide all the updated content in the H2F table into several segments, and before writing a segment of the updated content, first determine whether there is a host write command that needs to be processed immediately. 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)。實體位址資訊930例如包括四個位元組,其中,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 the physical address information corresponding to each logical address (or logical block address LBA) in order. The space required by the 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 fixed-size logical block, such as 512 bytes (Bytes), and is stored in a physical address. For example, the H2F table 910 sequentially stores the physical address information from LBA#0 to LBA#65535. The data of several consecutive logical addresses (such as LBA#0 to LBA#7) can form a host page. The physical address information 930 includes, for example, four bytes, in which 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 input/output channel number and so on. For example, the physical address information 930 corresponding to LBA#2 may point to an area 951 in the block 950.

參考圖8所示的H2F表的更新方法的實施例,此方法由處理單元133載入並執行H2F表寫入模組450的程式碼時實施。處理單元133可反覆執行一個迴圈(步驟S810至S870),用於分段寫入H2F表中所有更新後的內容至LUN 139。例如,暫存H2F表中關於LBA#0至LBA#2047中的實體位址資訊被更新時,處理單元133可於一個批次先寫入關於LBA#0至LBA#1023(也就是第一段)的實體位址資訊,並且於下一個批次寫入關於LBA#1024至LBA#2047(也就是第二段)的實體位址資訊。於每一回合,處理單元133先判斷是否存在需要立即處理的主機寫指令(步驟S810)。主機寫指令的判斷可參考如上所述表1、步驟S613及公式(1)的說明,為求簡明不再贅述。當存在需要立即處理的主機寫指令時(步驟S810中“是”的路徑),處理單元133先讀取需要立即處理的主機寫指令(步驟S830),接著 再儲存H2F表中一段更新後的內容至LUN 139(步驟S850)。當不存在需要立即處理的主機寫指令時(步驟S810中“否”的路徑),直接儲存H2F表中一段更新後的內容至LUN 139(步驟S850)。 Referring to the embodiment of the method for updating the H2F table shown in FIG. 8, this 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 writing all the updated content in the H2F table to the LUN 139 in sections. For example, when the physical address information about LBA#0 to LBA#2047 in the temporary H2F table is updated, the processing unit 133 can write information about LBA#0 to LBA#1023 (that is, the first paragraph) in one batch. ), and write the physical address information about LBA#1024 to LBA#2047 (that is, the second paragraph) 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 judgment of the host write command, refer to the description of Table 1, step S613 and formula (1) as described above, and will not be repeated for the sake of 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 Then, the updated content in the H2F table is stored in LUN 139 (step S850). When there is no host write command that needs to be processed immediately (the "No" path in step S810), directly store an updated content in the H2F table to LUN 139 (step S850).

當儲存裝置130處於髒亂模式時,LUN 139中的許多實體頁面可能包含有效及無效區段(又稱為過期區段),其中,有效區段儲存有效的使用者資料,無效區段儲存無效的(舊的)使用者資料。當處理單元133偵測到LUN 139的可用空間不足時,可指示快閃控制器135讀取並蒐集來源區塊中有效區段中的使用者資料,接著,指示快閃控制器135重新寫入蒐集起來的有效的使用者資料至主動區塊(或目的區塊)的空實體頁面,使得這些包含無效的使用者資料的資料區塊(來源區塊)可變更成為閒置區塊。之後,閒置區塊於抹除後,可作為主動區塊以提供資料儲存空間。如上所述的程序稱為垃圾回收。 When the storage device 130 is in dirty mode, many physical pages in LUN 139 may contain valid and invalid sections (also called expired sections). The valid section stores valid user data, and the invalid section stores invalid sections. 'S (old) user data. When the processing unit 133 detects that the available space of LUN 139 is insufficient, it can instruct the flash controller 135 to read and collect user data in the valid section of the source block, and then instruct the flash controller 135 to rewrite The collected valid user data is sent to the empty physical page of the active block (or destination block), so that the data blocks (source blocks) containing invalid user data can be changed to idle blocks. Afterwards, the idle blocks can be used as active blocks to provide data storage space after being erased. The procedure described above is called garbage collection.

然而,處理單元133及閃存介面137需要一段時間完成整個GC程序,可能造成遞交佇列310中的部分主機寫指令的等待時間過長而無法滿足QoS的延遲時間測項的要求。為了避免如上所述問題,於一些實施例中,GC操作模組470可修改為將整個垃圾回收程序分成數個階段,並且於執行一個階段的工作前先判斷是否存在需要立即處理的主機寫指令。當存在需要立即處理的主機寫指令時,優先處理這些主機寫指令。 However, it takes some time for the processing unit 133 and the flash memory interface 137 to complete the entire GC procedure, which may cause the waiting time for submitting some host write commands in the queue 310 to be too long to meet the QoS delay time measurement requirements. In order to avoid the above-mentioned 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 performing a stage of work. . When there are host write commands that need to be processed immediately, these host write commands are processed first.

於一些實施例中,整個GC程序可分為五個階段的操作:處理單元133可於第一階段決定有效的使用者資料在來源區塊的來源位址,以及目的區塊的目的位址。於第二階段,處理單元133可指示快閃控制器135從LUN 139的來源地址讀取使用者資料,並且指示快閃控制器135將讀取的使用者資料寫入LUN 139的目的位址。於第三及第四階段,處理單元133可分別更新H2F表及物理-邏輯對照表(Physical-Logical Mapping Table,P2L表)。處理單元133可於第五 階段將來源區塊變更為閒置區塊。以上的五個階段僅為範例,本領域技術人員可依據處理單元133、快閃控制器135及閃存介面137的工作速度於GC操作模組470中將幾個階段合併成單一階段,或者將一個階段拆成數個子階段。此外,GC操作模組470可根據處理狀態優化這五個階段的執行順序,例如,將第一至第二階段安排成一個迴圈,直到目的區塊無法再寫入來自來源區塊的使用者資料後,再執行第三至第五階段。 In some embodiments, the entire GC process 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 can instruct the flash controller 135 to read the 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 can be used in the fifth Phase changes the source block to an idle block. The above five stages are just examples. 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 controller 135 and the flash memory interface 137, or one The stage is divided into several sub-stages. In addition, the GC operation module 470 can optimize the execution sequence of these five stages according to the processing status, for example, arrange the first to second stages into a loop until the destination block can no longer be written to the user from the source block After the information is collected, the third to fifth stages will be executed.

參考圖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, this method is implemented when the processing unit 133 loads and executes the code of the GC operation module 470. The processing unit 133 may repeatedly execute a loop (steps S1010 to S1070) for executing the GC program in stages. For 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 judgment of the host write command, refer to the description of Table 1, step S613 and formula (1) as described above, and will not be repeated for the sake of 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 GC operation (step S1050). When there is no host write command that needs to be processed immediately (the "No" path in step S1010), the first or next stage of GC operation 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 can embed the program code 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 a computer operating system, a specific hardware driver in the computer, or a software application program. In addition, it can also be implemented in other types of programs as shown above. Those with ordinary knowledge in the technical field can write the method of the embodiment of the present invention into a computer program, and it will not be added for the sake of brevity. To describe. The computer program implemented according to the method of the embodiment of the present invention can be stored in an appropriate computer readable medium, such as DVD, CD-ROM, USB disk, hard disk, and can also be placed on a network (such as the Internet, or Other appropriate vehicles).

雖然圖1中包含了以上描述的元件,但不排除在不違反發明的精神下,使用更多其他的附加元件,已達成更佳的技術效果。此外,雖然圖6、圖8及圖10的流程圖採用指定的順序來執行,但是在不違反發明精神的情況下,熟習此技藝人士可以在達到相同效果的前提下,修改這些步驟間的順序,所以,本發明並不侷限於僅使用如上所述的順序。此外,熟習此技藝人士亦可以將若干步驟整合為一個步驟,或者是除了這些步驟外,循序或平行地執行更多步驟,本發明亦不因此而侷限。 Although FIG. 1 includes the above-described elements, it is not excluded that, without violating the spirit of the invention, more other additional elements can be used to achieve better technical effects. In addition, although the flowcharts in Figures 6, 8 and 10 are executed in the specified order, those skilled in the art can modify the order of these steps on the premise of achieving the same effect without violating the spirit of the invention. Therefore, the present invention is not limited to using only the sequence described above. 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 that are obvious to those skilled in the art. Therefore, the scope of applied claims must be interpreted in the broadest way to include all obvious modifications and similar settings.

S810~S870:方法步驟 S810~S870: method steps

Claims (10)

一種閃存的資料寫入方法,由一處理單元於載入並執行一軟體或韌體模組的程式碼時實施,包含:將邏輯-物理對照表更新或垃圾回收程序的執行分成多個部份;於執行一部份的上述邏輯-物理對照表更新或上述垃圾回收程序前,依據主機寫指令到達一遞交佇列的時間的資訊判斷該遞交佇列中是否存在需要立即處理的一主機寫指令;以及當存在需要立即處理的該主機寫指令時,先以一個批次執行該主機寫指令,接著再執行該部份的邏輯-物理對照表更新或垃圾回收程序,其中,該遞交佇列中需要立即處理的主機寫指令指此主機寫指令到達該遞交佇列的時間距離現在已經超過一閥值。 A method for writing flash memory data, implemented by a processing unit when loading and executing the code of a software or firmware module, including: dividing the logic-physical comparison table update or the execution of the garbage collection process into multiple parts ; Before executing part of the above-mentioned logical-physical comparison table update or the above-mentioned garbage collection process, determine whether there is a host write command in the submission queue that needs to be processed immediately based on the information of the time when the host write command arrives in a submission queue ; And when there is a host write command that needs to be processed immediately, execute the host write command in a batch, and then execute the part of the logical-physical comparison table update or garbage collection process, where the submission queue The host write command that needs to be processed immediately means that the time distance for the host write command to reach the submission queue has now exceeded a threshold. 如請求項1所述的閃存的資料寫入方法,包含:當不存在需要立即處理的主機寫指令時,執行該部份的邏輯-物理對照表更新或垃圾回收程序。 The data writing method of the flash memory as described in claim 1, including: when there is no host write command that needs to be processed immediately, executing the logical-physical comparison table update or garbage collection procedure of this part. 如請求項1所述的閃存的資料寫入方法,包含:使用一公式判斷該遞交佇列中是否存在需要立即處理的該主機寫指令:Tnow-Ti>Ttr其中,Tnow代表目前時間,i代表正整數,Ti代表該遞交佇列中第i個主機寫指令的到達時間點,Ttr代表該閥值;當該公式的條件滿足時,代表該遞交佇列中第i個主機寫指令需要立即處理。 The method for writing flash memory data as described in claim 1, including: using a formula to determine whether there is a host write command that needs to be processed immediately in the submission queue: Tnow-Ti>Ttr, where Tnow represents the current time, and i represents A positive integer, Ti represents the arrival time of the i-th host write command in the submission queue, and Ttr represents the threshold; when the condition of the formula is met, it means that the i-th host write command in the submission queue needs to be processed immediately . 如請求項3所述的閃存的資料寫入方法,其中該遞交佇列中每一個主機寫指令的到達時間點為該處理單元偵測到該主機寫指令進入該遞交佇列時的上一個批次的主機寫指令的執行結束的一時間點。 The data writing method for flash memory according to claim 3, wherein the arrival time of each host write command in the submission queue is the last batch when the processing unit detects that the host write command enters the submission queue A point in time when the execution of the second host write command ends. 如請求項1所述的閃存的資料寫入方法,其中該部份的邏輯-物理 對照表更新包含通過一閃存介面寫入關聯於一段連續邏輯位址的實體位址資訊至一邏輯單元號。 The data writing method of flash memory as described in claim 1, wherein the logical-physical part of The update of the look-up table includes writing physical address information associated with a continuous logical address to a logical unit number through a flash memory interface. 如請求項1所述的閃存的資料寫入方法,其中該垃圾回收程序分為多個階段,以及該部份的垃圾回收程序包含一個階段的操作。 The method for writing data to a flash memory according to claim 1, wherein the garbage collection procedure is divided into multiple stages, and the part of the garbage collection procedure includes one stage of operation. 如請求項6所述的閃存的資料寫入方法,其中該多個階段的操作包含:決定包含有效的使用者資料的一來源區塊的一來源位址,以及一目的區塊的一目的位址;指示一快閃控制器從一邏輯單元號的該來源地址讀取使用者資料,並且指示該快閃控制器將該讀取的使用者資料寫入該邏輯單元號的該目的位址;更新一邏輯-物理對照表;更新一物理-邏輯對照表;或將該來源區塊變更為一閒置區塊。 The method for writing data to a flash memory according to claim 6, wherein the multi-stage operations include: determining a source address of a source block containing valid user data, and a destination bit of a destination block Address; instruct a flash controller to read user data from the source address of a logical unit number, and instruct the flash controller to write the read user data to the destination address of the logical unit number; Update a logical-physical comparison table; update a physical-logical comparison table; or change the source block to an idle block. 如請求項1所述的閃存的資料寫入方法,其中執行每一該主機寫指令的操作包含通過一主機介面從該遞交佇列取得該主機寫指令;依據該主機寫指令中的位址資訊通過該主機介面從一第一隨機存取記憶體讀取待寫入一邏輯單元號的使用者資料;儲存該使用者資料至一第二隨機存取記憶體;以及通過該主機介面寫入相應該主機寫指令的一完成元件至一完成佇列。 The method for writing data to a flash memory according to claim 1, wherein the operation of executing each host write command includes obtaining the host write command from the submission queue through a host interface; according to the address information in the host write command Read user data to be written into a logical unit number from a first random access memory through the host interface; store the user data in a second random access memory; and write the data through the host interface A completion element of the command should be written by the host to a completion queue. 如請求項1所述的閃存的資料寫入方法,其中執行每一該主機寫指令的操作包含通過一主機介面從該遞交佇列取得該主機寫指令;依據該主機寫指令中的位址資訊通過該主機介面從一隨機存取記憶體讀取待寫入一邏輯單元號的使用者資料;通過一閃存介面將該使用者資料寫入至該邏輯單元號;以及通過該主機介面寫入相應該主機寫指令的一完成元件至一完成佇列。 The method for writing data to a flash memory according to claim 1, wherein the operation of executing each host write command includes obtaining the host write command from the submission queue through a host interface; according to the address information in the host write command Read user data to be written into a logical unit number from a random access memory through the host interface; write the user data to the logical unit number through a flash memory interface; and write the corresponding data through the host interface A completion element of the command should be written by the host to a completion queue. 一種電腦程式產品,包含一程式碼,當上述程式碼被一處理單元載入並執行時實施如請求項1至9中任一項所述的閃存的資料寫入方法。 A computer program product includes a program code, and when the program code is loaded and executed by a processing unit, the method for writing data to the flash memory as described in any one of the request items 1 to 9 is implemented.
TW108109906A 2019-01-03 2019-03-22 Method and computer program product for performing data writes into a flash memory TWI739075B (en)

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
TW202026891A TW202026891A (en) 2020-07-16
TWI739075B true TWI739075B (en) 2021-09-11

Family

ID=71428322

Family Applications (3)

Application Number Title Priority Date Filing Date
TW108109906A TWI739075B (en) 2019-01-03 2019-03-22 Method and computer program product for performing data writes into a flash memory
TW108119438A TWI719494B (en) 2019-01-03 2019-06-05 Method and apparatus for controlling different types of storage units
TW110102306A TWI828963B (en) 2019-01-03 2019-06-05 Apparatus and computer program product for controlling different types of storage units

Family Applications After (2)

Application Number Title Priority Date Filing Date
TW108119438A TWI719494B (en) 2019-01-03 2019-06-05 Method and apparatus for controlling different types of storage units
TW110102306A TWI828963B (en) 2019-01-03 2019-06-05 Apparatus and computer program product for controlling different types of storage units

Country Status (2)

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

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
CN114327240A (en) 2020-09-29 2022-04-12 慧荣科技股份有限公司 Computer readable storage medium, data storage method and device of 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 (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
TW200745930A (en) * 2005-08-03 2007-12-16 Sandisk Corp Data consolidation and garbage collection in direct data file storage memories
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
TW201527971A (en) * 2013-12-26 2015-07-16 Silicon Motion Inc Data storage device and flash memory control method
CN106326136A (en) * 2015-07-02 2017-01-11 广明光电股份有限公司 Method for collecting garage block in solid state disk
TWI595412B (en) * 2016-09-09 2017-08-11 大心電子(英屬維京群島)股份有限公司 Data transmitting method, memory storage device and memory control circuit unit
TW201734804A (en) * 2016-03-17 2017-10-01 三星電子股份有限公司 SSD, method and article for user configurable passive background operation

Family Cites Families (19)

* 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
US6973554B2 (en) * 2003-04-23 2005-12-06 Microsoft Corporation Systems and methods for multiprocessor scalable write barrier
KR101404083B1 (en) * 2007-11-06 2014-06-09 삼성전자주식회사 Solid state disk and operating method thereof
US7716411B2 (en) * 2006-06-07 2010-05-11 Microsoft Corporation Hybrid memory device with single interface
US7444461B2 (en) * 2006-08-04 2008-10-28 Sandisk Corporation Methods for phased garbage collection
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
CN102375779B (en) * 2010-08-16 2015-08-19 深圳市朗科科技股份有限公司 A kind of data processing method and data processing module
EP2807567B1 (en) * 2012-01-27 2018-03-07 Marvell World Trade Ltd. Systems and methods for dynamic priority control
CN102799534B (en) * 2012-07-18 2015-11-25 上海宝存信息科技有限公司 Based on storage system and method, the cold and hot data identification method of solid storage medium
US9417820B2 (en) * 2012-12-06 2016-08-16 Kabushiki Kaisha Toshiba Low-overhead storage of a hibernation file in a hybrid disk drive
US9348747B2 (en) * 2013-10-29 2016-05-24 Seagate Technology Llc Solid state memory command queue in hybrid device
US9471254B2 (en) * 2014-04-16 2016-10-18 Sandisk Technologies Llc Storage module and method for adaptive burst mode
CN104361113B (en) * 2014-12-01 2017-06-06 中国人民大学 A kind of OLAP query optimization method under internal memory flash memory mixing memory module
US20170060434A1 (en) * 2015-08-27 2017-03-02 Samsung Electronics Co., Ltd. Transaction-based hybrid memory module
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
CN107844431B (en) * 2017-11-03 2022-01-25 合肥兆芯电子有限公司 Mapping table updating method, memory control circuit unit and memory storage device

Patent Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
TW200745930A (en) * 2005-08-03 2007-12-16 Sandisk Corp Data consolidation and garbage collection in direct data file storage memories
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
TW201527971A (en) * 2013-12-26 2015-07-16 Silicon Motion Inc Data storage device and flash memory control method
CN106326136A (en) * 2015-07-02 2017-01-11 广明光电股份有限公司 Method for collecting garage block in solid state disk
TW201734804A (en) * 2016-03-17 2017-10-01 三星電子股份有限公司 SSD, method and article for user configurable passive background operation
TWI595412B (en) * 2016-09-09 2017-08-11 大心電子(英屬維京群島)股份有限公司 Data transmitting method, memory storage device and memory control circuit unit

Also Published As

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

Similar Documents

Publication Publication Date Title
TWI739075B (en) Method and computer program product for performing data writes into a flash memory
US9772802B2 (en) Solid-state device management
TWI678618B (en) Method and apparatus for performing operations to namespaces of a flash memory device
KR101301840B1 (en) Method of data processing for non-volatile memory
KR20170032502A (en) Storage device and interrupt generation method thereof
TWI726314B (en) A data storage device and a data processing method
US20110208898A1 (en) Storage device, computing system, and data management method
KR20120105294A (en) Memory controller controlling a nonvolatile memory
US11960396B2 (en) Method and computer program product for performing data writes into a flash memory
US11675698B2 (en) Apparatus and method and computer program product for handling flash physical-resource sets
US20190035445A1 (en) Method and Apparatus for Providing Low Latency Solid State Memory Access
TW202006553A (en) Methods for internal data movement of a flash memory and apparatuses using the same
TWI670595B (en) Methods of proactive ecc failure handling
CN110515861B (en) Memory device for processing flash command and method thereof
JP6215631B2 (en) Computer system and data management method thereof
KR20210004629A (en) Memory system and operating method thereof
TWI792534B (en) Method of performing garbage collection with partial clean operation and related controller and storage system
US11494113B2 (en) Computer program product and method and apparatus for scheduling execution of host commands
CN111290974A (en) Cache elimination method for storage device and storage device
TWI697778B (en) A data storage device and a data processing method
TWI758745B (en) Computer program product and method and apparatus for scheduling executions of host commands
TWI760262B (en) Data storage device and data processing method
CN111159065A (en) Hardware buffer management unit with key word (BMU)