TWI755168B - 用來產生基於主機的快取資訊或基於快閃記憶體的快取資訊以建立及最佳化二元樹的快閃記憶體控制器、方法及記憶裝置 - Google Patents
用來產生基於主機的快取資訊或基於快閃記憶體的快取資訊以建立及最佳化二元樹的快閃記憶體控制器、方法及記憶裝置 Download PDFInfo
- Publication number
- TWI755168B TWI755168B TW109140943A TW109140943A TWI755168B TW I755168 B TWI755168 B TW I755168B TW 109140943 A TW109140943 A TW 109140943A TW 109140943 A TW109140943 A TW 109140943A TW I755168 B TWI755168 B TW I755168B
- Authority
- TW
- Taiwan
- Prior art keywords
- data
- flash memory
- node
- cache
- core
- 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
- G06F3/0611—Improving I/O performance in relation to response time
-
- 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/0888—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches using selective caching, e.g. bypass
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/90—Details of database functions independent of the retrieved data types
- G06F16/901—Indexing; Data structures therefor; Storage structures
- G06F16/9027—Trees
-
- 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/0638—Organizing or formatting or addressing of data
-
- 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/0638—Organizing or formatting or addressing of data
- G06F3/0644—Management of space entities, e.g. partitions, extents, pools
-
- 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
- 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
- G06F2212/1024—Latency reduction
-
- 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/21—Employing a record carrier using a specific recording technology
- G06F2212/214—Solid state disk
-
- 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/60—Details of cache memory
- G06F2212/604—Details relating to cache allocation
-
- 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
-
- 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/7208—Multiple device management, e.g. distributing data over multiple flash devices
-
- 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]
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)
- Databases & Information Systems (AREA)
- Software Systems (AREA)
- Data Mining & Analysis (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
- Memory System Of A Hierarchy Structure (AREA)
Abstract
一種快閃記憶體控制器具有一處理器與一快取,當該處理器從一主機接收到一特定寫入命令與特定資料,該處理器將該特定資料儲存至該快取之一區域,該處理器產生基於主機的快取資訊或基於快閃記憶體的快取資訊以較少節點的方式來建立、更新或最佳化一二元樹以增進二元搜尋速度、減少快閃記憶體控制器中多個核心的計算量成本、最小化存取該快取的次數以降低總時間延遲,其中基於主機的快取資訊指的是動態的資料長度,而基於快閃記憶體的快取資訊指的是快閃記憶體晶片中一個寫入單元例如一個儲存頁的資料長度。
Description
本發明係關於一種記憶裝置,尤指一種快閃記憶體控制器、相應的記憶裝置以及應用於快閃記憶體控制器的方法。
傳統上,當一主機想要經由一快閃記憶體控制器寫入資料至一快閃記憶體模組時,該主機會發送該資料至該快閃記憶體控制器,該資料會暫時儲存在該快閃記憶體控制器內部的一快取或一緩衝器,而當暫存於該快取之資料量達到一預定值時該資料就會被寫入至該快閃記憶體模組,例如,該快閃記憶體控制器會從該主機連續地接收資料並儲存所接收之資料至該快取,而當所接收之資料的資料量是足夠被寫入至該快閃記憶體模組的多個字線時,該快閃記憶體控制器才會從該快取開始搬移資料至該快閃記憶體模組。
由於該快閃記憶體控制器中之快取可暫時儲存還沒有被寫入至該快閃記憶體模組之資料,因此當該主機突然想要讀取該筆資料時,該快閃記憶體控制器可以直接將該快取中儲存之資料發送給該主機以縮短存取的時間。詳細來說,該快閃記憶體控制器之該快取中所儲存的每一筆資料均包含有一相應的邏輯位址,而當該主機發送包含一特定邏輯位址之一讀取命令時,該快閃記憶體控制器將會搜尋該快取中所暫存之多筆資料的多筆邏輯位址,以決定是否該
些邏輯位址中是否至少有一筆是符合該特定邏輯位址的,而如果該快取中具有相應於該特定邏輯位址之資料,則該快閃記憶體控制器可以直接發送該筆資料至該主機。
然而,如果相應於該特定邏輯位址之資料在一短時間中被更新了,也就是說,該主機在短時間內傳送了相應於相同特定邏輯位址的兩筆或多筆資料,則該快閃記憶體控制器之該快取中會有兩筆或多筆資料均相應於該特定邏輯位址,其中具有該特定邏輯位址的最新一筆資料是有效資料,而具有該特定邏輯位址之較早的資料會是無效資料。因此,為了確保該快閃記憶體控制器能夠發送有效資料至該主機,當該主機發送包含該特定邏輯位址之該讀取命令時,該快閃記憶體控制器必然需要去搜尋該快取中所暫存之所有資料的所有邏輯位址,而此將導致該快閃記憶體控制器是無效率的。此外,由於一個邏輯位址可能會對應於該快取中的兩筆或多筆的資料,因此傳統的二分搜尋法也不適用於快閃記憶體控制器。
因此本發明之目的之一在於提供一種快閃記憶體控制器,當該快閃記憶體控制器之該快取儲存從該主機過來的資料時,該快閃記憶體控制器能夠產生一份基於主機的快取資料或一份基於快閃記憶體的快取資訊並以具有較少節點的方式來建立與最佳化一個二元樹,以大幅增進二元樹的搜尋速度、減少該快閃記憶體控制器中的多個核心的計算成本以及最小化存取該快取之次數(該快取例如可以是一個動態隨機存取記憶體)來大幅降低總時間延遲,以解決上述的難題。
根據本發明實施例,其係揭露一種快閃記憶體控制器。快閃記憶體控制器包含有一介面電路、一唯讀記憶體、一控制邏輯電路、一處理器以及一快取。介面電路耦接於一主機與一內部匯流排之間。唯讀記憶體耦接至該內部
匯流排,並用來儲存一程式碼。控制邏輯電路耦接於該內部匯流排與一快閃記憶體模組之間,該快閃記憶體模組係外部耦接於該快閃記憶體控制器。處理器耦接至該內部匯流排,並用來執行該程式碼以通過使用該控制邏輯電路來對該快閃記憶體模組進行存取。快取耦接至該內部匯流排。該快閃記憶體模組包含有複數個晶片,每一晶片包含有複數個儲存頁,每一儲存頁包含有複數個儲存區段。當該處理器從該主機經由該介面電路與該內部匯流排接收到一特定寫入命令以及具有N個儲存區段之資料量的特定資料時,該處理器係用來將該特定資料儲存至該快取的一區域,以及該處理器係通過加入一特定節點至一二元樹來建立或更新該二元樹,其中該特定節點具有一節點資訊,該節點資訊包含有一節點索引、由該特定寫入命令所攜帶的一邏輯位址、該快取的該區域所相應的一快取索引、一左節點、一右節點以及該N個儲存區段之資料量所相應的一儲存區段長度。當該處理器從該主機接收到一讀取命令要求讀取該快取中所緩存的某一資料時,該處理器係被安排用來使用該二元樹中所記錄之一或多個節點的節點資訊來從該快取中得到該某一資料以及發送該某一資料至該主機而無需控制該控制邏輯電路來對該快閃記憶體模組進行存取。
根據本發明實施例,其係揭露一種記憶裝置。該記憶裝置包含有上述的快閃記憶體模組與快閃記憶體控制器。
根據本發明實施例,其係揭露一種快閃記憶體控制器的方法。該方法包含:提供耦接於一主機與一內部匯流排之間的一介面電路;提供耦接於該內部匯流排與一快閃記憶體模組之間的一控制邏輯電路,該快閃記憶體模組係外部耦接於該快閃記憶體控制器,該快閃記憶體模組具有複數個晶片,每一晶片包含有複數個儲存頁,每一儲存頁包含有複數個儲存區段;提供耦接於該內部匯流排之一快取;當從該主機經由該介面電路與該內部匯流排接收到一特定寫入命令以及具有N個儲存區段之資料量的特定資料時,將該特定資料儲存至該
快取的一區域以及通過加入一特定節點至一二元樹來建立或更新該二元樹,其中該特定節點具有一節點資訊,該節點資訊包含有一節點索引、由該特定寫入命令所攜帶的一邏輯位址、該快取的該區域所相應的一快取索引、一左節點、一右節點以及該N個儲存區段之資料量所相應的一儲存區段長度;以及,當從該主機接收到一讀取命令要求讀取該快取中所緩存的某一資料時,使用該二元樹中所記錄之一或多個節點的節點資訊來從該快取中得到該某一資料以及發送該某一資料至該主機而無需控制該控制邏輯電路來對該快閃記憶體模組進行存取。
根據本發明實施例,其係揭露一種快閃記憶體控制器。快閃記憶體控制器包含有一介面電路、一唯讀記憶體、一控制邏輯電路、一處理器以及一快取。介面電路耦接於一主機與一內部匯流排之間。唯讀記憶體耦接至該內部匯流排,並用來儲存一程式碼。控制邏輯電路耦接於該內部匯流排與一快閃記憶體模組之間,該快閃記憶體模組係外部耦接於該快閃記憶體控制器。處理器耦接至該內部匯流排,並用來執行該程式碼以通過使用該控制邏輯電路來對該快閃記憶體模組進行存取。快取耦接至該內部匯流排。該快閃記憶體模組包含有複數個晶片,每一晶片包含有複數個儲存頁,每一儲存頁包含有複數個儲存區段。當該處理器從該主機經由該介面電路與該內部匯流排接收到一特定寫入命令以及具有N個儲存區段之資料量的特定資料時,該處理器係比較該N個儲存區段之該資料量與該快閃記憶體模組內之一最小寫入單元的一資料量來決定是否產生一基於快閃記憶體的快取資訊以建立或更新一二元樹。
根據本發明實施例,其係揭露一種記憶裝置。記憶裝置包含一快閃記憶體模組以及上述的快閃記憶體控制器。
根據本發明實施例,其係揭露一種快閃記憶體控制器的方法。該方法包含:提供耦接於一主機與一內部匯流排之間的一介面電路;提供耦接於該
內部匯流排與一快閃記憶體模組之間的一控制邏輯電路、該快閃記憶體模組係外部耦接於該快閃記憶體控制器,該快閃記憶體模組具有複數個晶片,每一晶片具有複數個儲存頁,每一儲存頁具有複數個儲存區段;提供耦接於該內部匯流排之一快取;以及當從該主機經由該介面電路與該內部匯流排接收到一特定寫入命令以及具有N個儲存區段之一資料量的一特定資料時,比較該N個儲存區段之該資料量與該快閃記憶體模組內之一最小寫入單元之一資料量以決定是否產生一基於快閃記憶體的快取資訊來建立或更新一二元樹。
100:記憶裝置
110:快閃記憶體控制器
111:介面電路
112:處理器
113:緩衝記憶體
114:動態隨機存取記憶體控制器
115:唯讀記憶體
116:控制邏輯電路
120:快閃記憶體模組
130:主機
140:動態隨機存取記憶體
210:資料表
220:二元樹
第1圖是本發明一實施例一記憶裝置的方塊示意圖。
第2圖是當該快閃記憶體控制器從該主機接收到資料D1時第1圖所示之快閃記憶體控制器建立並***節點N0來更新二元樹的操作實施例示意圖。
第3圖是當該快閃記憶體控制器從該主機接收到資料D2時第1圖所示之快閃記憶體控制器***節點N1來更新二元樹的操作實施例示意圖。
第4圖是當該快閃記憶體控制器從該主機接收到資料D3時第1圖所示之快閃記憶體控制器***節點N2來更新二元樹的操作實施例示意圖。
第5圖是本發明一實施例該處理器重新編排二元樹以降低其階層個數的示意圖。
第6圖是當資料D1與資料D2的前半段部分所形成之128個儲存區段的資料從該快取(例如動態隨機存取記憶體)被搬移並接著被寫入至該快閃記憶體模組之一儲存頁時第1圖所示之快閃記憶體控制器從二元樹刪除節點N0以更新第4圖之二元樹的操作實施例示意圖。
第7圖是當資料D1與資料D2的前半段部分所形成之128個儲存區段的資料從
該快取(例如動態隨機存取記憶體)被搬移並接著被寫入至該快閃記憶體模組之一儲存頁時第1圖所示之快閃記憶體控制器從二元樹刪除節點N1以更新第4圖之二元樹的操作實施例示意圖。
第8圖是當資料D1與資料D2的前半段部分所形成之128個儲存區段的資料從該快取(例如動態隨機存取記憶體)被搬移並接著被寫入至該快閃記憶體模組之一儲存頁時第1圖所示之快閃記憶體控制器***一個新的節點N3至二元樹以更新第4圖之二元樹的操作實施例示意圖。
第9圖是本發明實施例當從該主機接收資料時用以建立或更新二元樹的方法流程圖。
第10圖是本發明另一實施例當該快閃記憶體控制器從該主機接收資料D1時該快閃記憶體控制器將資料D1決定為一剩餘資料部分R1的操作實施例示意圖。
第11圖是本發明另一實施例當該快閃記憶體控制器從該主機接收資料D2時該快閃記憶體控制器將資料D1與資料D2決定為一個儲存頁大小的資料P1與剩餘資料部分R2以及揷入節點N0來更新二元樹的操作實施例示意圖。
第12圖是本發明另一實施例當該快閃記憶體控制器從該主機接收資料D3時該快閃記憶體控制器將資料D1、D2、D3決定為儲存頁大小的資料P1、P2、P3與剩餘資料部分R3以及揷入節點N1與N2來更新二元樹的操作實施例示意圖。
第13圖是本發明另一實施例當從該主機接收資料時用以建立或更新二元樹的方法流程圖。
第1圖是本發明一實施例之一記憶裝置100的方塊示意圖。如第1圖所示,記憶裝置100包括一快閃記憶體控制器110與一快閃記憶體模組120,其中快閃記憶體控制器110被用來存取快閃記憶體模組120。此外,快閃記憶體控制器110包括一介面電路111、一處理器112、一緩衝記憶體113、一動態隨機存取記憶體
控制器114、一唯讀記憶體(ROM)115以及一控制邏輯電路116,處理器112可以是包括兩個核心C0和C1的一微處理器或一中央處理單元,唯讀記憶體115用於儲存一程式碼,處理器112係執行該程式碼來控制快閃記憶體模組120的存取,核心C0主要被設置用來控制快閃記憶體控制器110和主機130之間的多個操作,而處理器112的核心C1主要被設置用來控制快閃記憶體控制器110和快閃記憶體模組120之間的多個操作,另外,動態隨機存取記憶體控制器114被安排用來存取位於快閃記憶體控制器110外部的一動態隨機存取記憶體140。
快閃記憶體模組120可以包括一或多個快閃記憶體晶片,每一快閃記憶體晶片包括多個儲存區塊,每一儲存區塊係為一個最小擦除單元,另外,每一儲存區塊包括多個儲存頁,每一儲存頁可以是一個最小寫入單元,例如,一個儲存頁的大小可以是64KB(亦即128個儲存區段);然而,這並非是本發明的限制。另外,快閃記憶體模組120可以是立體NAND型的快閃記憶體模組。
在一實施例,記憶裝置100可以是一可攜式記憶裝置,例如符合SD/MMC、CF、MS或XD規範的記憶卡,而主機130可以是一個能夠與可攜式記憶裝置連接的電子裝置,例如行動電話、膝上型電腦或個人電腦等等。在另一實施例中,記憶裝置100可以是一固態硬碟(solid state drive,SSD)或符合一通用快閃記憶體儲存(Universal Flash Storage,UFS)或嵌入式多媒體卡(Embedded Multi Media Card,EMMC)之規範的嵌入式儲存裝置。該記憶裝置100可以被設置於一電子裝置中,例如行動電話、膝上型電腦或個人電腦等等,而主機130可以是該電子裝置內的一處理器。
在本實施例中,緩衝記憶體113及/或動態隨機存取記憶體140可被用來作為快閃記憶體控制器110的一快取(或稱為控制器快取),以在從主機130所發送過來的資料被寫入至快閃記憶體模組120之前暫時地儲存該資料,使得如果主機130發送了一讀取命令來要求讀取該資料並且該資料目前仍被緩衝於該快取
的話,則在該快取目前所快取暫存的該資料可以從該快取立刻或快速地取回以發送該筆資料至主機130。快閃記憶體控制器110之該快取可以是控制器110內所包括之緩衝記憶體113,或者可以是外部耦接至控制器110的動態隨機存取記憶體140的至少一部分,及/或緩衝記憶體113與動態隨機存取記憶體140的一個組合。
實作上,當主機130發送帶有資料之一寫入命令至控制器110以控制該控制器110將該資料寫入至快閃記憶體模組120時,該資料係被暫時地儲存於資料快取中,其中該資料快取例如是動態隨機存取記憶體140(但不限定)。當儲存於緩衝記憶體113或動態隨機存取記憶體140中之資料量達到一預定值時(例如該資料量對應於快閃記憶體模組120的一或多個字線時或是對應於一個儲存頁大小的資料量時),將資料從該快取中搬移出並且接著將其寫入至快閃記憶體模組120,在本實施例,當主機130發送一讀取命令以請求該快取中所記錄之邏輯位址的資料時,快閃記憶體控制器110可以直接存取該快取以發送該資料至主機130,而不用/也無需存取快閃記憶體模組120。如此,可以減少快閃記憶體控制器110的響應時間。
一個傳統快閃記憶體控制器需要搜尋暫時儲存在一控制器快取中的所有資料的所有邏輯位址,以確保該快閃記憶體控制器所獲取的是有效資料。與現有技術相比,本發明之實施例為了提高搜尋速度並同時減少存取快取(例如具體來說是動態隨機存取記憶體140)時的時間延遲,處理器112被安排當該資料從主機130所接收時用來基於快閃記憶體模組120的一最小寫入單元的資料大小/長度或是從主機130所發送的不同寫入命令所相應的相同或不同的一資料大小/長度,以較少或最少個數的節點來建立一二元樹,亦即最佳化該二元樹。
當主機130發送該讀取命令至快閃記憶體控制器110時,處理器112可以通過該二元樹來搜尋該邏輯位址以更快速地得到所需要之資料,大幅增進快閃記憶體控制器110的效率並同時減少存取快取時的延遲,以便能夠減少動態隨
機存取記憶體140的存取延遲。如果該快取是通過採用動態隨機存取記憶體140來實現,則由於基於一個二元樹之一相應節點的快取資訊(基於主機的快取資訊或基於快閃記憶體的快取資訊)來存取該快取也可能會造成某些延遲,因此使用較少或最少個數的節點所建立的二元樹能夠大幅地減少動態隨機存取記憶體140的延遲,以便有效地縮短控制器110的響應時間。
第2圖至第5圖分別顯示了本發明之實施例當快閃記憶體控制器110從主機130接收到資料時控制器110用以建立與更新二元樹220的操作實施例示意圖。
主機130例如會依序地發送一第一寫入命令、資料D1與相應之邏輯位址LBA0,發送一第二寫入命令、資料D2與相應之邏輯位址LBA64,以及發送一第三寫入命令、資料D3與相應之邏輯位址LBA192至控制器110,以寫入上述所提到的資料至快閃記憶體模組120,其中資料D1例如具有64個儲存區段的資料量,資料D2例如具有128個儲存區段的資料量,以及資料D3例如具有256個儲存區段的資料量,其中一個儲存區段係指一快閃記憶體的一個較小的儲存單元,例如一個儲存頁包含128個儲存區段,然此並非是本發明的限制。
舉例來說,記憶裝置100會操作於主機130中的一循序寫入模式而被允許連續地發送並寫入一個較大資料量之資料至記憶裝置100,然而這並非是本發明的限制,記憶裝置100也可以操作於單一寫入模式,再者,主機130也可以循序地寫入具有相同資料量的多筆不同的資料至記憶裝置100,也就是說,主機130可以被安排循序地寫入具有相同或不同資料量的資料至記憶裝置100。
在第2圖中,主機130發送該第一寫入命令、資料D1與相應之邏輯位址LBA0至快閃記憶體控制器110,核心C0會將邏輯位址LBA0相應之資料D1儲存至一快取,例如是動態隨機存取記憶體140(於此動態隨機存取記憶體140係作為例子說明,但不限定),在本實施例中,資料D1係儲存於動態隨機存取記憶體140
的一快取索引“0”所相應的一區域中,其中在這個例子中該快取索引也被稱為是一動態隨機存取記憶體索引,而動態隨機存取記憶體140包含記錄了該快取索引“0”的一資料表21、該相應的邏輯位址LBA0以及資料D1的一資料大小,其中該資料大小例如是由儲存區段的個數所定義,亦即儲存區段長度“64”,而該快取索引例如是用來指示出一特定資料在動態隨機存取記憶體140中的一儲存區域之起始位置,例如,動態隨機存取記憶體索引與儲存區段長度之間的關係係為當每一次該動態隨機存取記憶體索引的值增加1時係對應於動態隨機存取記憶體140中的八個儲存區段的資料大小(但不限定),在其他實施例,儲存區段的個數可以改變而不同。資料D1在動態隨機存取記憶體140的一儲存區域之起始位置係為“0”,而其儲存區段長度為“64”,因此下一筆資料(亦即資料D2)在動態隨機存取記憶體140中的一儲存區域之起始位置係將會是“8”。
核心C0同時會發送該快取資訊(亦即基於主機的快取資訊,包含了快取索引“0”、邏輯位址LBA0與儲存區段長度“64”)至核心C1以表示出資料D1係儲存於動態隨機存取記憶體140中。接著,當核心C1是閒置時(例如在快閃記憶體模組120的忙碌時間時),核心C1可以根據從核心C0所發送的該快取資訊以開始建立二元樹220。
以第2圖為例來作說明,邏輯位址LBA0是該二元樹之節點N0(頂端節點),而二元樹220亦記錄了該節點資訊,該節點資訊包含有節點索引“0”、邏輯位址LBA0、邏輯位址LBA0的重複計數次數CNT、快取索引“0”、該左節點(左子節點)的節點索引、該右節點(右子節點)的節點索引以及儲存區段長度“64”,其中由於動態隨機存取記憶體140中目前只具有一個邏輯位址LBA0,因此其重複計數次數CNT會等於0),此外,由於在這條件中沒有任何節點跟隨邏輯位址LBA0所相應之該頂端節點,該左節點與該右節點之節點索引均為“FFFF”。
接著,在第3圖中,主機130發送該第二寫入命令與邏輯位址LBA64相應之資料D2至第3圖所示的快閃記憶體控制器110,而核心C0將邏輯位址LBA64相應之資料D2儲存至動態隨機存取記憶體140。在本實施例,資料D2係儲存於動態隨機存取記憶體140的一快取索引“8”所相應的一區域中,而資料表210記錄有該快取索引“8”、該相應的邏輯位址LBA64以及該儲存區段長度“128”。資料D2在動態隨機存取記憶體140中之儲存區域的起始位置係位於8,而資料D2具有128個儲存區段的資料大小,因此,下一筆資料(亦即資料D3)在動態隨機存取記憶體140中之儲存區域的起始位置將會位於24。同時,核心C0會發送該快取資訊(亦即該快取索引“8”、邏輯位址LBA64以及該儲存區段長度“128”)至核心C1以表示出資料D2係儲存於動態隨機存取記憶體140中。接著,當核心C1閒置時,核心C1會根據從核心C0所發送出的快取資訊來更新二元樹220。
以第3圖為例,由於邏輯位址LBA64是大於邏輯位址LBA0,因此邏輯位址LBA64是跟隨該二元樹之該頂端節點並成為其右節點,而二元樹220會記錄其節點資訊,該節點資訊包含有該節點索引“1”、邏輯位址LBA64、邏輯位址LBA64的重複計數次數CNT(由於動態隨機存取記憶體140目前只具有一個邏輯位址LBA64,因此重複計數次數CNT等於0)、快取索引“8”、該左節點的節點索引、該右節點的節點索引以及該儲存區段長度“128”,其中由於沒有任何節點跟隨邏輯位址LBA64所相應的節點,因此該左節點與該右節點的節點索引均為“FFFF”。此外,由於邏輯位址LBA64所相應之節點索引“1”被加入至邏輯位址LBA0所相應之節點N0的右節點,因此節點N0的右節點被更新為“1”。
接著,在第4圖中,主機130發送該第三寫入命令與邏輯位址LBA192相應之資料D3至第4圖所示的快閃記憶體控制器110,而核心C0會將邏輯位址LBA192相應之資料D3儲存至動態隨機存取記憶體140。在本實施例,具有256個
儲存區段之資料量的資料D3會被儲存於動態隨機存取記憶體140的一快取索引“24”所相應之一區域中,而資料表210會記錄該快取索引“24”、該相應的邏輯位址LBA192以及該儲存區段長度“256”。同時,核心C0會發送該快取資訊(亦即該快取索引“24”、邏輯位址LBA192以及該儲存區段長度“256”)至核心C1以表示出資料D3被儲存於動態隨機存取記憶體140中。接著,當核心C1閒置時,核心C1會根據從核心C0所發送出的該快取資訊來更新二元樹220。
以第4圖為例,由於邏輯位址LBA192大於邏輯位址LBA64,因此邏輯位址LBA192所相應的節點索引“2”會位於該二元樹之邏輯位址LBA64之該節點索引“1”的一右節點,而二元樹220會記錄其節點資訊,其中該節點資訊包含有該節點索引“2”、邏輯位址LBA192、邏輯位址LBA192之重複計數次數CNT(由於動態隨機存取記憶體140中目前只有一個邏輯位址LBA192,因此其重複計數次數CNT等於0)、該快取索引“24”、該左節點之該節點索引、該右節點之該節點索引以及該儲存區段長度“256”,其中由於目前沒有任何節點跟隨LBA192之節點,因此該左節點與該右節點之節點索引均為“FFFF”。此外,由於邏輯位址LBA192所相應之節點索引“2”被加入到邏輯位址LBA4所相應之節點索引“1”的右節點,因此節點索引“1”之該右節點的內容會被更新為節點索引“2”。
在一實施例,如果快閃記憶體控制器110從主機130接收到包含邏輯位址LBA64的一讀取命令,以第4圖所示的二元樹220而言,處理器112會比較邏輯位址LBA64與二元樹220之該頂端節點的邏輯位址LBA0,並且由於邏輯位址LBA64大於邏輯位址LBA0,因此處理器112在下一個步驟會去找該頂端節點的右節點。接著,由於二元樹220之該頂端節點的右節點係對應於邏輯位址LBA64而邏輯位址LBA64符合該讀取命令中所要的邏輯位址,因此處理器112可以參照二元樹220之快取索引“8”來獲取得到所需要之資料的快取位址,而處理器112會
控制動態隨機存取記憶體控制器114去讀取快取索引“8”所相應之區域中所儲存之資料D2並經由介面電路111傳送該筆資料D2至主機130,而不會存取快閃記憶體模組120。鑑於上述,在上述實施例中僅使用了兩步驟就可以找到所需要的資料,相較於傳統技術必須使用三個步驟才有辦法找到所需要的資料,本發明之實施例大幅增進了搜尋的速度。
此外,如果快閃記憶體控制器110從主機130接收到包含邏輯位址LBA7的一讀取命令,則以第4圖所示之二元樹220為例來說,處理器112能夠判斷出邏輯位址LBA7並沒有儲存於動態隨機存取記憶體140中。接著,處理器112可以控制該控制邏輯電路116去從快閃記憶體模組120讀取出具有邏輯位址LBA7的資料並且接著經由介面電路111發送該筆資料至主機130。快閃記憶體控制器110可以快速地判斷邏輯位址LBA7是否儲存於該快取中(例如動態隨機存取記憶體140),提升快閃記憶體控制器110的讀取速度。
在一實施例,核心C1於閒置時可以重新編排二元樹220以減少其階層個數(number of layers)。例如,核心C1可以使用一自平衡二分搜尋樹演算法(self-balancing binary search tree algorithm),例如是AVL樹或是紅黑樹(red-black tree)以降低其階層個數。以第5圖為例,二元樹220可以被旋轉使得邏輯位址LBA64的節點N1變成該頂端節點,而邏輯位址LBA0的節點N0變成邏輯位址LBA64之節點N1的一左節點,二元樹220可據此而從3層被更新為2層,而其搜尋速度可獲得進一步地提升。
對於使用動態隨機存取記憶體140來實現該快取而言,快閃記憶體控制器110例如被用來控制該動態隨機存取記憶體控制器114與控制邏輯電路116在每次當要被寫入至快閃記憶體模組120之資料的資料量達到一預定值時從該快取中所緩衝之資料將該最小寫入單元之資料大小(例如一個儲存頁)搬移並寫入至快閃記憶體模組120,該預定值例如是一或多個儲存頁、一或多個字線或其他
資料量等等。核心C0係被安排用來相應地更新該資料表210中所記錄的資訊以及發送適當的資訊至核心C1以通知核心C1關於二元樹220應要被更新的資訊,核心C1在閒置時就可以更新該二元樹以移除上述有關的資訊。
一最小寫入單元的資料大小例如是一個儲存頁大小,例如等於64KB(亦即128個儲存區段)的資料量;然而這並非是本發明的限制。換言之,每一次會是一個儲存頁大小的資料(例如128個儲存區段的資料)從動態隨機存取記憶體140被搬移並接著被寫入至快閃記憶體模組120之一個相應的儲存頁,如此,實作上,由資料D1與資料D2之一部分(例如資料D2的前半段部分)所形成的128個儲存區段的資料,亦即資料D1的所有內容及相應於快取索引“8”與具有儲存區段長度“64”的資料D2的一部分的內容,例如會從動態隨機存取記憶體140被搬移並接著被寫入至快閃記憶體模組120的一個儲存頁。接著,由資料D2之另一部分(例如資料D2的後半段部分及資料D3的一部分)所形成的128個儲存區段的另一資料,亦即相應於快取索引“16”並具有儲存區段長度“64”的資料D2的另外其他部分以及相應於快取索引“24”並具有儲存區段長度“64”的資料D3的一部分,例如會從動態隨機存取記憶體140搬移並接著被寫入至快閃記憶體模組120的下一個儲存頁。也就是說,如果從主機130所寫入之多筆不同的特定資料的資料量分別不同於快閃記憶體模組120之最小寫入單元的資料量,則該些不同的特定資料不會被依序且獨自分別地寫入至快閃記憶體模組120。
第6圖至第8圖分別顯示了當由資料D1與資料D2的前半段部分所形成的128個儲存區段的資料被搬移並接著被寫入至快閃記憶體模組120之一個儲存頁時控制器110用以更新第4圖中之二元樹220的操作實施例示意圖。如第6圖所示,在這個情況中,由資料D1的所有內容與資料D2的前半段部分所形成的128個儲存區段的資料會從動態隨機存取記憶體140被搬移至快閃記憶體模組120。由於所有的資料D1會從動態隨機存取記憶體140搬移至快閃記憶體模組120,因此
核心C0會刪除相應的快取資訊(亦即快取索引“0”、邏輯位址LBA0及儲存區段長度“64”)並通知核心C1關於該快取資訊被刪除的資訊。接著,核心C1在閒置時會被安排從二元樹220刪除掉節點索引“0”之節點並且重置其相應的節點資訊為預設值“FFFF”。舉例來說,對於節點索引“0”、其邏輯位址LBA會被重置為“FFFF”,其重複計數次數CNT被重置為“0”,其快取索引被重置為“FFFF”,其左節點被重置為“FFFF”,其右節點會被重置為“FFFF”,以及其儲存區段長度被重置為“FFFF”。節點索引“1”的節點會變成是頂端節點,而節點索引“1”的節點資訊及節點索引“2”的節點資訊則不變。應注意的是,當從該快取搬移所緩衝之資料至快閃記憶體模組120時,資料表210能夠由核心C1所維護或更新而不使用到核心C0。
接著,由於資料D2的前半段部分係從動態隨機存取記憶體140被搬移至快閃記憶體模組120,因此核心C0會被用來更新該資料表210中的快取資訊,而核心C1是在閒置時更新二元樹220。例如,如第7圖所示,核心C0被用來將原有的快取資訊(亦即快取索引“8”、邏輯位址LBA64與儲存區段長度“128”)更新為一新的快取資訊(快取索引“16”、邏輯位址LBA128與儲存區段長度“64”)。核心C1在閒置時會從二元樹202中刪除掉節點索引“1”的節點並將相應的資訊重置為預設值“FFFF”。例如,對於節點索引“1”,其邏輯位址LBA會被重置為“FFFF”,其重複計數次數CNT被重置為“0”,其快取索引被重置為“FFFF”,其左節點被重置為“FFFF”,其右節點被重置為“FFFF”,以及其儲存區段長度被重置為“FFFF”,節點索引“2”節點變成是頂端節點,而節點索引“2”之節點資訊則不改變。
如第8圖所示,核心C0會通知核心C1關於該新的快取資訊的內容(亦即快取索引“16”、邏輯位址LBA128與儲存區段長度“64”)以及核心C1會基於該新的快取資訊來更新二元樹220。例如,核心C1會增加或***具有節點索引
“3”的一節點N3至節點索引“2”之節點的左子節點,其中節點索引“3”之節點N3的節點資訊包含邏輯位址LBA128、重複計數次數CNT等於0、快取索引“16”、左節點“FFFF”、右節點“FFFF”以及儲存區段長度“64”,對於節點索引“2”之節點來說,其左節點的節點索引會被更新為“3”。
也就是說,對於動態隨機存取記憶體140中所快取並要被主機130寫入至快閃記憶體模組120的一特定資料來說,如果該特定資料的資料大小不同於一最小寫入單元(例如是一個儲存頁)的資料大小時,則在本實施例,當每一次該特定資料的一部分從動態隨機存取記憶體140被搬移至快閃記憶體模組120時,核心C1均會根據該特定資料之剩餘的部分所相應的一或多個快取索引來刪除一相應的節點以及重設快取資訊並接著加入或***一個新的節點與相應的快取資訊至該二元樹。
第9圖是本發明一實施例當接收從主機130來的資料時用來建立或更新二元樹220之方法流程示意圖。請搭配參照第1至第4圖及上述的段落說明,第9圖之方法流程的步驟描述於下:步驟900:開始;步驟902:接收從主機130來的資料;步驟904:核心C0將所接收之資料儲存或緩衝於該快閃記憶體控制器內部之一快取中;步驟906:核心C0使用資料表210來記錄快取資訊,該快取資訊包含快取索引、邏輯位址以及所接收之資料的資料長度;步驟908:核心C0發送該快取資訊至核心C1;步驟910:核心C1判斷是否已經建立了一個二元樹;如果沒有任何二元樹被建立,則流程進行步驟912,反之,則流程進行步驟914;步驟912:核心C1建立一個二元樹,該二元樹包含有一頂端節點與相
應的快取資訊,該快取資訊記錄了該頂端節點的節點索引為“0”、邏輯位址、快取索引、左節點、右節點以及所接收之資料的資料長度;步驟914:核心C1比較所接收之資料的邏輯位址與該二元樹中存在的一或多個節點的邏輯位址來建立所接收之資料的邏輯位址所相應的節點以及記錄相應的快取資訊,該快取資訊包含有一相應的節點索引、該邏輯位址、該快取索引、左節點、右節點以及所接收之資料的資料長度;步驟916:快閃記憶體控制器110判斷該快取中所儲存之資料的資料量是否達到一預定值(例如一個儲存頁大小的資料量);如果該快取中所儲存之資料的資料量達到該預定值,則流程進行步驟918,反之,流程進行步驟902以從主機130接收下一筆的資料;步驟918:核心C1通過控制動態隨機存取記憶體控制器114與控制邏輯電路116從該快取(例如動態隨機存取記憶體140)搬移一個儲存頁大小的資料至快閃記憶體模組120;步驟920:如果需要的話,則當核心C1閒置時從該二元樹中刪除一或多個節點以及重設相應的快取資訊為預設值“FFFF”以及接著加入一個新的節點與相應的快取資訊至該二元樹,其中該新增加的節點係用來表示該筆資料之一剩餘的部分而該筆資料之另一部分資料係已經從該快取被搬移至快閃記憶體模組120;以及步驟922:結束。
而在其他實施例,為了降低當核心C1刪除節點及新增節點的計算/運算成本,快閃記憶體控制器110能夠基於該最小寫入單元(例如快閃記憶體模組120的一個儲存頁)來建立二元樹220。
第10圖至第12圖分別顯示了本發明另一實施例當快閃記憶體控制器110從主機130接收資料時用以建立及更新二元樹220之控制器110的操作實施例
示意圖。主機130例如會依序發送該第一寫入命令、資料D1與邏輯位址LBA0、發送該第二寫入命令、具有128個儲存區段的資料D2與邏輯位址LBA64以及發送該第三寫入命令、具有256個儲存區段的資料D3與邏輯位址LBA192至控制器110,以便寫入上述該些資料至快閃記憶體模組120,其中資料D1例如具有64個儲存區段的資料量,資料D2例如具有128個儲存區段的資料量,以及資料D3例如具有256個儲存區段的資料量,一儲存區段係為一快閃記憶體之一較小的儲存單元,例如一個儲存頁可能包含有128個儲存區段。主機130例如可以使用一循序寫入模式來寫入一較大的資料量至記憶裝置100。再者,在本實施例,其係假設該最小寫入單元(例如是一個儲存頁)的資料大小係等於128個儲存區段(但不限定)。核心C0係被安排用來判斷主機130是否使用了該循序寫入模式來寫入資料。如果該循序寫入模式被使用,則核心C0會將一較大的資料量儲存至一快取記憶體,例如是一動態隨機存取記憶體140而接著所儲存之資料會被依序地從該快取記憶體被搬移快閃記憶體模組120;凡此均並非是本案的限制。
在第10圖,當主機130發送該第一寫入命令、資料D1與邏輯位址LBA0至快閃記憶體控制器110時,核心C0會將資料D1與邏輯位址LBA0儲存至該快取記憶體例如是動態隨機存取記憶體140(但不限定)。資料D1係儲存於動態隨機存取記憶體140的快取索引“0”與儲存區段長度“64”兩者所相應的區域,而動態隨機存取記憶體140包含資料表210,資料表210記錄有該快取索引“0”、該相應的邏輯位址LBA0與該儲存區段長度“64”。在這個情況中,具有128個儲存區段之資料量的資料D2係還沒有被接收。由於動態隨機存取記憶體140中目前所緩存之總資料量(亦即資料D)的資料長度等於64個儲存區段而其小於一個儲存頁大小的資料的儲存區段長度(亦即128個儲存區段),因此核心C0會被安排不產生基於快閃記憶體的快取資訊至核心C1並據此將資料D1考慮或決定為一剩餘資料部分R1,其中核心C0會將剩餘的資料資訊記錄於動態隨機存取記憶體140的一
儲存部分中,該剩餘的資料資訊包含該剩餘資料部分R1的一起始快取索引與還沒有被用來產生基於快閃記憶體的快取資訊之相應的一儲存區段長度,亦即該快取索引“0”與儲存區段長度“64”,如第10圖所示。核心C0接著等待接收從主機130來的下一筆的資料。核心C0會一直等待從主機130來的資料,直到動態隨機存取記憶體140中目前所緩存的資料量較大於或等於128個儲存區段(也就是說等於一個儲存頁的資料大小的儲存區段長度(儲存區段的個數)時),核心C0才不會等待從主機130來的資料。由於核心C0在這個情況中不產生也不發送基於快閃記憶體的快取資訊至核心C1以通知核心C1關於此資訊,因此核心C1不會加入或更新一節點至二元樹220。如第10圖所指示,二元樹220此時沒有包含任何節點。
接著,在第11圖,主機130會發送該第二寫入命令、資料D2與邏輯位址LBA64至快閃記憶體控制器110,而核心C0會將資料D2與邏輯位址LBA64儲存至動態隨機存取記憶體140。在本實施例,相似地,資料D2係儲存於動態隨機存取記憶體140的快取索引“8”與儲存區段長度“128”兩者所相應的區域中,而資料表210會記錄有該快取索引“8”、該相應的邏輯位址LBA64與該儲存區段長度“128”。在這個情況中,核心C0會比較動態隨機存取記憶體140中目前所緩衝的總資料量與該最小寫入單元(例如一個儲存頁)所定義之儲存區段的個數,據此而獲知動態隨機存取記憶體140中目前所緩存的總資料量係較大於或等於128個儲存區段,核心C0會將資料D1與資料D2編排或視為是一組由該最小寫入單元之資料P1與跟著該資料P1之一剩餘資料部分R2所形成的資料,其中該資料P1係由資料D1與資料D2的前半段部分所形成並對應於該快取索引“0”與儲存區段長度“128”所定義之一儲存區域,而該剩餘資料部分R2係由資料D2的後半段部分所形成並對應於該快取索引“16”與儲存區段長度“64”所定義之一儲存區域。核心C0會判定資料P1之邏輯位址為LBA0。接著,核心C0會通過發送快取資訊至核心C1來通知核心C1關於資料P1的基於快閃記憶體之快取資訊的內容,
其中該基於快閃記憶體之快取資訊包含該快取索引“0”、邏輯位址LBA0與儲存區段長度“128”。此外,該剩餘資料部分R2之起始快取索引“16”與相應的儲存區段長度“64”均會被核心C0儲存於動態隨機存取記憶體140中。接著,當核心C1閒置時,核心C1會根據從核心C0來的該基於快閃記憶體之快取資訊來更新二元樹220。例如,邏輯位址LBA0係在二元樹220的節點N0(頂端節點),並且二元樹220也記錄了其節點資訊,該節點資訊包含邏輯位址LBA0、邏輯位址LBA0的重複計數次數CNT(由於動態隨機存取記憶體140中目前只有一個邏輯位址LBA0,因此其重複計數次數CNT等於0)、該快取索引“0”、左節點(左子節點)的節點索引、右節點(右子節點)的節點索引以及該儲存區段長度“128”(由於一個儲存頁資料之資料大小等於128個儲存區段,因此資料長度等於128)。此外,該左節點與該右節點的節點索引均為“FFFF”,這是由於在目前這個情況中沒有任何節點跟著邏輯位址LBA0所相應之該頂端節點。此外,由於仍存在有該剩餘資料部分R2,因此核心C0係被安排等待接收從主機130來的下一筆資料。
接著,在第12圖,主機130發送該第三寫入命令、資料D3與邏輯位址LBA192至快閃記憶體控制器110,而核心C0會將具有256個儲存區段之資料量的資料D3以及邏輯位址LBA192儲存至動態隨機存取記憶體140。在本實施例,資料D3係被儲存於動態隨機存取記憶體140之快取索引“24”與儲存區段長度“256”兩者所相應之一儲存區域,而資料表210會記錄該快取索引“24”、該相應的邏輯位址LBA192與該儲存區段長度“256”。相似地,核心C0會判定第二資料D2的一部分(亦即後半段部分)與整個第三資料D3所形成的總資料量較大於128個儲存區段,因此核心C0會將第11圖中之該剩餘資料部分R2及第三資料D3編排或視為是一組由資料P2、P3與一剩餘資料部分R3(跟隨資料P3)所形成的資料,其中資料P2與P3分別相應於該最小寫入單元(例如一個儲存頁),該資料P2對應於該快取索引“16”與儲存區段長度“128”所定義之一儲存區域,該資
料P3對應於該快取索引“32”與儲存區段長度“128”所定義之一儲存區域,以及該剩餘資料部分R3對應於該快取索引“48”與儲存區段長度“64”所定義之一儲存區域。核心C0會將資料P2之該邏輯位址決定為LBA128以及將資料P3之該邏輯位址決定為LBA256。接著,核心C0會產生並發送基於快閃記憶體的快取資訊至核心C1以通知核心C1關於這樣的快取資訊的內容,其中該基於快閃記憶體的快取資訊包含資料P2之快取索引“16”、邏輯位址LBA128與儲存區段長度“128”,以及另包含資料P3之快取索引“32”、邏輯位址LBA256與該儲存區段長度“128”。此外,剩餘資料部分R3之該起始快取索引“48”與其相應之儲存區段長度“8”均會被核心C0儲存於動態隨機存取記憶體140中。接著,當核心C1閒置時,核心C1會根據上述從核心C0發送而所接收到之基於快閃記憶體的快取資訊來更新二元樹220。例如,邏輯位址LBA128所相應之該資料P2係由二元樹220之節點N1(具有節點索引“1”)所表示,而節點N1之資訊係記錄了該邏輯位址LBA128、邏輯位址LBA128之該重複計數次數CNT(由於動態隨機存取記憶體140中目前只有一個邏輯位址LBA128,因此其重複計數次數CNT等於0)、該快取索引“16”、該左節點(左子節點)之該節點索引、該右節點(右子節點)之該節點索引以及該儲存區段長度“128”(由於一個儲存頁資料之該資料大小係等於128個儲存區段,因此其長度等於128)。此外,該節點N1係跟隨該頂端節點,因此節點N0之該右節點之該節點索引係被更新為“1”。此外,邏輯位址LBA256所相應之該資料P3係由二元樹220之該節點N2(具有節點索引“2”)所表示,節點N2之資訊記錄了該邏輯位址LBA256、邏輯位址LBA256之該重複計數次數CNT(由於動態隨機存取記憶體140中目前只有一個邏輯位址LBA256,因此其重複計數次數CNT等於0)、該快取索引“32”、該左節點(左子節點)之該節點索引、該右節點(右子節點)之該節點索引以及該儲存區段長度“128”(由於一個儲存頁資料之該資料大小等於128個儲存區段,因此其長度等於128)。此
外,該節點N2係跟隨該節點N1,因此該節點N1之該右節點之該節點索引係被更新為“2”。
相似地,在第12圖中所示之二元樹220可以被核心C1旋轉,使得邏輯位址LBA128之該節點變成該頂端節點而邏輯位址LBA0之該節點變成是邏輯位址LBA128之節點的左節點,據此二元樹220就可以從3層的架構更新變成是2層的架構,而其節點搜尋速度可以進一步獲得提升;其相關的操作係相似於第5圖之操作,於此不再重述。此外,相似地,當資料從動態隨機存取記憶體140被搬移至快閃記憶體模組120時,該資料表210會被核心C0更新,而二元樹220則被核心C1所更新。
在一實施例,如果快閃記憶體控制器110從主機130接收到包含邏輯位址LBA64之一讀取命令而相應之資料還沒有從動態隨機存取記憶體140移除時,以第12圖中所示之二元樹220為例,核心C1係比較邏輯位址LBA64與二元樹220之該頂端節點之邏輯位址LBA0和儲存區段長度“128”,而由於邏輯位址LBA64係落入於邏輯位址LBA0與儲存區段長度“128”所定義之一儲存空間內,因此核心C1所找到的是該頂端節點。如果該讀取命令所要求的是邏輯位址LBA64與儲存區段長度“128”所定義之資料的話,則核心C1在二元樹220中可以找到邏輯位址LBA0之節點與輯位址LBA128之節點,以得到相應的快取資訊,使得核心C0可以基於從核心C1所獲得之快取資訊以發送相應之資料至主機130。
應注意的是,當資料通過一次搬移一個儲存頁資料從動態隨機存取記憶體140搬移至快閃記憶體模組120時,核心C1在閒置時就可以直接從二元樹220刪除掉一相應的節點與資訊即可,而不用再計算及加入一或多個節點與相應的節點資訊至二元樹220。由於二元樹220也可以被儲存於該快取(例如動態隨機存取記憶體140)中,因此上述可以大幅地減輕存取動態隨機存取記憶體140時之計算量/成本及頻率。
再者,應注意的是,在其他實施例,任何兩筆依序從主機130所發送至控制器110的資料之邏輯位址也可以是不連續的。以上實施例變型均並非是本案的限制。
第13圖是本發明另一實施例當從主機130接收到資料時用以建立或更新二元樹220之方法流程示意圖。請搭配參照第10圖至第12圖,第13圖之流程步驟係描述於下:步驟1300:開始;步驟1302:從主機130接收資料;步驟1304:核心C0將所接收之資料儲存或緩存於快閃記憶體控制器110內部之一快取;步驟1306:核心C0使用資料表210記錄快取資訊,該快取資訊包含快取索引、邏輯位址與所接收之資料之資料長度;步驟1308:核心C0監控該快取中目前所快取之資料量來決定是否要產生並發送基於快閃記憶體的快取資訊至核心C1;如果所監控之資料量大於或等於一個最小寫入單元之該資料大小(例如一個儲存頁的資料大小,例如128個儲存區段),則流程進行步驟1310,反之,流程進行步驟1302以接收其他的資料;步驟1310:核心C0產生並發送相應之基於快閃記憶體的快取資訊至核心C1;步驟1312:核心C1根據所相應之基於快閃記憶體的快取資訊來建立或更新一二元樹;步驟1314:核心C1通過控制該動態隨機存取記憶體控制器114與控制邏輯電路116從該快取(例如動態隨機存取記憶體140)搬移一個儲存頁大小的資料以將該儲存頁大小的資料寫入至快閃記憶體模組120之一儲存頁;步驟1316:核心C1於閒置時從該二元樹刪除掉一或多個節點並重設
相應之基於快閃記憶體的快取資訊為預設值“FFFF”而不加入新的節點至該二元樹;以及步驟1318:結束。
以上所述僅為本發明之較佳實施例,凡依本發明申請專利範圍所做之均等變化與修飾,皆應屬本發明之涵蓋範圍。
100:記憶裝置
110:快閃記憶體控制器
111:介面電路
112:處理器
113:緩衝記憶體
114:動態隨機存取記憶體控制器
115:唯讀記憶體
116:控制邏輯電路
120:快閃記憶體模組
130:主機
140:動態隨機存取記憶體
Claims (18)
- 一種快閃記憶體控制器,包含有:一介面電路,耦接於一主機與一內部匯流排之間;一唯讀記憶體,耦接至該內部匯流排,用來儲存一程式碼;一控制邏輯電路,耦接於該內部匯流排與一快閃記憶體模組之間,該快閃記憶體模組係外部耦接於該快閃記憶體控制器;一處理器,耦接至該內部匯流排,用來執行該程式碼以通過使用該控制邏輯電路來對該快閃記憶體模組進行存取;以及一快取,耦接至該內部匯流排;其中該快閃記憶體模組包含有複數個晶片,每一晶片包含有複數個儲存頁,每一儲存頁包含有複數個儲存區段;當該處理器從該主機經由該介面電路與該內部匯流排接收到一特定寫入命令以及具有N個儲存區段之資料量的特定資料時,該處理器係用來將該特定資料儲存至該快取的一區域,以及該處理器係通過加入一特定節點至一二元樹來建立或更新該二元樹,其中該特定節點具有一節點資訊,該節點資訊包含有一節點索引、由該特定寫入命令所攜帶的一邏輯位址、該快取的該區域所相應的一快取索引、一左節點、一右節點以及該N個儲存區段之資料量所相應的一儲存區段長度;以及,當該處理器從該主機接收到一讀取命令要求讀取該快取中所緩存的某一資料時,該處理器係被安排用來使用該二元樹中所記錄之一或多個節點的節點資訊來從該快取中得到該某一資料以及發送該某一資料至該主機而無需控制該控制邏輯電路來對該快閃記憶體模組進行存取。
- 如申請專利範圍第1項所述之快閃記憶體控制器,其中該處理器包 含有一第一核心與一第二核心,該第一核心係設置用來控制該快閃記憶體控制器與該主機之間的多個操作,該第二核心係設置用來控制該快閃記憶體控制器與該快閃記憶體模組之間的多個操作;以及,該第二核心係通過加入該特定節點至該二元樹來建立或更新該二元樹,其中該特定節點具有該節點索引、由該特定寫入命令所攜帶的該邏輯位址、該快取的該區域所相應的該快取索引、該左節點、該右節點以及該N個儲存區段之資料量所相應的該儲存區段長度。
- 如申請專利範圍第2項所述之快閃記憶體控制器,其中當該處理器從該主機接收該特定資料時,該第一核心係用來將該特定資料儲存至該快取之該區域中,並且該第一核心係用來產生並發送該特定資料之特定快取資訊以通知該第二核心關於該特定快取資訊的資料以根據該特定快取資訊的資料來建立或更新該二元樹。
- 如申請專利範圍第1項所述之快閃記憶體控制器,其中當從該快取將第一資料的一部分移至該快閃記憶體模組並寫入至該快閃記憶體模組內之一個最小寫入單元時,如果該第一資料之一資料量較大於該最小寫入單元之一資料量,則該第二核心係安排用來刪除該第一資料所相應之一第一節點以及在該二元樹中***一第二節點,該第二節點係用來指示出還沒有從該快取移入至該快閃記憶體模組內的該第一資料的另一部分。
- 一種記憶裝置,包含有:一快閃記憶體模組;以及如申請專利範圍第1項所述之快閃記憶體控制器。
- 一種快閃記憶體控制器的方法,包含有:提供耦接於一主機與一內部匯流排之間的一介面電路;提供耦接於該內部匯流排與一快閃記憶體模組之間的一控制邏輯電路,該快閃記憶體模組係外部耦接於該快閃記憶體控制器,該快閃記憶體模組具有複數個晶片,每一晶片包含有複數個儲存頁,每一儲存頁包含有複數個儲存區段;提供耦接於該內部匯流排之一快取;當從該主機經由該介面電路與該內部匯流排接收到一特定寫入命令以及具有N個儲存區段之資料量的特定資料時,將該特定資料儲存至該快取的一區域以及通過加入一特定節點至一二元樹來建立或更新該二元樹,其中該特定節點具有一節點資訊,該節點資訊包含有一節點索引、由該特定寫入命令所攜帶的一邏輯位址、該快取的該區域所相應的一快取索引、一左節點、一右節點以及該N個儲存區段之資料量所相應的一儲存區段長度;以及當從該主機接收到一讀取命令要求讀取該快取中所緩存的某一資料時,使用該二元樹中所記錄之一或多個節點的節點資訊來從該快取中得到該某一資料以及發送該某一資料至該主機而無需控制該控制邏輯電路來對該快閃記憶體模組進行存取。
- 如申請專利範圍第6項所述之方法,其中該控制邏輯電路係由一處理器所控制,該處理器包含一第一核心與一第二核心,以及該方法包含有:使用該第一核心以控制該快閃記憶體控制器與該主機之間的操作;使用該第二核心以控制該快閃記憶體控制器與該快閃記憶體模組之間的操作;以及 使用該第二核心通過加入該特定節點至該二元樹來建立或更新該二元樹,其中該特定節點具有該節點資訊,該節點資訊包含有該節點索引、由該特定寫入命令所攜帶的該邏輯位址、該快取之該區域所相應的該快取索引、該左節點、該右節點以及該N個儲存區段之資料量所相應的該儲存區段長度。
- 如申請專利範圍第7項所述之方法,另包含有:當從該主機接收到該特定資料時,使用該第一核心將該特定資料儲存至該快取之該區域,以及使用該第一核心產生並發送該特定資料之特定快取資訊以通知該第二核心關於該特定快取資訊的資料以根據該特定快取資訊的資料來建立或更新該二元樹。
- 如申請專利範圍第6項所述之方法,另包含有:當從該快取將第一資料的一部分移至該快閃記憶體模組並寫入至該快閃記憶體模組內之一個最小寫入單元時,如果該第一資料之一資料量較大於該最小寫入單元之一資料量,則使用該第二核心刪除該第一資料所相應之一第一節點以及在該二元樹中***一第二節點,其中該第二節點係用來指示出還沒有從該快取移入至該快閃記憶體模組內的該第一資料的另一部分。
- 一種快閃記憶體控制器,包含有:一介面電路,耦接於一主機與一內部匯流排之間;一唯讀記憶體,耦接至該內部匯流排,用來儲存一程式碼;一控制邏輯電路,耦接於該內部匯流排與一快閃記憶體模組之間,該快閃 記憶體模組係外部耦接於該快閃記憶體控制器;一處理器,耦接至該內部匯流排,用來執行該程式碼以通過使用該控制邏輯電路來對該快閃記憶體模組進行存取;以及一快取,耦接至該內部匯流排;其中該快閃記憶體模組包含有複數個晶片,每一晶片包含有複數個儲存頁,每一儲存頁包含有複數個儲存區段;當該處理器從該主機經由該介面電路與該內部匯流排接收到一特定寫入命令以及具有N個儲存區段之資料量的特定資料時,該處理器係比較該N個儲存區段之該資料量與該快閃記憶體模組內之一最小寫入單元的一資料量,來決定是否產生一基於快閃記憶體的該最小寫入單元的該資料量所產生的快取資訊以建立或更新一二元樹,該最小寫入單元為一儲存頁。
- 如申請專利範圍第10項所述之快閃記憶體控制器,其中該處理器包含有一第一核心與一第二核心,當該N個儲存區段之該資料量較小於該最小寫入單元之該資料量時,該第一核心係被安排用來等待從該主機接收下一筆資料,而不通知該第二核心關於一快取資訊的內容;當該N個儲存區段之該資料量不小於該最小寫入單元之該資料量時,該第一核心係被安排用來產生並發送該基於快閃記憶體的快取資訊至該第二核心,使得該第二核心可通過加入一特定節點至一二元樹來建立或更新該二元樹,其中該特定節點具有一節點資訊,該節點資訊包含一節點索引、該快取中所緩存之資料所相應的一邏輯位址、該快取中所緩存之該資料所相應的一快取索引、一左節點、一右節點、該最小寫入單元之該資料量所相應的一儲存區段長度。
- 如申請專利範圍第11項所述之快閃記憶體控制器,其中當將該節 點所相應之一資料從該快取移至該快閃記憶體模組時,該第二核心係被安排用來刪除該二元樹之一節點,而無需決定是否要***一新節點至該二元樹。
- 如申請專利範圍第11項所述之快閃記憶體控制器,其中該最小寫入單元之該資料量所相應之該儲存區段長度係為一固定儲存區段長度,該固定儲存區段長度相應於該快閃記憶體模組內之一儲存頁資料的一資料大小。
- 一種記憶裝置,包含有:一快閃記憶體模組;以及如申請專利範圍第10項所述之快閃記憶體控制器。
- 一種快閃記憶體控制器的方法,包含有:提供耦接於一主機與一內部匯流排之間的一介面電路;提供耦接於該內部匯流排與一快閃記憶體模組之間的一控制邏輯電路、該快閃記憶體模組係外部耦接於該快閃記憶體控制器,該快閃記憶體模組具有複數個晶片,每一晶片具有複數個儲存頁,每一儲存頁具有複數個儲存區段;提供耦接於該內部匯流排之一快取;以及當從該主機經由該介面電路與該內部匯流排接收到一特定寫入命令以及具有N個儲存區段之一資料量的一特定資料時,比較該N個儲存區段之該資料量與該快閃記憶體模組內之一最小寫入單元之一資料量,以決定是否產生一基於快閃記憶體的該最小寫入單元的該資料量所產生的快取資訊來建立或更新一二元樹,該最小寫入單元為一儲存頁。
- 如申請專利範圍第15項所述之方法,其中該控制邏輯電路係由一處理器所控制,該處理器包含有一第一核心與一第二核心,以及該方法另包含:當該N個儲存區段之該資料量較小於該最小寫入單元之該資料量時,使用該第一核心等待以從該主機接收下一筆資訊,而不用通知該第二核心關於一快取資訊的內容;以及當該N個儲存區段之該資料量不小於該最小寫入單元之該資料量時,使用該第一核心產生並發送該基於快閃記憶體的快取資訊至該第二核心,使得該第二核心可通過加入一特定節點至一二元樹來建立或更新該二元樹,其中該特定節點具有一節點資訊,該節點資訊具有一節點索引、該快取中所緩存之資料所相應的一邏輯位址、該快取中所緩存之該資料所相應的一快取索引、一左節點、一右節點以及該最小寫入單元之該資料量所相應之一儲存區段長度。
- 如申請專利範圍第16項所述之方法,另包含有:當將該節點所相應的一資訊從該快取搬移至該快閃記憶體模組,使用該第二核心刪除該二元樹的一節點,而不用決定是否***一新節點至該二元樹。
- 如申請專利範圍第16項所述之方法,其中該最小寫入單元之該資料量所相應之該儲存區段長度係為一固定儲存區段長度,該固定儲存區段長度相應於該快閃記憶體模組內之一儲存頁資料的一資料大小。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US16/821,996 | 2020-03-17 | ||
US16/821,996 US11176049B2 (en) | 2020-03-17 | 2020-03-17 | 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 |
Publications (2)
Publication Number | Publication Date |
---|---|
TW202137009A TW202137009A (zh) | 2021-10-01 |
TWI755168B true TWI755168B (zh) | 2022-02-11 |
Family
ID=77675713
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
TW109140943A TWI755168B (zh) | 2020-03-17 | 2020-11-23 | 用來產生基於主機的快取資訊或基於快閃記憶體的快取資訊以建立及最佳化二元樹的快閃記憶體控制器、方法及記憶裝置 |
Country Status (3)
Country | Link |
---|---|
US (2) | US11176049B2 (zh) |
CN (1) | CN113407111B (zh) |
TW (1) | TWI755168B (zh) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11886152B2 (en) * | 2021-07-13 | 2024-01-30 | Rockwell Automation Technologies, Inc. | Automated monitoring and control using augmented streaming decision tree |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2007029253A2 (en) * | 2005-09-06 | 2007-03-15 | Beyond Blades Ltd. | 3-dimensional multi-layered modular computer architecture |
US8984171B2 (en) * | 2013-03-01 | 2015-03-17 | Silicon Motion, Inc. | Data storage device and flash memory control method |
US9436599B2 (en) * | 2013-03-01 | 2016-09-06 | Silicon Motion, Inc. | Flash storage device and method including separating write data to correspond to plural channels and arranging the data in a set of cache spaces |
TWI553478B (zh) * | 2015-09-23 | 2016-10-11 | 瑞昱半導體股份有限公司 | 能夠使用外部揮發性記憶體的裝置以及能夠釋放內部揮發性記憶體的裝置 |
TWI567554B (zh) * | 2014-11-06 | 2017-01-21 | 慧榮科技股份有限公司 | 緩存及讀取即將寫入儲存單元之資料的方法以及使用該方法的裝置 |
Family Cites Families (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO1994001828A1 (en) * | 1992-07-02 | 1994-01-20 | Wellfleet Communications | Data packet processing method and apparatus |
US7505960B2 (en) * | 2005-11-15 | 2009-03-17 | Microsoft Corporation | Scalable retrieval of data entries using an array index or a secondary key |
CN101452422B (zh) * | 2007-11-29 | 2011-03-30 | 联芯科技有限公司 | 一种芯片的数据读写方法、相应装置和*** |
US8200920B2 (en) * | 2009-01-08 | 2012-06-12 | Blue Coat Systems, Inc. | Systems and methods for storing and accessing data stored in a data array |
KR20120110670A (ko) * | 2011-03-30 | 2012-10-10 | 주식회사 히타치엘지 데이터 스토리지 코리아 | 바이너리 트리 구조의 캐시 컨트롤 레코드 관리 방법 |
CN102929979A (zh) * | 2012-10-17 | 2013-02-13 | 华为技术有限公司 | 一种定位页内存储空间的方法和设备 |
US9715461B2 (en) * | 2014-03-03 | 2017-07-25 | Kabushiki Kaisha Toshiba | Cache memory control circuit and processor |
US10990323B2 (en) * | 2019-05-28 | 2021-04-27 | Silicon Motion, Inc. | Flash memory controller, memory device and method for accessing flash memory module |
-
2020
- 2020-03-17 US US16/821,996 patent/US11176049B2/en active Active
- 2020-11-23 TW TW109140943A patent/TWI755168B/zh active
-
2021
- 2021-01-05 CN CN202110007160.9A patent/CN113407111B/zh active Active
- 2021-10-06 US US17/494,844 patent/US11630780B2/en active Active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2007029253A2 (en) * | 2005-09-06 | 2007-03-15 | Beyond Blades Ltd. | 3-dimensional multi-layered modular computer architecture |
US8984171B2 (en) * | 2013-03-01 | 2015-03-17 | Silicon Motion, Inc. | Data storage device and flash memory control method |
US9436599B2 (en) * | 2013-03-01 | 2016-09-06 | Silicon Motion, Inc. | Flash storage device and method including separating write data to correspond to plural channels and arranging the data in a set of cache spaces |
TWI567554B (zh) * | 2014-11-06 | 2017-01-21 | 慧榮科技股份有限公司 | 緩存及讀取即將寫入儲存單元之資料的方法以及使用該方法的裝置 |
TWI553478B (zh) * | 2015-09-23 | 2016-10-11 | 瑞昱半導體股份有限公司 | 能夠使用外部揮發性記憶體的裝置以及能夠釋放內部揮發性記憶體的裝置 |
Also Published As
Publication number | Publication date |
---|---|
US20220027282A1 (en) | 2022-01-27 |
US11176049B2 (en) | 2021-11-16 |
CN113407111B (zh) | 2024-03-29 |
US20210294747A1 (en) | 2021-09-23 |
CN113407111A (zh) | 2021-09-17 |
TW202137009A (zh) | 2021-10-01 |
US11630780B2 (en) | 2023-04-18 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11893238B2 (en) | Method of controlling nonvolatile semiconductor memory | |
KR100725390B1 (ko) | 수정 빈도를 고려하여 데이터를 비휘발성 캐쉬부에저장하는 장치 및 방법 | |
KR101443231B1 (ko) | 라이트-백 동작시 라이트-백 데이터의 버스트 길이를조절할 수 있는 캐시 메모리와 이를 포함하는 시스템 | |
US20050080986A1 (en) | Priority-based flash memory control apparatus for XIP in serial flash memory,memory management method using the same, and flash memory chip thereof | |
US20100287327A1 (en) | Computing systems and methods for managing flash memory device | |
JP2011530133A (ja) | キャッシュコンテンツの記憶管理 | |
TW201917581A (zh) | 管理快閃記憶體模組的方法及相關的快閃記憶體控制器 | |
TW201830249A (zh) | 最大化可去重複記憶體的方法、記憶體系統和產品 | |
US20140219041A1 (en) | Storage device and data processing method thereof | |
TWI755168B (zh) | 用來產生基於主機的快取資訊或基於快閃記憶體的快取資訊以建立及最佳化二元樹的快閃記憶體控制器、方法及記憶裝置 | |
JP4113524B2 (ja) | キャッシュ・メモリ・システムとその制御方法 | |
TWI749903B (zh) | 快閃記憶體控制器、記憶體裝置以及存取快閃記憶體模組之方法 | |
CN110312986B (zh) | 用于在固态设备上存储数据的流的机会性使用 | |
WO2016206070A1 (zh) | 一种文件更新方法及存储设备 | |
CN111026678B (zh) | 基于固态硬盘的缓存设计方法、装置及计算机设备 | |
JP6760916B2 (ja) | ストレージコントローラ、ストレージアレイ装置、データ格納方法、およびプログラム | |
CN112558879A (zh) | 一种提高固态盘内3D-flash性能的方法 | |
TWI824761B (zh) | 在以快閃記憶體為基礎的儲存裝置中快取位址映射資訊的方法與裝置 | |
WO2022021337A1 (zh) | 闪存控制方法和装置 |