TWI733360B - 資料儲存裝置與資料處理方法 - Google Patents
資料儲存裝置與資料處理方法 Download PDFInfo
- Publication number
- TWI733360B TWI733360B TW109107600A TW109107600A TWI733360B TW I733360 B TWI733360 B TW I733360B TW 109107600 A TW109107600 A TW 109107600A TW 109107600 A TW109107600 A TW 109107600A TW I733360 B TWI733360 B TW I733360B
- Authority
- TW
- Taiwan
- Prior art keywords
- data
- memory
- memory blocks
- super block
- data page
- Prior art date
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/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
- 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
- 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/1004—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's to protect a block of data words, e.g. CRC or checksum
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR 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/1068—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 in sector programmable memories, e.g. flash disk
-
- 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/06—Addressing a physical block of locations, e.g. base addressing, module addressing, memory dedication
- G06F12/0607—Interleaved addressing
-
- 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/0806—Multiuser, multiprocessor or multiprocessing cache systems
- G06F12/0811—Multiuser, multiprocessor or multiprocessing cache systems with multilevel cache hierarchies
-
- 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
- G06F12/0882—Page mode
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/14—Handling requests for interconnection or transfer
- G06F13/16—Handling requests for interconnection or transfer for access to memory bus
- G06F13/1668—Details of memory controller
-
- 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/064—Management of blocks
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0655—Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
- G06F3/0658—Controller construction arrangements
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- 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/10—Providing a specific technical effect
- G06F2212/1016—Performance improvement
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/72—Details relating to flash memory management
- G06F2212/7201—Logical to physical mapping or translation of blocks or pages
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/72—Details relating to flash memory management
- G06F2212/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
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Human Computer Interaction (AREA)
- Quality & Reliability (AREA)
- Computer Security & Cryptography (AREA)
- Read Only Memory (AREA)
- Memory System (AREA)
Abstract
一種資料儲存裝置,包括一記憶體裝置與一記憶體控制器。記憶體控制器配置複數第一記憶體區塊自一主機裝置接收資料,第一記憶體區塊形成至少一第一超區塊。當儲存於第一記憶體區塊之資料之一資料量達到一特定數值時,記憶體控制器於一既定程序中將資料自第一記憶體區塊搬移至複數第二記憶體區塊,第二記憶體區塊形成至少一第二超區塊,第二超區塊包含位於不同的記憶體晶片之第二記憶體區塊,並且儲存於第一超區塊中相鄰之兩個邏輯資料頁之資料被寫入兩個位於不同的記憶體晶片的第二記憶體區塊。
Description
本發明係有關於適用於一資料儲存裝置之一種資料處理方法,可有效提高記憶體裝置的存取效率。
隨著資料儲存裝置的科技在近幾年快速地成長,許多資料儲存裝置,如符合安全數位(Secure Digital,縮寫為SD)/ 多媒體卡(Multi Media Card,縮寫為MMC)規格、複合式快閃記憶體(Compact flash,縮寫為CF)規格、記憶條(Memory Stick,縮寫為MS)規格與極數位(Extreme Digital,縮寫為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)(或稱三層式儲存)記憶體區塊以及/或是四層單元(Quad-Level Cell,縮寫為QLC) (或稱四層式儲存)記憶體區塊。SLC記憶體區塊的每個記憶體單元(例如,上述之浮閘電晶體或是其他電荷捕捉元件)中儲存一個位元資料,MLC記憶體區塊的每個記憶體單元中儲存兩個位元資料,TLC記憶體區塊的每個記憶體單元中儲存三個位元資料,QLC記憶體區塊的每個記憶體單元中儲存四個位元資料。
一般而言,記憶體裝置120可大體被區分為三個區域,包含系統區域、資料區域以及備用區域。記憶體控制器110可自備用區域選擇一或多個記憶體區塊作為快取記憶體,或稱緩存器(buffer),用以接收並暫存資料。待儲存於緩存器的資料量達到一特定數值時(例如,當緩存器被寫滿,或者即將被寫滿時),記憶體控制器110再將作為緩存器之記憶體區塊更新成資料區域的資料區塊。舉例而言,若用以接收並暫存資料的緩存器為MLC、TLC或QLC記憶體區塊,待緩存器被寫滿時,可被更新為資料區域的資料區塊。若用以接收並暫存資料的緩存器為SLC記憶體區塊,待一定數量之緩存器被寫滿時,可透過垃圾回收程序,將多個作為緩存器的記憶體區塊(來源記憶體區塊)所儲存之資料搬移至MLC、TLC或QLC記憶體區塊(目標記憶體區塊),並藉此操作將目標記憶體區塊更新為資料區域的資料區塊。
為了提升存取效率,記憶體裝置120之複數個快閃記憶體晶片(chip)(或稱晶粒(die)、邏輯單元號(Logical Unit Number,縮寫為LUN),其依記憶體裝置所採用的封裝方式而定,可有不同的命名或者以不同的形式呈現)可共享資料匯流排。即,記憶體裝置120的複數個快閃記憶體晶片可透過共用的資料匯流排耦接至記憶體控制器110。須注意的是,本發明並不限於配置複數個快閃記憶體晶片透過共用的資料匯流排耦接至記憶體控制器110,也可以是如上述配置複數個晶粒或LUN透過共用的資料匯流排耦接至記憶體控制器110。然而,為簡化說明,以下將以記憶體晶片作為範例進行解說。此外,須注意的是,其中所述之共享資料匯流排的晶片、晶粒或LUN可分別擁有其內部緩存器,並且各自維護其操作狀態。
於操作上,記憶體控制器110可依序致能各快閃記憶體晶片,並且透過共用的資料匯流依序將指令傳送至對應的快閃記憶體晶片(僅被致能的快閃記憶體晶片會收到指令),使得快閃記憶體晶片可平行地執行讀/寫操作。藉由時間軸上重疊的讀/寫操作,可有效提升資料儲存裝置的存取效率。
第2圖係顯示根據本發明之一實施例所述之一個單層式儲存(SLC)超區塊(super block)示意圖。於此實施例中,四個位於不同的快閃記憶體晶片的SLC記憶體區塊可形成一個SLC超區塊,其中形成一個SLC超區塊的四個SLC記憶體區塊可於其對應之快閃記憶體晶片內具有相同的記憶體區塊編號或記憶體區塊索引值(block index)。
如第2圖所示,SLC超區塊200係由SLC記憶體區塊210、220、230與240所形成,其中SLC記憶體區塊210、220、230與240分別位於不同的快閃記憶體晶片,並且可以是,例如,該些快閃記憶體晶片內所包含的第1個記憶體區塊。記憶體控制器110可利用不同晶片致能信號致能對應的記憶體晶片。舉例而言,記憶體控制器110可分別藉由晶片致能信號CE0、CE1、CE2與CE3致能SLC記憶體區塊210、220、230與240所對應之快閃記憶體晶片。
各SLC記憶體區塊可用以儲存複數邏輯資料頁之資料,其中SLC記憶體區塊的一個實體資料頁P_Page係對應於一個邏輯資料頁。
假設記憶體控制器110依序將第2圖所示之SLC記憶體區塊210、220、230與240視為SLC超區塊200所包含之第一SLC記憶體區塊、第二SLC記憶體區塊、第三SLC記憶體區塊與第四SLC記憶體區塊,記憶體控制器110可以循環的方式依序給予SLC超區塊200所對應之各邏輯資料頁一個對應索引值作為預設的資料頁索引值(page index)。
例如,第一SLC記憶體區塊的第一資料頁可被給予索引值idx=0、第二SLC記憶體區塊的第一資料頁可被給予索引值idx=1、第三SLC記憶體區塊的第一資料頁可被給予索引值idx=2、第四SLC記憶體區塊的第一資料頁可被給予索引值idx=3、接著第一SLC記憶體區塊的第二資料頁可被給予索引值idx=4、第二SLC記憶體區塊的第二資料頁可被給予索引值idx=5,並依此類推。亦即,記憶體控制器110可順著各SLC記憶體區塊之內部實體資料頁索引值遞增的方向,以循環的方式依序將一資料頁索引值分配給第一、第二、第三、第四SLC記憶體區塊所對應的邏輯資料頁。
依循上述規則,則可推導出對於SLC超區塊200,第i個SLC記憶體區塊的第j頁所對應之索引值idx為idx= (i-1)+ 4*(j-1),其中i=1~I,I為一個超區塊所包含的記憶體區塊數量,於此實施中I=4,j=1~J,J為一個記憶體區塊數量所包含的資料頁數量。
根據本發明之一實施例,除預設的資料頁索引值之外,記憶體控制器110亦可根據一第一規則將複數資料頁位址分配給一個超區塊所對應之複數邏輯資料頁(即,記憶體控制器110可根據第一規則認定SLC超區塊200之資料頁位址之排列順序)。舉例而言,記憶體控制器110參考預設的資料頁索引值,以資料頁位址遞增的方式,依序為第一SLC記憶體區塊、第二SLC記憶體區塊、第三SLC記憶體區塊與第四SLC記憶體區塊的一個邏輯資料頁分配一個對應的資料頁位址,使得SLC超區塊200所對應之各邏輯資料頁都會被分配到一個獨一無二的的資料頁位址,並且這些資料頁位址之安排(即,資料頁位址之排列順序,或記憶體控制器110所認定之資料頁位址之排列順序)將具有一第一順序。
如第2圖所示,各SLC記憶體區塊包含複數個邏輯資料頁,其中SLC記憶體區塊的一個實體資料頁P_Page係對應於一個邏輯資料頁,各邏輯資料頁被標示著一個數字,此數字即為該邏輯資料頁所對應之資料頁位址Page_add。於此實施例中,記憶體控制器110以資料頁位址遞增的方式,依序為第一SLC記憶體區塊的第一頁分配資料頁位址Page_add=0、為第二SLC記憶體區塊的第一頁分配資料頁位址Page_add=1、為第三SLC記憶體區塊的第一頁分配資料頁位址Page_add=2、為第四SLC記憶體區塊的第一頁分配資料頁位址Page_add=3、接著為第一SLC記憶體區塊的第二頁分配資料頁位址Page_add=4、為第二SLC記憶體區塊的第二頁分配資料頁位址Page_add=5,並依此類推。
因此,於本發明實施例中,第一規則可以是根據預設的資料頁索引值安排資料頁位址,使得所述第一順序與預設的資料頁索引值的順序相同。即,隨資料頁索引值遞增,資料頁位址也會以遞增的方式分配給對應的邏輯資料頁。
由於SLC超區塊200的資料頁位址的安排符合所述第一規則,於寫入操作時,記憶體控制器110可根據上述第一順序依序將資料寫入對應之邏輯資料頁。如上述,由於記憶體裝置120的複數個快閃記憶體晶片可透過共用的資料匯流排耦接至記憶體控制器110,快閃記憶體晶片可平行地執行讀/寫操作。藉由時間軸上重疊的讀/寫操作,可有效提升資料儲存裝置的存取效率。
第3圖係顯示根據本發明之一實施例所述之於單通道架構中快閃記憶體交織寫入的時序圖,其顯示出記憶體控制器110將資料寫入一個超區塊的時序圖。於此實施例中,四個位於不同的快閃記憶體晶片(於此範例中稱為第一晶片、第二晶片、第三晶片與第四晶片)的記憶體區塊形成一個超區塊。第一晶片、第二晶片、第三晶片與第四晶片透過共用的資料匯流排BUS耦接至記憶體控制器110。第3圖中分別顯示了第一晶片、第二晶片、第三晶片與第四晶片的寫入操作,其中標示寫入指令PGM_CMD的時間區間代表記憶體控制器110透過資料匯流排BUS下寫入指令給對應的晶片,以告知其欲寫入資料,標示資料DATA的時間區間代表記憶體控制器110透過資料匯流排BUS將欲儲存之資料提供給對應的晶片,標示忙碌BUSY的時間區間代表對應的晶片正在執行資料寫入的操作,因此其狀態為忙碌。由於上述的寫入指令與資料均透過資料匯流排BUS傳送給對應的晶片,第3圖亦顯示出實際於資料匯流排BUS上所傳送的指令與資料。由第3圖中可看出,藉由超區塊的配置,第一晶片、第二晶片、第三晶片與第四晶片可平行地執行寫入操作,因此,於一個晶片正在執行資料寫入操作的忙碌區間,記憶體控制器110仍可繼續下指令給另一個晶片,而無須等待記憶體晶片的狀態轉變為不忙碌,大幅提高記憶體裝置的存取效率。
第4圖係顯示根據本發明之一實施例所述之於單通道架構中快閃記憶體交織讀取的時序圖。同樣地,此實施例中,四個位於不同的快閃記憶體晶片(於此範例中稱為第一晶片、第二晶片、第三晶片與第四晶片)的記憶體區塊形成一個超區塊。第4圖中分別顯示了第一晶片、第二晶片、第三晶片與第四晶片的讀取操作,其中標示讀取指令Read_CMD的時間區間代表記憶體控制器110透過資料匯流排BUS下讀取指令給對應的晶片,以告知其欲讀取資料,標示忙碌BUSY的時間區間代表對應的晶片正在準備記憶體控制器110所欲讀取之資料,例如,根據讀取位址找出資料並且將之儲存於該晶片內部的緩存器中,因此其狀態為忙碌。標示資料DATA的時間區間代表對應的晶片透過資料匯流排BUS將資料提供給記憶體控制器110。由於上述的讀取指令與資料均透過資料匯流排BUS傳送給對應的晶片,第4圖亦顯示出實際於資料匯流排BUS上所傳送的指令與資料。由第4圖中可看出,藉由超區塊的配置,第一晶片、第二晶片、第三晶片與第四晶片可平行地執行讀取操作,因此,於一個晶片正在執行資料讀取操作的忙碌區間,記憶體控制器110仍可繼續下指令給另一個晶片,而無須等待記憶體晶片的狀態轉變為不忙碌,大幅提高記憶體裝置的存取效率。
根據本發明之一實施例,記憶體控制器110可配置如第2圖所示之SLC超區塊200作為所述之緩存器,用以自主機裝置130接收資料,並且可如第2圖及第3圖所示,依照資料頁位址遞增的順序,以交織寫入的方式,將資料依序寫入SLC超區塊200所對應之邏輯資料頁0~(M+3)。
由於SLC記憶體區塊的儲存效率仍不及其他多層式儲存的記憶體區塊,因此,當儲存於作為緩存器使用之SLC記憶體區塊之資料的資料量達到一特定數值時,例如,當目前作為緩存器使用之SLC記憶體區塊被寫滿,或者其寫入資料量已達SLC記憶體區塊之容量之90%、95%或97%等等數值時,記憶體控制器110可決定於一既定程序中將這些資料自SLC記憶體區塊搬移至其他記憶體區塊,例如,MLC、TLC或QLC記憶體區塊,以下稱為目標記憶體區塊。例如,記憶體控制器110可於一垃圾回收(garbage collection)程序中將這些資料自SLC記憶體區塊讀出,並依序寫入目標記憶體區塊之複數邏輯資料頁。
為能簡潔說明,以清楚闡明本發明之概念,以下之多個實施例中將以TLC記憶體區塊作為目標記憶體區塊作為範例解說。然而,必須注意的是,本發明之應用實際上並不限於將資料由SLC記憶體區塊搬移至TLC記憶體區塊,亦可應用於將資料由SLC記憶體區塊搬移至MLC記憶體區塊、由SLC記憶體區塊搬移至QLC記憶體區塊、或者將資料由MLC記憶體區塊搬移至TLC記憶體區塊、由MLC記憶體區塊搬移至QLC記憶體區塊、由TLC記憶體區塊搬移至TLC記憶體區塊、由TLC記憶體區塊搬移至QLC記憶體區塊等。
換言之,本發明所提出之資料處理方法可被實施於目標記憶體區塊之一記憶體單元中所儲存之資料位元的數量大於或等於來源記憶體區塊之一記憶體單元中所儲存之資料位元的數量的任何類型應用中。
第5圖係顯示根據本發明之一實施例所述之一個三層式儲存(TLC)超區塊(super block)示意圖。於此實施例中,四個位於不同的快閃記憶體晶片的TLC記憶體區塊可形成一TLC超區塊,其中形成一TLC超區塊的四個TLC記憶體區塊可於其對應之快閃記憶體晶片內具有相同的記憶體區塊編號或記憶體區塊索引值(block index)。
如第5圖所示,TLC超區塊500係由TLC記憶體區塊510、520、530與540所形成,其中TLC記憶體區塊510、520、530與540分別位於不同的快閃記憶體晶片,並且可以是,例如,該些快閃記憶體晶片內所包含的第1個記憶體區塊。記憶體控制器110可利用不同晶片致能信號致能對應的記憶體晶片。舉例而言,記憶體控制器110可分別藉由晶片致能信號CE0、CE1、CE2與CE3致能TLC記憶體區塊510、520、530與540所對應之快閃記憶體晶片。
各TLC記憶體區塊可用以儲存複數邏輯資料頁之資料,其中TLC記憶體區塊的一個實體資料頁P_Page係對應於三個邏輯資料頁L_Page。
假設記憶體控制器110依序將第5圖所示之TLC記憶體區塊510、520、530與540視為TLC超區塊500所包含之第一TLC記憶體區塊、第二TLC記憶體區塊、第三TLC記憶體區塊與第四TLC記憶體區塊,記憶體控制器110亦可以循環的方式依序給予TLC超區塊500所對應之各邏輯資料頁一個對應索引值作為預設的資料頁索引值。
例如,第一TLC記憶體區塊的第一個實體資料頁的第一個邏輯資料頁可被給予索引值idx=0、第一TLC記憶體區塊的第一個實體資料頁的第二個邏輯資料頁可被給予索引值idx=1、第一TLC記憶體區塊的第一個實體資料頁的第三個邏輯資料頁可被給予索引值idx=2、第二TLC記憶體區塊的第一個實體資料頁的第一個邏輯資料頁可被給予索引值idx=3、第二TLC記憶體區塊的第一個實體資料頁的第二個邏輯資料頁可被給予索引值idx=4、第二TLC記憶體區塊的第一個實體資料頁的第三個邏輯資料頁可被給予索引值idx=5、第三TLC記憶體區塊的第一個實體資料頁的第一個邏輯資料頁可被給予索引值idx=6、第三TLC記憶體區塊的第一個實體資料頁的第二個邏輯資料頁可被給予索引值idx=7、第三TLC記憶體區塊的第一個實體資料頁的第三個邏輯資料頁可被給予索引值idx=8、第四TLC記憶體區塊的第一個實體資料頁的第一個邏輯資料頁可被給予索引值idx=9、第四TLC記憶體區塊的第一個實體資料頁的第二個邏輯資料頁可被給予索引值idx=10、第四TLC記憶體區塊的第一個實體資料頁的第三個邏輯資料頁可被給予索引值idx=11,並依此類推。亦即,記憶體控制器110可順著各TLC記憶體區塊之內部實體資料頁索引值遞增的方向,以循環的方式依序將一資料頁索引值分配給第一、第二、第三、第四SLC記憶體區塊所對應的第一、第二、第三個邏輯資料頁。
依循上述規則,則可推導出第x個TLC記憶體區塊的第y個實體資料頁的第z個邏輯資料頁所對應之索引值idx為idx= 3*(x-1) +12*(y-1) + (z-1),其中x =1~X,X為一個超區塊所包含的記憶體區塊數量,於此實施中X=4,y=1~Y,Y為一個記憶體區塊數量所包含的實體資料頁數量,z=1~Z,Z為一個實體資料頁所對應的邏輯資料頁數量,於此實施中Z=3。
如上述,除預設的資料頁索引值之外,記憶體控制器110亦可將複數資料頁位址分配給一個超區塊所對應之複數邏輯資料頁。
根據本發明之一第一實施例,記憶體控制器110可根據一第二規則將複數資料頁位址分配給TLC超區塊500所對應之複數邏輯資料頁(即,記憶體控制器110可根據第二規則認定TLC超區塊500之資料頁位址之排列順序)。舉例而言,記憶體控制器110參考預設的資料頁索引值,以資料頁位址遞增的方式,依序為第一TLC記憶體區塊、第二TLC記憶體區塊、第三TLC記憶體區塊與第四TLC記憶體區塊的一個邏輯資料頁分配一個對應的資料頁位址,使得TLC超區塊500所對應之各邏輯資料頁都會被分配到一個獨一無二的的資料頁位址,並且這些資料頁位址之安排(即,資料頁位址之排列順序,或記憶體控制器110所認定之資料頁位址之排列順序)將具有一第二順序。
如第5圖所示,各TLC記憶體區塊包含複數個邏輯資料頁L_Page,各邏輯資料頁被標示著一個數字,此數字即為該邏輯資料頁所對應之資料頁位址Page_add。於此實施例中,記憶體控制器110以資料頁位址遞增的方式,依序為第一TLC記憶體區塊的第一個實體資料頁的第一個邏輯資料頁分配資料頁位址Page_add=0、為第一TLC記憶體區塊的第一個實體資料頁的第二個邏輯資料頁分配資料頁位址Page_add=1、為第一TLC記憶體區塊的第一個實體資料頁的第三個邏輯資料頁分配資料頁位址Page_add=2、為第二TLC記憶體區塊的第一個實體資料頁的第一個邏輯資料頁分配資料頁位址Page_add=3、為第二TLC記憶體區塊的第一個實體資料頁的第二個邏輯資料頁分配資料頁位址Page_add=4、為第二TLC記憶體區塊的第一個實體資料頁的第三個邏輯資料頁分配資料頁位址Page_add=5,並依此類推。
因此,於本發明之第一實施例中,第二規則可以是根據預設的資料頁索引值安排資料頁位址,使得所述第二順序與預設的資料頁索引值的順序相同。即,隨資料頁索引值遞增,資料頁位址也會以遞增的方式分配給對應的邏輯資料頁。
根據本發明之一實施例,記憶體控制器110可配置如第5圖所示之TLC超區塊500作為目標超區塊,用以於上述既定程序中接收原先儲存於SLC記憶體區塊的資料,其中TLC超區塊500所包含之記憶體區塊即為既定程序中的目標記憶體區塊。
一併參考第2圖與第5圖,由於SLC超區塊200(既定程序中的來源超區塊)的資料頁位址的安排符合所述第一規則,於寫入操作時,記憶體控制器110可根據此第一順序依序將資料寫入對應之邏輯資料頁。而於讀取操作時,記憶體控制器110亦可根據此第一順序依序將資料讀出,如此可藉由上述交織寫入與交織讀取的操作提高記憶體裝置的存取效率。
然而,必須注意的是,於上述既定程序中,若記憶體控制器110根據上述第二順序(即,如第5圖所示之TLC超區塊500資料頁位址的排列順序)依序將自SLC超區塊200讀出的資料寫入TLC超區塊500所對應之邏輯資料頁,則於讀取資料的過程中,便無法藉由上述交織讀取的操作提高記憶體裝置的存取效率。
舉例而言,假設資料SLC_P(k)用以表示自SLC超區塊200中被分配有資料頁位址Page_add=k之資料頁所讀取出的資料。若記憶體控制器110不對資料做重新調整,而是依照自SLC超區塊200讀出的資料的順序,直接將讀出的資料寫入TLC超區塊500,則SLC超區塊200所儲存的第一筆資料SLC_P(0)會被寫入TLC超區塊500的第一TLC記憶體區塊的第一個實體資料頁的第一個邏輯資料頁(因為其所分配的資料頁位址Page_add=0),SLC超區塊200所儲存的第二筆資料SLC_P(1) 會被寫入TLC超區塊500的第一TLC記憶體區塊的第一個實體資料頁的第二個邏輯資料頁(因為其所分配的資料頁位址Page_add=1),SLC超區塊200所儲存的第三筆資料SLC_P(2)會被寫入TLC超區塊500的第一TLC記憶體區塊的第一個實體資料頁的第三個邏輯資料頁(因為其所分配的資料頁位址Page_add=2),並依此類推。
如此一來,當記憶體控制器110爾後需依序讀取資料SLC_P(0)~ SLC_P(2)時,便必須連續存取同一個記憶體晶片(例如,TLC記憶體區塊510所屬之記憶體晶片)。更具體的說,記憶體控制器110必須等待記憶體裝置120讀取資料SLC_P(0)的操作結束,記憶體晶片的狀態由忙碌轉為不忙碌後,才能再對相同的記憶體晶片下另一指令要求讀取資料SLC_P(1),因此,於讀取資料的過程中,便無法藉由上述交織讀取的操作提高記憶體裝置的存取效率。當SLC超區塊200所暫存的資料為連續資料,且記憶體控制器110直接根據如第5圖所示之TLC超區塊500資料頁位址的排列順序將資料寫入TLC超區塊500時,於爾後需讀取此連續資料時,便會產生上述無效率的存取操作。
為了解決上述問題,根據本發明之一實施例,於執行所述既定程序時,記憶體控制器110可將儲存於來源超區塊中相鄰之兩個邏輯資料頁的資料寫入目標超區塊中兩個位於不同的記憶體晶片的記憶體區塊。於本發明之實施例中,相鄰之兩個邏輯資料頁係指被分配有連續的資料頁位址,例如,0與1、1與2、2與3等,的邏輯資料頁。
於本發明之第一實施例中,若記憶體控制器110安排TLC超區塊500(目標超區塊)的資料頁位址的規則(例如,上述的第二規則)與安排SLC超區塊200(來源超區塊)的資料頁位址的規則(例如,上述的第一規則)相同時,則於將資料自來源超區塊搬移至目標超區塊時,記憶體控制器110可根據一既定順序依序將資料寫入目標超區塊所對應之複數邏輯資料頁,其中此既定順序與目標超區塊之資料頁位址之排列順序(例如,上述的第二順序)不同。
換言之,於本發明之第一實施例中,第一規則與第二規則可以同樣是根據預設的資料頁索引值安排資料頁位址,使得資料頁位址會隨資料頁索引值遞增而以遞增的方式分配給對應的邏輯資料頁。然而,當第二規則與第一規則相同時,記憶體控制器110將不依循資料頁位址之排列順序將資料寫入目標超區塊,以達成來源超區塊中相鄰之兩個邏輯資料頁的資料被寫入目標超區塊中兩個位於不同的記憶體晶片的記憶體區塊的結果。
舉例而言,記憶體控制器110可先將自來源超區塊讀取之資料暫存於緩衝記憶體116內,將資料順序重新排列後,再將資料寫入目標超區塊。舉另一例而言,記憶體控制器110亦可不根據上述第一順序依序將資料自來源超區塊讀出,而是根據最終欲於目標超區塊內呈現的資料排列順序(例如,上述的既定順序)自來源超區塊讀取資料。
第6圖係顯示根據本發明之一實施例所述之一個目標超區塊的資料排列順序範例示意圖,於第6圖中顯示出於目標超區塊內最終呈現的資料排列順序。於此實施例中,目標超區塊為一TLC超區塊600,TLC超區塊600係由分別位於不同的快閃記憶體晶片的TLC記憶體區塊610、620、630與640所形成。
第6圖中各邏輯資料頁所標示之符號SLC_P(k)用以表示該邏輯資料頁所儲存之資料的來源為SLC超區塊200中被分配有資料頁位址Page_add=k之資料頁,其中於第6圖中,k=0~(N-1)。值得注意的是,由於一個TLC超區塊的容量可以是一個SLC超區塊的容量的三倍,因此,既定程序中的來源超區塊的數量實際上可大於1。若來源超區塊的數量大於1時,於第6圖中所使用的參數k經由適當的計算,例如,減去一數值,便可被轉換為對應之SLC超區塊的資料頁位址。熟悉此技藝者均可理解所述轉換的實作方式,因此便不再贅述。
如第6圖所示,目標超區塊內最終呈現的資料排列順序(例如,上述的既定順序)與目標超區塊之資料頁位址之排列順序(例如,上述的第二順序,可參考第5圖)不同。記憶體控制器110可先將自來源超區塊讀取之資料暫存於緩衝記憶體116內,將資料根據如第6圖所示之順序重新排列後,再將資料寫入目標超區塊。另一方面,記憶體控制器110亦可直接根據如第6圖所示之順序自來源超區塊讀取資料,再依序將讀取之資料寫入目標超區塊。
除上述之實施方式外,本發明亦提供另一種實施方式,同樣可達成來源超區塊中相鄰之兩個邏輯資料頁的資料被寫入目標超區塊中兩個位於不同的記憶體晶片的記憶體區塊的結果。
根據本發明之第二實施例,直接修改目標超區塊之資料頁位址的排列順序(或,記憶體控制器110所認定之資料頁位址的排列順序),使得目標超區塊之資料頁位址的排列順序與目標超區塊內最終欲呈現的資料排列順序相同。舉例而言,記憶體控制器110同樣根據一第二規則安排目標超區塊的資料頁位址,使目標超區塊之資料頁位址的安排具有一第二順序,但於第二實施例中,第二規則與第一規則不同。換言之,於本發明之第二實施例中,第一規則是根據預設的資料頁索引值安排資料頁位址,使得資料頁位址會隨資料頁索引值遞增而以遞增的方式分配給對應的邏輯資料頁,但第二規則並非如此,而是根據目標超區塊內最終欲呈現的資料排列順序安排資料頁位址的順序。
第7圖係顯示根據本發明之另一實施例所述之一個三層式儲存超區塊示意圖。於此實施例中,TLC超區塊700係由分別位於不同的快閃記憶體晶片的TLC記憶體區塊710、720、730與740所形成。如第7圖所示,各TLC記憶體區塊包含複數個邏輯資料頁L_Page,各邏輯資料頁被標示著一個數字,此數字即為該邏輯資料頁所對應之資料頁位址Page_add。
於此實施例中,記憶體控制器110並非根據預設的資料頁索引值安排資料頁位址,使得資料頁位址會隨資料頁索引值遞增而以遞增的方式分配給對應的邏輯資料頁,而是根據目標超區塊內最終欲呈現的資料排列順序安排資料頁位址的順序。由於記憶體控制器110已直接根據目標超區塊內最終欲呈現的資料排列順序安排資料頁位址的順序,於執行既定程序時,記憶體控制器110可直接依循資料頁位址之排列順序將資料寫入目標超區塊,而最終亦可達到如第6圖所示之資料排列順序。
舉例而言,於本發明之第二實施例中,記憶體控制器110可根據上述第一順序(來源超區塊之資料頁位址被安排的順序)依序將資料自來源超區塊讀出,再將資料根據上述第二順序(目標超區塊之資料頁位址被安排的順序)寫入目標超區塊。由於目標超區塊之資料頁位址的順序已事先按照所需的資料排列順序被安排好了,因此,記憶體控制器110僅需依照目標超區塊之資料頁位址的順序依序將讀出的資料寫入對應的邏輯資料頁即可。
換言之,於本發明之第二實施例中,於將資料自來源超區塊搬移至目標超區塊時,記憶體控制器110可根據一既定順序依序將資料寫入目標超區塊所對應之複數邏輯資料頁,其中此既定順序與目標超區塊之資料頁位址之排列順序(例如,上述的第二順序)相同。如此一來,同樣可達成來源超區塊中相鄰之兩個邏輯資料頁的資料被寫入目標超區塊中兩個位於不同的記憶體晶片的記憶體區塊的結果。
第8圖係顯示根據本發明之一實施例所述之資料處理方法之範例流程圖。本發明之資料處理方法係由記憶體控制器110執行,並且包括:
步驟S802: 配置複數第一記憶體區塊用以自一主機裝置接收資料,其中該等第一記憶體區塊形成至少一第一超區塊,第一超區塊包含一第一既定數量之位於不同的記憶體晶片之第一記憶體區塊。例如但不限於,第一既定數量可被設定為4。
步驟S804:當儲存於第一記憶體區塊之資料之一資料量達到一特定數值時,於一既定程序中將資料自第一記憶體區塊搬移至複數第二記憶體區塊,其中該等第二記憶體區塊形成至少一第二超區塊,第二超區塊包含一第二既定數量之位於不同的記憶體晶片之第二記憶體區塊。例如但不限於,第二既定數量可被設定為4。
值得注意的是,記憶體控制器110可根據如上述第一實施例或第二實施例所介紹的實施方式執行步驟S804,使得儲存於第一超區塊中相鄰的兩個邏輯資料頁之資料被寫入第二超區塊中兩個位於不同的記憶體晶片的第二記憶體區塊,或者,使得儲存於第一超區塊中被分配有連續資料頁位址的兩個邏輯資料頁之資料被寫入第二超區塊中兩個位於不同的記憶體晶片的第二記憶體區塊。
此外,值得注意的是,將儲存於第一超區塊中相鄰的兩個邏輯資料頁之資料寫入兩個位於不同的記憶體晶片的第二記憶體區塊,或者將第二超區塊(目標超區塊)內的資料排列成如第6圖所示的順序的目的係在於,上述操作使得記憶體控制器110於爾後需自第二超區塊讀取資料時,可藉由交織讀取的方式讀取第二超區塊,以提高記憶體裝置的存取效率。然而,本發明並不限於將第二超區塊(目標超區塊)內的資料排列成如第6圖所示的順序。只要如上述藉由改變自來源超區塊所讀出的資料(來源資料)的排列順序,或者藉由適當安排目標超區塊的資料頁位址,將目標超區塊內的資料排列成使得記憶體控制器110在未來需讀取資料時,可以使用交織讀取的方式讀取目標超區塊的順序,則記憶體控制器110當可將根據不同於第6圖所示的順序安排來源資料的排列順序或者目標超區塊的資料頁位址。
此外,如上所述,本發明之應用實際上並不限於將資料由SLC記憶體區塊搬移至TLC記憶體區塊,亦可應用於目標記憶體區塊之一記憶體單元中所儲存之資料位元一數量大於或等於來源記憶體區塊之一記憶體單元中所儲存之資料位元一數量的任何類型應用中。由於熟悉此技藝者應可根據上述第一實施例或第二實施例所介紹的實施方式將其概念作對應之調整,以應用於其他類型的資料搬移,因此相關內容於本文便不再贅述。
除此之外,以上實施例係以單通道的記憶體控制器作為範例,但本發明並不限於此。本發明所提出之概念與資料處理方法亦可應用於多通道的記憶體控制器,其中一個通道對應於一個資料匯流排。
舉例而言,假設記憶體控制器為一雙通道記憶體控制器,以第2圖所示之包含四個SLC記憶體區塊的SLC超區塊為例,SLC記憶體區塊210與230可耦接第一通道,SLC記憶體區塊220與240可耦接第二通道。同樣地,以以第6圖所示包含四個TLC記憶體區塊的TLC超區塊為例,TLC記憶體區塊610與630可耦接第一通道,TLC記憶體區塊620與640可耦接第二通道。藉由將儲存於來源超區塊中相鄰的兩個邏輯資料頁之資料寫入目標超區塊中兩個位於不同的記憶體晶片且耦接不同通道的記憶體區塊,可更加提升存取效率。舉例而言,如第6圖所示,由於資料SLC_P(0)與資料SLC_P(1)分別被寫入耦接第一通道的記憶體區塊610與耦接第二通道的記憶體區塊620,則可在寫入與讀取時獲得更大平行處理效益。
第9圖係顯示根據本發明之另一實施例所述之於雙通道架構中快閃記憶體交織寫入的時序圖。其中於此實施例中,四個位於不同的快閃記憶體晶片(於此範例中稱為第一晶片、第二晶片、第三晶片與第四晶片)的記憶體區塊形成一個超區塊。第一晶片與第三晶片透過共用的資料匯流排BUS_1耦接至記憶體控制器,第二晶片與第四晶片透過共用的資料匯流排BUS_2耦接至記憶體控制器。第9圖中分別顯示了第一晶片、第二晶片、第三晶片與第四晶片的寫入操作,其中標示寫入指令PGM_CMD的時間區間代表記憶體控制器透過資料匯流排BUS_1或BUS_2下寫入指令給對應的晶片,以告知其欲寫入資料,標示資料DATA的時間區間代表記憶體控制器透過資料匯流排BUS_1或BUS_2將欲儲存之資料提供給對應的晶片,標示忙碌BUSY的時間區間代表對應的晶片正在執行資料寫入的操作,因此其狀態為忙碌。由於上述的寫入指令與資料均透過資料匯流排BUS_1或BUS_2傳送給對應的晶片,第9圖亦顯示出實際於資料匯流排BUS_1與BUS_2上所傳送的指令與資料。由第9圖中可看出,相較於第3圖所示之單通道範例,藉由雙通道的配置,寫入效率可更為提升。
第10圖係顯示根據本發明之另一實施例所述之於雙通道架構中快閃記憶體交織讀取的時序圖。同樣地,於此實施例中,第一晶片與第三晶片透過共用的資料匯流排BUS_1耦接至記憶體控制器,第二晶片與第四晶片透過共用的資料匯流排BUS_2耦接至記憶體控制器。第10圖中分別顯示了第一晶片、第二晶片、第三晶片與第四晶片的讀取操作,其中標示讀取指令Read_CMD的時間區間代表記憶體控制器透過資料匯流排BUS_1或BUS_2下讀取指令給對應的晶片,以告知其欲讀取資料,標示忙碌BUSY的時間區間代表對應的晶片正在準備記憶體控制器所欲讀取之資料,例如,根據讀取位址找出資料並且將之儲存於該晶片內部的緩存器中,因此其狀態為忙碌。標示資料DATA的時間區間代表對應的晶片透過資料匯流排BUS_1或BUS_2將資料提供給記憶體控制器。由於上述的讀取指令與資料均透過資料匯流排BUS_1或BUS_2傳送給對應的晶片,第10圖亦顯示出實際於資料匯流排BUS_1與BUS_2上所傳送的指令與資料。由第10圖中可看出,相較於第4圖所示之單通道範例,藉由雙通道的配置,寫入效率可更為提升。
如上所述,根據本發明之一實施例,於執行資料搬移的程序時,記憶體控制器可將儲存於來源超區塊中相鄰之兩個邏輯資料頁的資料寫入目標超區塊中兩個位於不同的記憶體晶片的記憶體區塊。甚至,於多通道記憶體控制器的應用中,記憶體控制器可將儲存於來源超區塊中相鄰之兩個邏輯資料頁的資料寫入目標超區塊中兩個位於不同的記憶體晶片且耦接不同通道的記憶體區塊。藉由改變自來源超區塊所讀出的資料(來源資料)的排列順序,或者藉由適當安排目標超區塊的資料頁位址,使得儲存於來源超區塊中相鄰之兩個邏輯資料頁的資料最終會被寫入目標超區塊中兩個位於不同的記憶體晶片的記憶體區塊,或者兩個位於不同的記憶體晶片且耦接不同通道的的記憶體區塊。藉此安排,當記憶體控制器在未來需讀取資料時,可以使用交織讀取的方式讀取目標超區塊。如此一來,可獲得平行處理效益,因而大幅提升記憶體裝置存取效率。
申請專利範圍中用以修飾元件之“第一”、“第二”等序數詞之使用本身未暗示任何優先權、優先次序、各元件之間之先後次序、或方法所執行之步驟之次序,而僅用作標識來區分具有相同名稱(具有不同序數詞)之不同元件。
以上所述僅為本發明之較佳實施例,凡依本發明申請專利範圍所做之均等變化與修飾,皆應屬本發明之涵蓋範圍。
100:資料儲存裝置
110:記憶體控制器
112:微處理器
112C:程式碼
112M:唯讀記憶體
114:控制邏輯
116:緩衝記憶體
118:介面邏輯
120:記憶體裝置
130:主機裝置
132:編碼器
134:解碼器
200:SLC超區塊
210,220,230,240:SLC記憶體區塊
500,600,700:TLC超區塊
510,520,530,540,610,620,630,640,710,720,730,740:TLC記憶體區塊
BUS,BUS_1,BUS_2:資料匯流排
BUSY:忙碌
CE0,CE1,CE2,CE3:晶片致能信號
DATA,SLC_P(0)~ SLC_P(N-1) :資料
L_Page:邏輯資料頁
P_Page:實體資料頁
PGM_CMD:寫入指令
Read_CMD:讀取指令
第1圖係顯示根據本發明之一實施例所述之資料儲存裝置的示意圖。
第2圖係顯示根據本發明之一實施例所述之一個單層式儲存超區塊示意圖。
第3圖係顯示根據本發明之一實施例所述之於單通道架構中快閃記憶體交織寫入的時序圖。
第4圖係顯示根據本發明之一實施例所述之於單通道架構中快閃記憶體交織讀取的時序圖。
第5圖係顯示根據本發明之一實施例所述之一個三層式儲存超區塊示意圖。
第6圖係顯示根據本發明之一實施例所述之一個目標超區塊的資料排列順序範例示意圖。
第7圖係顯示根據本發明之另一實施例所述之一個三層式儲存超區塊示意圖。
第8圖係顯示根據本發明之一實施例所述之資料處理方法之範例流程圖。
第9圖係顯示根據本發明之另一實施例所述之於雙通道架構中快閃記憶體交織寫入的時序圖。
第10圖係顯示根據本發明之另一實施例所述之於雙通道架構中快閃記憶體交織讀取的時序圖。
100:資料儲存裝置
110:記憶體控制器
112:微處理器
112C:程式碼
112M:唯讀記憶體
114:控制邏輯
116:緩衝記憶體
118:介面邏輯
120:記憶體裝置
130:主機裝置
132:編碼器
134:解碼器
Claims (15)
- 一種資料儲存裝置,包括: 一記憶體裝置,包括複數記憶體晶片,各記憶體晶片包括複數記憶體區塊;以及 一記憶體控制器,耦接該記憶體裝置,用以存取該記憶體裝置,該記憶體控制器配置複數第一記憶體區塊用以自一主機裝置接收資料,其中該等第一記憶體區塊形成至少一第一超區塊,該第一超區塊包含一第一既定數量之位於不同的記憶體晶片之第一記憶體區塊, 當儲存於該等第一記憶體區塊之該資料之一資料量達到一特定數值時,該記憶體控制器於一既定程序中將該資料自該等第一記憶體區塊搬移至複數第二記憶體區塊,其中該等第二記憶體區塊形成至少一第二超區塊,該第二超區塊包含一第二既定數量之位於不同的記憶體晶片之第二記憶體區塊,並且 於該既定程序中,該記憶體控制器將該等第一記憶體區塊所儲存之該資料依序寫入該等第二記憶體區塊,其中儲存於該第一超區塊中相鄰之兩個邏輯資料頁之該資料被寫入兩個位於不同的記憶體晶片的該等第二記憶體區塊。
- 如申請專利範圍第1項所述之資料儲存裝置,其中該第一超區塊對應於複數邏輯資料頁,該第一超區塊之各邏輯資料頁根據一第一規則被分配有對應之一資料頁位址,使該第一超區塊之該等資料頁位址之安排具有一第一順序,並且於自該主機裝置接收該資料時,該記憶體控制器根據該第一順序依序將該資料寫入對應之該等邏輯資料頁。
- 如申請專利範圍第2項所述之資料儲存裝置,其中該第二超區塊對應於複數邏輯資料頁,該第二超區塊之各邏輯資料頁根據一第二規則被分配有對應之一資料頁位址,使該第二超區塊之該等資料頁位址之安排具有一第二順序,並且該第二規則與該第一規則相同。
- 如申請專利範圍第3項所述之資料儲存裝置,其中於將該資料自該等第一記憶體區塊搬移至該等第二記憶體區塊時,該記憶體控制器根據該第一超區塊之該等資料頁位址依序自該第一超區塊所對應之該等邏輯資料頁讀取該資料,並且根據一既定順序依序將該資料寫入該第二超區塊所對應之該等邏輯資料頁,其中該既定順序與該第二順序不同。
- 如申請專利範圍第2項所述之資料儲存裝置,其中該第一超區塊中相鄰之兩個邏輯資料頁被分配有連續的資料頁位址。
- 如申請專利範圍第2項所述之資料儲存裝置,其中該第二超區塊對應於複數邏輯資料頁,該第二超區塊之各邏輯資料頁根據一第二規則被分配有對應之一資料頁位址,使該第二超區塊之該等資料頁位址之安排具有一第二順序,並且該第二規則與該第一規則不同。
- 如申請專利範圍第6項所述之資料儲存裝置,其中於將該資料自該等第一記憶體區塊搬移至該等第二記憶體區塊時,該記憶體控制器根據該第一超區塊之該等資料頁位址依序自該第一超區塊所對應之該等邏輯資料頁讀取該資料,並且根據一既定順序依序將該資料寫入該第二超區塊所對應之該等邏輯資料頁,其中該既定順序與該第二順序相同。
- 如申請專利範圍第1項所述之資料儲存裝置,其中該等第一記憶體區塊為複數單層單元(Single-Level Cell,SLC)記憶體區塊,該等第二記憶體區塊為複數多層單元(Multiple -Level Cell,MLC)記憶體區塊、三層單元(Triple-Level Cell,TLC)記憶體區塊、或四層單元(Quad-Level Cell,QLC)記憶體區塊。
- 如申請專利範圍第1項所述之資料儲存裝置,其中該等第二記憶體區塊之一記憶體單元中儲存之資料位元的數量大於或等於該等第一記憶體區塊之一記憶體單元中儲存之資料位元的數量。
- 一種資料處理方法,適用於一記憶體裝置,該記憶體裝置包括複數記憶體晶片,各記憶體晶片包括複數記憶體區塊,該方法包括: 配置複數第一記憶體區塊用以自一主機裝置接收資料,其中該等第一記憶體區塊形成至少一第一超區塊,該第一超區塊包含一第一既定數量之位於不同的記憶體晶片之第一記憶體區塊;以及 當儲存於該等第一記憶體區塊之該資料之一資料量達到一特定數值時,於一既定程序中將該資料自該等第一記憶體區塊搬移至複數第二記憶體區塊,其中該等第二記憶體區塊形成至少一第二超區塊,該第二超區塊包含一第二既定數量之位於不同的記憶體晶片之第二記憶體區塊,並且 其中儲存於該第一超區塊中被分配有連續資料頁位址的兩個邏輯資料頁之該資料被寫入兩個位於不同的記憶體晶片的該等第二記憶體區塊。
- 如申請專利範圍第10項所述之方法,其中該第一超區塊對應於複數邏輯資料頁,該第一超區塊之各邏輯資料頁根據一第一規則被分配有對應之一資料頁位址,使該第一超區塊之該等資料頁位址之安排具有一第一順序,並且於自該主機裝置接收該資料時,將該資料係根據該第一順序依序被寫入對應之該等邏輯資料頁。
- 如申請專利範圍第11項所述之方法,其中該第二超區塊對應於複數邏輯資料頁,該第二超區塊之各邏輯資料頁根據一第二規則被分配有對應之一資料頁位址,使該第二超區塊之該等資料頁位址之安排具有一第二順序,並且該第二規則與該第一規則相同。
- 如申請專利範圍第12項所述之方法,其中於將該資料自該等第一記憶體區塊搬移至該等第二記憶體區塊時,該方法更包括: 根據該第一超區塊之該等資料頁位址依序自該第一超區塊所對應之該等邏輯資料頁讀取該資料;以及 根據一既定順序依序將該資料寫入該第二超區塊所對應之該等邏輯資料頁,其中該既定順序與該第二順序不同。
- 如申請專利範圍第11項所述之方法,其中該第二超區塊對應於複數邏輯資料頁,該第二超區塊之各邏輯資料頁根據一第二規則被分配有對應之一資料頁位址,使該第二超區塊之該等資料頁位址之安排具有一第二順序,並且該第二規則與該第一規則不同。
- 如申請專利範圍第14項所述之資料儲存裝置,其中於將該資料自該等第一記憶體區塊搬移至該等第二記憶體區塊時,該方法更包括: 根據該第一超區塊之該等資料頁位址依序自該第一超區塊所對應之該等邏輯資料頁讀取該資料;以及 根據一既定順序依序將該資料寫入該第二超區塊所對應之該等邏輯資料頁,其中該既定順序與該第二順序相同。
Priority Applications (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
TW109107600A TWI733360B (zh) | 2020-03-09 | 2020-03-09 | 資料儲存裝置與資料處理方法 |
CN202010484223.5A CN113377279A (zh) | 2020-03-09 | 2020-06-01 | 数据存储装置与数据处理方法 |
US17/080,856 US11347640B2 (en) | 2020-03-09 | 2020-10-27 | Data storage device and data processing method |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
TW109107600A TWI733360B (zh) | 2020-03-09 | 2020-03-09 | 資料儲存裝置與資料處理方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
TWI733360B true TWI733360B (zh) | 2021-07-11 |
TW202135059A TW202135059A (zh) | 2021-09-16 |
Family
ID=77555763
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
TW109107600A TWI733360B (zh) | 2020-03-09 | 2020-03-09 | 資料儲存裝置與資料處理方法 |
Country Status (3)
Country | Link |
---|---|
US (1) | US11347640B2 (zh) |
CN (1) | CN113377279A (zh) |
TW (1) | TWI733360B (zh) |
Families Citing this family (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114816223A (zh) * | 2021-01-27 | 2022-07-29 | 建兴储存科技股份有限公司 | 运用于固态存储装置的相关控制方法 |
US12093558B2 (en) * | 2022-05-23 | 2024-09-17 | SanDisk Technologies, Inc. | Hot-cold chunks soft-prediction during programming |
US20240118821A1 (en) * | 2022-10-04 | 2024-04-11 | Western Digital Technologies, Inc. | Read Collision Avoidance in Sequential Mixed Workloads |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8190842B2 (en) * | 2009-08-12 | 2012-05-29 | Texas Memory Systems, Inc. | Efficient reduction of read disturb errors in NAND FLASH memory |
US8825941B2 (en) * | 2008-06-25 | 2014-09-02 | Stec, Inc. | SLC-MLC combination flash storage device |
US9490022B2 (en) * | 2015-02-02 | 2016-11-08 | Silicon Motion, Inc. | Data storage device and data maintenance method |
TW201917581A (zh) * | 2017-10-17 | 2019-05-01 | 聯發科技股份有限公司 | 管理快閃記憶體模組的方法及相關的快閃記憶體控制器 |
US20190243734A1 (en) * | 2018-02-06 | 2019-08-08 | SK Hynix Inc. | Memory controller and operating method thereof |
Family Cites Families (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
TWI385527B (zh) * | 2009-02-10 | 2013-02-11 | Phison Electronics Corp | Mlc nand型快閃記憶體儲存系統及其控制器與存取方法 |
KR101662827B1 (ko) * | 2010-07-02 | 2016-10-06 | 삼성전자주식회사 | 쓰기 패턴에 따라 데이터 블록의 쓰기 모드를 선택하는 메모리 시스템 및 그것의 데이터 쓰기 방법 |
US8539142B2 (en) * | 2011-09-30 | 2013-09-17 | Hitachi, Ltd. | Storage system comprising nonvolatile semiconductor storage media |
CN109117383B (zh) * | 2017-06-25 | 2022-09-20 | 慧荣科技股份有限公司 | 管理闪存模块的方法和闪存控制器 |
TWI655640B (zh) * | 2018-01-24 | 2019-04-01 | 慧榮科技股份有限公司 | 資料儲存裝置與資料處理方法 |
TWI662411B (zh) * | 2018-05-14 | 2019-06-11 | 慧榮科技股份有限公司 | 資料儲存裝置與資料處理方法 |
US10635585B2 (en) * | 2018-05-15 | 2020-04-28 | Western Digital Technologies, Inc. | On-chip copy with data folding in three-dimensional non-volatile memory array |
-
2020
- 2020-03-09 TW TW109107600A patent/TWI733360B/zh active
- 2020-06-01 CN CN202010484223.5A patent/CN113377279A/zh active Pending
- 2020-10-27 US US17/080,856 patent/US11347640B2/en active Active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8825941B2 (en) * | 2008-06-25 | 2014-09-02 | Stec, Inc. | SLC-MLC combination flash storage device |
US8190842B2 (en) * | 2009-08-12 | 2012-05-29 | Texas Memory Systems, Inc. | Efficient reduction of read disturb errors in NAND FLASH memory |
US9490022B2 (en) * | 2015-02-02 | 2016-11-08 | Silicon Motion, Inc. | Data storage device and data maintenance method |
TW201917581A (zh) * | 2017-10-17 | 2019-05-01 | 聯發科技股份有限公司 | 管理快閃記憶體模組的方法及相關的快閃記憶體控制器 |
US20190243734A1 (en) * | 2018-02-06 | 2019-08-08 | SK Hynix Inc. | Memory controller and operating method thereof |
Also Published As
Publication number | Publication date |
---|---|
CN113377279A (zh) | 2021-09-10 |
US11347640B2 (en) | 2022-05-31 |
TW202135059A (zh) | 2021-09-16 |
US20210279170A1 (en) | 2021-09-09 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10956060B2 (en) | Memory system dynamically allocating memory spaces and method of operating the same | |
KR102094334B1 (ko) | 비휘발성 멀티-레벨 셀 메모리 시스템 및 상기 시스템에서의 적응적 데이터 백업 방법 | |
TWI733360B (zh) | 資料儲存裝置與資料處理方法 | |
CN109783397B (zh) | 存储器系统及其操作方法 | |
US11429520B2 (en) | Memory controller and memory system having the same | |
US20190138440A1 (en) | Memory system and operating method thereof | |
US10606758B2 (en) | Memory system and method of operating the same | |
US11126369B1 (en) | Data storage with improved suspend resume performance | |
US10684798B2 (en) | Memory controller and memory system having the same | |
TWI738442B (zh) | 資料儲存裝置與資料處理方法 | |
US20190121727A1 (en) | Memory system and method for operating the same | |
TWI698749B (zh) | 資料儲存裝置與資料處理方法 | |
CN112214163A (zh) | 存储器控制器以及包括其的存储器系统 | |
CN109902031B (zh) | 存储系统及其操作方法 | |
CN111240585A (zh) | 控制器、包括控制器的存储器系统及其操作方法 | |
TWI697778B (zh) | 資料儲存裝置與資料處理方法 | |
TW201928682A (zh) | 資料寫入方法、有效資料識別方法及記憶體儲存裝置 | |
US10942675B2 (en) | Memory system and operating method thereof | |
TWI830660B (zh) | 資料儲存裝置與資料處理方法 | |
CN114333930B (zh) | 多通道存储器存储装置、控制电路单元及其数据读取方法 | |
US20240320142A1 (en) | Control method of flash memory controller and associated flash memory controller and storage device | |
TWI697779B (zh) | 資料儲存裝置與資料處理方法 | |
CN118672937A (zh) | 快闪存储器控制器的控制方法、快闪存储器控制器以及储存装置 | |
CN115576497A (zh) | 数据读取方法、存储器存储装置及存储器控制电路单元 | |
CN118672938A (zh) | 快闪存储器控制器的控制方法、快闪存储器控制器以及储存装置 |