TW202026891A - 閃存的資料寫入方法及電腦程式產品 - Google Patents
閃存的資料寫入方法及電腦程式產品 Download PDFInfo
- Publication number
- TW202026891A TW202026891A TW108109906A TW108109906A TW202026891A TW 202026891 A TW202026891 A TW 202026891A TW 108109906 A TW108109906 A TW 108109906A TW 108109906 A TW108109906 A TW 108109906A TW 202026891 A TW202026891 A TW 202026891A
- Authority
- TW
- Taiwan
- Prior art keywords
- write command
- host write
- host
- 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
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Human Computer Interaction (AREA)
- Techniques For Improving Reliability Of Storages (AREA)
- Memory System (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本發明提出一種閃存的資料寫入方法及電腦程式產品,該方法由處理單元執行,包含:於執行一部份的邏輯-物理對照表更新或垃圾回收程序前,判斷遞交佇列中是否存在需要立即處理的主機寫指令;以及當存在需要立即處理的該主機寫指令時,先以一個批次執行該主機寫指令,接著再執行該部份的邏輯-物理對照表更新或垃圾回收程序。
Description
本發明涉及儲存裝置,尤指一種閃存的資料寫入方法及電腦程式產品。
閃存通常分為NOR閃存與NAND閃存。NOR閃存為隨機存取裝置,中央處理器(Host)可於位址腳位上提供任何存取NOR閃存的位址,並及時地從NOR閃存的資料腳位上獲得儲存於該位址上的資料。相反地,NAND閃存並非隨機存取,而是序列存取。NAND閃存無法像NOR閃存一樣,可以存取任何隨機位址,中央處理器反而需要寫入序列的位元組(Bytes)的值到NAND閃存中,用以定義請求命令(Command)的類型(如,讀取、寫入、抹除等),以及用在此命令上的位址。位址可指向一個頁面(閃存中寫入作業的最小資料塊)或一個區塊(閃存中抹除作業的最小資料塊)。
資料寫入的延遲時間(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)操作,避免儲存單元因空間不足而無法寫入使用者資料。本發明提出一種閃存的資料寫入方法及電腦程式產品,用於當儲存單元處於髒亂模式時還可以滿足延遲時間的測項要求。
有鑑於此,如何減輕或消除上述相關領域的缺失,實為有待解決的問題。
本發明提出一種閃存的資料寫入方法,該方法由處理單元於載入並執行軟體或韌體模組的程式碼時實施,包含:於執行一部份的邏輯-物理對照表更新或垃圾回收程序前,判斷遞交佇列中是否存在需要立即處理的主機寫指令;以及當存在需要立即處理的該主機寫指令時,先以一個批次執行該主機寫指令,接著再執行該部份的邏輯-物理對照表更新或垃圾回收程序。
本發明另提出一種電腦程式產品,用於由處理單元載入並執行,包含以下的程式碼:於執行一部份的邏輯-物理對照表更新或垃圾回收程序前,判斷遞交佇列中是否存在需要立即處理的主機寫指令;以及當存在需要立即處理的該主機寫指令時,先以一個批次執行該主機寫指令,接著再執行該部份的邏輯-物理對照表更新或垃圾回收程序。
上述實施例的優點之一,通過如上所述的判斷,可避免因邏輯-物理對照表更新或垃圾回收程序的執行而造成遞交佇列中的部分主機寫指令的等待時間過長。
本發明的其他優點將搭配以下的說明和圖式進行更詳細的解說。
以下說明為完成發明的較佳實現方式,其目的在於描述本發明的基本精神,但並不用以限定本發明。實際的發明內容必須參考之後的權利要求範圍。
必須了解的是,使用於本說明書中的”包含”、”包括”等詞,用以表示存在特定的技術特徵、數值、方法步驟、作業處理、元件以及/或組件,但並不排除可加上更多的技術特徵、數值、方法步驟、作業處理、元件、組件,或以上的任意組合。
於權利要求中使用如”第一”、"第二"、"第三"等詞是用來修飾權利要求中的元件,並非用來表示之間具有優先順序,前置關係,或者是一個元件先於另一個元件,或者是執行方法步驟時的時間先後順序,僅用來區別具有相同名字的元件。
必須了解的是,當元件描述為”連接”或”耦接"至另一元件時,可以是直接連結、或耦接至其他元件,可能出現中間元件。相反地,當元件描述為”直接連接”或”直接耦接”至另一元件時,其中不存在任何中間元件。使用來描述元件之間關係的其他語詞也可類似方式解讀,例如”介於”相對於”直接介於”,或者是”鄰接”相對於”直接鄰接”等等。
參考圖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可儲存執行過程中需要的資料,例如,變數、資料表等。
邏輯單元號(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),或以上兩者。
儲存裝置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可分開存在或整合於同一晶片中。
參考圖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。
參考圖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可讀取或提取完成元件而判斷寫指令的執行結果。
參考圖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中新的實體頁面,用以讓這些釋放出來的實體頁面可於抹除後被其他使用者資料使用。
於一些實施方式中,處理單元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)無法知道從硬體取得的主機寫指令已經延遲了多久。
為了補足主機寫指令到達於遞交佇列310的時間資訊,於一些實施例中,寫指令讀取模組410可修改為於處理主機寫指令的期間附加時間戳記到新到達遞交佇列310的主機寫指令。參考圖6所示的主機寫指令的處理方法的實施例,此方法由處理單元133載入並執行寫指令讀取模組410的程式碼時實施。首先,反覆執行一個迴圈(步驟S611至S613),用於以一個批次(Batch)讀取遞交佇列310中所有需要立即處理的主機寫指令。因為硬體的限制,處理單元133每回合讀取不超過上限數目的主機寫指令。於首次進入迴圈的步驟S611,處理單元133可從隨機存取記憶體131讀取主機寫指令到達遞交佇列310的時間資訊,並且依據時間資訊決定需要立即處理的主機寫指令。到達遞交佇列310的時間資訊可使用下表1實施:
表1
表1中的每個項目可關聯於一個指令集,包含指令集編號、此資料集包含的主機寫指令的編號以及關聯於所有主機寫指令的到達時間戳記。例如,指令集“S0”包含主機寫指令“W0”至“W4”,並且它們到達遞交佇列310的時間為“T0”。“W0”至“W4”亦可代表遞交佇列310中第0至4個項目的主機寫指令。處理單元133可使用公式(1)來判斷一個指令集中的主機寫指令是否需要立即處理:
Tnow-Ti>Ttr
其中,Tnow代表目前時間,i代表正整數,Ti代表遞交佇列310中第i個主機寫指令的到達時間點,Tr代表閥值。閥值的設定可參考延遲時間測項的需求,例如,如果延遲時間測項要求99%的主機寫指令的延遲時間需要小於5毫秒(ms),則閥值可設為介於4~5毫秒間的值。當公式(1)的條件滿足時,代表遞交佇列310中第i個主機寫指令需要立即處理。
指令集編號 | 主機寫指令編號 | 到達時間戳記 |
S0 | W0-W4 | T0 |
S1 | W5-W9 | T1 |
於快取模式(Cache Mode),處理單元133可通過主機介面132從遞交佇列310取得每個主機寫指令,並且依據主機寫指令中的位址資訊通過主機介面132從隨機存取記憶體120讀取待寫入LUN 139的使用者資料,並儲存使用者資料至隨機存取記憶體131。由於使用者資料儲存至隨機存取記憶體131的時候即執行完成主機寫指令,處理單元133可通過主機介面132寫入相應此主機寫指令的完成元件(Completion Element CE)至完成佇列330。之後,處理單元133可安排時間執行寫指令執行模組430的程式碼,用於通過快閃控制器135及閃存介面137將隨機存取記憶體131中暫存的使用者資料寫入LUN 139。
於非快取模式(Non-cache Mode)或儲存裝置130不配置暫存使用者資料的記憶空間,處理單元133通過主機介面132取得一或多個主機寫指令及待寫入的使用者資料後,可直接跳執行寫指令執行模組430的程式碼,用於通過閃存介面137將使用者資料寫入LUN 139。於成功寫入LUN 139後,處理單元133可轉回執行寫指令執行模組430的程式碼,用於寫入相應該(些)主機寫指令的完成元件至完成佇列330。於一些實施例中,寫指令執行模組430及寫指令執行模組430可整合為單一模組,而不受限於FTL架構。
於迴圈執行完畢,處理單元133從隨機存取記憶體131取得代表上一批次的主機寫指令的讀取結束的時間戳記Tpre(步驟S631),更新隨機存取記憶體131中的到達時間資訊,用於刪除處理完的主機寫指令的紀錄,以及附加Tpre到遞交佇列310中的新進主機寫指令的紀錄(步驟S633),及更新Tpre為代表目前時間的時間戳記,供下一個批次的主機寫指令的執行參考(步驟S635)。
以下舉實例輔助說明圖6所述的方法流程。參考圖7,上一個批次的寫指令讀取模組410的執行結束於時間點T2且這一個批次的寫指令讀取模組410的執行70開始於時間點70a並結束於時間點T3(70b)。於時間點70a,隨機存取記憶體131儲存上一個批次的主機寫指令的執行結束時間戳記Tpre為時間點T2,以及如表1所述的主機寫指令“W0”至“W9”到達遞交佇列310的時間資訊。假設指令集“S0”(也就是主機寫指令“W0”至“W4”)滿足公式(1)的條件,需要立即被處理。於是,處理單元133讀取遞交佇列310中的主機寫指令“W0”至“W4”(步驟S631)。於接近時間點T3時,主機寫指令“W0”至“W4”的讀取操作結束。操作結束後,處理單元133從隨機存取記憶體131讀取上一個批次的主機寫指令的執行結束時間戳記Tpre(=T2)(步驟S633)。假設在時間點T2至T3間,中央處理器110寫入主機寫指令“W10”至“W12”至遞交佇列310,並改變指標SQT,用於指向遞交佇列310中的第13個項目。藉由比較隨機存取記憶體131中的到達時間資訊以及指標SQT目前所指的位址,處理單元131可知道中央處理器110新寫入主機寫指令“W10”至“W12”至遞交佇列310。接著,處理單元131更新到達時間資訊如表2所示(步驟S633):
表2
雖然主機寫指令“W10”至“W12”的實際到達時間晚於時間點T2,但由於寫指令讀取模組410不知道任何主機寫指令的實際到達時間,使用最早可能到達時間T2當作時間戳記,可降低主機寫指令的實際延遲時間超出時間測項需求的可能性。
指令集編號 | 主機寫指令編號 | 到達時間戳記 |
S1 | W5-W9 | T1 |
S2 | W10-W12 | T2 |
雖然圖3只顯示二個佇列310及330,但主機端可依據不同應用需求建立更多數量的遞交子佇列(Submission Sub-queues)及完成子佇列(Completion Sub-queues)。表1可修改為包含不同遞交子佇列中的主機寫指令的到達時間資訊,並針對所有遞交子佇列中的主機寫指令是否需要立即處理做總合性的判斷,本發明並不因此受限。
為解決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表中所有更新後的內容分成數段,並且於寫入一段更新後內容前先判斷是否存在需要立即處理的主機寫指令。當存在需要立即處理的主機寫指令時,優先處理這些主機寫指令。
參考圖9,H2F表910較佳依照順序儲存相應於每一邏輯位址(或邏輯區塊位址Logical Block Address LBA)的實體位址資訊。H2F表910所需的空間較佳與邏輯位址的總數成正比。邏輯位址可以邏輯區塊位址表示,每一個LBA對應到一個固定大小的邏輯區塊,例如512位元組(Bytes),並儲存至一實體位址。舉例來說,H2F表910依序儲存從LBA#0至LBA#65535的實體位址資訊。數個連續邏輯位址(例如LBA#0至LBA#7)的資料可形成一個主頁面(Host Page)。實體位址資訊330例如包括四個位元組,其中,930-0紀錄(實體)區塊編號((Physical) Block Number)),930-1紀錄(實體)頁面編號及偏移量(offset);930-2紀錄(實體)平面編號,930-3紀錄邏輯單元編號以及輸出入通道編號等等。例如,相應於LBA#2的實體位址資訊930可指向區塊950中的一個區域951。
參考圖8所示的H2F表的更新方法的實施例,此方法由處理單元133載入並執行H2F表寫入模組450的程式碼時實施。處理單元133可反覆執行一個迴圈(步驟S810至S870),用於分段寫入H2F表中所有更新後的內容至LUN 139。例如,暫存H2F表中關於LBA#0至LBA#2047中的實體位址資訊被更新時,處理單元133可於一個批次先寫入關於LBA#0至LBA#1023(也就是第一段)的實體位址資訊,並且於下一個批次寫入關於LBA#1028至LBA#2047(也就是第二段)的實體位址資訊。於每一回合,處理單元133先判斷是否存在需要立即處理的主機寫指令(步驟S810)。主機寫指令的判斷可參考如上所述表1、步驟S613及公式(1)的說明,為求簡明不再贅述。當存在需要立即處理的主機寫指令時(步驟S810中“是”的路徑),處理單元133先讀取需要立即處理的主機寫指令(步驟S830),接著再儲存H2F表中一段更新後的內容至LUN 139(步驟S850)。當不存在需要立即處理的主機寫指令時(步驟S810中“否”的路徑),直接儲存H2F表中一段更新後的內容至LUN 139(步驟S850)。
當儲存裝置130處於髒亂模式時,LUN 139中的許多實體頁面可能包含有效及無效區段(又稱為過期區段),其中,有效區段儲存有效的使用者資料,無效區段儲存無效的(舊的)使用者資料。當處理單元133偵測到LUN 139的可用空間不足時,可指示快閃控制器135讀取並蒐集來源區塊中有效區段中的使用者資料,接著,指示快閃控制器135重新寫入蒐集起來的有效的使用者資料至主動區塊(或目的區塊)的空實體頁面,使得這些包含無效的使用者資料的資料區塊(來源區塊)可變更成為閒置區塊。之後,閒置區塊於抹除後,可作為主動區塊以提供資料儲存空間。如上所述的程序稱為垃圾回收。
然而,處理單元133及閃存介面137需要一段時間完成整個GC程序,可能造成遞交佇列310中的部分主機寫指令的等待時間過長而無法滿足QoS的延遲時間測項的要求。為了避免如上所述問題,於一些實施例中,GC操作模組470可修改為將整個垃圾回歐程序分成數個階段,並且於執行一個階段的工作前先判斷是否存在需要立即處理的主機寫指令。當存在需要立即處理的主機寫指令時,優先處理這些主機寫指令。
於一些實施例中,整個GC程序可分為五個階段的操作:處理單元133可於第一階段決定有效的使用者資料在來源區塊的來源位址,以及目的區塊的目的位址。於第二階段,處理單元133可指示快閃控制器135從LUN 139的來源地址讀取使用者資料,並且指示快閃控制器135將讀取的使用者資料寫入LUN 139的目的位址。於第三及第四階段,處理單元133可分別更新H2F表及物理-邏輯對照表(Physical-Logical Mapping Table,P2L表)。處理單元133可於第五階段將目的區塊變更為閒置區塊。以上的五個階段僅為範例,本領域技術人員可依據處理單元133、快閃控制器135及閃存介面137的工作速度於GC操作模組470中將幾個階段合併成單一階段,或者將一個階段拆成數個子階段。此外,GC操作模組470可根據處理狀態優化這五個階段的執行順序,例如,將第一至第二階段安排成一個迴圈,直到目的區塊無法再寫入來自來源區塊的使用者資料後,再執行第三至第五階段。
參考圖10所示的GC程序的執行方法的實施例,此方法由處理單元133載入並執行GC操作模組470的程式碼時實施。處理單元133可反覆執行一個迴圈(步驟S1010至S1070),用於分階段執行GC程序。於每一批次,處理單元133先判斷是否存在需要立即處理的主機寫指令(步驟S1010)。主機寫指令的判斷可參考如上所述表1、步驟S613及公式(1)的說明,為求簡明不再贅述。當存在需要立即處理的主機寫指令時(步驟S1010中“是”的路徑),處理單元133先讀取需要立即處理的主機寫指令(步驟S1030),接著再執行第一個或下一個階段的GC操作(步驟S1050)。當不存在需要立即處理的主機寫指令時(步驟S1010中“否”的路徑),直接執行第一個或下一個階段的GC操作(步驟S1050)。
於步驟S830或S1030的一些實施例,處理單元133可呼叫並執行函數HW_PushIOCmdInfoPrdInfo(),用於完成如圖6所述的方法步驟。於步驟S830或S1030的另一些實施例,H2F表寫入模組450或GC操作模組470可嵌入如圖6所述的方法步驟的程式碼,以供處理單元133執行。
本發明所述的方法中的全部或部分步驟可以電腦程式實現,例如電腦的作業系統、電腦中特定硬體的驅動程式、或軟體應用程式。此外,也可實現於如上所示的其他類型程式。所屬技術領域具有通常知識者可將本發明實施例的方法撰寫成電腦程式,為求簡潔不再加以描述。依據本發明實施例方法實施的電腦程式可儲存於適當的電腦可讀取介質,例如DVD、CD-ROM、USB碟、硬碟,亦可置於可通過網路(例如,網際網路,或其他適當載具)存取的網路伺服器。
雖然圖1中包含了以上描述的元件,但不排除在不違反發明的精神下,使用更多其他的附加元件,已達成更佳的技術效果。此外,雖然圖6、圖8及圖10的流程圖採用指定的順序來執行,但是在不違反發明精神的情況下,熟習此技藝人士可以在達到相同效果的前提下,修改這些步驟間的順序,所以,本發明並不侷限於僅使用如上所述的順序。此外,熟習此技藝人士亦可以將若干步驟整合為一個步驟,或者是除了這些步驟外,循序或平行地執行更多步驟,本發明亦不因此而侷限。
雖然本發明使用以上實施例進行說明,但需要注意的是,這些描述並非用以限縮本發明。相反地,此發明涵蓋了熟習此技藝人士顯而易見的修改與相似設置。所以,申請權利要求範圍須以最寬廣的方式解釋來包含所有顯而易見的修改與相似設置。
100:電子裝置
110:中央處理器
120、131:隨機存取記憶體
130:儲存裝置
132:主機介面
133:處理單元
135:快閃控制器
137:閃存介面
139:LUN
139#0~139#11:LUN
CH#0~CH#3:輸出入通道
CE#0~CE#2:致能訊號
310:遞交佇列
330:完成佇列
CQH、CQT、SQH、SQT:指標
410、430、450、470:軟體或韌體模組
S510~S590、S611~S635、S810~S870、S1010~S1070:方法步驟
70:一個批次的主機寫指令的執行
70a:開始執行時間點
70b、T0、T1、T2、T3:結束執行時間點
W0~W12:主機寫指令
910:H2F表
930:實體位址資訊
930-0:(實體)區塊編號
930-1:(實體)頁面編號及偏移量
930-2:(實體)平面編號
930-3:邏輯單元編號
圖1為依據本發明實施例之快閃記憶體的系統架構示意圖。
圖2為閃存介面與LUN的連接示意圖。
圖3為指令佇列的示意圖。
圖4為閃存轉譯層(Flash Translation Layer FTL)架構的示意圖。
圖5為一些實施方式的資料寫入方法的流程圖。
圖6為依據本發明實施例的主機寫指令的處理方法流程圖。
圖7為依據本發明實施例的主機寫指令的到達及處理示意圖。
圖8為依據本發明實施例的邏輯-物理對照表(Host-Flash H2F Table)的更新方法流程圖。
圖9為實體儲存對照示意圖。
圖10為依據本發明實施例的垃圾回收(Garbage Collection GC)程序的執行方法流程圖。
S810~S870:方法步驟
Claims (10)
- 一種閃存的資料寫入方法,由一處理單元於載入並執行一軟體或韌體模組的程式碼時實施,包含: 於執行一部份的邏輯-物理對照表更新或垃圾回收程序前,判斷一遞交佇列中是否存在需要立即處理的一主機寫指令;以及 當存在需要立即處理的該主機寫指令時,先以一個批次執行該主機寫指令,接著再執行該部份的邏輯-物理對照表更新或垃圾回收程序。
- 如請求項1所述的閃存的資料寫入方法,包含: 當不存在需要立即處理的主機寫指令時,執行該部份的邏輯-物理對照表更新或垃圾回收程序。
- 如請求項1所述的閃存的資料寫入方法,包含: 使用一公式判斷該遞交佇列中是否存在需要立即處理的該主機寫指令: Tnow-Ti>Ttr 其中,Tnow代表目前時間,i代表正整數,Ti代表該遞交佇列中第i個主機寫指令的到達時間點,Tr代表一閥值;當該公式的條件滿足時,代表該該遞交佇列中第i個主機寫指令需要立即處理。
- 如請求項3所述的閃存的資料寫入方法,其中該遞交佇列中每一個主機寫指令的到達時間點為該處理單元偵測到該主機寫指令進入該遞交佇列時的上一個批次的主機寫指令的執行結束的一時間點。
- 如請求項1所述的閃存的資料寫入方法,其中該部份的邏輯-物理對照表更新包含通過一閃存介面寫入關聯於一段連續邏輯位址的實體位址資訊至一邏輯單元號。
- 如請求項1所述的閃存的資料寫入方法,其中該垃圾回收程序分為多個階段,以及該部份的垃圾回收程序包含一個階段的操作。
- 如請求項6所述的閃存的資料寫入方法,其中該多個階段的操作包含:決定包含有效的使用者資料的區段的一來源位址,以及閒置區塊或主動區塊的空實體頁面的一目的位址;指示一快閃控制器從一邏輯單元號的該來源地址讀取使用者資料,並且指示該快閃控制器將該讀取的使用者資料寫入該邏輯單元號的該目的位址;更新一邏輯-物理對照表;更新一物理-邏輯對照表;或指示該快閃控制器抹除該邏輯單元號中包含該來源位址的資料區塊。
- 如請求項1所述的閃存的資料寫入方法,其中執行每一該主機寫指令的操作包含通過一主機介面從該遞交佇列取得該主機寫指令;依據該主機寫指令中的位址資訊通過該主機介面從一隨機存取記憶體讀取待寫入一邏輯單元號的使用者資料;儲存該使用者資料至一隨機存取記憶體;以及通過該主機介面寫入相應該主機寫指令的一完成元件至一完成佇列。
- 如請求項1所述的閃存的資料寫入方法,其中執行每一該主機寫指令的操作包含通過一主機介面從該遞交佇列取得該主機寫指令;依據該主機寫指令中的位址資訊通過該主機介面從一隨機存取記憶體讀取待寫入一邏輯單元號的使用者資料;通過一閃存介面將該使用者資料寫入至該邏輯單元號;以及通過該主機介面寫入相應該主機寫指令的一完成元件至一完成佇列。
- 一種電腦程式產品,用於閃存的資料寫入,由一處理單元載入並執行,包含以下的程式碼: 於執行一部份的邏輯-物理對照表更新或垃圾回收程序前,判斷一遞交佇列中是否存在需要立即處理的一主機寫指令;以及 當存在需要立即處理的該主機寫指令時,先以一個批次執行該主機寫指令,接著再執行該部份的邏輯-物理對照表更新或垃圾回收程序。
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 true TW202026891A (zh) | 2020-07-16 |
TWI739075B TWI739075B (zh) | 2021-09-11 |
Family
ID=71428322
Family Applications (3)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
TW108109906A TWI739075B (zh) | 2019-01-03 | 2019-03-22 | 閃存的資料寫入方法及電腦程式產品 |
TW108119438A TWI719494B (zh) | 2019-01-03 | 2019-06-05 | 用於控制不同類型儲存單元的方法及裝置 |
TW110102306A TWI828963B (zh) | 2019-01-03 | 2019-06-05 | 用於控制不同類型儲存單元的裝置及電腦程式產品 |
Family Applications After (2)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
TW108119438A TWI719494B (zh) | 2019-01-03 | 2019-06-05 | 用於控制不同類型儲存單元的方法及裝置 |
TW110102306A TWI828963B (zh) | 2019-01-03 | 2019-06-05 | 用於控制不同類型儲存單元的裝置及電腦程式產品 |
Country Status (2)
Country | Link |
---|---|
CN (2) | CN111399750B (zh) |
TW (3) | TWI739075B (zh) |
Families Citing this family (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111949580B (zh) * | 2020-08-12 | 2021-11-12 | 深圳安捷丽新技术有限公司 | 多频率内存接口及其配置方法 |
TWI754396B (zh) * | 2020-09-29 | 2022-02-01 | 慧榮科技股份有限公司 | 快閃記憶體的資料儲存方法及裝置以及電腦程式產品 |
CN114327240A (zh) | 2020-09-29 | 2022-04-12 | 慧荣科技股份有限公司 | 计算机可读存储介质、闪存存储器的数据存储方法及装置 |
CN112379830B (zh) * | 2020-11-03 | 2022-07-26 | 成都佰维存储科技有限公司 | 有效数据位图的创建方法、装置、存储介质及电子设备 |
CN115617706A (zh) * | 2021-07-13 | 2023-01-17 | 美光科技公司 | 优化使用逻辑到物理表搜索的垃圾回收 |
Family Cites Families (25)
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 (ko) * | 2007-11-06 | 2014-06-09 | 삼성전자주식회사 | 반도체 디스크 및 그것의 동작 방법 |
US7409489B2 (en) * | 2005-08-03 | 2008-08-05 | Sandisk Corporation | Scheduling of reclaim operations in non-volatile memory |
US7716411B2 (en) * | 2006-06-07 | 2010-05-11 | Microsoft Corporation | Hybrid memory device with single interface |
US7444461B2 (en) * | 2006-08-04 | 2008-10-28 | Sandisk Corporation | Methods for phased garbage collection |
US7441071B2 (en) * | 2006-09-28 | 2008-10-21 | Sandisk Corporation | Memory systems for phased garbage collection using phased garbage collection block or scratch pad block as a buffer |
CN101599295B (zh) * | 2008-06-02 | 2011-12-07 | 联阳半导体股份有限公司 | 整合型储存装置及其控制方法 |
TWI442222B (zh) * | 2010-07-21 | 2014-06-21 | Silicon Motion Inc | 快閃記憶裝置與快閃記憶裝置管理方法 |
CN102375779B (zh) * | 2010-08-16 | 2015-08-19 | 深圳市朗科科技股份有限公司 | 一种数据处理方法以及数据处理模块 |
EP2807567B1 (en) * | 2012-01-27 | 2018-03-07 | Marvell World Trade Ltd. | Systems and methods for dynamic priority control |
CN102799534B (zh) * | 2012-07-18 | 2015-11-25 | 上海宝存信息科技有限公司 | 基于固态存储介质的存储系统及方法、冷热数据识别方法 |
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 |
US9684568B2 (en) * | 2013-12-26 | 2017-06-20 | Silicon Motion, Inc. | Data storage device and flash memory control method |
US9471254B2 (en) * | 2014-04-16 | 2016-10-18 | Sandisk Technologies Llc | Storage module and method for adaptive burst mode |
CN104361113B (zh) * | 2014-12-01 | 2017-06-06 | 中国人民大学 | 一种内存‑闪存混合存储模式下的olap查询优化方法 |
CN106326136A (zh) * | 2015-07-02 | 2017-01-11 | 广明光电股份有限公司 | 固态硬盘搜集垃圾区块的方法 |
US20170060434A1 (en) * | 2015-08-27 | 2017-03-02 | Samsung Electronics Co., Ltd. | Transaction-based hybrid memory module |
US10409719B2 (en) * | 2016-03-17 | 2019-09-10 | Samsung Electronics Co., Ltd. | User configurable passive background operation |
TWI595412B (zh) * | 2016-09-09 | 2017-08-11 | 大心電子(英屬維京群島)股份有限公司 | 資料傳輸方法、記憶體儲存裝置及記憶體控制電路單元 |
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 (zh) * | 2017-05-26 | 2021-08-24 | 上海宝存信息科技有限公司 | 固态硬盘访问方法以及使用该方法的装置 |
CN107844431B (zh) * | 2017-11-03 | 2022-01-25 | 合肥兆芯电子有限公司 | 映射表更新方法、存储器控制电路单元与存储器存储装置 |
-
2019
- 2019-03-22 CN CN201910220318.3A patent/CN111399750B/zh active Active
- 2019-03-22 TW TW108109906A patent/TWI739075B/zh active
- 2019-06-05 CN CN201910486615.2A patent/CN111399752B/zh active Active
- 2019-06-05 TW TW108119438A patent/TWI719494B/zh active
- 2019-06-05 TW TW110102306A patent/TWI828963B/zh active
Also Published As
Publication number | Publication date |
---|---|
CN111399750A (zh) | 2020-07-10 |
TW202026893A (zh) | 2020-07-16 |
CN111399750B (zh) | 2023-05-26 |
CN111399752A (zh) | 2020-07-10 |
TWI739075B (zh) | 2021-09-11 |
CN111399752B (zh) | 2023-11-28 |
TWI828963B (zh) | 2024-01-11 |
TWI719494B (zh) | 2021-02-21 |
TW202137017A (zh) | 2021-10-01 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
TWI739075B (zh) | 閃存的資料寫入方法及電腦程式產品 | |
TWI678618B (zh) | 快閃記憶裝置的命名空間操作方法及裝置 | |
CN112948292B (zh) | 储存设备及其中断生成方法 | |
KR101301840B1 (ko) | 비휘발성 메모리 장치의 데이터 처리 방법 | |
US20150074337A1 (en) | Storage device and data processing method thereof | |
US11675698B2 (en) | Apparatus and method and computer program product for handling flash physical-resource sets | |
TWI726314B (zh) | 資料儲存裝置與資料處理方法 | |
US11960396B2 (en) | Method and computer program product for performing data writes into a flash memory | |
TWI612473B (zh) | 垃圾回收方法以及使用該方法的裝置 | |
KR20120105294A (ko) | 불휘발성 메모리를 제어하는 메모리 컨트롤러 | |
TWI792534B (zh) | 以局部清理操作來進行垃圾回收的方法與相關控制器和儲存系統 | |
TW202032547A (zh) | 寫入控制方法以及資料儲存裝置及其控制器 | |
CN110515861B (zh) | 处理刷写命令的存储设备及其方法 | |
US11494113B2 (en) | Computer program product and method and apparatus for scheduling execution of host commands | |
CN112578993B (zh) | 多平面nvm处理编程出错的方法与存储设备 | |
TWI697778B (zh) | 資料儲存裝置與資料處理方法 | |
TWI758745B (zh) | 排程主機命令執行的電腦程式產品及方法及裝置 | |
TWI835027B (zh) | 更新主機與閃存位址對照表的方法及電腦程式產品及裝置 | |
CN111159065A (zh) | 带有关键字的硬件缓存管理单元(bmu) | |
KR20230034535A (ko) | 플래시 메모리 저장장치의 동작방법 | |
TW202422344A (zh) | 執行主機命令的方法及電腦程式產品及裝置 | |
CN116149540A (zh) | 更新主机与闪存地址对照表的方法和计算机可读取存储介质和装置 |