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 PDFInfo
- 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
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0655—Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
- G06F3/0658—Controller construction arrangements
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/0223—User address space allocation, e.g. contiguous or non contiguous base addressing
- G06F12/023—Free address space management
- G06F12/0238—Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory
- G06F12/0246—Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory in block erasable memory, e.g. flash memory
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/0223—User address space allocation, e.g. contiguous or non contiguous base addressing
- G06F12/023—Free address space management
- G06F12/0253—Garbage collection, i.e. reclamation of unreferenced memory
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/0604—Improving or facilitating administration, e.g. storage management
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/061—Improving I/O performance
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0655—Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
- G06F3/0659—Command handling arrangements, e.g. command buffers, queues, command scheduling
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0668—Interfaces specially adapted for storage systems adopting a particular infrastructure
- G06F3/0671—In-line storage system
- G06F3/0673—Single storage device
- G06F3/0679—Non-volatile semiconductor memory device, e.g. flash memory, one time programmable memory [OTP]
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/72—Details relating to flash memory management
- G06F2212/7205—Cleaning, compaction, garbage collection, erase control
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/72—Details relating to flash memory management
- G06F2212/7209—Validity control, e.g. using flags, time stamps or sequence numbers
-
- Y—GENERAL 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
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE 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/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Abstract
Description
本發明涉及儲存裝置,尤指一種閃存的資料寫入方法及電腦程式產品。 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:輸出入通道
CE#0~CE#2:致能訊號
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
邏輯單元號(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
儲存裝置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
參考圖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
參考圖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
參考圖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
於一些實施方式中,處理單元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
為了補足主機寫指令到達於遞交佇列310的時間資訊,於一些實施例中,寫指令讀取模組410可修改為於處理主機寫指令的期間附加時間戳記到新到達遞交佇列310的主機寫指令。參考圖6所示的主機寫指令的處理方法的實施例,此方法由處理單元133載入並執行寫指令讀取模組410的程式碼時實施。首先,反覆執行一個迴圈(步驟S611至S613),用於以一個批次(Batch)讀取遞交佇列310中所有需要立即處理的主機寫指令。因為硬體的限制,處理單元133每回合讀取不超過上限數目的主機寫指令。於首次進入迴圈的步驟S611,處理單元133可從隨機存取記憶體131讀取主機寫指令到達遞交佇列310的時間資訊,並且依據時間資訊決定需要立即處理的主機寫指令。到達遞交佇列310的時間資訊可使用下表1實施:
於快取模式(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
於非快取模式(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
於迴圈執行完畢,處理單元133從隨機存取記憶體131取得代表上一批次的主機寫指令的讀取結束的時間戳記Tpre(步驟S631),更新隨機存取記憶體131中的到達時間資訊,用於刪除處理完的主機寫
指令的紀錄,以及附加Tpre到遞交佇列310中的新進主機寫指令的紀錄(步驟S633),及更新Tpre為代表目前時間的時間戳記,供下一個批次的主機寫指令的執行參考(步驟S635)。
After the loop is executed, the
以下舉實例輔助說明圖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):
雖然圖3只顯示二個佇列310及330,但主機端可依據不同應用需求建立更多數量的遞交子佇列(Submission Sub-queues)及完成子佇列(Completion Sub-queues)。表1可修改為包含不同遞交子佇列中的主機寫指令的到達時間資訊,並針對所有遞交子佇列中的主機寫指令是否需要立即處理做總合性的判斷,本發明並不因此受限。
Although FIG. 3 only shows two
為解決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
參考圖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
參考圖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
當儲存裝置130處於髒亂模式時,LUN 139中的許多實體頁面可能包含有效及無效區段(又稱為過期區段),其中,有效區段儲存有效的使用者資料,無效區段儲存無效的(舊的)使用者資料。當處理單元133偵測到LUN 139的可用空間不足時,可指示快閃控制器135讀取並蒐集來源區塊中有效區段中的使用者資料,接著,指示快閃控制器135重新寫入蒐集起來的有效的使用者資料至主動區塊(或目的區塊)的空實體頁面,使得這些包含無效的使用者資料的資料區塊(來源區塊)可變更成為閒置區塊。之後,閒置區塊於抹除後,可作為主動區塊以提供資料儲存空間。如上所述的程序稱為垃圾回收。
When the
然而,處理單元133及閃存介面137需要一段時間完成整個GC程序,可能造成遞交佇列310中的部分主機寫指令的等待時間過長而無法滿足QoS的延遲時間測項的要求。為了避免如上所述問題,於一些實施例中,GC操作模組470可修改為將整個垃圾回收程序分成數個階段,並且於執行一個階段的工作前先判斷是否存在需要立即處理的主機寫指令。當存在需要立即處理的主機寫指令時,優先處理這些主機寫指令。
However, it takes some time for the
於一些實施例中,整個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
參考圖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
於步驟S830或S1030的一些實施例,處理單元133可呼叫並執行函數HW_PushIOCmdInfoPrdInfo(),用於完成如圖6所述的方法步驟。於步驟S830或S1030的另一些實施例,H2F表寫入模組450或GC操作模組470可嵌入如圖6所述的方法步驟的程式碼,以供處理單元133執行。
In some embodiments of step S830 or S1030, the
本發明所述的方法中的全部或部分步驟可以電腦程式實現,例如電腦的作業系統、電腦中特定硬體的驅動程式、或軟體應用程式。此外,也可實現於如上所示的其他類型程式。所屬技術領域具有通常知識者可將本發明實施例的方法撰寫成電腦程式,為求簡潔不再加 以描述。依據本發明實施例方法實施的電腦程式可儲存於適當的電腦可讀取介質,例如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)
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)
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)
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)
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 |
-
2019
- 2019-03-22 TW TW108109906A patent/TWI739075B/en active
- 2019-03-22 CN CN201910220318.3A patent/CN111399750B/en active Active
- 2019-06-05 TW TW108119438A patent/TWI719494B/en active
- 2019-06-05 TW TW110102306A patent/TWI828963B/en active
- 2019-06-05 CN CN201910486615.2A patent/CN111399752B/en active Active
Patent Citations (6)
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) |