TWI697779B - 資料儲存裝置與資料處理方法 - Google Patents
資料儲存裝置與資料處理方法 Download PDFInfo
- Publication number
- TWI697779B TWI697779B TW108105660A TW108105660A TWI697779B TW I697779 B TWI697779 B TW I697779B TW 108105660 A TW108105660 A TW 108105660A TW 108105660 A TW108105660 A TW 108105660A TW I697779 B TWI697779 B TW I697779B
- Authority
- TW
- Taiwan
- Prior art keywords
- memory
- mapping table
- memory controller
- logical address
- bit
- Prior art date
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; 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 OR CALCULATING; 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
- G06F12/0882—Page mode
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; 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/064—Management of blocks
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/08—Error detection or correction by redundancy in data representation, e.g. by using checking codes
- G06F11/10—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
- G06F11/1008—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices
- G06F11/1044—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices with specific ECC/EDC distribution
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; 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 OR CALCULATING; 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/0866—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches for peripheral storage systems, e.g. disk cache
- G06F12/0873—Mapping of cache memory to specific storage devices or parts thereof
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; 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 OR CALCULATING; 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 OR CALCULATING; 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/0629—Configuration or reconfiguration of storage systems
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; 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 OR CALCULATING; 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 OR CALCULATING; 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 OR CALCULATING; 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/0683—Plurality of storage devices
- G06F3/0688—Non-volatile semiconductor memory arrays
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; 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 OR CALCULATING; 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 OR CALCULATING; 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
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)
- Quality & Reliability (AREA)
- Memory System (AREA)
Abstract
一種資料儲存裝置,包括一記憶體裝置以及一記憶體控制器。記憶體裝置包括複數記憶體區塊,各記憶體區塊包括複數物理資料頁。記憶體控制器耦接記憶體裝置,用以存取記憶體裝置。記憶體控制器選擇一既定記憶體區塊用以接收資料,並且對應地於一第一映射表格中紀錄複數邏輯位址。記憶體控制器包括一緩衝記憶體,第一映射表係儲存於緩衝記憶體,用以紀錄寫入既定記憶體區塊之各物理資料頁之資料係指向哪個邏輯資料頁。緩衝記憶體更儲存一位元表格,位元表格包含複數欄位,各欄位用以紀錄一位元值。於記憶體控制器根據一寫入指令將對應於一第一邏輯位址之一邏輯資料頁之資料寫入既定記憶體區塊時,記憶體控制器於第一映射表格中紀錄一邏輯位址,根據一既定函數轉換第一邏輯位址以產生位元表格之一第一欄位索引值,並且將位元表格中第一欄位索引值所對應之位元值設定為一第一數值。
Description
本發明係有關於適用於一資料儲存裝置之一種資料處理方法,可有效加速記憶體裝置的讀取操作。
隨著資料儲存裝置的科技在近幾年快速地成長,許多資料儲存裝置,如符合SD/MMC規格、CF規格、MS規格與XD規格的記憶卡、固態硬碟、嵌入式多媒體記憶卡(embedded Multi Media Card,縮寫為eMMC)以及通用快閃記憶體儲存(Universal Flash Storage,縮寫為UFS)已經廣泛地被應用在多種用途上。因此,在這些資料儲存裝置上,有效率的存取控制也變成一個重要的議題。
為了提高資料儲存裝置的存取效能,本發明提出一種新的資料處理方法,可有效地處提升記憶體裝置之存取效能。
本發明揭露一種資料儲存裝置,包括一記憶體裝置以及一記憶體控制器。記憶體裝置包括複數記憶體區塊,各記憶體區塊包括複數物理資料頁。記憶體控制器耦接記憶體裝置,用以存取記憶體裝置。記憶體控制器選擇一既定記憶體區塊用以接收資料,並且對應地於一第一映射表格中紀錄複數邏輯位址。記憶體控制器包括一緩衝記憶體,第一映射表係儲存於緩衝記憶體,用以紀錄寫入既定記憶體區塊之各物理資料頁之資料係指向哪個邏輯資料頁。緩衝記憶體更儲存一位元表格,位元表格包含複數欄位,各欄位用以紀錄一位元值。於記憶體控制器根據一寫入指令將對應於一第一邏輯位址之一邏輯資料頁之資料寫入既定記憶體區塊時,記憶體控制器於第一映射表格中紀錄一邏輯位址,根據一既定函數轉換第一邏輯位址以產生位元表格之一第一欄位索引值,並且將位元表格中第一欄位索引值所對應之位元值設定為一第一數值。
本發明揭露一種資料處理方法,適用於一資料儲存裝置,資料儲存裝置包括一記憶體裝置以及一記憶體控制器,記憶體裝置包括複數記憶體區塊,各記憶體區塊包括複數物理資料頁,記憶體控制器耦接記憶體裝置,用以存取記憶體裝置,該方法包括:由記憶體控制器選擇一既定記憶體區塊用以接收資料;由記憶體控制器接收一寫入指令,用以將對應於一第一邏輯位址之一邏輯資料頁之資料寫入既定記憶體區塊;由記憶體控制器於一第一映射表格中紀錄第一邏輯位址,其中第一映射表係儲存於記憶體控制器之一緩衝記憶體,用以紀錄寫入既定記憶體區塊之各物理資料頁之資料係指向哪個邏輯資料頁; 由記憶體控制器根據一既定函數轉換第一邏輯位址以產生一位元表格之一第一欄位索引值,其中位元表格係儲存於緩衝記憶體,位元表格包含複數欄位,各欄位用以紀錄一位元值;以及由記憶體控制器將位元表格中第一欄位索引值所對應之位元值設定為一第一數值。
為讓本發明之目的、特徵和優點能更明顯易懂,下文特舉出本發明之具體實施例,並配合所附圖式,作詳細說明如下。目的在於說明本發明之精神而非用以限定本發明之保護範圍,應理解下列實施例可經由軟體、硬體、韌體、或上述任意組合來實現。
第1圖係顯示根據本發明之一實施例所述之資料儲存裝置100的示意圖。資料儲存裝置100包括一記憶體裝置120,例如,一快閃記憶體(Flash Memory)模組,以及一記憶體控制器110,且記憶體控制器110用來存取(Access)記憶體裝置120。根據本發明一實施例,記憶體控制器110包含一微處理器112、一唯讀記憶體(Read Only Memory,ROM)112M、一控制邏輯114、一緩衝記憶體116、與一介面邏輯118。唯讀記憶體112M係用來儲存一程式碼112C,而微處理器112則用來執行程式碼112C以控制對記憶體裝置120之存取。控制邏輯114包含了一編碼器132以及一解碼器134,其中編碼器132用來對寫入到記憶體裝置120中的資料進行編碼以產生對應的校驗碼(或稱,錯誤更正碼(Error Correction Code),ECC),而解碼器134用來將從記憶體裝置120所讀出的資料進行解碼。
於典型狀況下,記憶體裝置120包含了多個快閃記憶體晶片,而每一個快閃記憶體晶片包含複數個記憶體區塊(Block),而該控制器(例如,透過微處理器112執行程式碼112C之記憶體控制器110)對記憶體裝置120進行抹除資料運作係以區塊為單位來進行。另外,一記憶體區塊可記錄(包含)特定數量的資料頁(Page),即,物理資料頁,其中該控制器(例如,透過微處理器112執行程式碼112C之記憶體控制器110)對記憶體裝置120進行寫入資料之運作係以資料頁為單位來進行寫入。
實作上,透過微處理器112執行程式碼112C之記憶體控制器110可利用其本身內部之元件來進行諸多控制運作,例如:利用控制邏輯114來控制記憶體裝置120之存取運作(尤其是對至少一區塊或至少一資料頁之存取運作)、利用緩衝記憶體116進行所需之緩衝處理、以及利用介面邏輯118來與一主機裝置(Host Device)130溝通。在一實施例中,記憶體控制器110透過介面邏輯118並使用一標準通訊協定與主機裝置130溝通。舉例而言,上述之標準通訊協定包含(但不限於):通用序列匯流排(Universal Serial Bus ,縮寫為USB)標準、安全數位(Secure Digital ,縮寫為SD)介面標準、超高速一代 (Ultra High Speed-I,縮寫為UHS-I) 介面標準、超高速二代 (Ultra High Speed-II,縮寫為UHS-II) 介面標準、複合式快閃記憶體(Compact flash,縮寫為CF)介面標準、多媒體卡(Multimedia Card,縮寫為MMC)介面標準、嵌入式多媒體卡(Embedded Multimedia Card,縮寫為eMMC)介面標準、通用快閃記憶體(Universal Flash Storage,縮寫為UFS)介面標準、高技術組態(Advanced Technology Attachment,縮寫為ATA)標準、序列高技術組態(Serial ATA,縮寫為SATA)標準、快捷外設互聯標準(Peripheral Component Interconnect Express,縮寫為PCI-E)標準、並列先進附件(Parallel Advanced Technology Attachment,縮寫為PATA)標準。
在一實施例中,緩衝記憶體116係以隨機存取記憶體(Random Access Memory,RAM)來實施。例如,緩衝記憶體116可以是靜態隨機存取記憶體(Static RAM,SRAM),但本發明不限於此。
在一實施例中,資料儲存裝置100可以是可攜式記憶體裝置(例如:符合SD/MMC、CF、MS、XD標準之記憶卡),且主機裝置130為一可與資料儲存裝置連接的電子裝置,例如手機、筆記型電腦、桌上型電腦…等等。而在另一實施例中,資料儲存裝置100可以是固態硬碟或符合通用快閃記憶體儲存(Universal Flash Storage,UFS)或嵌入式多媒體記憶卡(Embedded Multi Media Card,EMMC)規格之嵌入式儲存裝置,以設置在一電子裝置中,例如設置在手機、筆記型電腦、桌上型電腦之中,而此時主機裝置130可以是該電子裝置的一處理器。
主機裝置130可對資料儲存裝置100發出指令,例如,讀取指令或寫入指令,用以存取記憶體裝置120所儲存之資料,或者進一步控制、管理資料儲存裝置100。
根據本發明之一實施例,記憶體裝置120所包含之複數個記憶體區塊中可單層式儲存(Single-Level Cell,SLC)記憶體區塊、多層式儲存(Multiple-Level Cell,MLC)記憶體區塊以及/或是三層式儲存(Triple-Level Cell,TLC)記憶體區塊。SLC記憶體區塊的每個記憶體單元中儲存一個位元資料,MLC記憶體區塊的每個記憶體單元中儲存兩個位元資料,TLC記憶體區塊的每個記憶體單元中儲存三個位元資料。
一般而言,記憶體裝置120可大體被區分為三個區域,包含系統區域、資料區域以及備用區域。記憶體控制器110可自備用區域選擇一既定記憶體區塊作為快取記憶體,或稱緩存器(buffer),用以接收並暫存資料。待緩存器被寫滿時,記憶體控制器110再將作為緩存器之既定記憶體區塊更新成資料區域的資料區塊。舉例而言,若用以接收並暫存資料的緩存器為MLC或TLC記憶體區塊,待緩存器被寫滿時,可直接被更新為資料區域的資料區塊。若用以接收並暫存資料的緩存器為SLC記憶體區塊,待一定數量之緩存器被寫滿時,可透過垃圾回收程序,將多個緩存器記憶體區塊所儲存之資料搬移至MLC或TLC記憶體區塊(目標記憶體區塊),並藉此操作將目標記憶體區塊更新為資料區域的資料區塊。
根據本發明之一實施例,記憶體控制器110會於緩衝記憶體116維護一第一映射表格。於利用既定記憶體區塊接收資料時,記憶體控制器110會對應地於第一映射表格中紀錄複數邏輯位址。根據本發明之一實施例,第一映射表格為一快閃記憶體對主機映射(Flash to Host mapping,縮寫為F2H)表格。第一映射表格可包含複數欄位,各欄位用以紀錄既定記憶體區塊之各物理資料頁之映射資訊,即,寫入既定記憶體區塊之各物理資料頁之資料係指向(對應於)哪個邏輯資料頁,例如,第一映射表格中可紀錄對應之邏輯資料頁之邏輯區塊位址(Logical Block Address,縮寫為LBA),或是以其他形式記錄邏輯資料頁之邏輯位址。
根據本發明之一實施例,第一映射表格可以一陣列形式記錄邏輯位址,其中第一映射表格之各欄位對應於既定記憶體區塊之一物理資料頁。即,第一映射表格之陣列索引值與既定記憶體區塊之物理資料頁有著一對一的對應關係。舉例而言,假設第一映射表格Table_1所使用的起始陣列索引值為0,則第一映射表格的第一個欄位Table_1[0](即,第一映射表格Table_1所儲存之第1筆記錄)所紀錄的邏輯位址為既定記憶體區塊的第1個物理資料頁之資料所指向的邏輯資料頁,第二個欄位Table_1[1]( 即,第一映射表格Table_1所儲存之第2筆記錄)所紀錄的邏輯位址為既定記憶體區塊的第2個物理資料頁之資料所指向的邏輯資料頁,並依此類推。
根據本發明之一實施例,記憶體控制器110會依物理資料頁編號少至多的順序將資料寫入既定記憶體區塊,因此也會依陣列索引值少至多的順序將各物理資料頁所對應之邏輯資料頁之邏輯位址紀錄於第一映射表格Table_1之各欄位中。但必須注意的是,本發明並不限於依物理資料頁編號少至多的順序將資料寫入既定記憶體區塊。
根據本發明之一實施例,於既定記憶體區塊被寫滿時,第一映射表格Table_1之各欄位的編輯也對應地完成。理論上,第一映射表格Table_1所紀錄之資訊為最新的快閃記憶體對主機映射資訊。於記憶體控制器110完成第一映射表格Table_1的編輯時,記憶體控制器110會進一步根據第一映射表格Table_1所儲存的內容編輯一第二映射表格Table_2,用以將此最新的映射資訊更新至第二映射表格Table_2。
根據本發明之一實施例,第二映射表格Table_2被儲存於記憶體裝置120之系統區域。第二映射表格Table_2為一主機對快閃記憶體映射(Host to Flash mapping table,縮寫為H2F)表格,第二映射表格Table_2所記錄的複數筆資料係對應於複數邏輯資料頁。一般而言,第二映射表格Table_2所包含的欄位數量與主機系統中所包含的邏輯資料頁數量相關,其中第二映射表格Table_2的一個欄位對應於主機系統的一個邏輯資料頁,用以紀錄此邏輯資料頁之映射資訊。即,此邏輯資料頁之資料係指向(實際上被儲存於)記憶體裝置120的哪個記憶體區塊以及哪個物理資料頁。根據本發明之一實施例,所述之主機系統可以是包含主機裝置130與資料儲存裝置100之一系統,亦可為進一步包含耦接至主機裝置130之一或多個周邊裝置之一系統。
根據本發明之一實施例,第二映射表格Table_2可以一陣列形式記錄各邏輯資料頁所對應之一記憶體區塊編號以及一資料頁編號,用以紀錄各邏輯資料頁之資料係指向(被儲存於)哪個記憶體區塊的哪個物理資料頁。如上述,第二映射表格Table_2之各欄位係對應於複數邏輯資料頁之一者。因此,第二映射表格之陣列索引值與邏輯資料頁有著一對一的對應關係。舉例而言,假設第二映射表格Table_2所使用的起始陣列索引值為0,則第二映射表格之第一個欄位Table_2[0]( 即,第二映射表格Table_2所儲存之第1筆記錄)所紀錄的記憶體區塊編號以及資料頁編號指示出主機系統中第1個邏輯資料頁之資料被存放的實體記憶體區塊及資料頁位置,第二映射表格之第二個欄位Table_2[1]( 即,第二映射表格Table_2所儲存之第2筆記錄)所紀錄的記憶體區塊編號以及資料頁編號指示出主機系統中第2個邏輯資料頁之資料被存放的實體記憶體區塊及資料頁位置,並依此類推。
根據本發明之一實施例,於需要編輯第二映射表格Table_2時,記憶體控制器110可自第一映射表格Table_1之起始陣列索引值開始依序根據第一映射表格Table_1所記錄之邏輯位址查找第二映射表格Table_2,並且根據既定記憶體區塊之一記憶體區塊編號以及第一映射表格Table_1所對應之陣列索引值更新第二映射表格Table_2所記錄的內容。
舉例而言,第一映射表格Table_1之第1個欄位Table_1[0]所紀錄的內容為0,用以表示既定記憶體區塊的第1個物理資料頁之資料係指向的邏輯位址為0的邏輯資料頁。記憶體控制器110根據此邏輯位址查找第二映射表格Table_2,將包含此邏輯位址的一或多筆紀錄載入緩衝記憶體116中,用以進行內容的編輯或更新。舉例而言,記憶體控制器110可存取第二映射表格Table_2之第1~1024筆紀錄並將之載入緩衝記憶體116中。接著,記憶體控制器110可根據既定記憶體區塊之一記憶體區塊編號以及第一映射表格Table_1所對應之陣列索引值更新第二映射表格Table_2所記錄的內容。例如,將既定記憶體區塊之一記憶體區塊編號以及第一映射表格Table_1之陣列索引值0寫入第二映射表格Table_2之第1個欄位Table_2[0],用以作為邏輯位址為0的邏輯資料頁的映射資訊。值得注意的是,載入緩衝記憶體116中用以進行內容的編輯或更新的第二映射表格Table_2的部分,因實際上為記憶體裝置120所儲存之第二映射表格Table_2之複本,因此於本發明之實施例中,同樣被稱為第二映射表格Table_2。
一般而言,當記憶體控制器110需要讀取一特定邏輯資料頁之資料時,需透過搜尋上述映射表格以取得特定邏輯資料頁(或其所對應之邏輯位址)之映射資訊,即,記憶體控制器110需藉由搜尋上述映射表格得知此特定邏輯資料頁之資料實際上係被儲存於記憶體裝置120之哪個記憶體區塊的哪個物理資料頁。
舉例而言,由於第一映射表格Table_1所紀錄之資訊為最新的快閃記憶體對主機映射資訊,因此記憶體控制器110可選擇先搜尋第一映射表格Table_1(有時為了加速,亦可同時於背景將第二映射表格Table_2中包含此邏輯位址的一或多筆紀錄載入緩衝記憶體116中)。於搜尋第一映射表格Table_1時,記憶體控制器110需要自第一映射表格Table_1所儲存之第1筆記錄開始逐一比對第一映射表格Table_1所記錄的邏輯位址是否與此特定邏輯資料頁所對應之邏輯位址相同,若發現第一映射表格Table_1的某一欄位所記錄的邏輯位址與此特定邏輯資料頁所對應之邏輯位址相同,則可根據第一映射表格Table_1中紀錄此邏輯位址之陣列索引值取得對應於此邏輯位址之一邏輯資料頁之資料被儲存於既定記憶體區塊的哪個物理資料頁之映射資訊。若記憶體控制器110於搜尋完第一映射表格Table_1的所有紀錄後都無法找到任一個欄位所記錄的邏輯位址與此特定邏輯資料頁所對應之邏輯位址相同,則可判定此特定邏輯資料頁之資料並未被儲存於目前作為快取記憶體(或稱緩存器buffer)的既定記憶體區塊。於此情況下,記憶體控制器110必須進一步讀取第二映射表格Table_2,以找出此特定邏輯資料頁之資料實際上係被儲存於記憶體裝置120之哪個記憶體區塊的哪個物理資料頁之映射資訊。
然而,搜尋映射表格通常需要花費較多的時間,特別是搜尋第一映射表格Table_1的操作,需要逐一比對每一筆紀錄。為了加速取得特定邏輯資料頁(或其所對應之邏輯位址)之映射資訊,本發明提出了一種新穎的資料處理方法,使記憶體控制器110可於判斷所需資訊有足夠高的機率存在於第一映射表格Table_1時,才執行搜尋第一映射表格Table_1的操作。或者,當記憶體控制器110藉由所述之資料處理方法判斷所需資訊並未存在於第一映射表格Table_1時,可直接省略搜尋第一映射表格Table_1的操作。如此一來,可解決上述問題,更可有效加速記憶體裝置的讀取操作。
根據本發明之一實施例,記憶體控制器110可於緩衝記憶體116內建立一位元表格Bit_Table。位元表格Bit_Table包含複數欄位,各欄位用以紀錄一位元值。記憶體控制器110可伴隨第一映射表格Table_1的編輯操作相應地更新位元表格Bit_Table。此外,當記憶體控制器110可選擇另一記憶體區塊作為快取記憶體時,例如,當作為緩存器之既定記憶體區塊被寫滿且記憶體控制器110已將第一映射表格Table_1所儲存的內容更新至第二映射表格Table_2時,記憶體控制器110可重置第一映射表格Table_1,並且對應地重置位元表格Bit_Table。舉例而言,記憶體控制器110可將第一映射表格Table_1與位元表格Bit_Table之各欄位設定為對應之預設值。
根據本發明之一實施例,位元表格Bit_Table所包含之欄位數量小於主機系統所包含之所有邏輯資料頁之一數量。換言之,根據本發明之一實施例,邏輯資料頁與位元表格Bit_Table之欄位有著多對一的對應關係,即,位元表格Bit_Table之一個欄位內容可用以指示或代表一或多個邏輯資料頁的資訊。
值得注意的是,雖於以上實施例中位元表格Bit_Table之各欄位用以紀錄一位元值,本發明並不限於此。於本發明之其他實施例中,位元表格Bit_Table之各欄位亦可記錄複數位元之位元值。
於一般操作中,記憶體控制器110可自主機裝置130接收一寫入指令W_CMD,用以指示將一邏輯資料頁之資料寫入記憶體裝置120。寫入指令W_CMD包含所欲寫入之邏輯資料頁所對應之邏輯位址,而記憶體控制器110因應寫入指令W_CMD將資料寫入目前作為快取記憶體(或稱緩存器buffer)的既定記憶體區塊。
根據本發明之一實施例,於記憶體控制器110根據寫入指令W_CMD將對應於一第一邏輯位址之一邏輯資料頁之資料寫入既定記憶體區塊時,記憶體控制器110於第一映射表格中紀錄第一邏輯位址。除此之外,記憶體控制器110進一步根據一既定函數轉換第一邏輯位址以產生位元表格Bit_Table之一第一欄位索引值,並且將位元表格Bit_Table中該第一欄位索引值所對應之位元值設定為一第一數值,舉例而言,第一數值可為位元值”1”。
根據本發明之一實施例,既定函數可以是任一用以將輸入資料之分布打散之函數,並且其特徵在於可用以將任意資料量的輸入資料映射至固定資料量的輸出資料。此外,輸入資料之資料量可大於輸出資料之資料量。即,假設既定函數之運算被表示為Θ(n) =m,其中輸入資料n的大小為N,輸出資料m的大小為M,其中n與m為非負之整數,N與M為正整數,則N>M。根據本發明之一實施例,既定函數可以是一隨機函數或一雜湊函數(hash function) ,其特徵在於輸入資料n在經過既定函數之運算後,其所對應之輸出資料m在值域能趨近平均分布(uniform distributed)。
此外,根據本發明之一實施例,對於根據同一既定函數而產生的兩個不同數值的輸出資料m,其所對應之輸入資料n也會是不同的,即,既定函數可有確定性的結果。然而,對於兩個數值不同的輸入資料n,其根據同一既定函數而產生輸出資料m可能是相同的,也可能是不同。
第2A圖與第2B圖係顯示根據本發明之一實施例所述之邏輯位址與欄位索引值之轉換示意圖。如第2A圖所示,位元表格Bit_Table之各欄位的位元值可被預先設定為第二數值,例如,位元值”0”。假設第一映射表格Table_1的第一筆記錄所紀錄的邏輯位址為10,記憶體控制器110根據既定函數轉換邏輯位址10所產生之數值為7,則此數值即為邏輯位址10所對應之欄位索引值。因此,記憶體控制器110可將位元表格Bit_Table之第8個欄位,即,Bit_Table [7],的位元值改為所述之第一數值,例如,位元值”1”。於第2A圖中,以灰色網底表示出位元值被設定為”1”的欄位。接著,假設第一映射表格Table_1的第二筆記錄所紀錄的邏輯位址為5,記憶體控制器110根據相同的既定函數轉換邏輯位址5所產生之數值為2,記憶體控制器110可如第2B圖所示將位元表格Bit_Table之第3個欄位,即,Bit_Table [2],的位元值改為所述之第一數值,例如,位元值”1”,並依此類推。
第3圖係顯示根據本發明之一實施例所述之資料處理方法流程圖。第3圖係顯示寫入操作中編輯第一映射表格與位元表格的流程。首先,記憶體控制器110選擇一既定記憶體區塊用以接收資料(步驟S302)。接著,記憶體控制器110接收用以指示寫入對應於一邏輯位址之資料之一寫入指令,並因應此寫入指令執行寫入操作,用以將對應於此邏輯位址之邏輯資料頁之資料寫入記憶體裝置120(步驟S304)。接著,記憶體控制器110於第一映射表格Table_1中紀錄此邏輯位址(步驟S306)。接著,記憶體控制器110根據一既定函數轉換此邏輯位址以產生位元表格Bit_Table之一欄位索引值(步驟S308)。最後,記憶體控制器110將位元表格Bit_Table中該欄位索引值所對應之位元值設定為第一數值(步驟S310)。
根據本發明之一實施例,位元表格Bit_Table所記載之內容可幫助記憶體控制器110用於判斷所需資訊是否有足夠高的機率存在於第一映射表格Table_1。更具體的說,根據本發明之一實施例,當記憶體控制器110需根據一讀取指令R_CMD讀取一第二邏輯位址所對應之資料時,記憶體控制器110可先根據既定函數轉換第二邏輯位址以產生一數值作為所述之位元表格Bit_Table之一第二欄位索引值,並且根據第二欄位索引值所對應之位元值決定是否搜尋第一映射表格Table_1。換言之,記憶體控制器110可根據第二欄位索引值所對應之位元值決定要先搜尋第一映射表格Table_1,或者不搜尋第一映射表格Table_1而改為直接讀取第二映射表格Table_2,以找出第二邏輯位址的映射資訊(即,第二邏輯位址所對應之邏輯資料頁之映射資訊)。
第4圖係顯示根據本發明之另一實施例所述之資料處理方法流程圖。第4圖係顯示讀取操作中藉由搜尋映射表格取得特定邏輯位址的映射資訊的流程。首先,記憶體控制器110接收用以指示讀取對應於一邏輯位址之資料之一讀取指令(步驟S402)。接著,記憶體控制器110根據既定函數轉換此邏輯位址以產生位元表格Bit_Table之一欄位索引值,並且根據此欄位索引值查找位元表格Bit_Table (步驟S404)。接著,記憶體控制器110判斷位元表格Bit_Table中此欄位索引值所對應之位元值是否被設定為第一數值,以決定是否搜尋第一映射表格Table_1。
根據本發明之一實施例,當此索引值所對應之位元值被設定為不同於第一數值之第二數值時,記憶體控制器110便可直接判斷出第一映射表格Table_1並未包含此邏輯位址的映射資訊,因此,記憶體控制器110決定不搜尋第一映射表格Table_1。於本發明之實施例中,記憶體控制器110略過第一映射表格Table_1之搜尋,改為直接根據此邏輯位址讀取第二映射表格Table_2,以取得此邏輯位址的映射資訊(步驟S408)。
由於第二映射表格Table_2必須儲存大量邏輯位址之映射資訊,因此,第二映射表格Table_2所包含之資料實際上可被儲存於多個物理資料頁,記憶體控制器110可根據此邏輯位址選擇第二映射表格Table_2之一部分,例如,包含此邏輯位址之映射資訊之一物理資料頁,並將第二映射表格Table_2之該部分載入緩衝記憶體116,再根據此邏輯位址讀取第二映射表格Table_2之該部分,以取得此邏輯位址所對應之邏輯資料頁之映射資訊,即,對應於此邏輯位址之一邏輯資料頁之資料被儲存於哪個記憶體區塊的哪個物理資料頁之資訊。
得到此邏輯位址的映射資訊後,記憶體控制器110可根據此映射資訊讀取記憶體裝置120,以取得此邏輯位址所對應之資料內容(步驟S410)
另一方面,當此欄位索引值所對應之位元值被設定為第一數值時,記憶體控制器110可判斷出第一映射表格Table_1有足夠高的機率包含此邏輯位址的映射資訊。因此,記憶體控制器110可決定根據此邏輯位址搜尋第一映射表格Table_1(步驟S412),以確認此邏輯位址是否被記錄於第一映射表格Table_1,並且根據此邏輯位址是否被記錄於第一映射表格Table_1而判斷此邏輯位址所對應之資料是否被儲存於既定記憶體區塊中(步驟S414)。
若此邏輯位址所對應之資料被儲存於既定記憶體區塊,則記憶體控制器110可根據第一映射表格Table_1中紀錄此邏輯位址之欄位之陣列索引值取得此邏輯位址的映射資訊(步驟S416),即,對應於此邏輯位址之一邏輯資料頁之資料被儲存於既定記憶體區塊的哪個物理資料頁之資訊。
得到此邏輯位址的映射資訊後,記憶體控制器110可根據此映射資訊讀取記憶體裝置120,以取得此邏輯位址所對應之資料內容(步驟S410)
若經搜尋第一映射表格Table_1後發現此邏輯位址所對應之資料未被儲存於既定記憶體區塊,則記憶體控制器110進一步根據此邏輯位址讀取第二映射表格Table_2,以取得此邏輯位址的映射資訊(步驟S408)。
如上述,於本發明之實施例中,既定函數可以是一隨機函數或一雜湊函數(hash function) ,用以將輸入資料n在經過運算後,其所對應之輸出資料m在值域能趨近平均分布(uniform distributed)。因此,於本發明之應用中,將邏輯位址輸入既定函數進行運算後,所產生之欄位索引值趨近平均分布,且為將邏輯位址之分布打散後的結果。所述 分布打散為,例如,對於連續的邏輯位址,對應之欄位索引值可為不連續的。
根據本發明之一實施例,既定函數可包含兩個數值,例如,第一數值與第二數值,第一數值可選擇為2的冪次方,第二數值可選擇為遠離相鄰的任一個2的冪次方的質數。舉例而言,於本發明之一實施例中,第一數值為32,第二數值為23。由於32的前一個2的冪次方數值為16,數值16與32之間的質數包含17、19、 23、29與 31,為使輸出資料在值域能有較佳的平均分布的結果,選擇於上述五個質數中相對於數值16與32都是距離夠遠的質數23為較佳。或者,選擇上述五個質數中的中間數或最接近中間數之一數值為較佳。以下根據此兩個數值作為範例說明於本發明之一實施例中邏輯位址與欄位索引值之轉換。
假設位元表格Bit_Table的大小為16K位元組,各欄位紀錄一位元,則位元表格Bit_Table的總欄位數(即,位元表格Bit_Table的大小)為16384*8 = 131072。假設位元表格Bit_Table所使用的起始欄位索引值為0,則位元表格Bit_Table的最大欄位索引值為131071。
於此實施例中,既定函數的運算包含兩階段的運算,第一階段為將邏輯位址乘上第二數值後,將所得第一計算結果對第一數值進行模除,以得到第二計算結果。即,第二計算結果為將第一計算結果除以第一數值所得之餘數。接著再將位元表格Bit_Table的總欄位數乘上第二計算結果與第一數值之一比值,所得之第三計算結果即為此邏輯位址所對應之欄位索引值。
舉例而言,當記憶體控制器110需將邏輯位址1001的資訊紀錄於第一映射表格Table_1時,此邏輯位址1001所對應之欄位索引值可根據以下式(1)與式(2)計算而得: 1001 * 23 mod 32 = 15 式(1) 131072 *15 / 32 = 61440 式(2)
所得的數值61440即為此邏輯位址1001所對應之欄位索引值。
舉另一例而言,邏輯位址1002所對應之欄位索引值可根據以下式(3)與式(4)計算而得: 1002 * 23 mod 32 = 6 式(3) 131072 * 6 / 32 = 24576 式(4)
所得的數值24576即為此邏輯位址1002所對應之欄位索引值。
舉又另一例而言,邏輯位址1003所對應之欄位索引值可根據以下式(5)與式(6)計算而得: 1003 * 23 mod 32 = 29 式(5) 131072 * 29 / 32 = 118784 式(6)
所得的數值118784即為此邏輯位址1003所對應之欄位索引值。
由以上範例可知,藉由既定函數的運算,輸入之連續的邏輯位址所得之數值分布會被打散。使得輸出資料(即,邏輯位址所對應之欄位索引值)在值域能趨近平均分布(uniform distributed)。
如上述,藉由本發明之資料處理方法,使記憶體控制器110可根據位元表格Bit_Table的內容簡單地判斷出所需資訊是否存在於第一映射表格Table_1中,其中位元表格Bit_Table的內容可明確指示出所需資訊有可能存在於第一映射表格Table_1中,或者所需資訊並不存在於第一映射表格Table_1中。若僅根據位元表格Bit_Table的內容即可判斷出所需資訊並不存在於第一映射表格Table_1時,便可直接省略搜尋第一映射表格Table_1的操作。如此一來,可有效避免無效搜尋第一映射表格Table_1之操作所耗費的時間,解決上述問題,並更可進一步加速記憶體裝置的讀取操作。
申請專利範圍中用以修飾元件之“第一”、“第二” 、“第三”等序數詞之使用本身未暗示任何優先權、優先次序、各元件之間之先後次序、或方法所執行之步驟之次序,而僅用作標識來區分具有相同名稱(具有不同序數詞)之不同元件。
雖然本發明已以較佳實施例揭露如上,然其並非用以限定本發明,任何熟悉此項技藝者,在不脫離本發明之精神和範圍內,當可做些許更動與潤飾,因此本發明之保護範圍當視後附之申請專利範圍所界定者為準。
100:資料儲存裝置
110:記憶體控制器
112:微處理器
112M:唯讀記憶體
112C:程式碼
114:控制邏輯
116:緩衝記憶體
118:介面邏輯
120:記憶體裝置
130:主機裝置
132:編碼器
134:解碼器
Bit_Table:位元表格
Table_1:映射表格
第1圖係顯示根據本發明之一實施例所述之資料儲存裝置的示意圖。 第2A圖與第2B圖係顯示根據本發明之一實施例所述之邏輯位址與欄位索引值之轉換示意圖。 第3圖係顯示根據本發明之一實施例所述之資料處理方法流程圖。 第4圖係顯示根據本發明之另一實施例所述之資料處理方法流程圖。
100:資料儲存裝置
110:記憶體控制器
112:微處理器
112M:唯讀記憶體
112C:程式碼
114:控制邏輯
116:緩衝記憶體
118:介面邏輯
120:記憶體裝置
130:主機裝置
132:編碼器
134:解碼器
Claims (16)
- 一種資料儲存裝置,包括: 一記憶體裝置,包括複數記憶體區塊,各記憶體區塊包括複數物理資料頁;以及 一記憶體控制器,耦接該記憶體裝置,用以存取該記憶體裝置,其中該記憶體控制器選擇一既定記憶體區塊用以接收資料,並且對應地於一第一映射表格中紀錄複數邏輯位址, 其中該記憶體控制器包括一緩衝記憶體,該第一映射表格係儲存於該緩衝記憶體,用以紀錄寫入該既定記憶體區塊之各物理資料頁之資料係指向哪個邏輯資料頁, 其中該緩衝記憶體更儲存一位元表格,該位元表格包含複數欄位,各欄位用以紀錄一位元值, 於該記憶體控制器根據一寫入指令將對應於一第一邏輯位址之一邏輯資料頁之資料寫入該既定記憶體區塊時,該記憶體控制器於該第一映射表格中紀錄該第一邏輯位址,根據一既定函數轉換該第一邏輯位址以產生該位元表格之一第一欄位索引值,並且將該位元表格中該第一欄位索引值所對應之該位元值設定為一第一數值。
- 如申請專利範圍第1項所述之資料儲存裝置,其中於該記憶體控制器需根據一讀取指令讀取一第二邏輯位址所對應之資料時,該記憶體控制器根據該既定函數轉換該第二邏輯位址以產生該位元表格之一第二欄位索引值,並且根據該位元表格中該第二欄位索引值所對應之該位元值決定是否搜尋該第一映射表格。
- 如申請專利範圍第2項所述之資料儲存裝置,其中當該第二欄位索引值所對應之該位元值被設定為不同於該第一數值之一第二數值時,該記憶體控制器決定不搜尋該第一映射表格。
- 如申請專利範圍第2項所述之資料儲存裝置,其中該記憶體裝置儲存一第二映射表格,該第二映射表格對應於複數邏輯資料頁,用以紀錄該等邏輯資料頁之映射資訊,並且其中當該第二欄位索引值所對應之該位元值被設定為不同於該第一數值之一第二數值時,該記憶體控制器決定直接讀取該第二映射表格而不搜尋該第一映射表格。
- 如申請專利範圍第4項所述之資料儲存裝置,其中該記憶體控制器更根據該第二邏輯位址選擇該第二映射表格之一部分並將該第二映射表格之該部分載入該緩衝記憶體,以及根據該第二邏輯位址讀取該第二映射表格之該部分,以取得對應於該第二邏輯位址之一邏輯資料頁之該映射資訊。
- 如申請專利範圍第2項所述之資料儲存裝置,其中當該第二欄位索引值所對應之該位元值被設定為該第一數值時,該記憶體控制器決定根據該第二邏輯位址搜尋該第一映射表格,並且根據該第二邏輯位址是否被記錄於該第一映射表格以判斷該第二邏輯位址所對應之資料是否被儲存於該既定記憶體區塊。
- 如申請專利範圍第6項所述之資料儲存裝置,其中當該記憶體控制器判斷該第二邏輯位址所對應之資料被儲存於該既定記憶體區塊時,該記憶體控制器根據該第一映射表格中紀錄該第二邏輯位址之一陣列索引值取得對應於該第二邏輯位址之一邏輯資料頁之映射資訊。
- 如申請專利範圍第6項所述之資料儲存裝置,其中該記憶體裝置儲存一第二映射表格,該第二映射表格對應於複數邏輯資料頁,用以紀錄該等邏輯資料頁之映射資訊,並且其中當該記憶體控制器判斷該第二邏輯位址所對應之資料未被儲存於該既定記憶體區塊時,該記憶體控制器更根據該第二邏輯位址選擇該第二映射表格之一部分並將該第二映射表格之該部分載入該緩衝記憶體,以及根據該第二邏輯位址讀取該第二映射表格之該部分,以取得對應於該第二邏輯位址之一邏輯資料頁之該映射資訊。
- 一種資料處理方法,適用於一資料儲存裝置,該資料儲存裝置包括一記憶體裝置以及一記憶體控制器,該記憶體裝置包括複數記憶體區塊,各記憶體區塊包括複數物理資料頁,該記憶體控制器耦接該記憶體裝置,用以存取該記憶體裝置,該方法包括: 由該記憶體控制器選擇一既定記憶體區塊用以接收資料; 由該記憶體控制器接收一寫入指令,用以將對應於一第一邏輯位址之一邏輯資料頁之資料寫入該既定記憶體區塊; 由該記憶體控制器於一第一映射表格中紀錄該第一邏輯位址,其中該第一映射表格係儲存於該記憶體控制器之一緩衝記憶體,用以紀錄寫入該既定記憶體區塊之各物理資料頁之資料係指向哪個邏輯資料頁; 由該記憶體控制器根據一既定函數轉換該第一邏輯位址以產生一位元表格之一第一欄位索引值,其中該位元表格係儲存於該緩衝記憶體,該位元表格包含複數欄位,各欄位用以紀錄一位元值;以及 由該記憶體控制器將該位元表格中該第一欄位索引值所對應之該位元值設定為一第一數值。
- 如申請專利範圍第9項所述之方法,更包括: 由該記憶體控制器接收一讀取指令,用以讀取一第二邏輯位址所對應之資料; 由該記憶體控制器根據該既定函數轉換該第二邏輯位址以產生該位元表格之一第二欄位索引值;以及 由該記憶體控制器根據該位元表格中該第二欄位索引值所對應之該位元值決定是否搜尋該第一映射表格。
- 如申請專利範圍第10項所述之方法,其中由該記憶體控制器根據該位元表格中該第二欄位索引值所對應之該位元值決定是否搜尋該第一映射表格之步驟更包括: 當該第二欄位索引值所對應之該位元值被設定為不同於該第一數值之一第二數值時,決定不搜尋該第一映射表格。
- 如申請專利範圍第10項所述之方法,其中由該記憶體控制器根據該位元表格中該第二欄位索引值所對應之該位元值決定是否搜尋該第一映射表格之步驟更包括: 當該第二欄位索引值所對應之該位元值被設定為不同於該第一數值之一第二數值時,由該記憶體控制器決定直接讀取一第二映射表格而不搜尋該第一映射表格,其中該第二映射表格係儲存於該記憶體裝置,該第二映射表格對應於複數邏輯資料頁,用以紀錄該等邏輯資料頁之映射資訊。
- 如申請專利範圍第12項所述之方法,更包括: 由該記憶體控制器根據該第二邏輯位址選擇該第二映射表格之一部分; 由該記憶體控制器將該第二映射表格之該部分載入該緩衝記憶體;以及 由該記憶體控制器根據該第二邏輯位址讀取該第二映射表格之該部分,以取得對應於該第二邏輯位址之一邏輯資料頁之該映射資訊。
- 如申請專利範圍第10項所述之方法,其中由該記憶體控制器根據該位元表格中該第二欄位索引值所對應之該位元值決定是否搜尋該第一映射表格之步驟更包括: 當該第二欄位索引值所對應之該位元值被設定為該第一數值時,由該記憶體控制器決定根據該第二邏輯位址搜尋該第一映射表格;以及 由該記憶體控制器根據該第二邏輯位址是否被記錄於該第一映射表格判斷該第二邏輯位址所對應之資料是否被儲存於該既定記憶體區塊。
- 如申請專利範圍第14項所述之方法,更包括: 當該第二邏輯位址所對應之資料被儲存於該既定記憶體區塊時,由該記憶體控制器根據該第一映射表格中紀錄該第二邏輯位址之一陣列索引值取得對應於該第二邏輯位址之一邏輯資料頁之映射資訊。
- 如申請專利範圍第14項所述之方法,更包括: 當該第二邏輯位址所對應之資料未被儲存於該既定記憶體區塊時,由該記憶體控制器決定讀取一第二映射表格,其中該第二映射表格係儲存於該記憶體裝置,該第二映射表格對應於複數邏輯資料頁,用以紀錄該等邏輯資料頁之映射資訊; 由該記憶體控制器根據該第二邏輯位址選擇該第二映射表格之一部分; 由該記憶體控制器將該第二映射表格之該部分載入該緩衝記憶體;以及 由該記憶體控制器根據該第二邏輯位址讀取該第二映射表格之該部分,以取得對應於該第二邏輯位址之一邏輯資料頁之該映射資訊。
Priority Applications (3)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| TW108105660A TWI697779B (zh) | 2019-02-20 | 2019-02-20 | 資料儲存裝置與資料處理方法 |
| CN201911016641.5A CN111596859B (zh) | 2019-02-20 | 2019-10-24 | 数据储存装置与数据处理方法 |
| US16/704,646 US10942858B2 (en) | 2019-02-20 | 2019-12-05 | Data storage devices and data processing methods |
Applications Claiming Priority (1)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| TW108105660A TWI697779B (zh) | 2019-02-20 | 2019-02-20 | 資料儲存裝置與資料處理方法 |
Publications (2)
| Publication Number | Publication Date |
|---|---|
| TWI697779B true TWI697779B (zh) | 2020-07-01 |
| TW202032376A TW202032376A (zh) | 2020-09-01 |
Family
ID=72042106
Family Applications (1)
| Application Number | Title | Priority Date | Filing Date |
|---|---|---|---|
| TW108105660A TWI697779B (zh) | 2019-02-20 | 2019-02-20 | 資料儲存裝置與資料處理方法 |
Country Status (3)
| Country | Link |
|---|---|
| US (1) | US10942858B2 (zh) |
| CN (1) | CN111596859B (zh) |
| TW (1) | TWI697779B (zh) |
Citations (4)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| US9275733B2 (en) * | 2011-08-24 | 2016-03-01 | Rambus Inc. | Methods and systems for mapping a peripheral function onto a legacy memory interface |
| CN105700857A (zh) * | 2014-12-14 | 2016-06-22 | 上海兆芯集成电路有限公司 | 多个资料预取器根据记忆体存取类型的预取效益听从其他预取器 |
| TW201820325A (zh) * | 2016-11-29 | 2018-06-01 | 愛思開海力士有限公司 | 記憶體系統及其操作方法 |
| TWI628541B (zh) * | 2015-02-23 | 2018-07-01 | 英特爾股份有限公司 | 向量快取線回寫處理器、方法、系統及包含非暫態機器可讀取儲存媒體之製造物件 |
Family Cites Families (13)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| US6697076B1 (en) * | 2001-12-31 | 2004-02-24 | Apple Computer, Inc. | Method and apparatus for address re-mapping |
| CN101241472B (zh) * | 2008-03-07 | 2010-12-22 | 威盛电子股份有限公司 | 映射管理方法及系统 |
| TWI544334B (zh) * | 2012-05-30 | 2016-08-01 | 慧榮科技股份有限公司 | 資料儲存裝置與資料儲存裝置操作方法 |
| KR20150015764A (ko) * | 2013-08-01 | 2015-02-11 | 삼성전자주식회사 | 스토리지 디바이스 및 이를 포함하는 스토리지 시스템 |
| CN103455631A (zh) * | 2013-09-22 | 2013-12-18 | 广州中国科学院软件应用技术研究所 | 一种数据处理方法、装置及系统 |
| US9552289B1 (en) * | 2014-11-25 | 2017-01-24 | Seagate Technology Llc | Bitwise addressing of entries in a forward lookup table |
| TWI537728B (zh) * | 2015-09-23 | 2016-06-11 | 群聯電子股份有限公司 | 緩衝記憶體管理方法、記憶體控制電路單元及記憶體儲存裝置 |
| US10459636B2 (en) * | 2017-03-24 | 2019-10-29 | Sandisk Technologies Llc | System and method for managing data in non-volatile memory systems having multiple mapping layers |
| US10296457B2 (en) * | 2017-03-30 | 2019-05-21 | Intel Corporation | Reducing conflicts in direct mapped caches |
| US10884947B2 (en) * | 2017-11-17 | 2021-01-05 | SK Hynix Inc. | Methods and memory systems for address mapping |
| KR20190087217A (ko) * | 2018-01-16 | 2019-07-24 | 에스케이하이닉스 주식회사 | 데이터 저장 장치 및 그것의 동작 방법 |
| US10496334B2 (en) * | 2018-05-04 | 2019-12-03 | Western Digital Technologies, Inc. | Solid state drive using two-level indirection architecture |
| US11301369B2 (en) * | 2019-01-24 | 2022-04-12 | Western Digital Technologies, Inc. | Logical to physical mapping management using low-latency non-volatile memory |
-
2019
- 2019-02-20 TW TW108105660A patent/TWI697779B/zh active
- 2019-10-24 CN CN201911016641.5A patent/CN111596859B/zh active Active
- 2019-12-05 US US16/704,646 patent/US10942858B2/en active Active
Patent Citations (5)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| US9275733B2 (en) * | 2011-08-24 | 2016-03-01 | Rambus Inc. | Methods and systems for mapping a peripheral function onto a legacy memory interface |
| US9921751B2 (en) * | 2011-08-24 | 2018-03-20 | Rambus Inc. | Methods and systems for mapping a peripheral function onto a legacy memory interface |
| CN105700857A (zh) * | 2014-12-14 | 2016-06-22 | 上海兆芯集成电路有限公司 | 多个资料预取器根据记忆体存取类型的预取效益听从其他预取器 |
| TWI628541B (zh) * | 2015-02-23 | 2018-07-01 | 英特爾股份有限公司 | 向量快取線回寫處理器、方法、系統及包含非暫態機器可讀取儲存媒體之製造物件 |
| TW201820325A (zh) * | 2016-11-29 | 2018-06-01 | 愛思開海力士有限公司 | 記憶體系統及其操作方法 |
Also Published As
| Publication number | Publication date |
|---|---|
| US10942858B2 (en) | 2021-03-09 |
| CN111596859B (zh) | 2023-03-14 |
| US20200264981A1 (en) | 2020-08-20 |
| TW202032376A (zh) | 2020-09-01 |
| CN111596859A (zh) | 2020-08-28 |
Similar Documents
| Publication | Publication Date | Title |
|---|---|---|
| CN111338562B (zh) | 数据存储装置与数据处理方法 | |
| US9021218B2 (en) | Data writing method for writing updated data into rewritable non-volatile memory module, and memory controller, and memory storage apparatus using the same | |
| US9176865B2 (en) | Data writing method, memory controller, and memory storage device | |
| CN107590080B (zh) | 映射表更新方法、存储器控制电路单元及存储器存储装置 | |
| TW201740265A (zh) | 整理指令處理方法、記憶體控制電路單元與記憶體儲存裝置 | |
| CN106557432B (zh) | 缓冲存储器管理方法、存储器控制电路单元及存储装置 | |
| TWI707234B (zh) | 資料儲存裝置與資料處理方法 | |
| CN102915273B (zh) | 数据写入方法、存储器控制器与存储器储存装置 | |
| CN103136111B (zh) | 数据写入方法、存储器控制器与存储器储存装置 | |
| US8943289B2 (en) | Data moving method for flash memory module, and memory controller and memory storage apparatus using the same | |
| CN104536906A (zh) | 数据写入方法、存储器控制器与存储器储存装置 | |
| US8762685B2 (en) | Data writing method, memory controller and memory storage apparatus | |
| CN112860193B (zh) | 整理指令处理方法、存储器控制电路单元与存储装置 | |
| CN109273033B (zh) | 存储器管理方法、存储器控制电路单元与存储器存储装置 | |
| US20130067141A1 (en) | Data writing method, and memory controller and memory storage apparatus using the same | |
| CN113138720A (zh) | 数据存储方法、存储器控制电路单元以及存储器存储装置 | |
| US8832358B2 (en) | Data writing method, memory controller and memory storage apparatus | |
| CN102467459B (zh) | 数据写入方法、存储器控制器与存储器储存装置 | |
| CN102736985B (zh) | 数据合并方法、控制器与储存装置 | |
| TWI697779B (zh) | 資料儲存裝置與資料處理方法 | |
| CN106201932A (zh) | 数据写入方法、存储器控制电路单元与存储器存储装置 | |
| TWI695264B (zh) | 資料儲存裝置與資料處理方法 | |
| TWI775341B (zh) | 整理指令處理方法、記憶體控制電路單元與記憶體儲存裝置 | |
| TWI823792B (zh) | 映射表更新方法、記憶體儲存裝置及記憶體控制電路單元 | |
| TW202443402A (zh) | 資料儲存裝置與資料處理方法 |