TWI701662B - 快閃記憶裝置的資料存取控制方法及電腦程式產品 - Google Patents
快閃記憶裝置的資料存取控制方法及電腦程式產品 Download PDFInfo
- Publication number
- TWI701662B TWI701662B TW108124030A TW108124030A TWI701662B TW I701662 B TWI701662 B TW I701662B TW 108124030 A TW108124030 A TW 108124030A TW 108124030 A TW108124030 A TW 108124030A TW I701662 B TWI701662 B TW I701662B
- Authority
- TW
- Taiwan
- Prior art keywords
- queue
- mapping table
- group mapping
- data
- flash memory
- Prior art date
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/14—Protection against unauthorised use of memory or access to memory
- G06F12/1458—Protection against unauthorised use of memory or access to memory by checking the subject access rights
- G06F12/1483—Protection against unauthorised use of memory or access to memory by checking the subject access rights using an access-table, e.g. matrix or list
-
- 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/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/10—Address translation
- G06F12/1009—Address translation using page tables, e.g. page table structures
-
- 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
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/10—Program control for peripheral devices
- G06F13/12—Program control for peripheral devices using hardware independent of the central processor, e.g. channel or peripheral processor
- G06F13/122—Program control for peripheral devices using hardware independent of the central processor, e.g. channel or peripheral processor where hardware performs an I/O function other than control of data transfer
-
- 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/10—Providing a specific technical effect
- G06F2212/1016—Performance improvement
-
- 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/7201—Logical to physical mapping or translation of blocks or pages
-
- 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
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Mathematical Physics (AREA)
- Computer Security & Cryptography (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
- Memory System (AREA)
Abstract
本發明提出一種快閃記憶裝置的資料存取控制方法,該方法由處理單元執行,包含以下步驟:獲得關聯於資料讀取操作的邏輯位址;判斷邏輯位址對應的群組映射表是否佇列於鎖定佇列,或者交換佇列的熱區中的輪廓資料;以及當判斷成立時,禁止改變該鎖定佇列及該交換佇列的內容。
Description
本發明涉及儲存裝置,尤指一種快閃記憶裝置的資料存取控制方法及電腦程式產品。
快閃記憶裝置通常分為NOR快閃記憶裝置與NAND快閃記憶裝置。NOR快閃記憶裝置為隨機存取裝置,主裝置(Host)可於位址腳位上提供任何存取NOR快閃記憶裝置的位址,並及時地從NOR快閃記憶裝置的資料腳位上獲得儲存於該位址上的資料。相反地,NAND快閃記憶裝置並非隨機存取,而是序列存取。NAND快閃記憶裝置無法像NOR快閃記憶裝置一樣,可以存取任何隨機位址,主裝置反而需要寫入序列的位元組(Bytes)的值到NAND快閃記憶裝置中,用以定義請求命令(Command)的類型(如,讀取、寫入、抹除等),以及用在此命令上的位址。位址可指向一個頁面(快閃記憶裝置中寫入作業的最小資料塊)或一個區塊(快閃記憶裝置中抹除作業的最小資料塊)。
由於NAND快閃記憶裝置並非隨機存取裝置,為了提升寫入的效率,主裝置可提供至少一個長度的連續性資料,例如128K位元組的資料,使得快閃記憶裝置可以有效率的並行作業方式將資料寫入其中的數個儲存子單元。為了加速NAND快閃記憶裝置的使用者資料存取,隨機存取記憶體暫存多個映射表(Maps),每個映射表儲存一段連續邏輯位置的使用者資料實際儲存於哪些實體位置的資訊。當成功
寫入一個邏輯位置的使用者資料後,處理單元更新暫存於隨機存取記憶體的相應映射表中此邏輯位置及寫入實體位置的對應關係資訊。於讀取特定邏輯位置的資料時,處理單元先搜索隨機存取記憶體中的映射表,用於取得相應的實體位置,接著,從特定儲存子單元的實體位置讀取使用者資料。當隨機存取記憶體的空間不足以存放所有的映射表時,處理單元只能挑選一部份的映射表並暫存於隨機存取記憶體。然而,當欲讀取或寫入的使用者資料的對應關係資訊在隨機存取記憶體找不到時,處理單元需要先從儲存子單元讀取映射表並儲存至隨機存取記憶體,這將耗費大量的時間、處理單元的運算能力以及閃存介面的頻寬。因此,本發明提出一種快閃記憶裝置的資料存取控制方法及電腦程式產品,用以解決如上所述的問題。
有鑑於此,如何減輕或消除上述相關領域的缺失,實為有待解決的問題。
本發明提出一種快閃記憶裝置的資料存取控制方法,由處理單元執行,包含以下步驟:獲得關聯於資料讀取操作的邏輯位址;判斷邏輯位址對應的群組映射表是否佇列於鎖定佇列,或者交換佇列的熱區;以及當判斷成立時,禁止改變該鎖定佇列及該交換佇列的內容。
本發明另提出一種電腦程式產品,用於由處理單元載入並執行,包含可實施如上所述的資料存取控制方法的程式碼。
上述實施例的優點之一,通過鎖定佇列設置、交換佇列的熱區設置,以上步驟的執行,可用來避免消耗處理單元的運算能力及記憶體介面的頻寬,提升系統的整體效能。
本發明的其他優點將搭配以下的說明和圖式進行更詳細的解說。
100:系統架構
110:主裝置
130:控制器
131:處理單元
135:主裝置介面
137:記憶體介面
139:閃存介面
150:動態隨機存取記憶體
170:NAND閃存
170#0~170#11:邏輯單元編號
CH#0~CH#3:輸出入通道
CE#0~CE#2:晶片致能控制訊號
310:高階映射表
330-0~330-5:映射表
410:實體位置資訊
410-0:(實體)區塊編號
410-1:(實體)頁面編號
410-2:(實體)平面編號
410-3:邏輯單元編號以及輸出入通道編號
430:實體區塊
435:實體區域
510:交換佇列的記憶體空間
510-0~510-6:交換節點
530:鎖定佇列的記憶體空間
530-0~530-3:鎖定節點
550:映射表的記憶體空間
550-0~550-9:儲存映射表的區域
S610~S670:方法步驟
S710~S770:方法步驟
圖1為依據本發明實施例的快閃記憶裝置的系統架構示意圖。
圖2為閃存介面與邏輯單元編號之間的連接示意圖。
圖3為高階映射表及映射表的示意圖。
圖4為實體儲存對照示意圖。
圖5為依據本發明實施例的動態隨機存取記憶體的空間配置及暫存映射表的初始狀態示意圖。
圖6為依據本發明實施例的主機讀取命令的處理方法流程圖。
圖7為依據本發明實施例的主機寫命令的處理方法流程圖。
圖8至圖11為依據本發明實施例的在不同使用案例下的更新後的映射表及交換佇列內容的示意圖。
以下說明為完成發明的較佳實現方式,其目的在於描述本發明的基本精神,但並不用以限定本發明。實際的發明內容必須參考之後的權利要求範圍。
必須了解的是,使用於本說明書中的”包含”、”包括”等詞,用以表示存在特定的技術特徵、數值、方法步驟、作業處理、元件以及/或組件,但並不排除可加上更多的技術特徵、數值、方法步驟、作業處理、元件、組件,或以上的任意組合。
於權利要求中使用如”第一”、”第二”、”第三”等詞是用來修飾權利要求中的元件,並非用來表示之間具有優先順序,前置關係,或者是一個元件先於另一個元件,或者是執行方法步驟時的時間先後順序,僅用來區別具有相同名字的元件。
必須了解的是,當元件描述為”連接”或”耦接”至另一元件時,可以是直接連結、或耦接至其他元件,可能出現中間元件。相反地,當元件描述為”直接連接”或”直接耦接”至另一元件時,其中不存在任何中間元件。使用來描述元件之間關係的其他語詞也可類似方式解讀,例如”介於”相對於”直接介於”,或者是”鄰接”相對於”直接鄰接”等等。
參考圖1。系統架構100包含主裝置110以及資料儲存裝置120,資料
儲存裝置120包含記憶體控制器130及NAND閃存(Flash)170,可更包含動態隨機存取記憶體150(Dynamic Random Access Memory,DRAM)。此系統架構100可實施於個人電腦、筆記型電腦(Laptop PC)、平板電腦、手機、數位相機、數位攝影機等電子產品。記憶體控制器130是一種特殊應用積體電路(Application-Specific Integrated Circuit,ASIC),用來控制動態隨機存取記憶體150、NAND閃存170的資料存取,可包含處理單元131、主裝置介面135、記憶體介面137及閃存介面139。NAND閃存170提供大量的儲存空間,通常是數百Gigabytes,甚至是Terabytes,可用於儲存大量的使用者資料,例如高解析度圖片、影片等。NAND閃存170中的記憶單元可為三層式單元(Triple Level Cells,TLCs)或四層式單元(Quad-Level Cells,QLCs)。動態隨機存取記憶體150可用於暫存主裝置110即將寫入NAND閃存170的使用者資料,從NAND閃存170讀取並即將敲出給主裝置110的使用者資料,查找時所需的邏輯-物理位址映射表(Logical to Physical Address Mapping Table,L2P Table),或者是即將寫入NAND閃存170的L2P映射表。
記憶體控制器130包含處理單元131,通過主裝置介面135與主裝置110通信。主裝置介面135可為通用快閃記憶儲存(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及處理單元131中之任一者可使用多種方式實施,如使用通用硬體(例如,單一處理器、具平行處理能力的多處理器,或其他具運算能力的處理器),並且在執行韌體或軟體指令(Instructions)時,提供之後描述的功能。多處理器為單一的運算
元件,可配備二或更多的獨立處理器(又稱為多核)來讀取及執行程式指令。
處理單元131可通過閃存介面139與NAND閃存170通信,例如,可採用開放NAND快閃(Open NAND Flash Interface ONFI)、雙倍資料率開關(DDR Toggle)或其他介面。處理單元131可透過記憶體介面137與動態隨機存取記憶體150通信,例如,可採用第三代雙倍資料率(Double Data Rate Third Generation DDR3)、第四代雙倍資料率(Double Data Rate Fourth Generation DDR4)或其他介面。
參考圖2,閃存介面139可包含四個輸出入通道(I/O channels,以下簡稱通道)CH#0至CH#3,並且以邏輯單元編號(Logical Unit Number,LUN)識別。每一個通道連接多個邏輯單元編號,例如,通道CH#0連接邏輯單元編號170#0至170#1,通道CH#1連接邏輯單元編號170#3至170#4,依此類推。換句話說,多個邏輯單元編號可共享一個通道,邏輯單元編號為晶片致能(Chip Enable,CE)訊號所控制的最小單位。
為了記錄邏輯位置(由主裝置110管理)及實體位置(由記憶體控制器130管理)間的對應關係,記憶體控制器130於動態隨機存取記憶體150維護L2P映射表,依序儲存每個邏輯位址的資料(使用者資料)實際儲存於NAND閃存170的哪個物理位址的資訊,讓記憶體控制器130處理關於特定邏輯位址的讀取或寫入命令時,可快速查找出對應的物理位址。資料儲存裝置120可能未配置有動態隨機存取記憶體150,或僅配置有部分容量的動態隨機存取記憶體150,此架構稱為部分動態隨機存取記憶體(Partial DRAM),在此架構下,動態隨機存取記憶體150無法提供足夠空間儲存整個L2P映射表。
參考圖3,為了順利地存取L2P映射表,L2P映射表可切成多個群組映射表(Group Tables)330-0至330-n,n為正整數,並儲存於NAND閃存170。每一群組映射表330例如可記錄1024筆LBA所對應
的物理位址的資訊,例如,群組映射表330-0依序儲存從LBA#0至LBA#1023的物理位址資訊,群組映射表330-1依序儲存從LBA#1024至LBA#2047的物理位址資訊,以下類推。處理單元131通過閃存介面139從NAND閃存170讀取相應於特定邏輯位址的群組映射表330,並儲存於動態隨機存取記憶體150或處理單元131內建的靜態隨機存取記憶體(SRAM)。為了讓處理單元131可從NAND閃存170讀取適當的群組映射表330,本發明實施例可提供高階映射表(High-level Mapping Tables)310,用於儲存關群組映射表330的物理位址資訊。邏輯位址可用邏輯區塊位址(Logical Block Address LBA)表示。舉例來說,群組映射表330-0儲存於NAND閃存170中的物理位址(X0,Y0),群組映射表330-1儲存於NAND閃存170中的物理位址(X1,Y1),依此類推。然而,通過閃存介面139讀取群組映射表會消耗處理器131的運算能力及閃存介面139的頻寬,因此,如何減少從NAND閃存170讀取映射表的次數成為提升系統效能的重要技術課題。
參考圖4,舉例來說,群組映射表330較佳依照順序儲存相應於每一邏輯位址的物理位址資訊。群組映射表330的長度與對應的邏輯位址的總數成正比。每個LBA對應到一個預設長度的邏輯區塊,例如512位元組(Bytes)、4KB等等,並且此LBA的資料儲存於NAND閃存170的物理位址。物理位址資訊410例如包括四個位元組,其中,410-0記錄實體區塊(Block)編號,410-1記錄頁面(Page)編號及偏移量(offset);410-2紀錄平面(Plane)編號,410-3記錄邏輯單元編號以及輸出入通道編號等等。例如,相應於LBA#2的物理位址資訊410可指向區塊430中的一個區域435。
DRAM 150可配置空間550,用於儲存最多不超過預定數量的群組映射表。例如,空間550中可包含10個區域550-0至550-9,每個區域中的位址是連續的,可分別儲存1個群組映射表。為管理空間550中儲
存的群組映射表,DRAM 150可配置空間510並作為交換佇列(Swap Queue),以及配置空間530並作為鎖定佇列(Locked Queue),交換佇列以及鎖定佇列較佳可由雙向連結串列來實現,亦可為單向連結串列(Linked List)。雙向連結串列中每個節點(Node)包括記錄下上二個節點的物理位址的二個指標(Pointers)以及群組映射表的輪廓(Profile)資料,輪廓資料例如包含群組映射表編號、空間550的物理位址等等,因此,一個節點可對應至一個群組映射表。處理單元131可讀取佇列的節點所記錄的群組映射表的輪廓資料,再依據輪廓資料取得群組映射表的物理位址,達到存取群組映射表的目的。另外,空間510以及空間530中所記錄的節點數量為可變動的,例如,空間510所記錄的交換節點(Swap Node)數量可為10或7,空間530所記錄的鎖定節點(Locked Node)數量可為0或3。空間510加上空間530中所記錄的節點的總數量是固定的,例如,總數量等於10。
鎖定佇列用以記錄空間550中已經被修改但尚未寫入NAND閃存170的群組映射表。換句話說,鎖定佇列中所記錄的群組映射表已被更新,且更新後的群組映射表應儘快寫入至NAND閃存170。鎖定佇列例如可包含3個鎖定節點,包括鎖定節點530-0至530-2,每個鎖定節點儲存群組映射表的輪廓資料以及二個指標。例如,鎖定節點530-0儲存的群組映射表的輪廓資料包含群組映射表編號“96”以及區域550-0的物理位址(或開始位址),用以表示群組映射表#96已被變更,而群組映射表#96的內容乃儲存在區域550-0。鎖定節點530-0的一個指標指向起點(或預設值),另一個指標則寫入空值Null。當鎖定節點530-1建立後,鎖定節點530-0的指標由空值Null變更為鎖定節點530-1的物理位址。
交換佇列與鎖定佇列的運作方式相同,差別處乃是交換佇列用以記錄沒有被修改過的群組映射表,而非修改過的群組映射表。假如群
組映射表#96只會被參考,內容並不會更新時,群組映射表#96乃記錄在交換佇列中,例如,記錄至交換佇列的交換節點510-2。當群組映射表#96的內容需進行更新,則群組映射表#96記錄至鎖定佇列,例如,記錄至鎖定佇列的鎖定節點530-0。之後,處理單元131可通過讀取鎖定佇列的鎖定節點530-0的內容而得知群組映射表#96的物理位址,並將群組映射表#96寫入至NAND閃存170,確保更新後的群組映射表#96亦完成物理性更新。當群組映射表#96寫入至NAND閃存170後,處理單元131較佳將群組映射表#96記錄至交換佇列,例如,記錄至交換節點510-0,使鎖定節點530-0的節點數量減1。
交換佇列包含多個交換節點,如交換節點510-0至510-6,每個交換節點儲存群組映射表的輪廓資料以及二個指標。交換佇列與鎖定佇列較佳皆是先進先出(FIFO)佇列,交換節點510-0(又可稱作頭部節點)儲存最晚進入交換佇列的群組映射表的輪廓資料,而交換節點510-6(又可稱為尾部節點)儲存最早進入交換佇列的群組映射表的輪廓資料。例如,交換節點510-6儲存的內容包含群組映射表編號“93”及區域550-9的物理位址,用以表示群組映射表#93乃儲存於區域550-9。本案交換佇列更劃分為熱區(Hot Zone)及冷區(Cold Zone),熱區包含頭部節點的m個交換節點,冷區包含尾部節點的n個交換節點,m與n皆為正整數,且m加n等於交換佇列中的交換節點的總數量。例如,m等於4,熱區包含交換節點510-0至510-3,n等於3,冷區包含交換節點510-4至510-6。
假設圖5為範例的初始狀態:鎖定佇列中的鎖定節點530-0至530-2從頂端依序儲存群組映射表#96、#101及#100的輪廓資料,交換佇列的熱區中的交換節點510-0至510-3依序儲存群組映射表#94、#99、#98及#0的輪廓資料,交換佇列的冷區中的交換節點510-4至510-6依序儲存群組映射表#97、#95及#93的輪廓資料。
圖6為本案讀取命令處理方法的流程圖,此方法較佳由處理單元131
所執行,讀取命令較佳來自於主裝置110。以下舉出數個使用案例來說明處理單元131如何管理佇列中的群組映射表以回應讀取命令。
步驟S610:處理單元131接收來自主裝置110的讀取命令,其中,讀取命令包括LBA。處理單元131通過主裝置介面135從主裝置110接收讀取命令,此讀取命令例如指示起始LBA等於90400以及長度於8,即讀取LBA#90400至LBA#90407的資料。
步驟S631:處理單元131判斷LBA所對應的群組映射表是否佇列於交換佇列或鎖定佇列中,如果是則執行步驟S651,如果否則執行步驟S633。由於每一群組映射表皆儲存1024筆資料,處理單元131直接將90400除以1024就可以得知LBA#90400乃對應至群組映射表#88,LBA#90407亦對應至群組映射表#88。處理單元131讀取鎖定佇列以及交換佇列的節點就可以得知群組映射表#88並沒有佇列在交換佇列或鎖定佇列,因此,處理單元131執行步驟S633。群組映射表佇列於交換佇列或鎖定佇列指群組映射表的輪廓資訊儲存於交換佇列或鎖定佇列中的一個節點。
步驟S633:處理單元131從NAND閃存170讀取群組映射表,並將群組映射表佇列至交換佇列的頭部節點。處理單元131讀取交換佇列而得知交換節點510-6(尾部節點)所記錄的群組映射表#93的輪廓資料(群組映射表#93暫存在區域550-9)。處理單元131通過閃存介面139從NAND閃存170讀取群組映射表#88,並將群組映射表#88暫存至區域550-9,接著更新交換節點510-6的內容,將內容變更為群組映射表#88的輪廓資料。之後,處理單元131更將交換節點510-6變更為頭部節點(熱區),交換節點510-5則成為尾部節點,此時,佇列在交換佇列的群組映射表順序變更為#88、#94、#99、#98、#0、#97、#95,如圖8所示。
步驟S670:處理單元131依據LBA以及交換佇列或鎖定佇列所佇列的群組映射表以取得NAND閃存170的物理位址,接著從物理位址
讀取資料,並回傳讀取的資料至主裝置110。處理單元131依據交換佇列的的頭部節點的群組映射表#88而得知LBA#90400至LBA#90407所對應的NAND閃存170的物理位址(或多個物理位址)。處理單元131讀取NAND閃存170的物理位址即可取得LBA#90400至LBA#90407所對應的資料,接著,再回傳讀取的資料至主裝置110。
步驟S651:處理單元131判斷群組映射表是否佇列於交換佇列的冷區,如果是則執行步驟S655,如果否則執行步驟S670。在另一種情況下,假設讀取命令的起始LBA等於100以及長度等於8,即讀取LBA#100至LBA#107的資料。LBA#100至LBA#107皆對應至群組映射表#0,而群組映射表#0的輪廓資料已記錄在交換佇列的交換節點510-3,交換節點510-3為交換佇列的熱區,而非交換佇列的冷區,因此,執行步驟S670。特別的是,處理單元131不將交換節點510-3變更為交換佇列的頭部節點,或是變更交換佇列中交換節點510的順序,因此,可節省交換節點510變更所需消耗的系統資源。在另一種情況下,假設群組映射表已佇列在鎖定佇列中,例如,LBA所對應的群組映射表為群組映射表#100,群組映射表#100已佇列在鎖定佇列的鎖定節點530-2,處理單元131亦不將鎖定節點530-2變更為鎖定佇列的頭部節點,或是變更鎖定佇列中鎖定節點530的順序,一樣可以節省鎖定節點530變更所需消耗的系統資源。換句話說,於如上條件發生時,處理單元131直接執行步驟S670的操作,隱含著禁止改變鎖定佇列及交換佇列的內容。
步驟S655:處理單元131將群組映射表改為佇列於交換佇列的頭部節點。在另一種情況下,假設讀取命令的起始LBA等於95300以及長度於8,即讀取LBA#95300至LBA#95307的資料,LBA#95300至LBA#95307皆對應至群組映射表#93,而群組映射表#93的輪廓資料已記錄在交換佇列的交換節點510-6,交換節點510-6為交換佇列的
的冷區。則處理單元131將交換節點510-6變更為交換佇列的頭部節點,交換節點510-5變更為交換佇列的尾部節點,此時,佇列在交換佇列的群組映射表順序變更為#93、#94、#99、#98、#0、#97、#95,如圖9所示。換句話說,處理單元131將命中輪廓資料之前的所有輪廓資料向交換佇列的底端移動一個節點,並且將命中輪廓資料推入交換佇列的頭部節點。
圖7為本案寫入命令處理方法的流程圖,此方法較佳由處理單元131所執行,寫入命令可能來自於主裝置110,亦有可能由處理單元131於執行特定程序時所觸發,例如:垃圾回收程序。以下舉出數個使用案例來說明處理單元131如何管理佇列中的群組映射表以回應寫入命令,並以圖5為範例的初始狀態。
步驟S710:處理單元131接收寫入命令,其中,寫入命令包括LBA以及LBA對應的資料。寫入命令可來自主裝置110,寫入命令亦可由處理單元131所執行的特定程序時所觸發,例如:垃圾回收程序。處理單元131接續如圖5所示的初始狀態,假設寫入命令為寫入LBA#90400至LBA#90407的資料。
步驟S713:處理單元131將LBA對應的資料寫入至NAND閃存170的主動區塊的物理位址。NAND閃存170的實體區塊依其應用可區分成資料區塊以及閒置區塊,資料區塊為寫滿資料或不再寫入資料的實體區塊,閒置區塊為可用來寫入資料的實體區塊。當閒置區塊被選取後,開始寫入資料時,又稱為主動區塊。物理位址較佳為主動區塊的頁面位址或區段(Sector)位址。
步驟S733:處理單元131判斷LBA所對應的群組映射表是否佇列於交換佇列或鎖定佇列中,如果是則執行步驟S751,如果否則執行步驟S735。LBA#90400至LBA#90407皆對應至群組映射表#88,處理單元131讀取鎖定佇列以及交換佇列的節點就可以得知群組映射表#88並沒有佇列在交換佇列或鎖定佇列,因此,處理單元131執行步
驟S735。
步驟S735:處理單元131從NAND閃存170讀取群組映射表,並將群組映射表佇列至鎖定佇列的頭部節點。處理單元131從NAND閃存170讀取群組映射表#88,並將群組映射表#88暫存至區域550-3,接著更新鎖定節點530-2(尾部節點)的內容,將內容更新為群組映射表#88的輪廓資料,並將鎖定節點530-2變更為鎖定佇列的頭部節點,此時,鎖定佇列的節點依序為鎖定節點530-2、鎖定節點530-0以及鎖定節點530-1(尾部節點),佇列在鎖定佇列的群組映射表順序變更為#88、#96、#101,如圖10所示。
步驟S751:處理單元131判斷群組映射表是否佇列於鎖定佇列中,如果是則執行步驟S770,如果否則執行步驟S753。
步驟S753:處理單元131將群組映射表從交換佇列變更佇列至鎖定佇列的頭部節點,並重新排列交換佇列。假設LBA所對應的群組映射表為群組映射表#93,而群組映射表#93的輪廓資料乃記錄在交換佇列的交換節點510-6中。由於群組映射表#93將被更新,因此,處理單元131將群組映射表#93變更至鎖定佇列,並置於鎖定佇列的頭部節點。為了將群組映射表#93更新至鎖定佇列,處理單元131將群組映射表#100寫入至NAND閃存170,並將鎖定節點530-2更新為交換佇列的頭部節點,此時,交換佇列的交換節點的總數將於7更新為8,鎖定佇列的鎖定節點的總數將於3更新為2。接著,處理單元131將交換節點510-6變更為鎖定佇列的頭部節點,此時,鎖定佇列依序為交換節點510-6、鎖定節點530-0以及鎖定節點530-1,此時,交換佇列的交換節點的總數將於8變更為7,交換佇列依序為鎖定節點530-2以及交換節點510-0~5,鎖定佇列的鎖定節點的總數將於2更新為3,如圖11所示。
步驟S770:處理單元131以主動區塊的物理位址來更新群組映射表的內容。處理單元131以資料寫入至主動區塊的物理位址來更新群
組映射表#88的內容,即將主動區塊的物理位址依序記錄至群組映射表中LBA#90400至LBA#90407所對應的物理位址。
在另一實施例中,在步驟S770中,處理單元131更依據寫入條件來決定是否更新。
雖然圖7的方法流程用來處理主機寫指令,但是此方法流程中所述的映射表及佇列管理機制也可應用到垃圾回收(Garbage Collection GC)、損耗平均(Wear Leveling)等會改變映射表內容的程序,本發明並不因此受限。圖7所述的主機寫命令的執行、垃圾回收或損耗平均程序可稱為資料寫入操作。
當鎖定佇列存在鎖定節點後,處理單元131可依序依據鎖定節點所記錄的輪廓資料取得更新後的群組映射表,例如群組映射表#88或群組映射表#93,再將更新後的群組映射表寫入至NAND閃存170。當更新後的群組映射表寫入至NAND閃存170後,處理單元131可將鎖定佇列的鎖定節點變更為交換佇列的交換節點,此時,交換佇列的交換節點的總數將於7更新為10,鎖定佇列的鎖定節點的總數將於3更新為0。或者,處理單元131可利用旗標(Flag)來註記鎖定節點所對應的群組映射表是否已寫入至NAND閃存170,如果是則為”0”,如果否則為”1”。如此一來,即使鎖定節點所對應的群組映射表已寫入至NAND閃存170,鎖定節點仍保存在鎖定佇列。之後,當執行下一個讀取命令或寫入命令時,其LBA所對應的群組映射表乃記錄於鎖定節點中,則處理單元131可直接利用鎖定節點來執行讀取命令或寫入命令,而無需從NAND閃存170讀取LBA所對應的群組映射表。
在另一實施例中,處理單元131可依據寫入條件來決定是否將更新後的群組映射表寫入至NAND閃存170,例如,鎖定佇列的節點數量等於最大值或閥值,交換佇列的節點數量等於最大值或閥值。
本發明所述的方法中的全部或部分步驟可以電腦程式實現,例如電
腦的作業系統、電腦中特定硬體的驅動程式、或軟體應用程式。此外,也可實現於如上所示的其他類型程式。所屬技術領域具有通常知識者可將本發明實施例的方法撰寫成電腦程式,為求簡潔不再加以描述。依據本發明實施例方法實施的電腦程式可儲存於適當的電腦可讀取資料載具,例如DVD、CD-ROM、USB碟、硬碟,亦可置於可通過網路(例如,網際網路,或其他適當載具)存取的網路伺服器。
雖然圖1中包含了以上描述的元件,但不排除在不違反發明的精神下,使用更多其他的附加元件,已達成更佳的技術效果。此外,雖然圖6至圖7的流程圖採用指定的順序來執行,但是在不違反發明精神的情況下,熟習此技藝人士可以在達到相同效果的前提下,修改這些步驟間的順序,所以,本發明並不侷限於僅使用如上所述的順序。此外,熟習此技藝人士亦可以將若干步驟整合為一個步驟,或者是除了這些步驟外,循序或平行地執行更多步驟,本發明亦不因此而侷限。
雖然本發明使用以上實施例進行說明,但需要注意的是,這些描述並非用以限縮本發明。相反地,此發明涵蓋了熟習此技藝人士顯而易見的修改與相似設置。所以,申請權利要求範圍須以最寬廣的方式解釋來包含所有顯而易見的修改與相似設置。
S610~S670:方法步驟
Claims (10)
- 一種快閃記憶裝置的資料存取控制方法,由一處理單元執行,包含:獲得關聯於一資料讀取操作的一第一邏輯位址;判斷該第一邏輯位址對應的一第一群組映射表是否佇列於一鎖定佇列,或者一交換佇列的一熱區;以及當該第一邏輯位址對應的該第一群組映射表佇列於該鎖定佇列,或者該交換佇列的該熱區時,禁止改變該鎖定佇列及該交換佇列的內容,其中,該鎖定佇列儲存一動態隨機存取記憶體中已經被修改但尚未寫入一NAND閃存的映射表的輪廓資料;該交換佇列儲存該動態隨機存取記憶體中沒有被修改過的映射表的輪廓資料,包含該熱區及一冷區;該交換佇列的該熱區包含從頂端數來的m個節點;該交換佇列的該熱區包含從底端數來的n個節點;每個該節點儲存一個群組映射表的輪廓資料;以及每個該輪廓資料包含一個群組映射表的編號以及指向該動態隨機存取記憶體中儲存該群組映射表的起始位址。
- 如請求項1所述的快閃記憶裝置的資料存取控制方法,包含:當該第一邏輯位址對應的該第一群組映射表佇列於該交換佇列的該冷區時,將該第一群組映射表改變佇列至該交換佇列的一頭部節點。
- 如請求項1所述的快閃記憶裝置的資料存取控制方法,包含:當該第一邏輯位址對應的該第一群組映射表沒有儲存於該動態隨機存取記憶體中時,從該NAND閃存讀取該第一群組映射表,將該第一群組映射表佇列至該交換佇列的頭部節點。
- 如請求項1所述的快閃記憶裝置的資料存取控制方法,包含:獲得關聯於一資料寫入操作的一第二邏輯位址; 判斷該第二邏輯位址對應的一第二群組映射表是否佇列於該交換佇列;以及當該第二邏輯位址對應的該第二群組映射表佇列於該交換佇列時,將命中輪廓資料從該交換佇列移動到該鎖定佇列,重新安排該交換佇列中的輪廓資料順序。
- 如請求項4所述的快閃記憶裝置的資料存取控制方法,包含:當該第二邏輯位址對應的該第二群組映射表沒有儲存於該動態隨機存取記憶體中時,從該NAND閃存讀取該第二群組映射表,並將該第二群組映射表佇列至該鎖定佇列的頭部節點。
- 如請求項1至5中任一項所述的快閃記憶裝置的資料存取控制方法,其中該動態隨機存取記憶體的空間不足以儲存所有的群組映射表,以及每個該群組映射表儲存一段連續邏輯位置的使用者資料實際儲存於哪些實體位置的資訊。
- 一種電腦程式產品,用於控制資料存取,由一處理單元載入並執行,包含以下的程式碼:獲得關聯於一資料讀取操作的一第一邏輯位址;判斷該第一邏輯位址對應的一第一群組映射表是否佇列於一鎖定佇列,或者一交換佇列的一熱區;以及當該第一邏輯位址對應的該第一群組映射表佇列於該鎖定佇列,或者該交換佇列的該熱區時,禁止改變該鎖定佇列及該交換佇列的內容,其中,該鎖定佇列儲存一動態隨機存取記憶體中已經被修改但尚未寫入一NAND閃存的映射表的輪廓資料;該交換佇列儲存該動態隨機存取記憶體中沒有被修改過的映射表的輪廓資料,包含該熱區及一冷區;該交換佇列的該熱區包含從頂端數來的m個節點;該交換佇列的該熱區包含從底端數來的n個節點;每個該節點儲存一個群組映射表的輪廓資料;以及每個該輪廓資料 包含一個群組映射表的編號以及指向該動態隨機存取記憶體中儲存該群組映射表的起始位址。
- 如請求項7所述的電腦程式產品,包含以下程式碼:當該第一邏輯位址對應的該第一群組映射表佇列於該交換佇列的該冷區時,將該第一群組映射表改變佇列至該交換佇列的一頭部節點。
- 如請求項7所述的電腦程式產品,包含以下程式碼:獲得關聯於一資料寫入操作的一第二邏輯位址;判斷該第二邏輯位址對應的一第二群組映射表是否佇列於該交換佇列;以及當該第二邏輯位址對應的該第二群組映射表佇列於該交換佇列時,將命中輪廓資料從該交換佇列移動到該鎖定佇列,重新安排該交換佇列中的輪廓資料順序。
- 如請求項7至9中任一項所述的電腦程式產品,其中該動態隨機存取記憶體的空間不足以儲存所有的群組映射表,以及每個該群組映射表儲存一段連續邏輯位置的使用者資料實際儲存於哪些實體位置的資訊。
Priority Applications (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
TW108124030A TWI701662B (zh) | 2019-07-08 | 2019-07-08 | 快閃記憶裝置的資料存取控制方法及電腦程式產品 |
CN201910649770.1A CN112199305B (zh) | 2019-07-08 | 2019-07-18 | 闪存数据存取控制方法及计算机可读取存储介质 |
US16/728,888 US11086798B2 (en) | 2019-07-08 | 2019-12-27 | Method and computer program product and apparatus for controlling data access of a flash memory device |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
TW108124030A TWI701662B (zh) | 2019-07-08 | 2019-07-08 | 快閃記憶裝置的資料存取控制方法及電腦程式產品 |
Publications (2)
Publication Number | Publication Date |
---|---|
TWI701662B true TWI701662B (zh) | 2020-08-11 |
TW202103167A TW202103167A (zh) | 2021-01-16 |
Family
ID=73003109
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
TW108124030A TWI701662B (zh) | 2019-07-08 | 2019-07-08 | 快閃記憶裝置的資料存取控制方法及電腦程式產品 |
Country Status (3)
Country | Link |
---|---|
US (1) | US11086798B2 (zh) |
CN (1) | CN112199305B (zh) |
TW (1) | TWI701662B (zh) |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20180267902A1 (en) * | 2016-02-29 | 2018-09-20 | International Business Machines Corporation | Dynamic tier remapping of data stored in a hybrid storage system |
US10303394B2 (en) * | 2017-02-15 | 2019-05-28 | SK Hynix Inc. | Memory system and operating method thereof |
Family Cites Families (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103984736B (zh) * | 2014-05-21 | 2017-04-12 | 西安交通大学 | 一种高效的nand闪存数据库系统的缓存管理方法 |
TWI661303B (zh) * | 2017-11-13 | 2019-06-01 | 慧榮科技股份有限公司 | 存取快閃記憶體模組的方法及相關的快閃記憶體控制器與電子裝置 |
TWI692690B (zh) * | 2017-12-05 | 2020-05-01 | 慧榮科技股份有限公司 | 存取快閃記憶體模組的方法及相關的快閃記憶體控制器與電子裝置 |
-
2019
- 2019-07-08 TW TW108124030A patent/TWI701662B/zh active
- 2019-07-18 CN CN201910649770.1A patent/CN112199305B/zh active Active
- 2019-12-27 US US16/728,888 patent/US11086798B2/en active Active
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20180267902A1 (en) * | 2016-02-29 | 2018-09-20 | International Business Machines Corporation | Dynamic tier remapping of data stored in a hybrid storage system |
US10303394B2 (en) * | 2017-02-15 | 2019-05-28 | SK Hynix Inc. | Memory system and operating method thereof |
Also Published As
Publication number | Publication date |
---|---|
CN112199305A (zh) | 2021-01-08 |
US20210011859A1 (en) | 2021-01-14 |
CN112199305B (zh) | 2024-02-27 |
US11086798B2 (en) | 2021-08-10 |
TW202103167A (zh) | 2021-01-16 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11216185B2 (en) | Memory system and method of controlling memory system | |
KR101498673B1 (ko) | 반도체 드라이브, 그것의 데이터 저장 방법, 그리고 그것을포함한 컴퓨팅 시스템 | |
US9146688B2 (en) | Advanced groomer for storage array | |
US9448946B2 (en) | Data storage system with stale data mechanism and method of operation thereof | |
CN110618788A (zh) | 响应于意外断电而管理原子写入组到持久存储器的刷新 | |
KR20170038853A (ko) | 호스트-관리 비휘발성 메모리 | |
US11269559B2 (en) | Data processing device | |
US20210141736A1 (en) | Storage class memory access | |
CN111984441A (zh) | 瞬间断电回复处理方法及装置以及计算机可读取存储介质 | |
TWI701662B (zh) | 快閃記憶裝置的資料存取控制方法及電腦程式產品 | |
CN114115711B (zh) | 基于非易失内存文件系统的快速缓存系统 | |
US11169918B2 (en) | Data access in data storage device including storage class memory | |
TW202213085A (zh) | 快閃記憶體的資料儲存方法及裝置以及電腦程式產品 | |
US11782854B2 (en) | Cache architecture for a storage device | |
US12019558B2 (en) | Logical to physical address indirection table in a persistent memory in a solid state drive | |
US20210097004A1 (en) | Logical to physical address indirection table in a persistent memory in a solid state drive | |
TWI820473B (zh) | 瞬間斷電回復處理方法及裝置以及電腦程式產品 | |
US12014081B2 (en) | Host managed buffer to store a logical-to physical address table for a solid state drive | |
Liu et al. | Nvmtfs: A non-volatile memory adaptive file system for tiered storage system | |
US20210096778A1 (en) | Host managed buffer to store a logical-to physical address table for a solid state drive | |
Petrov et al. | Data-intensive systems on evolving memory hierarchies | |
Haas et al. | Subsystem and System-level Implications of PCM | |
TW202044048A (zh) | 瞬間斷電回復處理方法及裝置以及電腦程式產品 | |
Hexsel | Do flying cars need wheels? |