TWI715408B - 快閃記憶體控制器、記憶體裝置以及存取快閃記憶體模組之方法 - Google Patents
快閃記憶體控制器、記憶體裝置以及存取快閃記憶體模組之方法 Download PDFInfo
- Publication number
- TWI715408B TWI715408B TW109100424A TW109100424A TWI715408B TW I715408 B TWI715408 B TW I715408B TW 109100424 A TW109100424 A TW 109100424A TW 109100424 A TW109100424 A TW 109100424A TW I715408 B TWI715408 B TW I715408B
- Authority
- TW
- Taiwan
- Prior art keywords
- data
- flash memory
- cache
- logical address
- binary tree
- 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/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
- 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
-
- 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/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0804—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches with main memory updating
-
- 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/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0877—Cache access modes
-
- 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
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/22—Indexing; Data structures therefor; Storage structures
- G06F16/2228—Indexing structures
- G06F16/2246—Trees, e.g. B+trees
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/23—Updating
- G06F16/2308—Concurrency control
-
- 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/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0646—Horizontal data movement in storage systems, i.e. moving data in between storage devices or systems
- G06F3/0647—Migration mechanisms
-
- 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/0656—Data buffering arrangements
-
- 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/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/7203—Temporary buffering, e.g. using volatile buffer or dedicated buffer blocks
Abstract
一種快閃記憶體控制器,包括一唯讀記憶體、一處理器以及一快取記憶體。唯讀記憶體用以儲存一程式碼。處理器用以執行程式碼以存取一快閃記憶體模組。當處理器自一主機接收第一資料時,處理器將第一資料儲存於快取記憶體之一區域,並且處理器根據第一資料建立或更新一二元樹,二元樹係於處理器自主機接收一讀取指令時被使用,並且當儲存於快取記憶體之資料之一資料量達到一既定數值時,處理器將資料自快取記憶體搬移至快閃記憶體模組。
Description
本發明係有關於快閃記憶體,特別有關於一種快閃記憶體控制器的搜尋方法。
當一主機需要透過快閃記憶體控制器將資料寫入快閃記憶體模組時,主機會將資料傳送至快閃記憶體控制器,而此資料會被暫存於快閃記憶體控制器內的快取記憶體或緩存器中。當暫存於快取記憶體內的資料量到達一既定數值時,資料會被寫入快閃記憶體模組內。舉例而言,快閃記憶體控制器持續自主機接收資料,並且將接收到的資料存入快取記憶體,當接收到的資料量足夠寫入快閃記憶體模組的多個字元線時,快閃記憶體控制器開始將快取記憶體內的資料搬移至快閃記憶體模組。
由於快閃記憶體控制器內的快取記憶體所暫存的資料尚未被寫入快閃記憶體模組,當主機欲讀取此資料時,快閃記憶體控制器可直接將快取記憶體內所儲存之資料傳送給主機,以縮短存取時間。詳言之,快閃記憶體控制器之快取記憶體內所儲存之各資料包括一對應之邏輯位址,當主機傳送包含一特定邏輯位址之讀取指令時,快閃記憶體控制器將搜尋快取記憶體內所儲存之資
料的邏輯位址,以判斷是否有與此特定邏輯位址相符之邏輯位址。若快取記憶體內存有對應於此特定邏輯位址的資料,快閃記憶體控制器可直接將此資料傳送至主機。然而,若對應於此特定邏輯位址的資料於短時間內被更新,即,主機於短時間內傳送了兩筆或多筆對應於此特定邏輯位址的資料,則快閃記憶體控制器的快取記憶體內將會存有兩筆或多筆對應於此特定邏輯位址的資料,其中最新的一筆資料會是有效資料,而其餘先前接收到對應於此特定邏輯位址的資料會被視為無效資料。因此,為了確保快閃記憶體控制器可將有效資料傳送至主機,當主機傳送包含此特定邏輯位址的讀取指令時,快閃記憶體控制器需要搜尋所有暫存於快取記憶體內的資料的邏輯位址,導致快閃記憶體控制器的操作變得沒有效率。此外,由於一個邏輯位址可對應於兩筆或多筆快取記憶體內的資料,傳統的二元搜尋法(binary search)並不適用於快閃記憶體控制器的搜尋操作。
因此,本發明的一目的在於提供一種快閃記憶體控制器,當快閃記憶體控制器的快取記憶體儲存來自主機的資料時,快閃記憶體控制器可建立起具有特定資訊之一二元樹(binary tree),以解決上述問題。
本發明的至少一實施例提供一種快閃記憶體控制器,包括一唯讀記憶體、一處理器以及一快取記憶體。唯讀記憶體用以儲存一程式碼。處理器用以執行程式碼以存取一快閃記憶體模組。當處理器自一主機接收第一資料時,處理器將第一資料儲存於快取記憶體之一區域,並且處理器根據第一資料建立或更新一二元樹,二元樹係於處理器自主機接收一讀取指令時被使用,並且當儲存於快取記憶體之資料之一資料量達到一既定數值時,處理器將資料自快取記憶體搬移至快閃記憶體模組。
本發明的另一實施例提供一種記憶體裝置,包括一快閃記憶體模組以及一快閃記憶體控制器。快閃記憶體控制器用以存取快閃記憶體模組。當快閃記憶體控制器自一主機接收第一資料時,快閃記憶體控制器將第一資料儲存於快閃記憶體控制器內之一快取記憶體之一區域,並且快閃記憶體控制器根據第一資料建立或更新一二元樹,二元樹係於快閃記憶體控制器自主機接收一讀取指令時被使用,並且當儲存於快取記憶體之資料之一資料量達到一既定數值時,快閃記憶體控制器將資料自快取記憶體搬移至快閃記憶體模組。
本發明的又另一實施例提供一種用以存取一快閃記憶體模組之方法,包括:自一主機接收第一資料,並且將第一資料儲存於一快取記憶體之一區域;根據第一資料建立或更新一二元樹;當自主機接收一讀取指令時,搜尋二元樹以取得所需資料;以及當儲存於快取記憶體之資料之一資料量達到一既定數值時,將資料自快取記憶體搬移至快閃記憶體模組。
100:記憶體裝置
110:快閃記憶體控制器
111:介面電路
112:處理器
113:緩存記憶體
114:動態隨機存取記憶體控制器
115:唯讀記憶體
116:控制邏輯電路
120:快閃記憶體模組
130:主機
140:動態隨機存取記憶體
181、182:核心
210:表格
220:二元樹
CNT:計數值
LBA0、LBA4、LBA8:邏輯位址
第1圖係顯示根據本發明之一實施例所述之一記憶體裝置。
第2圖到第5圖係根據本發明之一實施例顯示出當快閃記憶體控制器自主機接收到資料時建立二元樹之範例示意圖。
第6圖係顯示根據本發明之一實施例所述之處理器重新安排二元樹以降低層數量之範例示意圖。
第7圖係顯示根據本發明之一實施例所述之存取快閃記憶體模組的方法流程圖。
於以下說明書及申請專利範圍內所使用的術語係用以指示出特定系
統元件。如本領域技術人員將理解的,製造商可以用不同的名稱來指示出一組件。本申請並無意區分名稱不同但功能相同之元件。在以下說明和申請專利範圍內,“包括”和“包含”等術語以開放式方式使用,因此應解釋為表示“包括但不限於……”。“耦接”和“耦合”等術語旨在表示間接或直接的電連接。因此,若一第一裝置耦接至一第二裝置,則該連接可以是直接電連接,也可以是通過其他裝置和連線的間接電連接。
第1圖係顯示根據本發明之一實施例所述之一記憶體裝置100。如第1圖所示,記憶體裝置100包括一快閃記憶體控制器110與一快閃記憶體模組120。快閃記憶體控制器110用以存取該快閃記憶體模組120。於此實施例中,快閃記憶體控制器110包括介面電路111、處理器112、緩存記憶體113、動態隨機存取記憶體(Dynamic Random Access Memory,縮寫為DRAM)控制器114、唯讀記憶體(Read-Only Memory,縮寫為ROM)115以及控制邏輯電路116,其中處理器112可為一微處理器或一中央處理單元,並且可包括兩核心181與182。唯讀記憶體115可用以儲存程式碼。處理器112可執行該程式碼以控制快閃記憶體模組120的存取。於第1圖所示之實施例,處理器112的核心181主要可被配置用以控制快閃記憶體控制器110與主機130之間的運作,處理器112的核心182主要可被配置用以控制快閃記憶體控制器110與快閃記憶體模組120之間的運作。此外,DRAM控制器114可用以存取配置於快閃記憶體控制器110外部之一DRAM裝置140。
快閃記憶體模組120可包括一或多個快閃記憶體晶片。各快閃記憶體晶片包括複數區塊,其中一區塊可為快閃記憶體之一最小抹除單位。此外,各區塊包括複數資料頁,一資料頁為快閃記憶體之一最小寫入單位。於此實施例中,快閃記憶體模組120為一立體NAND型快閃記憶體(3D NAND-type flash)。
於此實施例中,記憶體裝置100可為一可攜式記憶體裝置(例如:符合安全數位(Secure Digital,縮寫為SD)/多媒體卡(Multimedia Card,縮寫為
MMC)、複合式快閃記憶體(Compact flash,縮寫為CF)、記憶條(Memory Stick,縮寫為MS)、極數位(Extreme Digital,縮寫為XD)標準之記憶卡),且主機130為一可與可攜式記憶體裝置連接的電子裝置,例如手機、筆記型電腦、桌上型電腦...等等。而在另一實施例中,記憶體裝置100可以是固態硬碟(Solid State Drive,縮寫為SSD)或符合通用快閃記憶體儲存(Universal Flash Storage,縮寫為UFS)或嵌入式多媒體記憶卡(Embedded Multi Media Card,縮寫為EMMC)規格之嵌入式儲存裝置,以設置在一電子裝置中(例如,設置在手機、筆記型電腦、桌上型電腦之中),而此時主機130可以是電子裝置內的一處理器。
當主機130想要將資料寫入快閃記憶體模組120時,資料會被暫存於緩存記憶體113或DRAM 140中,當暫存於緩存記憶體113或DRAM 140內的資料量到達一既定數值時(例如,資料量對應於快閃記憶體模組120的一或多個字元線時),資料會被寫入快閃記憶體模組120內。於此範例中,緩存記憶體113或DRAM 140可被視為快取記憶體,即,當主機130於一讀取指令中所要求的資料為邏輯位址被記錄於快取記憶體之資料時,快閃記憶體控制器110可直接將此資料傳送給主機130。如同先前技術段落所述,緩存記憶體113或DRAM 140內可能儲存有兩筆或多筆對應於相同邏輯位址的不同資料,因此,傳統控制器需要搜尋快取記憶體內所暫存之所有資料的邏輯位址,以確保快閃記憶體控制器110可取得有效資料。於此實施例中,為了加速搜尋操作,當處理器112自主機130接收到資料時,可建立一二元樹。並且當主機130傳送讀取指令至快閃記憶體控制器110時,處理器112可使用二元樹搜尋所需之邏輯位址,以快速取得所需資料,藉此可改善快閃記憶體控制器110的操作效率。
第2圖到第5圖係根據本發明之一實施例顯示出當快閃記憶體控制器110自主機130接收到資料時如何建立二元樹之範例。於第1圖中,假設主機130傳送第一寫入指令及具有邏輯位址LBA0之第一資料至快閃記憶體控制器110,
處理器112之核心181可將具有邏輯位址LBA0之第一資料儲存於緩存記憶體113或DRAM 140內(為簡潔說明,以下將以緩存記憶體113作為範例)。於此實施例中,第一資料被儲存於緩存記憶體113中對應於快取索引值0的區域,並且緩存記憶體113包括一表格210,用以紀錄快取索引值及對應之邏輯位址。同時地,核心181將此快取資訊傳送至核心182,用以指示出第一資料被儲存於緩存記憶體113內。接著,當核心182閒置時(例如,於快閃記憶體模組120忙碌時),核心182開始根據核心181所提供之快取資訊建立二元樹220。以第2圖為例,邏輯位址LBA0為二元樹之第一節點(最高節點),並且二元樹220可記錄之資訊包括邏輯位址(例如,邏輯位址LBA0)、邏輯位址LBA0之計數值CNT(由於緩存記憶體113目前僅存有一筆邏輯位址LBA0之資料,因此計數值CNT=1)、快取索引值0、此邏輯位址之左節點(左子節點)以及此邏輯位址的右節點(右子節點),其中因目前邏輯位址LBA0之後並無資料,因此,左節點與右節點的數值會被設為FFFF。
接著,如第3圖所示,主機130傳送第二寫入指令及具有邏輯位址LBA4之第二資料至快閃記憶體控制器110,處理器112之核心181可將具有邏輯位址LBA4之第二資料儲存於緩存記憶體113。於此實施例中,第二資料被儲存於緩存記憶體113中對應於快取索引值1的區域,並且表格210紀錄快取索引值1及對應之邏輯位址LBA4。同時地,核心181將此快取資訊傳送至核心182,用以指示出第二資料被儲存於緩存記憶體113內。接著,當核心182閒置時,核心182開始根據核心181所提供之快取資訊更新二元樹220。以第3圖為例,邏輯位址LBA4為跟隨二元樹之最高節點的右節點(由於邏輯位址LBA4大於邏輯位址LBA0),並且二元樹220可記錄之資訊包括邏輯位址(例如,邏輯位址LBA4)、邏輯位址LBA4之計數值CNT(由於緩存記憶體113目前僅存有一筆邏輯位址LBA4之資料,因此計數值CNT=1)、快取索引值1、此邏輯位址之左節點的邏輯位址以及右節點的邏輯位址,其中因目前邏輯位址LBA4之後並無資料,因此,左節點
與右節點的邏輯位址會被設為FFFF。此外,由於邏輯位址LBA4被加入邏輯位址LBA0的右節點,邏輯位址LBA0的右節點的數值被更新為具有快取索引值1。
接著,如第4圖所示,主機130傳送第三寫入指令及具有邏輯位址LBA8之第三資料至快閃記憶體控制器110,處理器112之核心181可將具有邏輯位址LBA8之第三資料儲存於緩存記憶體113。於此實施例中,第三資料被儲存於緩存記憶體113中對應於快取索引值2的區域,並且表格210紀錄快取索引值2及對應之邏輯位址LBA8。同時地,核心181將此快取資訊傳送至核心182,用以指示出第三資料被儲存於緩存記憶體113內。接著,當核心182閒置時,核心182開始根據核心181所提供之快取資訊更新二元樹220。接著,當核心182閒置時,核心182開始根據核心181所提供之快取資訊更新二元樹220。以第4圖為例,邏輯位址LBA8為跟隨二元樹之邏輯位址LBA4的右節點(由於邏輯位址LBA8大於邏輯位址LBA4),並且二元樹220可記錄之資訊包括邏輯位址(例如,邏輯位址LBA8)、邏輯位址LBA8之計數值CNT(由於緩存記憶體113目前僅存有一筆邏輯位址LBA8之資料,因此計數值CNT=1)、快取索引值2、此邏輯位址之左節點的邏輯位址以及右節點的邏輯位址,其中因目前邏輯位址LBA8之後並無資料,因此,左節點與右節點的邏輯位址會被設為FFFF。此外,由於邏輯位址LBA8被加入邏輯位址LBA4的右節點,邏輯位址LBA4的右節點的數值被更新為具有快取索引值2。
接著,如第5圖所示,主機130傳送第四寫入指令及具有邏輯位址LBA4之第四資料至快閃記憶體控制器110,處理器112之核心181可將具有邏輯位址LBA4之第四資料儲存於緩存記憶體113。於此實施例中,第四資料被儲存於緩存記憶體113中對應於快取索引值3的區域,並且表格210紀錄快取索引值3及對應之邏輯位址LBA4。同時地,核心181將此快取資訊傳送至核心182,用以指示出第四資料被儲存於緩存記憶體113內。接著,當核心182閒置時,核心182
開始根據核心181所提供之快取資訊更新二元樹220。以第5圖為例,由於具有第四資料之邏輯位址LBA4已被紀錄於表格210與二元樹220內,代表著第四資料係用以更新先前儲存的第二資料(即,第二資料成為無效資料),於二元樹220內邏輯位址LBA4的相關資訊必須被更新,使得邏輯位址LBA4之計數值CNT更新為2,並且快取索引值亦須被更新為第四資料所對應之3。
於一實施例中,若快閃記憶體控制器110自主機130接收包含邏輯位址LBA4之一讀取指令,以第5圖所示之二元樹220作為範例,核心181或核心182將比對邏輯位址LBA4與二元樹220之最高節點之邏輯位址LBA0,由於邏輯位址LBA4大於邏輯位址LBA0,核心181或核心182於次一步驟將尋找最高節點的右節點。接著,由於二元樹220之最高節點的右節點對應於邏輯位址LBA4,其與讀取指令所帶之邏輯位址LBA4相符,核心181或核心182可參考二元樹220目前所紀錄之快取索引值3,取得所欲讀取之資料的快取位址,並且核心181或核心182無須存取快閃記憶體模組120,而是直接讀取儲存在對應於快取索引值3之區域之第四資料,並且將第四資料傳送至主機130。鑒於以上,由於本發明之實施例僅使用兩步驟便搜尋出所需之資料,相較於傳統技術使用四步驟搜尋出所需之資料(即,上述緩存記憶體113內儲存了四筆資料),本發明之實施例確實提高了搜尋速度。
此外,若快閃記憶體控制器110自主機130接收到包含邏輯位址LBA7之讀取指令,以第5圖所示之二元樹220為例,由於核心181或核心182可僅使用三步驟(如第5圖所示,二元樹220僅三層)判斷出邏輯位址LBA7並未被儲存於緩存記憶體113,因此,核心182可自快閃記憶體模組120讀取具有邏輯位址LBA7的資料,並且將資料傳送至主機130。鑒於以上,由於快閃記憶體控制器110可快速判斷出邏輯位址LBA7的資料是否被儲存於緩存記憶體113,快閃記憶體控制器110的讀取速度亦可被改善。
於本發明之實施例中,處理器112之核心182可重新安排二元樹220,以減少二元樹220的層數量。舉例而言,核心182可使用一自平衡二元搜尋樹演算法,例如AVL(Adelson-Velsky and Landis)樹或紅黑樹(red-black tree)以減少層數量。以第6圖為例,二元樹220可被旋轉,使得邏輯位址LBA4的節點成為最高節點,邏輯位址LBA0成為邏輯位址LBA4的左節點。因此,二元樹220可由三層被更新為兩層,如此搜尋速度可進一步被改善。
於要被寫入快閃記憶體模組120之資料量到達既定數值(例如,複數資料頁、一或多條字元線...等),快閃記憶體控制器110將具有邏輯位址LBA0之第一資料、具有邏輯位址LBA4之第二資料、具有邏輯位址LBA8之第三資料、具有邏輯位址LBA4之第四資料以及後續的資料寫入快閃記憶體模組120。接著,於第一資料、第二資料、第三資料、第四資料以及後續的資料自緩存記憶體113被移除後,核心181可將此資訊傳送至核心182,以通知核心182二元樹220需被更新,核心182於閒置時更新二元樹220以移除相關之資訊。
第7圖係顯示根據本發明之一實施例所述之存取快閃記憶體模組的方法流程圖。參考至第1圖至第6圖的介紹,存取快閃記憶體模組的方法流程說明如下:
步驟S700:流程開始。
步驟S702:自主機接收資料。
步驟S704:將資料儲存於快閃記憶體控制器內之一快取記憶體。
步驟S706:根據接收到的資料之資訊建立或更新一二元樹。
步驟S708:判斷儲存於快取記憶體之資料量是否到達一既定數值。若儲存於快取記憶體之資料量到達既定數值時,進入步驟S710,若儲存於快取記憶體之資料量尚未到達既定數值時,回到步驟S702繼續自主機接收後續之資料。
步驟S710:將資料自快取記憶體搬移至快閃記憶體模組。
步驟S712:更新二元樹以刪除自快取記憶體被移出之資料的資訊。
簡要歸納本發明,於本發明之快閃記憶體控制器中,當快閃記憶體控制器自主機接收到資料並將資料儲存於快取記憶體時,快閃記憶體控制器根據接收到的資料建立或更新二元樹,使得後續的搜尋操作(若有)可更為加速。此外,二元樹係由用於管理快閃記憶體控制器與快閃記憶體模組之間的核心電路所建立或更新,因此,由於在快閃記憶體模組忙碌(例如,於快閃記憶體模組的讀取或寫入操作)時,核心電路必然具有閒置時間,核心電路可利用閒置時間管理二元樹,以避免影響快閃記憶體控制器整體的效能。
以上所述僅為本發明之較佳實施例,凡依本發明申請專利範圍所做之均等變化與修飾,皆應屬本發明之涵蓋範圍。
100:記憶體裝置
110:快閃記憶體控制器
111:介面電路
112:處理器
113:緩存記憶體
114:動態隨機存取記憶體控制器
115:唯讀記憶體
116:控制邏輯電路
120:快閃記憶體模組
130:主機
140:動態隨機存取記憶體
181、182:核心
Claims (16)
- 一種快閃記憶體控制器,包括:一唯讀記憶體,用以儲存一程式碼;一處理器,用以執行該程式碼以存取一快閃記憶體模組;以及一快取記憶體,其中當該處理器自一主機接收第一資料時,該處理器將該第一資料儲存於該快取記憶體之一區域,並且該處理器根據該第一資料建立或更新一二元樹,該二元樹包括該第一資料之一邏輯位址、該第一資料之該邏輯位址之一計數值、以及該快取記憶體之該區域之一快取索引值,該二元樹係於該處理器自該主機接收一讀取指令時被使用,並且當儲存於該快取記憶體之資料之一資料量達到一既定數值時,該處理器將該資料自該快取記憶體搬移至該快閃記憶體模組。
- 如申請專利範圍第1項所述之快閃記憶體控制器,其中當該處理器於根據該第一資料建立或更新該二元樹後自該主機接收到第二資料,該處理器將該第二資料儲存於該快取記憶體之一其他區域,並且當該第二資料之一邏輯位址並未被記錄於該快取記憶體時,該處理器更新該二元樹使該二元樹包含該第二資料之該邏輯位址、該第二資料之該邏輯位址之一計數值、以及該快取記憶體之該其他區域之一快取索引值。
- 如申請專利範圍第2項所述之快閃記憶體控制器,其中當該第二資料之該邏輯位址與該第一資料之該邏輯位址相同時,該處理器更新該二元樹,用以增加該邏輯位址之一計數值,並且將該邏輯位址所對應之該快取索引值更新為該其他區域之該快取索引值。
- 如申請專利範圍第1項所述之快閃記憶體控制器,其中該第一資料之該邏輯位址對應於該二元樹之一第一節點,並且該二元樹更包括該第一節點之一左節點與一右節點之資訊。
- 如申請專利範圍第1項所述之快閃記憶體控制器,其中該處理器包括一第一核心與一第二核心,該第一核心用以控制該快閃記憶體控制器與該主機之間的運作,該第二核心用以控制該快閃記憶體控制器與該快閃記憶體模組之間的運作,並且該處理器之該第二核心根據該第一資料建立或更新該二元樹。
- 如申請專利範圍第5項所述之快閃記憶體控制器,其中當該處理器自該主機接收該第一資料時,該處理器之該第一核心將該第一資料儲存於該快取記憶體之該區域,並且該第一核心傳送該第一資料之資訊以通知該第二核心根據該第一資料建立或更新該二元樹。
- 一種記憶體裝置,包括:一快閃記憶體模組;以及一快閃記憶體控制器,用以存取該快閃記憶體模組,其中當該快閃記憶體控制器自一主機接收第一資料時,該快閃記憶體控制器將該第一資料儲存於該快閃記憶體控制器內之一快取記憶體之一區域,並且該快閃記憶體控制器根據該第一資料建立或更新一二元樹,該二元樹包括該第一資料之一邏輯位址、該第一資料之該邏輯位址之一計數值、以及該快取記憶體之該區域之一快取索引值,該二元樹係於該快閃記憶體控制器自該主機接收一讀取指令時被使用,並且當儲存於該快取記憶體之資料之一資料量達到一既 定數值時,該快閃記憶體控制器將該資料自該快取記憶體搬移至該快閃記憶體模組。
- 如申請專利範圍第7項所述之記憶體裝置,其中當該快閃記憶體控制器於根據該第一資料建立或更新該二元樹後自該主機接收到第二資料,該快閃記憶體控制器將該第二資料儲存於該快取記憶體之一其他區域,並且當該第二資料之一邏輯位址並未被記錄於該快取記憶體時,該快閃記憶體控制器更新該二元樹使該二元樹包含該第二資料之該邏輯位址、該第二資料之該邏輯位址之一計數值、以及該快取記憶體之該其他區域之一快取索引值。
- 如申請專利範圍第8項所述之記憶體裝置,其中當該第二資料之該邏輯位址與該第一資料之該邏輯位址相同時,該快閃記憶體控制器更新該二元樹,用以增加該邏輯位址之一計數值,並且將該邏輯位址所對應之該快取索引值更新為該其他區域之該快取索引值。
- 如申請專利範圍第7項所述之記憶體裝置,其中該第一資料之該邏輯位址對應於該二元樹之一第一節點,並且該二元樹更包括該第一節點之一左節點與一右節點之資訊。
- 如申請專利範圍第7項所述之記憶體裝置,其中該快閃記憶體控制器包括一處理器,該處理器包括一第一核心與一第二核心,該第一核心用以控制該快閃記憶體控制器與該主機之間的運作,該第二核心用以控制該快閃記憶體控制器與該快閃記憶體模組之間的運作,並且該處理器之該第二核心根據該第一資料建立或更新該二元樹。
- 如申請專利範圍第11項所述之記憶體裝置,其中當該快閃記憶體控制器自該主機接收該第一資料時,該處理器之該第一核心將該第一資料儲存於該快取記憶體之該區域,並且該第一核心傳送該第一資料之資訊以通知該第二核心根據該第一資料建立或更新該二元樹。
- 一種用以存取一快閃記憶體模組之方法,包括:自一主機接收第一資料,並且將該第一資料儲存於一快取記憶體之一區域;根據該第一資料建立或更新一二元樹,該二元樹包括該第一資料之一邏輯位址、該第一資料之該邏輯位址之一計數值、以及該快取記憶體之該區域之一快取索引值;當自該主機接收一讀取指令時,搜尋該二元樹以取得所需資料;以及當儲存於該快取記憶體之資料之一資料量達到一既定數值時,將該資料自該快取記憶體搬移至該快閃記憶體模組。
- 如申請專利範圍第13項所述之方法,更包括:於根據該第一資料建立或更新該二元樹後自該主機接收第二資料;將該第二資料儲存於該快取記憶體之一其他區域;以及當該第二資料之一邏輯位址並未被記錄於該快取記憶體時,更新該二元樹使該二元樹包含該第二資料之該邏輯位址、該第二資料之該邏輯位址之一計數值、以及該快取記憶體之該其他區域之一快取索引值。
- 如申請專利範圍第14項所述之方法,更包括:當該第二資料之該邏輯位址與該第一資料之該邏輯位址相同時,更新該二 元樹,用以增加該邏輯位址之一計數值,並且將該邏輯位址所對應之該快取索引值更新為該其他區域之該快取索引值。
- 如申請專利範圍第13項所述之方法,更包括:將該第一資料寫入該快閃記憶體模組;自該快取記憶體刪除該第一資料;以及更新該位元樹以刪除該第一資料之資訊。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US16/423,171 | 2019-05-28 | ||
US16/423,171 US10990323B2 (en) | 2019-05-28 | 2019-05-28 | Flash memory controller, memory device and method for accessing flash memory module |
Publications (2)
Publication Number | Publication Date |
---|---|
TW202044259A TW202044259A (zh) | 2020-12-01 |
TWI715408B true TWI715408B (zh) | 2021-01-01 |
Family
ID=73506770
Family Applications (2)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
TW109141277A TWI749903B (zh) | 2019-05-28 | 2020-01-07 | 快閃記憶體控制器、記憶體裝置以及存取快閃記憶體模組之方法 |
TW109100424A TWI715408B (zh) | 2019-05-28 | 2020-01-07 | 快閃記憶體控制器、記憶體裝置以及存取快閃記憶體模組之方法 |
Family Applications Before (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
TW109141277A TWI749903B (zh) | 2019-05-28 | 2020-01-07 | 快閃記憶體控制器、記憶體裝置以及存取快閃記憶體模組之方法 |
Country Status (3)
Country | Link |
---|---|
US (1) | US10990323B2 (zh) |
CN (1) | CN112015671A (zh) |
TW (2) | TWI749903B (zh) |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11176049B2 (en) | 2020-03-17 | 2021-11-16 | Silicon Motion, Inc. | Flash memory controller mechanism capable of generating host-based cache information or flash-memory-based cache information to build and optimize binary tree with fewer nodes when cache stores data from host |
CN112860433A (zh) * | 2021-01-27 | 2021-05-28 | 深圳宏芯宇电子股份有限公司 | 缓存服务器、内容分发网络系统及数据管理方法 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7730222B2 (en) * | 2004-08-24 | 2010-06-01 | Symantec Operating System | Processing storage-related I/O requests using binary tree data structures |
TWI405209B (zh) * | 2009-04-01 | 2013-08-11 | Phison Electronics Corp | 資料管理方法及使用此方法的快閃儲存系統與控制器 |
TWI473100B (zh) * | 2008-09-05 | 2015-02-11 | A Data Technology Co Ltd | Flash memory system and its operation method |
TWI484340B (zh) * | 2008-10-07 | 2015-05-11 | Micron Technology Inc | 記憶體裝置、系統及方法 |
US9779138B2 (en) * | 2013-08-13 | 2017-10-03 | Micron Technology, Inc. | Methods and systems for autonomous memory searching |
Family Cites Families (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5956743A (en) * | 1997-08-25 | 1999-09-21 | Bit Microsystems, Inc. | Transparent management at host interface of flash-memory overhead-bytes using flash-specific DMA having programmable processor-interrupt of high-level operations |
US6216199B1 (en) * | 1999-08-04 | 2001-04-10 | Lsi Logic Corporation | Hardware mechanism for managing cache structures in a data storage system |
KR20040076166A (ko) * | 2003-02-24 | 2004-08-31 | 삼성전자주식회사 | 비트이진 트리를 이용한 에이티엠적응계층2 주소 변환장치 및 방법 |
US7640404B2 (en) * | 2005-10-31 | 2009-12-29 | Microsoft Corporation | File system write filtering for selectively permitting or preventing data from being written to write-protected storage |
US9223642B2 (en) * | 2013-03-15 | 2015-12-29 | Super Talent Technology, Corp. | Green NAND device (GND) driver with DRAM data persistence for enhanced flash endurance and performance |
US9176867B2 (en) * | 2011-04-26 | 2015-11-03 | Brian Bulkowski | Hybrid DRAM-SSD memory system for a distributed database node |
US20140160591A1 (en) * | 2012-12-06 | 2014-06-12 | Hitachi, Ltd. | Storage apparatus and data management method |
CN109710542B (zh) * | 2018-12-28 | 2021-03-16 | 北京像素软件科技股份有限公司 | 一种满n叉树构建方法及装置 |
US11301369B2 (en) * | 2019-01-24 | 2022-04-12 | Western Digital Technologies, Inc. | Logical to physical mapping management using low-latency non-volatile memory |
US10860483B2 (en) * | 2019-04-30 | 2020-12-08 | EMC IP Holding Company LLC | Handling metadata corruption to avoid data unavailability |
-
2019
- 2019-05-28 US US16/423,171 patent/US10990323B2/en active Active
-
2020
- 2020-01-07 TW TW109141277A patent/TWI749903B/zh active
- 2020-01-07 TW TW109100424A patent/TWI715408B/zh active
- 2020-03-13 CN CN202010175866.1A patent/CN112015671A/zh active Pending
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7730222B2 (en) * | 2004-08-24 | 2010-06-01 | Symantec Operating System | Processing storage-related I/O requests using binary tree data structures |
TWI473100B (zh) * | 2008-09-05 | 2015-02-11 | A Data Technology Co Ltd | Flash memory system and its operation method |
TWI484340B (zh) * | 2008-10-07 | 2015-05-11 | Micron Technology Inc | 記憶體裝置、系統及方法 |
TWI405209B (zh) * | 2009-04-01 | 2013-08-11 | Phison Electronics Corp | 資料管理方法及使用此方法的快閃儲存系統與控制器 |
US9779138B2 (en) * | 2013-08-13 | 2017-10-03 | Micron Technology, Inc. | Methods and systems for autonomous memory searching |
Also Published As
Publication number | Publication date |
---|---|
CN112015671A (zh) | 2020-12-01 |
US10990323B2 (en) | 2021-04-27 |
TW202044259A (zh) | 2020-12-01 |
US20200379674A1 (en) | 2020-12-03 |
TWI749903B (zh) | 2021-12-11 |
TW202115730A (zh) | 2021-04-16 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US9069673B2 (en) | Memory system configured to perform segment cleaning and related method of operation | |
TWI692690B (zh) | 存取快閃記憶體模組的方法及相關的快閃記憶體控制器與電子裝置 | |
US9128618B2 (en) | Non-volatile memory controller processing new request before completing current operation, system including same, and method | |
US9971799B2 (en) | Storage device for storing directory entries, directory entry lookup apparatus and method, and storage medium storing directory entry lookup program | |
US9489388B2 (en) | Computing system, host system and method for managing data | |
CN112506814B (zh) | 一种存储器及其控制方法与存储系统 | |
US10296250B2 (en) | Method and apparatus for improving performance of sequential logging in a storage device | |
WO1999030239A1 (fr) | Memoire et procede d'acces | |
TWI726314B (zh) | 資料儲存裝置與資料處理方法 | |
CN108733577B (zh) | 存储器管理方法、存储器控制电路单元及存储器存储装置 | |
US20170160940A1 (en) | Data processing method and apparatus of solid state disk | |
TWI715408B (zh) | 快閃記憶體控制器、記憶體裝置以及存取快閃記憶體模組之方法 | |
TWI749279B (zh) | 資料儲存裝置與資料處理方法 | |
US11630780B2 (en) | Flash memory controller mechanism capable of generating host-based cache information or flash-memory-based cache information to build and optimize binary tree with fewer nodes when cache stores data from host | |
CN111352865A (zh) | 存储控制器的写缓存 | |
CN117632809B (zh) | 存储器控制器、数据读取方法及存储装置 | |
TWI697779B (zh) | 資料儲存裝置與資料處理方法 | |
TWI775341B (zh) | 整理指令處理方法、記憶體控制電路單元與記憶體儲存裝置 | |
WO2022021337A1 (zh) | 闪存控制方法和装置 | |
TWI434284B (zh) | 主動式快閃管理之方法以及相關之記憶裝置及其控制器 | |
CN117891392A (zh) | 固态硬盘的压缩数据的管理方法及系统 | |
TW202044038A (zh) | 資料儲存裝置與資料處理方法 | |
KR20210063814A (ko) | 메모리 시스템의 리드 동작 방법 및 장치 | |
CN113448487A (zh) | 写入闪存管理表的计算机可读取存储介质、方法及装置 |