TW202234226A - 儲存裝置、快閃記憶體控制器及其控制方法 - Google Patents

儲存裝置、快閃記憶體控制器及其控制方法 Download PDF

Info

Publication number
TW202234226A
TW202234226A TW110106234A TW110106234A TW202234226A TW 202234226 A TW202234226 A TW 202234226A TW 110106234 A TW110106234 A TW 110106234A TW 110106234 A TW110106234 A TW 110106234A TW 202234226 A TW202234226 A TW 202234226A
Authority
TW
Taiwan
Prior art keywords
data
block
flash memory
blocks
area
Prior art date
Application number
TW110106234A
Other languages
English (en)
Other versions
TWI808384B (zh
Inventor
林璟輝
Original Assignee
慧榮科技股份有限公司
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 慧榮科技股份有限公司 filed Critical 慧榮科技股份有限公司
Priority to TW110106234A priority Critical patent/TWI808384B/zh
Priority to CN202110390186.6A priority patent/CN114974366A/zh
Priority to US17/394,427 priority patent/US20220269440A1/en
Publication of TW202234226A publication Critical patent/TW202234226A/zh
Application granted granted Critical
Publication of TWI808384B publication Critical patent/TWI808384B/zh

Links

Images

Classifications

    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C16/00Erasable programmable read-only memories
    • G11C16/02Erasable programmable read-only memories electrically programmable
    • G11C16/06Auxiliary circuits, e.g. for writing into memory
    • G11C16/08Address circuits; Decoders; Word-line control circuits
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input 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/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0673Single storage device
    • G06F3/0679Non-volatile semiconductor memory device, e.g. flash memory, one time programmable memory [OTP]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input 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/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0655Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
    • G06F3/0659Command handling arrangements, e.g. command buffers, queues, command scheduling
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input 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/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/0604Improving or facilitating administration, e.g. storage management
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input 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/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0683Plurality of storage devices
    • G06F3/0688Non-volatile semiconductor memory arrays

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Human Computer Interaction (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Read Only Memory (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Debugging And Monitoring (AREA)
  • Credit Cards Or The Like (AREA)

Abstract

本發明揭露了一種應用於一快閃記憶體控制器的控制方法,其中該快閃記憶體控制器用以存取一快閃記憶體模組,以及該控制方法包含有:接收來自一主裝置的設定指令,以將快閃記憶體模組的至少一部份設定為一區域命名空間;以及根據該區域命名空間之每一個區域的大小以及該快閃記憶體模組中每一個區塊的大小,以決定出每一個超級區塊所包含之區塊的數量。

Description

儲存裝置、快閃記憶體控制器及其控制方法
本發明係有關於快閃記憶體。
在非揮發性記憶體儲存裝置(Non-Volatile Memory express,NVMe)規範中,規範了一個區域命名空間(zoned namespace),然而,由於上述區域命名空間以及其中的每一個區域是單純以主裝置的角度來看的,因此,主裝置所定義出的每一個區域的大小與儲存裝置中快閃記憶體模組內每一個區塊(block)的大小並不具有固定的關係,因此,當主裝置準備將對應到一個區域的資料寫入至快閃記憶體模組時,快閃記憶體控制器會需要建立大量的邏輯位址與實體位址的映射表,例如以資料頁(page)為單位來記錄邏輯位址與實體位址的映射關係,因而造成快閃記憶體控制器在進行資料處理上的負擔,且也占用了靜態隨機存取記憶體(Static Random Access Memory,SRAM)及/或動態隨機存取記憶體(Dynamic Random Access Memory,DRAM)的儲存空間。
因此,本發明的目的之一在於提出一種快閃記憶體控制器,其可以有效率地管理由主裝置所寫入至快閃記憶體模組內之區域命名空間的資料,且所建立的邏輯位址與實體位址映射表具有較小的尺寸,以解決先前技術中所述的問題。
在本發明的一個實施例中,揭露了一種應用於一快閃記憶體控制器的控制方法,其中該快閃記憶體控制器用以存取一快閃記憶體模組,該快閃記憶體模組包含了多個資料面,每一個資料面包含了多個區塊,且每一個區塊包含了多個資料頁,以及該控制方法包含有:接收來自一主裝置的設定指令,其中該設定指令係將快閃記憶體模組的至少一部份設定為一區域命名空間,其中該區域命名空間係邏輯性地包含多個區域,該主裝置對於該區域命名空間的資料寫入存取必須要以區域為單位來進行,每一個區域的大小都是相同的,每一個區域內所對應到的邏輯位址必須要是連續的,且區域之間不會有重疊的邏輯位址;對該區域命名空間進行組態以規劃出多個第一超級區塊,其中每一個第一超級區塊包含了分別位於至少兩個資料面內的多個區塊,且每一個第一超級區塊所包含之區塊的數量是根據每一個區域的大小以及每一個區塊的大小所決定的;接收來自該主裝置之對應至一特定區域的資料,其中該資料為該特定區域的所有資料;根據該資料之邏輯位址的順序,以依序將該資料寫入至該快閃記憶體模組之該多個第一超級區塊中的一特定第一超級區塊中;以及當該資料完成寫入之後,將該特定第一超級區塊所包含之最後一個區塊的剩餘資料頁寫入無效資料、或是將剩餘資料頁維持空白而且在抹除前不依據該主裝置的寫入指令寫入來自該主裝置的資料。
在本發明的另一個實施例中,揭露了一種快閃記憶體控制器,其中該快閃記憶體控制器係用來存取一快閃記憶體模組,該快閃記憶體模組包含了多個資料面,每一個資料面包含了多個區塊,且每一個區塊包含了多個資料頁,且該快閃記憶體控制器包含有:一唯讀記憶體,用來儲存一程式碼;一微處理器,用來執行該程式碼以控制對該快閃記憶體模組之存取;以及一緩衝記憶體。該微處理器接收來自一主裝置的設定指令,其中該設定指令係將快閃記憶體模組的至少一部份設定為一區域命名空間,其中該區域命名空間係邏輯性地包含多個區域,該主裝置對於該區域命名空間的資料寫入存取必須要以區域為單位來進行,每一個區域的大小都是相同的,每一個區域內所對應到的邏輯位址必須要是連續的,且區域之間不會有重疊的邏輯位址;其中該微處理器對該區域命名空間進行組態以規劃出多個第一超級區塊,其中每一個第一超級區塊包含了分別位於至少兩個資料面內的多個區塊,且每一個第一超級區塊所包含之區塊的數量是根據每一個區域的大小以及每一個區塊的大小所決定的;該微處理器接收來自該主裝置之對應至一特定區域的資料,其中該資料為該特定區域的所有資料,且該微處理器根據該資料之邏輯位址的順序,以依序將該資料寫入至該快閃記憶體模組之該多個第一超級區塊中的一特定第一超級區塊中;以及當該資料完成寫入之後,該微處理器將該特定第一超級區塊所包含之最後一個區塊的剩餘資料頁寫入無效資料、或是將剩餘資料頁維持空白而且在抹除前不依據該主裝置的寫入指令寫入來自該主裝置的資料。
在本發明的另一個實施例中,揭露了一種儲存裝置,其包含有一快閃記憶體模組以及一快閃記憶體控制器,其中該快閃記憶體模組包含了多個資料面,每一個資料面包含了多個區塊,且每一個區塊包含了多個資料頁,且該快閃記憶體控制器用以存取該快閃記憶體模組。該快閃記憶體控制器接收來自一主裝置的設定指令,其中該設定指令係將快閃記憶體模組的至少一部份設定為一區域命名空間,其中該區域命名空間係邏輯性地包含多個區域,該主裝置對於該區域命名空間的資料寫入存取必須要以區域為單位來進行,每一個區域的大小都是相同的,每一個區域內所對應到的邏輯位址必須要是連續的,且區域之間不會有重疊的邏輯位址;其中該快閃記憶體控制器對該區域命名空間進行組態以規劃出多個第一超級區塊,其中每一個第一超級區塊包含了分別位於至少兩個資料面內的多個區塊,且每一個第一超級區塊所包含之區塊的數量是根據每一個區域的大小以及每一個區塊的大小所決定的;該快閃記憶體控制器接收來自該主裝置之對應至一特定區域的資料,其中該資料為該特定區域的所有資料,且該快閃記憶體控制器根據該資料之邏輯位址的順序,以依序將該資料寫入至該快閃記憶體模組之該多個第一超級區塊中的一特定第一超級區塊中;以及當該資料完成寫入之後,該快閃記憶體控制器將該特定第一超級區塊所包含之最後一個區塊的剩餘資料頁寫入無效資料、或是將剩餘資料頁維持空白而且在抹除前不依據該主裝置的寫入指令寫入來自該主裝置的資料。
第1圖為根據本發明一實施例之電子裝置100的示意圖。如第1圖所示,電子裝置包含了一主裝置110及多個儲存裝置120_1~120_N,其中每一個儲存裝置,以儲存裝置120_1為例,包含了一快閃記憶體控制器122以及一快閃記憶體模組124。在本實施例中,多個儲存裝置120_1~120_N中的每一者可以是固態硬碟(solid-state drive, SSD)或是任何具有快閃記憶體模組的儲存裝置,主裝置可以是一中央處理器或是其他可以用來存取儲存裝置120_1~120_N的電子裝置或元件,且電子裝置100本身可以是一伺服器、個人電腦、筆記型電腦或是任何的可攜式電子裝置。需注意的是,雖然第1圖繪出了多個儲存裝置120_1~120_N,但在一實施例中,電子裝置100可以僅具有單一個儲存裝置120_1。
第2A圖為依據本發明一實施例之儲存裝置120_1內的快閃記憶體控制器122的示意圖。如第2A圖所示,快閃記憶體控制器122包含一微處理器212、一唯讀記憶體(Read Only Memory, ROM)212M、一控制邏輯214、一緩衝記憶體216與一介面邏輯218。唯讀記憶體212M係用來儲存一程式碼212C,而微處理器212則用來執行程式碼212C以控制對快閃記憶體模組124之存取(Access)。控制邏輯214包含了一編碼器232以及一解碼器234,其中編碼器232用來對寫入到快閃記憶體模組220中的資料進行編碼以產生對應的校驗碼(或稱,錯誤更正碼(Error Correction Code),ECC),而解碼器234用來將從快閃記憶體模組124所讀出的資料進行解碼。
於典型狀況下,快閃記憶體模組124包含了多個快閃記憶體晶片,而每一個快閃記憶體晶片包含複數個區塊(block),而快閃記憶體控制器122對快閃記憶體模組124進行抹除資料運作係以區塊為單位來進行。另外,一區塊可記錄特定數量的資料頁(page),其中快閃記憶體控制器122對快閃記憶體模組124進行寫入資料之運作係以資料頁為單位來進行寫入。在本實施例中,快閃記憶體模組124為一立體NAND型快閃記憶體(3D NAND-type flash)模組。
實作上,透過微處理器212執行程式碼212C之快閃記憶體控制器210可利用其本身內部之元件來進行諸多控制運作,例如:利用控制邏輯214來控制快閃記憶體模組124之存取運作(尤其是對至少一區塊或至少一資料頁之存取運作)、利用緩衝記憶體216進行所需之緩衝處理、以及利用介面邏輯218來與主裝置110溝通。緩衝記憶體216係以隨機存取記憶體(Random Access Memory,RAM)來實施。例如,緩衝記憶體216可以是SRAM,但本發明不限於此。此外,快閃記憶體控制器122耦接於一DRAM 240。請注意到,DRAM 240亦可包含於快閃記憶體控制器122之內,例如與快閃記憶體控制器122存在於相同之封裝之中。
在本實施例中,儲存裝置120_1係支援NVMe規範,亦即介面邏輯218可符合一特定通訊標準(例如外設組件互聯(Peripheral Component Interconnect,PCI)標準或PCIe標準),並且可依據該特定通訊標準進行通訊,例如透過連接器來和主裝置110進行通訊。
第2B圖為依據本發明一實施例之快閃記憶體模組124中一區塊200的示意圖,其中快閃記憶體模組124為立體NAND型快閃記憶體。如第2B圖所示,區塊200包含了多個記憶單元(例如圖示的浮閘電晶體202或是其他的電荷捕捉(charge trap)元件),其透過多條位元線(圖示僅繪示了BL1~BL3)及多條字元線(例如圖示WL0~WL2、WL4~WL6)來構成立體NAND型快閃記憶體架構。在第2B圖中,以最上面的一個平面為例,字元線WL0上的所有浮閘電晶體構成了至少一資料頁,字元線WL1上的所有浮閘電晶體構成了另至少一資料頁,而字元線WL2的所有浮閘電晶體構成了再另至少一資料頁…以此類堆。此外,根據快閃記憶體寫入方式的不同,字元線WL0與資料頁(邏輯資料頁)之間的定義也會有所不同,詳細來說,當使用單層式儲存(Single-Level Cell,SLC)的方式寫入時,字元線WL0上的所有浮閘電晶體僅對應到單一邏輯資料頁;當使用雙層式儲存(Multi-Level Cell,MLC)的方式寫入時,字元線WL0上的所有浮閘電晶體對應到兩個邏輯資料頁;當使用三層式儲存(TLC)的方式寫入時,字元線WL0上的所有浮閘電晶體對應到三個邏輯資料頁;以及當使用四層式儲存(QLC)的方式寫入時,字元線WL0上的所有浮閘電晶體對應到四個邏輯資料頁。由於本技術領域中具有通常知識者應能了解立體NAND型快閃記憶體的結構以及字元線及資料頁之間的關係,故相關的細節在此不予贅述。
在本實施例中,主裝置110係可以透過發送一個設定指令集,例如區域命名空間指令集(Zoned Namespaces Command Set),以將快閃記憶體模組124的至少一部份設定為區域命名空間(zoned namespace)。參考第3圖所示,主裝置110可以發送設定指令集至快閃記憶體控制器122,以使得快閃記憶體模組124具有至少一個區域命名空間(在本實施例中以區域命名空間310_1、310_2為例)以及至少一個一般儲存空間(在本實施例中以一般儲存空間320_1、320_2為例)。區域命名空間310_1在存取上會被劃分為多個區域(zone),而主裝置110對於區域命名空間310_1的資料寫入必須要以邏輯區塊位址(Logical block address,LBA)為單位來進行,一個邏輯區塊位址(或簡稱邏輯位址)可代表512位元組(512 bytes)的資料量,而主裝置110需對一個區域進行連續性的寫入。具體來說,參考第4圖,區域命名空間310_1係被劃分為多個區域(例如,Z0、Z1、Z2、Z3…等等),其中區域的大小係由主裝置110來設定,但每一個區域的大小都是相同的,每一個區域內所對應到的邏輯位址必須要是連續的,且區域之間不會有重疊的邏輯位址(亦即,一個邏輯位址只會存在於一個區域內)。舉例來說,假設每一個區域的大小為x個邏輯位址,而區域Z3的起始邏輯位址是LBA_k,則區域Z3則是用來儲存對應到邏輯位址LBA_k、LBA_(k+1)、LBA_(k+2)、LBA_(k+3)、…、LBA_(k+x-1)的資料。在一實施例中,相鄰區域的邏輯位址也是連續的,舉例來說,區域Z0係用來儲存具有邏輯位址LBA_1~LBA_2000的資料、區域Z1係用來儲存具有邏輯位址LBA_2001~LBA_4000的資料、區域Z2係用來儲存具有邏輯位址LBA_4001~LBA_6000的資料、區域Z3係用來儲存具有邏輯位址LBA_6001~LBA_8000的資料、…以此類推。此外,一個邏輯位址所對應的資料量大小可以由主裝置110所決定,例如,一個邏輯位址所對應的資料量大小可以是4千位元組(Kilobyte,KB)。
此外,每一個區域的資料在進行寫入的時候,必須要按照邏輯位址的順序來進行。詳細來說,快閃記憶體控制器122會根據所寫入的資料來設定一個寫入指標(write point),以控制資料的寫入順序。詳細來說,假設區域Z1係用來儲存具有邏輯位址LBA_2001~LBA_4000的資料,而當主裝置110傳送對應到邏輯位址LBA_2001~LBA_2051的資料至快閃記憶體控制器122後,快閃記憶體控制器122會設定寫入指標為下一個邏輯位址LBA_2052。而若是後續主裝置110傳送屬於同一個區域的資料但不具有邏輯位址LBA_2052時,例如主裝置110傳送具有邏輯位址LBA_3000的資料,則快閃記憶體控制器122會拒絕這次的資料寫入並回傳寫入失敗的訊息給主裝置110;換句話說,只有當所接收到之資料的邏輯位址相同於寫入指標所指向的邏輯位址,快閃記憶體控制器122才會允許進行資料寫入。另外,若是多個區域的資料交替地進行寫入時,每一個區域可以有自己的寫入指標。
如上所述,主裝置110會以區域為單位來與儲存裝置120_1進行溝通以對區域命名空間310_1進行存取,但由於上述區域命名空間310_1以及每一個區域是以主裝置110的角度來看的,因此,主裝置110所定義出的每一個區域的大小與儲存裝置120_1中快閃記憶體模組124內每一個實體區塊的大小並不具有固定的關係。具體來說,不同的快閃記憶體模組製造廠商所製造出來的快閃記憶體模組並不一樣,不同的記憶體模組具有不同大小的實體區塊,該些實體區塊的大小並不一定為整數倍,例如A型號的快閃記憶體模組的實體區塊大小可能為B型號的快閃記憶體模組的實體區塊的1.3倍大,而C型號的快閃記憶體模組的實體區塊大小可能為B型號的快閃記憶體模組的實體區塊的3.7倍大,如此一來,會導致主裝置110所設定的區域非常難與實體區塊齊致(align)。此時快閃記憶體控制器122在將邏輯區塊對應到實體區塊時將會面臨非常大的困難,例如可能造成儲存裝置120_1中有許多冗餘空間無法被使用者使用,或者,當主裝置110準備將對應到一個區域的資料寫入至快閃記憶體模組124時,會增加快閃記憶體控制器122在建立邏輯位址至實體位址(logical address to physical address,L2P)映射表上的複雜度。本發明在以下的實施例中提出了一種可以讓快閃記憶體控制器122有效率地根據主裝置110的存取指令來對區域命名空間310_1進行存取的方法。
第5圖為根據本發明一實施例之將來自主裝置110的資料寫入至區域命名空間310_1的流程圖,其中本實施例係假設每一個區域所對應到的資料量係大於快閃記憶體模組124中每一個實體區塊的大小,且每一個區域所對應到的資料量並非是快閃記憶體模組124中每一個實體區塊之大小的整數倍。在步驟500中,流程開始,主裝置110及儲存裝置120_1上電並完成初始化操作,主裝置110對儲存裝置120_1中至少一部分儲存區域設定每個區域的大小、區域數量、邏輯區塊位址大小等基本設定,例如利用區域命名空間指令集(Zoned Namespaces Command Set)進行設定。在步驟502,主裝置110發送一寫入指令以及對應的資料至快閃記憶體控制器122,其中上述資料為對應到一或多個區域的資料,例如第4圖中區域Z3之對應到邏輯位址LBA_k~LBA_(k+x-1)的資料。在步驟504中,快閃記憶體控制器122自快閃記憶體模組124中選擇至少一個區塊(空白區塊、或稱備用區塊(spare block)),並依序將來自主裝置110的資料依序寫入至該至少一個區塊中。由於主裝置110所設定的區域大小非常難與實體區塊的大小齊致,所以當主裝置對區域Z3中所有的邏輯位址下達寫入指令後,主裝置110所欲寫入的資料通常仍無法填滿實體區塊的儲存空間,或者說,通常一個區域所對應的資料儲存量,通常不會是一個實體區塊中用來存放主裝置110所寫入資料的區域大小的整數倍。在步驟506中,當資料寫入至最後一個區塊並完成資料寫入後,快閃記憶體控制器122會將最後一個區塊的剩餘資料頁寫入無效資料(invalid data),或是直接將剩餘資料頁維持空白狀態,請注意到,每一個區塊通常都會保留若干資料頁用來存放系統管理資訊,例如用來存放寫入時間表、邏輯實體對應表、錯誤更正碼的檢查位元、磁碟陣列的同位元資料(RAID parity)等等管理所需的資料,此處所指的剩餘資料頁係指寫入該些系統管理資訊以及主裝置110所欲儲存的資料之後仍然有剩餘的資料頁。
舉例來說,參考第6圖,假設每一個區域所對應到的資料量介於快閃記憶體模組124中兩個區塊至三個區塊之間,則快閃記憶體控制器122可以因應主裝置110針對區域Z1所發送的寫入命令,將區域Z1的資料依序寫入至區塊B3、B7以及B8中。請注意到,在一實施例中,主裝置110針對區域Z1所發送的寫入指令中包含了區域Z1的起始邏輯位址,而快閃記憶體控制器122係將區域Z1的起始邏輯位址對應到實體區塊B3的起始實體儲存空間,例如第一個實體資料頁,並且,快閃記憶體控制器122會將區域Z1的起始邏輯位址對應的資料存入實體區塊B3的起始實體儲存空間中,例如第一個實體資料頁。區塊B3、B7、B8均包含了資料頁P1~PM,而區域Z1的資料則根據邏輯位址依序地自區塊B3的第一個資料頁P1開始進行寫入至最後一個資料頁PM,而在區塊B3完成資料寫入之後,繼續由區塊B7的第一個資料頁P1開始進行寫入至最後一個資料頁PM。請注意到,即便主裝置110針對區域Z1內的邏輯位址連續地寫入,快閃記憶體控制器122仍可選擇不連續的區塊B3、B7來儲存該些邏輯上連續的資料。而在區塊B7完成資料寫入之後,繼續由區塊B8的第一個資料頁P1開始進行寫入直到區域Z1的資料結束;此外,區塊B8的剩餘資料頁會維持空白或是被寫入無效資料。類似地,快閃記憶體控制器122可以將區域Z3的資料依序寫入至區塊B12、B99以及B6中,其中區塊B12、B99以及B6均包含了資料頁P1~PM,而區域Z3的資料則根據邏輯位址依序地自區塊B12的第一個資料頁P1開始進行寫入至最後一個資料頁PM,而在區塊B12完成資料寫入之後,繼續由區塊B99的第一個資料頁P1開始進行寫入至最後一個資料頁PM,且在區塊B99完成資料寫入之後,繼續由區塊B6的第一個資料頁P1開始進行寫入直到區域Z3的資料結束;此外,區塊B6的剩餘資料頁會維持空白或是被寫入無效資料。請注意到,快閃記憶體控制器122可以不針對該些無效資料所在的實體資料頁建立邏輯頁與實體頁鏈結關係。而該些具有維持空白或是被寫入無效資料的實體資料頁的實體區塊,通常會被快閃記憶體控制器122對應到各區域的最後一部分,或者說快閃記憶體控制器122會將區域的最後一個邏輯位址所對應的資料儲存在一個具有空白頁或是寫入無效頁資料的實體區塊中。例如第7B圖(將於後詳述之)中所示,邏輯位址Z1_LBA+S+2*y會對應到實體區塊位址PBA8。而且若區域的最後一個邏輯位址的資料係儲存在一實體區塊的第X個儲存單位(例如實體儲存頁或是區段)中,則該實體區塊的第X+1個儲存單位會保留位空白頁或是寫入無效頁資料,亦即,空白頁或是寫入無效資料的資料頁係接續在對應區域的最後一個邏輯位址的資料所存放的實體儲存單位之後。而在另一個實施例中,主裝置110係定義了一個較大的區域大小(Zone Size),以及一個較小區域容量(Zone capacity),例如區域大小為512MB,區域容量為500MB,在此例中,快閃記憶體控制器122可以不將空白頁或是寫入無效資料的資料頁直接接續在對應區域的最後一個邏輯位址的資料所存放的實體儲存單位之後。
在另一實施例中,主裝置110係針對區域Z1、Z2連續的邏輯位址發送寫入指令,而快閃記憶體控制器122選擇了區塊B3、B7、B8、B12、B99、B6用以儲存屬於區域Z1、Z2的資料。由於裝置110所設定的區域大小與實體區塊的大小並不齊致,主裝置110所欲寫入的資料仍無法填滿實體區塊的儲存空間,例如無法填滿實體區塊B8用來儲存主機資料的儲存空間,因此快閃記憶體控制器122仍舊要將實體區塊B8內該些儲存空間留白或是填入無效資料,所以儘管主裝置110針對區域Z1、Z2內連續的邏輯位址發送寫入指令,而且在實體區塊B8仍有空間儲存資料的狀況下,快閃記憶體控制器122仍舊不會將區域Z2的起始邏輯位址所對應的資料儲存在實體區塊B8之中,換言之,即便主裝置110發送了連續邏輯位址的寫入命令(例如包含了區域Z1的最後一個邏輯位址與區域Z2的第一個邏輯位址的寫入命令),且某一特定實體區塊(例如實體區塊B8)有足夠的空間儲存該些連續邏輯位址的資料,快閃記憶體控制器122仍舊不會將該些連續邏輯位址所對應的資料連續地儲存在該特定實體區塊中,而是跳躍性的將區域Z2的第一個邏輯位址所對應的資料寫入另一個實體區塊,例如區塊B20中。相應地,主裝置110若針對區域Z1、Z2內連續的邏輯位址發送讀取指令(例如包含了區域Z1的最後一個邏輯位址與區域Z2的第一個邏輯位址的讀取命令),快閃記憶體控制器122在讀取儲存在實體區塊P8中對應區域Z1的最後一個邏輯位址的資料之後,也會跳躍性地去讀取區塊B20的第一個儲存位置,以取得區域Z2的第一個邏輯位址的資料。
在步驟508中,快閃記憶體控制器122建立或更新一L2P映射表以紀錄邏輯位址與實體位址的映射關係,以供後續自區域命名空間310_1進行資料讀取時使用。第7A圖為根據本發明一實施例之L2P映射表700的示意圖。L2P映射表700包含了兩個欄位,其中一個欄位紀錄了區域的起始邏輯位址、而另一個欄位則記錄了區塊的實體區塊位址。同時參考第6圖,由於區域Z1的資料依序寫入至區塊B3、B7及B8,且區域Z3的資料依序寫入至區塊B12、B99及B6,因此,L2P映射表700記錄了區域Z1的起始邏輯位址Z1_LBA_S及區塊B3、B7及B8的實體區塊位址PBA3、PBA7及PBA8,且記錄了區域Z3的起始邏輯位址Z3_LBA_S及區塊B12、B99及B6的實體區塊位址PBA12、PBA99及PBA6。舉例來說,假設區域Z1係用來儲存具有邏輯位址LBA_2001~LBA_4000的資料、區域Z3係用來儲存具有邏輯位址LBA_6001~LBA_8000的資料,則區域Z1的起始邏輯位址Z1_LBA_S即是LBA_2001,而區域Z3的起始邏輯位址Z3_LBA_S即是LBA_6001。請注意到,將來自主裝置110的資料寫入至區域命名空間310_1的流程圖中的各個步驟只要能達到相同的目的,不一定要依照固定的次序進行,例如步驟508可接在步驟502之後執行,熟悉此項技藝者在本發明的教導之下當可理解之。請注意到,在此實施例中,每個實體區塊均只對應到一個區域,例如區塊B3、B7及B8只對應到區域Z1,區塊B12、B99及B6只對應到區域Z3。或者說,單一區塊只儲存單一個區域的資料,例如區塊B3、B7及B8只儲存區域Z1所對應的資料,區塊B12、B99及B6只儲存區域Z3所對應的資料。
除此之外,若主裝置110欲重置(reset)一個區域,例如重置區域Z1,快閃記憶體控制器122通常會修改L2P映射表700將與區域Z1相對應的實體區塊位址的欄位給刪除掉,例如刪除L2P映射表700中的實體區塊位址PBA3、PBA7及PBA8,代表主機已經不再需要該些實體區塊所儲存的資料。而快閃記憶體控制器122可稍後再將該些實體區塊給抹除,請注意到,實體區塊B8中儲存了主裝置110欲儲存的資料以及無效資料,雖然主裝置110所欲重置的區域Z1並不包含該些無效資料。為了管理上的方便,快閃記憶體控制器122在收到主裝置110針對區域Z1的重置指令後,仍會整體性地刪除L2P映射表700中的實體區塊位址PBA8,即便主裝置110所欲重置的區域Z1並不包含實體區塊B8中所儲存的該些無效資料。並且,快閃記憶體控制器122在抹除實體區塊B8之前,也不會將主裝置110發出的重置指令中所沒有包含到的無效資料給搬移到其他實體區塊去,而是將整個實體區塊直接刪除。
在以上的實施例中,區域命名空間310_1內的任何一個實體區塊所儲存的資料都一定是屬於相同的區域,亦即,任何一個實體區塊內所儲存的所有資料的所對應的邏輯位址會屬於同一個區域。而且又因為主裝置110僅能對一個區域內的邏輯位址連續地寫入。因此,本實施例的L2P映射表700可以僅包含了區域命名空間310_1的實體區塊位址,而不會包含任何的資料頁位址,亦即L2P映射表700不會記錄任何區塊內的資料頁序號或相關的資料頁資訊。此外,L2P映射表700也僅會記錄每一個區域的起始邏輯位址,因此,L2P映射表700本身僅具有很小的資料量,故L2P映射表700可以常駐在緩衝記憶體216或是DRAM 240,而不會對緩衝記憶體216或DRAM 240的儲存空間造成太大的負擔。請注意到,由於主裝置110設定區域大小及區域個數之後,各個區域的起始邏輯位址就固定下來了,因此L2P映射表700可以更進一步的化簡為一個欄位,即,僅有實體區塊位址欄位。而區域的起始邏輯位址欄位即可利用表格的條目(entry)來代表,如第7B圖所示之L2P映射表710,而無需實際儲存多個區域的起始邏輯位址。
在以上的實施例中,L2P映射表700中可以僅包含了區域命名空間310_1的實體區塊位址,而不會包含任何的資料頁位址,然而,在另一實施例中,L2P映射表700可以包含了每一個區域的起始邏輯位址及對應之實體區塊位址與第一個資料頁的實體資料頁位址。由於L2P映射表中的一個區域僅包含一個實體區塊位址及一個實體資料頁位址,故也只具有很小的資料量。
第7C圖為根據本發明一實施例之L2P映射表720的示意圖。L2P映射表720包含了兩個欄位,其中一個欄位紀錄了邏輯位址、而另一個欄位則記錄了區塊的實體區塊位址。同時參考第6圖,由於區域Z1的資料依序寫入至區塊B3、B7及B8,且區域Z3的資料依序寫入至區塊B12、B99及B6,因此,L2P映射表720記錄了區域Z1的起始邏輯位址Z1_LBA_S及區塊B3的實體區塊位址PBA3、區域Z1的邏輯位址(Z1_LBA_S+y)及區塊B7的實體區塊位址PBA7、以及區域Z1的邏輯位址(Z1_LBA_S+2*y)及區塊B8的實體區塊位址PBA8,其中邏輯位址(Z1_LBA_S+y)可以是寫入至區塊B7之資料的第一個邏輯位址(亦即,對應到區塊B7之資料頁P1的邏輯位址),而邏輯位址(Z1_LBA_S+2*y)可以是寫入至區塊B8之資料的第一個邏輯位址(亦即,對應到區塊B8之資料頁P1的邏輯位址);類似地,L2P映射表720記錄了區域Z3的起始邏輯位址Z3_LBA_S及區塊B12的實體區塊位址PBA12、區域Z3的邏輯位址(Z3_LBA_S+y)及區塊B99的實體區塊位址PBA99、以及區域Z6的邏輯位址(Z3_LBA_S+2*y)及區塊B6的實體區塊位址PBA6,其中邏輯位址(Z3_LBA_S+y)可以是寫入至區塊B99之資料的第一個邏輯位址(亦即,對應到區塊B99之資料頁P1的邏輯位址),而邏輯位址(Z3_LBA_S+2*y)可以是寫入至區塊B6之資料的第一個邏輯位址(亦即,對應到區塊B6之資料頁P1的邏輯位址)。需注意的是,上述的“y”可以表示為一個區塊可以儲存多少筆邏輯位址的資料,尤其是指主裝置110傳送給儲存裝置120_1,希望儲存裝置120_1儲存的資料。請注意到,由於主裝置110設定區域大小及區域個數之後,各個區域的起始邏輯位址就固定下來了,各個子區域的起始邏輯位址也固定下來了,例如Z1_LBA_S、Z1_LBA_S+y、Z1_LBA_S+2*y、Z2_LBA_S、Z2_LBA_S+y、Z2_LBA_S+2*y……等,因此,類似的,L2P映射表720可以更進一步的化簡為一個欄位,即,僅有實體區塊位址欄位。而邏輯位址欄位即可利用表格的條目(entry)來代表,而無需實際儲存多個子區域的起始邏輯位址,例如第7D圖的L2P映射表740所示。
需注意的是,本實施例的L2P映射表720僅包含了區域命名空間310_1的實體區塊位址,而不會包含任何的資料頁位址,亦即L2P映射表720不會記錄任何區塊內的資料頁序號或相關的資料頁資訊。此外,L2P映射表720也只會記錄每一個區塊所對應到的第一個邏輯位址,因此,L2P映射表720本身僅具有很小的資料量,故L2P映射表720可以常駐在緩衝記憶體216或是DRAM 240,而不會對緩衝記憶體216或DRAM 240的儲存空間造成太大的負擔。在一實施例中,上述L2P映射表720中所記錄的實體區塊位址可以另外搭配第一個資料頁的實體資料頁位址,而額外增加一個實體資料頁位址在實務上不會對儲存空間造成太大的負擔。
第8圖為根據本發明一實施例之自區域命名空間310_1讀取資料的流程圖,其中本實施例係假設區域命名空間310_1已經儲存了第6圖所示之區域Z1及Z3的資料。在步驟800中,流程開始,主裝置110及儲存裝置120_1上電並完成初始化操作(例如,開機程序)。在步驟802,主裝置110發送一讀入指令以要求讀取具有一特定邏輯位址的資料。在步驟804,快閃記憶體控制器122中的微處理器212判斷出該特定邏輯位址是屬於哪一個區域,並根據L2P映射表700或是L2P映射表720所記錄的邏輯位址來計算出該特定邏輯位址所對應的一實體資料頁位址。以第7A圖的L2P映射表700來做為說明,由於L2P映射表700記錄了個區域的起始邏輯位址,再加上每一個區域之邏輯位址的數量為已知,因此,微處理器212可以由上述資訊來得知該特定邏輯位址是屬於哪一個區域,以第6、7A圖的實施例來做說明,假設該特定邏輯位址為LBA_2500,一個區域包含了2000個邏輯位址,L2P映射表700記錄了區域Z1的起始邏輯位址Z1_LBA_S為LBA_2001,則微處理器212可以判斷出該特定邏輯位址屬於區域Z1。接著,微處理器212根據該特定邏輯位址與區域Z1的起始邏輯位址Z1_LBA_S之間的差距,再根據區塊之每一個資料頁所能夠儲存多少邏輯位址的資料,來決定出該特定邏輯位址所對應的該實體資料頁位址。為了方便說明,假設區塊中每一個資料頁只能儲存一個邏輯位址的資料,則該特定邏輯位址與區域Z1的起始邏輯位址Z1_LBA_S之間的差距為五百個邏輯位址,則微處理器212可以計算出該特定邏輯位址對應到區塊B3的第五百個資料頁P500的實體資料頁位址,而若是區塊B3的資料頁數量不足五百個,則由區塊B3的第一個資料頁P1開始數起第五百個資料頁以得到位於區塊B7的實體資料頁位址。
另一方面,以第7B圖的L2P映射表720來做為說明,由於L2P映射表720記錄了個區域的多個邏輯位址,且這些邏輯位址分別對應到區塊B3、B7、B8的第一個資料頁P1,因此,微處理器212可以由上述資訊來得知該特定邏輯位址是屬於哪一個區域以及哪一個區塊。接著,微處理器212根據該特定邏輯位址與區域Z1的邏輯位址(例如,Z1_LBA_S、(Z1_LBA_S+y)或(Z1_LBA_S+2y))之間的差距,再根據區塊之每一個資料頁所能夠儲存多少邏輯位址的資料,來決定出該特定邏輯位址所對應的該實體資料頁位址。為了方便說明,假設區塊中每一個資料頁只能儲存一個邏輯位址的資料,則該特定邏輯位址與區域Z1的起始邏輯位址Z1_LBA_S之間的差距為五百個邏輯位址,則微處理器212可以計算出該特定邏輯位址對應到區塊B3的第五百個資料頁P500的實體資料頁位址。
在步驟806,微處理器212根據在步驟804中所決定出的實體區塊位址及實體資料頁位址,自區域命名空間310_1中讀取對應的資料,並將所讀取的資料回傳至主裝置110。
如上所述,透過以上實施例所述的內容,快閃記憶體控制器122可以在僅建立出很小尺寸之L2P映射表700/710/720/730的情形下,仍然可以有效地完成區域命名空間310_1的資料寫入及讀取。然而在此實施例中,會有許多實體區塊的剩餘資料頁被浪費掉,例如實體區塊B8、實體區塊B6中的空白或無效資料頁,該些剩餘資料頁將會大大的降低使用者可以使用到的記憶體空間,此種方法雖然可以降低快閃記憶體控制器122在管理上的負擔,但是卻會降低使用者可以使用到的記憶體空間,甚至在某些極端的案例中,因為剩餘資料頁的比例過高,還可能導致快閃記憶體控制器122無法規劃出足夠的記憶體空間供使用者使用。
第9圖為根據本發明另一實施例之將來自主裝置110的資料寫入至區域命名空間310_1的流程圖,其中本實施例係假設每一個區域所對應到的資料量係大於快閃記憶體模組124中每一個區塊的大小,且每一個區域所對應到的資料量並非是快閃記憶體模組124中每一個區塊之大小的整數倍。在步驟900中,流程開始,主裝置110及儲存裝置120_1上電並完成初始化操作,主裝置110對儲存裝置120_1設定每個區域的大小、區域數量、邏輯區塊位址大小等基本設定,例如利用區域命名空間指令集(Zoned Namespaces Command Set)進行設定。在步驟902,主裝置110發送一寫入指令以及對應的資料至快閃記憶體控制器122,其中上述資料為對應到一或多個區域的資料,例如第4圖中區域Z3對應到邏輯位址LBA_k~LBA_(k+x-1)的資料。在步驟904中,快閃記憶體控制器122自快閃記憶體模組124中選擇至少一個區塊(空白區塊、或稱備用區塊)、或是選擇至少一個空白區塊或至少一共用區塊,並依序將來自主裝置110的資料依序寫入至這些區塊中。舉例來說,參考第10圖,假設每一個區域所對應到的資料量介於快閃記憶體模組124中兩個區塊至三個區塊之間,則快閃記憶體控制器122可以將區域Z1的資料依序寫入至區塊B3、B7以及B8中,其中區塊B3所記錄的是區域Z1的第一部分資料Z1_0、區塊B7所記錄的是區域Z1的第二部分資料Z1_1、而區塊B8所記錄的是區域Z1的第三部分資料Z1_2。在本實施例中,由於區塊B3、B7所儲存的資料完全是區域Z1的資料,而區塊B8僅有部分的資料頁儲存了區域Z1的資料,因此,為了充分利用區塊B8的剩餘資料頁,故微處理器212會將區塊B8設為共用區塊,亦即區塊B8的剩餘資料頁可以用來儲存其他區域的資料。繼續參考第10圖,快閃記憶體控制器122準備將區域Z3的資料寫入至區域命名空間310_1,而由於共用區塊B8尚有剩餘空間,故微處理器212選擇兩個空白區塊B12、B99以及共用區塊B8來儲存區域Z3的資料。具體來說,快閃記憶體控制器122將區域Z3的資料依序寫入至區塊B12、B99以及B8中,其中區塊B12所記錄的是區域Z3的第一部分資料Z3_0、區塊B99所記錄的是區域Z3的第二部分資料Z3_1、而區塊B8所記錄的是區域Z3的第三部分資料Z3_2。在本實施例中,區塊B12、B99所儲存的資料完全是區域Z3的資料,而區塊B8則會同時記錄了區域Z1的第三部分資料Z1_2以及區域Z3的第三部分資料Z3_2。請注意到,為了管理上的方便,快閃記憶體控制器122並不會將任何區域的第一筆資料儲存至共用區塊中,因為這會增加快閃記憶體控制器122在建立L2P映射表上的複雜度。快閃記憶體控制器122會把每個區域的第一筆資料儲存在專屬區塊中,例如區塊B3、B12。該些專屬區塊僅會儲存屬於同一區域的資料,故稱為專屬區塊。而任一個區域的最後一筆資料(對應於該區域最後一個邏輯位址的資料)都會儲存在共用區塊中,例如區塊B8,而該共用區塊中,也會儲存另一個區域的最後一筆資料。在此實施例中,共用區塊儲存了不只一個區域的資料,或者說共用區塊儲存了不只一個區域的最後一筆資料,而專屬區塊僅儲存單一區域的資料。
在步驟906中,快閃記憶體控制器122建立或更新一L2P映射表以紀錄邏輯位址與實體位址的映射關係,並記錄一共用區塊表,以供後續自區域命名空間310_1進行資料讀取時使用。第11A圖為根據本發明一實施例之L2P映射表1100A及共用區塊表1130A的示意圖。L2P映射表1100A包含了兩個欄位,其中一個欄位紀錄了邏輯位址、而另一個欄位則記錄了區塊的實體區塊位址。同時參考第10圖,由於區域Z1的資料依序寫入至區塊B3、B7及B8,且區域Z3的資料依序寫入至區塊B12、B99及B8,因此,L2P映射表1100A記錄了區域Z1的起始邏輯位址Z1_LBA_S及區塊B3的實體區塊位址PBA3、區域Z1的邏輯位址(Z1_LBA_S+y)及區塊B7的實體區塊位址PBA7、以及區域Z1的邏輯位址(Z1_LBA_S+2*y)及區塊B8的實體區塊位址PBA8,其中邏輯位址(Z1_LBA_S+y)可以是寫入至區塊B7之資料的第一個邏輯位址(亦即,第二部分資料Z1_1的第一個邏輯位址,且也是對應到區塊B7之第一個資料頁P1的邏輯位址),而邏輯位址(Z1_LBA_S+2*y)可以是寫入至區塊B8之資料的第一個邏輯位址(亦即,第三部分資料Z1_2的第一個邏輯位址);類似地,L2P映射表1100A記錄了區域Z3的起始邏輯位址Z3_LBA_S及區塊B12的實體區塊位址PBA12、區域Z3的邏輯位址(Z3_LBA_S+y)及區塊B99的實體區塊位址PBA99、以及區域Z6的邏輯位址(Z3_LBA_S+2*y)及區塊B6的實體區塊位址PBA6,其中邏輯位址(Z3_LBA_S+y)可以是寫入至區塊B99之資料的第一個邏輯位址(亦即,第二部分資料Z3_1的第一個邏輯位址,且也是對應到區塊B99之第一個資料頁P1的邏輯位址),而邏輯位址(Z3_LBA_S+2*y)可以是寫入至區塊B8之資料的第一個邏輯位址(亦即,第三部分資料Z3_2的第一個邏輯位址)。需注意的是,上述的“y”可以表示為一個區塊可以儲存多少筆來自主機的邏輯位址的資料。請注意到,由於主裝置110設定區域大小及區域個數之後,各個區域的起始邏輯位址就固定下來了,各個子區域的起始邏輯位址也固定下來了,例如Z1_LBA_S、Z1_LBA_S+y、Z1_LBA_S+2*y、Z2_LBA_S、Z2_LBA_S+y、Z2_LBA_S+2*y……等,因此,類似的,L2P映射表1100可以更進一步的化簡為一個欄位,即,僅有實體區塊位址欄位。而邏輯位址欄位即可利用表格的條目(entry)來代表,而無需實際儲存多個子區域的起始邏輯位址。請參考第11B圖的L2P映射表1100B,L2P映射表1100B的每個邏輯位址有固定的欄位,此及依照邏輯位址最低至最高排序(或最高至最低),例如Z0_LBA_S即代表區域0的起始邏輯位址,即系統中最低的邏輯位址,Z0_LBA_S+y即代表區域0第二個子區域的起始邏輯位址,其中y代表每個實體區塊用來存放主機資料的位址數目,Z0_LBA_S+2*y即代表區域0第三個子區域的起始邏輯位址,由於區域大小固定,y值也固定,所以第11B圖中的邏輯位址欄位中的數值具有相當高的可預測性,因此,也可省略該欄位,僅以L2P映射表1100B的條目(entry)來代表。
另外,共用區塊表1130A包含了兩個欄位,其中一個欄位紀錄了邏輯位址、而另一個欄位則記錄了邏輯位址所對應的實體區塊位址及實體資料頁位址。在第11A圖中,共用區塊表1130A記錄了區域Z1的第三部分資料Z1_2的第一個邏輯位址(Z1_LBA_S+2*y)及對應的實體區塊位址PBA8及實體資料頁位址P1,亦即第三部分資料Z1_2中對應到第一個邏輯位址的資料是寫在區塊B8的第一個資料頁P1;而共用區塊表1130A記錄了區域Z3的第三部分資料Z3_2的第一個邏輯位址(Z3_LBA_S+2*y)及對應的實體區塊位址PBA8及實體資料頁位址P120,亦即第三部分資料Z3_2中對應到第一個邏輯位址的資料是寫在區塊B8的第一百二十個資料頁P120(需注意,在此係假設區塊中每一個資料頁只能儲存一個邏輯位址的資料,實際情況可根據一個資料頁所能儲存多少個邏輯位址之資料來據以調整)。類似於第11B圖中的L2P映射表1100B,第11A圖中的共用區塊表1130A亦得以第11B圖中共用區塊表1130B的形式呈現,其理由亦同,於此不再贅述。
另外,需注意的是,區域Z1以及區域Z3的資料在寫入的過程中,其寫入過程可能並非是在區域Z1的資料全部寫完後再開始將區域Z3的資料寫入至區域命名空間310_1,換句話說,有可能在區域Z1的資料尚未寫完時,快閃記憶體控制器122便需要將開始將區域Z3的資料寫入至區域命名空間310_1。因此,在本發明的另一個實施例中,共用區塊表1130可以另外包含一個完成指標欄位,其用來指出區域的資料在共用區塊是否已完全寫入。參考第12圖所示,其中第12圖所示之共用區塊表1230係延續第10圖的實施例。在第12圖(a)中,當區域Z1的第三部分資料Z1_2全部寫入至共同區塊B8之後,微處理器212會將完成指標由‘0’修改為‘1’,而之後微處理器212需要將區域Z3的第三部分資料Z3_2寫入至區域命名空間310_1時,由於對應到共同區塊B8之區域Z1的第三部分資料Z1_2的完成指標為‘1’,則微處理器212可以判斷共同區塊B8目前可供資料寫入,故將區域Z3的第三部分資料Z3_2寫入共同區塊B8,並在共用區塊表1230中記錄第三部分資料Z3_2及對應的實體區塊位址及實體資料頁位址。另一方面,在第12圖(b)中,當區域Z1的第三部分資料Z1_2在寫入至共同區塊B8的過程中,其對應的完成指標係為‘0’(代表區域Z1的第三部分資料Z1_2尚未全部寫入至共同區塊B8),而若是此時後微處理器212需要將區域Z3的第三部分資料Z3_2寫入至區域命名空間310_1,由於對應到共同區塊B8之區域Z1的第三部分資料Z1_2的完成指標為‘0’,則微處理器212可以判斷共同區塊B8目前不可以供第三部分資料Z3_2寫入,故微處理器212另外選擇一個空白區塊(例如區塊B15),並將區域Z3的第三部分資料Z3_2寫入至區塊B15中,並在共用區塊表1230中記錄三部分資料Z3_2及對應的實體區塊位址PBA15及實體資料頁位址P1。請注意到,第12圖中的共用區塊表1230亦得以類似第11B圖中的共用區塊表1130B的形式再追加完成指標欄位的形式呈現,以固定的邏輯位址位置取代邏輯位址欄位,其理由和L2P映射表1100B與共用區塊表1130B相同,於此不再贅述。
在一實施例中,若主裝置110欲重置(reset)一個區域,例如重置區域Z1,快閃記憶體控制器122通常會修改L2P映射表1100A/1100B將與區域Z1相對應的實體區塊位址的欄位給刪除掉,例如刪除L2P映射表1100A/1100B中的實體區塊位址PBA3、PBA7及PBA8,代表主機已經不再需要該些實體區塊所儲存的資料。而快閃記憶體控制器122可稍後再將該些實體區塊給抹除,請注意到,實體區塊B8中儲存了主裝置110欲儲存的資料以及以及區域Z3的資料,雖然主裝置110所欲重置的區域Z1並不包含區域Z3的資料。為了管理上的方便,快閃記憶體控制器122在收到主裝置110針對區域Z1的重置指令後,仍需修改共同區塊表1130A/1130B/1230中的實體區塊位址及實體資料頁位址,將PBA8、P1 給刪除掉,例如改寫為FFFF。請注意到,共同區塊表1230中的完成指標仍舊維持為1,因為區域Z1的第三部分仍舊Z1_3佔用了於實體區塊B8中的部分空間,在實體區塊B8被抹除之前,該些空間無法再被寫入。並且,快閃記憶體控制器122在抹除實體區塊B8之前,也可以不必將主裝置110發出的重置指令中所沒有包含到的有效資料(例如區域Z3的資料)給搬移到其他實體區塊去。
在以上的實施例中,由於使用了共同區塊來儲存對應到不同區域的資料,故可視為邏輯位址屬於不同區域的資料可以被儲存在相同的實體區塊中,故可以有效地利用實體區塊的空間,避免因為區域大小與實體區塊大小的不齊致而導致當一區域所對應的邏輯位址已經完全寫入時,仍無法填滿整數個實體區塊的空間,而導致實體區塊中剩餘的資料頁沒有存入資料造成浪費。
需注意的是,本實施例的L2P映射表1100A/1100B僅包含了區域命名空間310_1的實體區塊位址,而不會包含任何的資料頁位址,亦即L2P映射表1100A/1100B不會記錄任何區塊內的資料頁序號或相關的資料頁資訊。此外,共同區塊表1130A/1130B/1230也只會記錄少量的邏輯位址,甚至因為共同區塊表1130A/1130B/1230的邏輯位址係極度規律,亦可省略邏輯位址欄位,而僅用表格的條目(entry)來代表。因此,L2P映射表1100A/1100B及共同區塊表1130A/1130B/1230本身僅具有很小的資料量,故L2P映射表1100A/1100B及共同區塊表1130A/1130B/1230可以常駐在緩衝記憶體216或是DRAM 240,而不會對緩衝記憶體216或DRAM 240的儲存空間造成太大的負擔。
此外,由於L2P映射表1100A/1100B的(Z1_LBA_S+2*y)、(Z3_LBA_S+2*y)……等該區域中最後一部分的欄位所對應到的實體區塊位址並非精確的實體位址,微處理器212需要再透過查找共同區塊表1130A/1130B/1230來找到正確的實體頁位址,因此,也可將L2P映射表1100A/1100B的(Z1_LBA_S+2*y) 、(Z3_LBA_S+2*y)……等該區域中最後一部分的欄位所對應的實體位址例如PBA8直接改成共同區塊表1130A/1130B/1230相對應的條目位址,讓微處理器212直接存取共同區塊表1130A/1130B/1230相對應的條目位址。例如將L2P映射表1100A/1100B的(Z1_LBA_S+2*y)欄位對應的PBA8直接改成共同區塊表1130A/1130B中(Z1_LBA_S+2*y)欄位所對應的記憶體位址,將L2P映射表1100A/1100B的(Z3_LBA_S+2*y)欄位對應的PBA8直接改成共同區塊表1130A/1130B中(Z3_LBA_S+2*y)欄位所對應的記憶體位址(例如在DRAM或是SRAM中的位址),加速查找速度。
第13圖為根據本發明一實施例之自區域命名空間310_1讀取資料的流程圖,其中本實施例係假設區域命名空間310_1已經儲存了第10圖所示之區域Z1及Z3的資料。在步驟1300中,流程開始,主裝置110及儲存裝置120_1上電並完成初始化操作(例如,開機程序)。在步驟1302,主裝置110發送一讀入指令以要求讀取具有一特定邏輯位址的資料。在步驟1304,快閃記憶體控制器122中的微處理器212判斷出該特定邏輯位址是屬於哪一個區域,並根據L2P映射表1100A/1100B及/或共同區塊表1130A/1130B/1230所記錄的邏輯位址來計算出該特定邏輯位址所對應的一實體資料頁位址。以第11A圖的L2P映射表1100A來做為說明,由於L2P映射表1100A記錄了多個區域的多個邏輯位址,且這些邏輯位址分別對應到區塊B3、B7、B8的第幾個資料頁,再加上每一個區塊可以儲存之邏輯位址的數量為已知,因此,微處理器212可以由上述資訊來得知該特定邏輯位址是屬於哪一個區域以及哪一個區塊。接著,假設該特定邏輯位址是屬於區域Z1,則微處理器212根據該特定邏輯位址與區域Z1的邏輯位址(例如,Z1_LBA_S、(Z1_LBA_S+y)或(Z1_LBA_S+2y))之間的差距,再根據區塊之每一個資料頁所能夠儲存多少邏輯位址的資料,來決定出該特定邏輯位址所對應的該實體資料頁位址。為了方便說明,假設區塊中每一個資料頁只能儲存一個邏輯位址的資料,則該特定邏輯位址與區域Z1的起始邏輯位址Z1_LBA_S之間的差距為五百個邏輯位址,且該特定邏輯位址介於Z1_LBA_S與(Z1_LBA_S+y)之間(其中y代表每個實體區塊用來存放主機資料的位址數目,而在此例中y>500),則微處理器212可以計算出該特定邏輯位址對應到區塊B3的第五百個資料頁P500的實體資料頁位址,在此例中,微處理器212將差距500除以y,得到商為0,餘數500,則微處理器212可以得知特定邏輯位址所對應的實體區塊位址應在L2P映射表1100A的第一個條目,查找後,微處理器212發現特定邏輯位址所對應的實體區塊位址為實體區塊位址為PBA3。而由於餘數為500,微處理器212可以得知特定邏輯位址所對應的實體頁位址係P500,請注意到除了以實體頁為單位之外,亦得以更小的讀取單位定址,例如扇區(sector)或是4Kbyte等其他符合NVMe規範的定址單位;另一方面,假設該特定邏輯位址是屬於區域Z3,則微處理器212根據該特定邏輯位址與區域Z3的邏輯位址(例如,Z3_LBA_S、(Z3_LBA_S+y)或(Z3_LBA_S+2y))之間的差距,再根據區塊之每一個資料頁所能夠儲存多少邏輯位址的資料,來決定出該特定邏輯位址所對應的該實體資料頁位址。為了方便說明,假設區塊中每一個資料頁只能儲存一個邏輯位址的資料,該特定邏輯位址大於(Z3_LBA_S+2y)並小於或等於區域Z3之最大邏輯位址,且該特定邏輯位址與區域Z3之邏輯位址(Z3_LBA_S+2y)之間的差距為八十個邏輯位址,則微處理器212可以參考共用區塊表1130所記錄之區域Z3之第三部分資料Z3_2所對應的實體資料頁位址P120,並據以計算出該特定邏輯位址對應到共用區塊B8的第兩百個資料頁P200的實體資料頁位址。
在步驟1306,微處理器212根據在步驟1304中所決定出的實體區塊位址及實體資料頁位址,自區域命名空間310_1中讀取對應的資料,並將所讀取的資料回傳至主裝置110。
如上所述,透過以上實施例所述的內容,快閃記憶體控制器122可以在僅建立出很小尺寸之L2P映射表1100A/1100B及共同資料表1130A/1130B/1230,仍然可以有效地完成區域命名空間310_1的資料寫入及讀取。
在以上第5~13圖的實施例中係假設每一個區域所對應到的資料量大於快閃記憶體模組124中每一個區塊的大小,然而,主裝置110亦可將每一個區域所對應到的資料量低於快閃記憶體模組124中每一個區塊的大小,其相關的存取方式如下所述。
第14圖為根據本發明另一實施例之將來自主裝置110的資料寫入至區域命名空間310_1的流程圖,其中本實施例係假設每一個區域所對應到的資料量係小於快閃記憶體模組124中每一個區塊的大小。在步驟1400中,流程開始,主裝置110及儲存裝置120_1上電並完成初始化操作,主裝置110對儲存裝置120_1設定每個區域的大小、區域數量、邏輯區塊位址大小等基本設定,例如利用區域命名空間指令集(Zoned Namespaces Command Set)進行設定。在步驟1402,主裝置110發送一寫入指令以及對應的資料至快閃記憶體控制器122,其中上述資料為對應到一或多個區域的資料,例如第4圖中區域Z3之對應到邏輯位址LBA_k~LBA_(k+x-1)的資料。在步驟1404中,快閃記憶體控制器122自區域命名空間310_1中選擇至少一個區塊(空白區塊、或稱備用區塊),並依邏輯位址順序將來自主裝置110的資料依序寫入至該至少一個區塊中。在本實施例中,一個區塊只會用來寫入單一個區域的資料,以第15圖為例,快閃記憶體控制器122將區域Z0的資料寫入至區塊B20、將區域Z1的資料寫入至區塊B30、將區域Z2的資料寫入至區塊B35、…以此類推。在步驟1406中,當每一個區域的資料完全寫入之後,快閃記憶體控制器122會將每一個區塊中系統控制用以外的剩餘資料頁寫入無效資料,或是直接將剩餘資料頁維持空白狀態。以第15圖為例,在快閃記憶體控制器122將區域Z0的資料全部寫入至區塊B20後區塊會將B20的剩餘資料頁維持空白或是填入無效資料,在快閃記憶體控制器122將區域Z1的資料全部寫入至區塊B30後會將區塊B30的剩餘資料頁維持空白或是填入無效資料、且在快閃記憶體控制器122將區域Z2的資料全部寫入至區塊B35後會將區塊B35的剩餘資料頁維持空白或是填入無效資料。
請注意到,在一實施例中,主裝置110係針對區域Z0、Z1、Z2連續的邏輯位址發送寫入指令,而快閃記憶體控制器122選擇了區塊B20、B30、B35用以儲存屬於區域Z0、Z1、Z2的資料。由於裝置110所設定的區域大小與實體區塊的大小並不齊致,主裝置110所欲寫入的資料仍無法填滿實體區塊的儲存空間,例如無法填滿實體區塊B20用來儲存主機資料的儲存空間,因此快閃記憶體控制器122仍舊要將實體區塊B20內該些儲存空間留白或是填入無效資料,所以儘管主裝置110針對區域Z0、Z1內連續的邏輯位址發送寫入指令,而且在實體區塊B20仍有空間儲存資料的狀況下,快閃記憶體控制器122仍舊不會將區域Z1的起始邏輯位址所對應的資料儲存在實體區塊B20之中,換言之,即便主裝置110發送了連續邏輯位址的寫入命令(例如包含了區域Z0的最後一個邏輯位址與區域Z1的第一個邏輯位址的寫入命令),且某一特定實體區塊(例如實體區塊B20)有足夠的空間儲存該些連續邏輯位址的資料,快閃記憶體控制器122仍舊不會將該些連續邏輯位址所對應的資料連續地儲存在該特定實體區塊中,而是跳躍性的將區域Z1的第一個邏輯位址所對應的資料寫入另一個實體區塊,例如區塊B30中。相應地,主裝置110若針對區域Z0、Z1內連續的邏輯位址發送讀取指令(例如包含了區域Z0的最後一個邏輯位址與區域Z1的第一個邏輯位址的讀取命令),快閃記憶體控制器122在讀取儲存在實體區塊B20中對應區域Z1的最後一個邏輯位址的資料之後,也會跳躍性地去讀取區塊B30的第一個儲存位置,以取得區域Z1的第一個邏輯位址的資料。
在步驟1408中,快閃記憶體控制器122建立或更新一L2P映射表以紀錄邏輯位址與實體位址的映射關係,以供後續自區域命名空間310_1進行資料讀取時使用。第16圖為根據本發明一實施例之L2P映射表1600的示意圖。L2P映射表1600包含了兩個欄位,其中一個欄位紀錄了區域編號或是相關可辨識的內容、而另一個欄位則記錄了區塊的實體區塊位址。同時參考第6圖,由於區域Z0、Z1、Z2的資料分別寫入至區塊B20、B30、B35,因此,L2P映射表1600記錄了區域Z0及區塊B20的實體區塊位址PBA20、區域Z1及區塊B30的實體區塊位址PBA30、以及區域Z2及區塊B35的實體區塊位址PBA35。在另一實施例中,上述的區域編號以區域的起始邏輯位址來表示、或是區塊編號可以透過另外的查找表來連結到區塊的起始邏輯位址,舉例來說,假設區域Z0係用來儲存具有邏輯位址LBA_1~LBA_2000的資料、區域Z1係用來儲存具有邏輯位址LBA_2001~LBA_4000的資料、區域Z2係用來儲存具有邏輯位址LBA_4001~LBA_6000的資料,則區域Z0、Z1、Z2的起始邏輯位址即分別是LBA_1、LBA_2001、LBA_4001。請注意到,在此實施例中,每個實體區塊均只對應到一個區域,例如區塊B20、B30及B35只分別對應到區域Z0、Z1、Z2。或者說,單一區塊只儲存單一個區域的資料,例如區塊B20只儲存區域Z0所對應的資料,區塊B30只儲存區域Z1所對應的資料,區塊B35只儲存區域Z2所對應的資料。
在以上的實施例中,區域命名空間310_1內的任何一個實體區塊所儲存的資料都一定是屬於相同的區域,亦即,任何一個實體區塊內所儲存的所有資料的邏輯位址會屬於同一個區域。因此,本實施例的L2P映射表1600可以僅包含了區域命名空間310_1的實體區塊位址,而不會包含任何的資料頁位址,亦即L2P映射表1600不會記錄任何區塊內的資料頁序號或相關的資料頁資訊。此外,L2P映射表1600也僅會記錄每一個區域的區域編號或是起始邏輯位址,因此,L2P映射表1600本身僅具有很小的資料量,故2P映射表1600可以常駐在緩衝記憶體216或是DRAM 240,而不會對緩衝記憶體216或DRAM 240的儲存空間造成太大的負擔。在一實施例中,上述L2P映射表1600中所記錄的實體區塊位址可以另外搭配第一個資料頁的實體資料頁位址,而額外增加一個實體資料頁位址在實務上不會對儲存空間造成太大的負擔。請注意到,由於主裝置110設定區域大小及區域個數之後,各個區域的起始邏輯位址就固定下來了,因此,類似的,L2P映射表1600可以更進一步的化簡為一個欄位,即,僅有實體區塊位址欄位。而邏輯位址欄位即可利用表格的條目(entry)來代表,而無需實際儲存多個區域的起始邏輯位址。
除此之外,若主裝置110欲重置(reset)一個區域,例如重置區域Z1,快閃記憶體控制器122通常會修改L2P映射表1600將與區域Z1相對應的實體區塊位址的欄位給刪除掉,例如刪除L2P映射表1600中的實體區塊位址PBA30,代表主機已經不再需要該些實體區塊所儲存的資料。而快閃記憶體控制器122可稍後再將該些實體區塊給抹除,請注意到,實體區塊B30中儲存了主裝置110欲儲存的資料以及無效資料,雖然主裝置110所欲重置的區域Z1並不包含該些無效資料。為了管理上的方便,快閃記憶體控制器122在收到主裝置110針對區域Z1的重置指令後,仍會整體性地刪除L2P映射表1600中的實體區塊位址PBA30,即便主裝置110所欲重置的區域Z1並不包含實體區塊B30中所儲存的該些無效資料。並且,快閃記憶體控制器122在抹除實體區塊B30之前,也不會將主裝置110發出的重置指令中所沒有包含到的無效資料給搬移到其他實體區塊去,而是將整個實體區塊直接刪除。
第17圖為根據本發明另一實施例之自區域命名空間310_1讀取資料的流程圖,其中本實施例係假設區域命名空間310_1已經儲存了第15圖所示之區域Z0、Z1及Z2的資料。在步驟1700中,流程開始,主裝置110及儲存裝置120_1上電並完成初始化操作(例如,開機程序)。在步驟1702,主裝置110發送一讀入指令以要求讀取具有一特定邏輯位址的資料。在步驟1704,快閃記憶體控制器122中的微處理器212判斷出該特定邏輯位址是屬於哪一個區域,並根據L2P映射表1600所記錄的邏輯位址來計算出該特定邏輯位址所對應的一實體資料頁位址。以第16圖的L2P映射表1600來做為說明,由於L2P映射表1600記錄了每個區域的區域編號或起始邏輯位址,再加上每一個區域之邏輯位址的數量為已知,因此,微處理器212可以由上述資訊來得知該特定邏輯位址是屬於哪一個區域,舉例來說,一個區域包含2000個邏輯位址,微處理器212將主機所欲存取的邏輯位址(特定邏輯位址)除以2000,所得到的商,即為該特定邏輯位址所在的區域,以第15、16圖的實施例來做說明,假設微處理器212將該特定邏輯位址除以2000後,發現商為1,即可判斷該特定邏輯位址屬於區域Z1,則微處理器212根據該特定邏輯位址與區域Z1的起始邏輯位址之間的差距(該差距亦為該微處理器212將該特定邏輯位址除以2000後之餘數),再根據區塊之每一個資料頁所能夠儲存多少邏輯位址的資料,來決定出該特定邏輯位址所對應的該實體資料頁位址。為了方便說明,假設區塊中每一個資料頁只能儲存一個邏輯位址的資料,且該特定邏輯位址與區域Z1的起始邏輯位址之間的差距為兩百個邏輯位址,則微處理器212可以計算出該特定邏輯位址對應到區塊B20的第兩百個資料頁的實體資料頁位址。
在步驟1706,微處理器212根據在步驟1704中所決定出的實體區塊位址及實體資料頁位址,自區域命名空間310_1中讀取對應的資料,並將所讀取的資料回傳至主裝置110。
如上所述,透過以上實施例所述的內容,快閃記憶體控制器122可以在僅建立出很小尺寸之L2P映射表700/720的情形下,仍然可以有效地完成區域命名空間310_1的資料寫入及讀取。然而,在此實施例中,仍會有大量的實體區塊儲存空間被浪費掉,例如第15圖中所示之空白或無效資料頁。
第18圖為根據本發明另一實施例之將來自主裝置110的資料寫入至區域命名空間310_1的流程圖,其中本實施例係假設每一個區域所對應到的資料量係小於快閃記憶體模組124中每一個區塊的大小。在步驟1800中,流程開始,主裝置110及儲存裝置120_1上電並完成初始化操作,主裝置110對儲存裝置120_1設定每個區域的大小、區域數量、邏輯區塊位址大小等基本設定,例如利用區域命名空間指令集(Zoned Namespaces Command Set)進行設定。在步驟1802,主裝置110發送一寫入指令以及對應的資料至快閃記憶體控制器122,其中上述資料為對應到一或多個區域的資料,例如第4圖中區域Z3之對應到邏輯位址LBA_k~LBA_(k+x-1)的資料。在步驟1804中,快閃記憶體控制器122自區域命名空間310_1中選擇至少一個區塊(空白區塊、或稱備用區塊)、或是選擇多個空白區塊與一共用區塊,並依一個區域內的邏輯位址順序將來自主裝置110的資料依序寫入至這些區塊中。舉例來說,參考第19圖,快閃記憶體控制器122可以依邏輯位址順序將區域Z0、Z2、Z1的資料依序寫入至區塊B20、B30中。以第19圖為例,區域Z0的第一筆資料係由區塊B20的第一個資料頁開始寫入,且在區域Z0的資料都寫入完成之後,請參考第20圖的L2P映射表2000,該表將於下詳述之,快閃記憶體控制器122將區域編號Z0所對應的可用指標從0改成1,代表區域編號Z0的資料都寫入完成,區域編號Z0所儲存之實體區塊PBA20所剩餘的空間可以再被拿來儲存其他資料。因為實體區塊PBA20所剩餘的空間可以再被拿來儲存其他資料,所以區域Z2的資料也可以接著寫入至區塊B20的剩餘資料頁,倘若快閃記憶體控制器122在處理區域Z2的寫入指令時,找不到任何一個實體區塊其所對應的可用指標為1,則快閃記憶體控制器122應該要提取一個空白區塊或者備用區塊用以寫入區域Z2的資料。
在此例中,由於實體區塊PBA20所對應的可用指標為1,所以快閃記憶體控制器122可以直接利用實體區塊PBA20儲存區域Z2的資料而無需提取另一個空白區塊或是備用區塊。而由於區塊B20的剩餘資料頁的數量並不足以儲存區域Z2的所有資料,因此,區域Z2的資料被分為第一部分Z2_1以及第二部分Z2_2,其中第一部分Z2_1儲存在區塊B20,而第二部分Z2_2則由快閃記憶體控制器122提取另一個空白區塊,區塊B30,並由區塊B30的第一個資料頁開始寫入。由於在將Z2第一部分Z2_1寫滿區塊B20的剩餘資料頁之後,實體區塊PBA20已滿,無法再寫入資料,因此快閃記憶體控制器122會將區域Z0所對應的可用指標改為0,且讓區域Z2_1所對應的可用指標維持為0。在區域Z2的第二部分Z2_2都寫入完成之後,快閃記憶體控制器122將區域編號Z2_2所對應的可用指標從0改成1,類似地,區域Z1的資料也接著開始寫入至區塊B30的剩餘資料頁。
在步驟1806中,快閃記憶體控制器122建立或更新一L2P映射表以紀錄邏輯位址與實體位址的映射關係,以供後續自區域命名空間310_1進行資料讀取時使用。第20圖為根據本發明一實施例之L2P映射表2000的示意圖。L2P映射表2000包含了兩個欄位,其中一個欄位紀錄了區塊編號或邏輯位址區間、而另一個欄位則記錄了該邏輯位址區間之第一個邏輯位址所對應的實體區塊位址及實體資料頁位址。在第20圖中,L2P映射表2000記錄了區域Z0或區域Z0的邏輯位址區間之第一個邏輯位址,以及對應的實體區塊位址PBA20及實體資料頁位址P1、區域Z2之第一部份Z2_1的邏輯位址區間及該區間第一個邏輯位址所對應的實體區塊位址PBA20及實體資料頁位址Pa、區域Z2之第二部份Z2_2的邏輯位址區間及該區間第一個邏輯位址所對應的實體區塊位址PBA30及實體資料頁位址P1、及區域Z1或區域Z1的邏輯位址區間及該區間第一個邏輯位址所對應的實體區塊位址PBA30及實體資料頁位址Pb。請注意到,在此例中,一個寫滿資料的實體區塊均儲存了複數個區域的資料。
另外,需注意的是,區域Z0、Z2、以及區域Z1的資料在寫入的過程中,其寫入過程可能並非是在區域Z0的資料全部寫完後再開始將區域Z1的資料寫入至區域命名空間310_1,換句話說,有可能在區域Z0的資料尚未寫完時,快閃記憶體控制器122便需要將開始將區域Z1的資料寫入至區域命名空間310_1。因此,如上所述,在本發明的另一個實施例中,L2P映射表2000可以另外包含一個可用指標欄位,其用來指出區域的資料在共用區塊是否已完全寫入。
在以上的實施例中,由於L2P映射表2000儲存了對應到不同區域的資料在區塊內的位址關係,故可視為邏輯位址屬於不同區域的資料可以被儲存在相同的實體區塊中,故可以有效地利用實體區塊的空間。
需注意的是,本實施例的L2P映射表2000只會記錄少量的邏輯位址(少量的實體資料頁位址),因此L2P映射表2000本身僅具有很小的資料量,故L2P映射表2000可以常駐在緩衝記憶體216或是DRAM 240,而不會對緩衝記憶體216或DRAM 240的儲存空間造成太大的負擔。
第21圖為根據本發明一實施例之自區域命名空間310_1讀取資料的流程圖,其中本實施例係假設區域命名空間310_1已經儲存了第19圖所示之區域Z1、Z1及Z2的資料。在步驟2100中,流程開始,主裝置110及儲存裝置120_1上電並完成初始化操作(例如,開機程序)。在步驟2102,主裝置110發送一讀入指令以要求讀取具有一特定邏輯位址的資料。在步驟2104,快閃記憶體控制器122中的微處理器212判斷出該特定邏輯位址是屬於哪一個區域,並根據L2P映射表2000所記錄的區域編號或邏輯位址來計算出該特定邏輯位址所對應的一實體資料頁位址。以第20圖的L2P映射表2000來做為說明,由於L2P映射表2000記錄了個區域的區塊編號或邏輯位址區間,再加上每一個區塊可以儲存之邏輯位址的數量為已知,因此,微處理器212可以由上述資訊來得知該特定邏輯位址是屬於哪一個區域以及哪一個區塊。接著,假設該特定邏輯位址是屬於區域Z0,則微處理器212根據該特定邏輯位址與區域Z0的起始邏輯位址之間的差距,再根據區塊之每一個資料頁所能夠儲存多少邏輯位址的資料,來決定出該特定邏輯位址所對應的該實體資料頁位址。
在步驟2106,微處理器212根據在步驟2104中所決定出的實體區塊位址及實體資料頁位址,自區域命名空間310_1中讀取對應的資料,並將所讀取的資料回傳至主裝置110。
如上所述,透過以上實施例所述的內容,快閃記憶體控制器122可以在僅建立出很小尺寸之L2P映射表2000的情形下,仍然可以有效地完成區域命名空間310_1的資料寫入及讀取。
參考以上第5~21圖所示的實施例,第5~7圖描述了每一個區域所對應到的資料量大於快閃記憶體模組124中每一個區塊的大小,且快閃記憶體模組124中的每一個區塊僅會儲存對應到單一個區域的資料,亦即不同區域的資料不會寫入至相同的實體區塊中。第8~12圖描述了每一個區域所對應到的資料量大於快閃記憶體模組124中每一個區塊的大小,且快閃記憶體模組124中有部分的區塊會儲存對應到多個區域的資料,亦即不同區域的資料可以寫入至相同的實體區塊中。第13~17圖描述了每一個區域所對應到的資料量小於快閃記憶體模組124中每一個區塊的大小,且快閃記憶體模組124中的每一個區塊僅會儲存對應到單一個區域的資料,亦即不同區域的資料不會寫入至相同的實體區塊中。第18~21圖描述了每一個區域所對應到的資料量小於快閃記憶體模組124中每一個區塊的大小,且快閃記憶體模組124中的區塊會儲存對應到多個區域的資料,亦即不同區域的資料可以寫入至相同的實體區塊中。
在一實施例中,上述四種存取模式可以選擇性地被應用在快閃記憶體模組124的區域命名空間中,且若是快閃記憶體模組124具有多個區域命名空間,這些區域命名空間也可以採用不同的存取模式。具體來說,參考第3圖所示,快閃記憶體控制器122內的微處理器212可以根據區域命名空間310_1之每一個區域的大小來選擇所採用的存取模式,舉例來說,若是區域命名空間310_1之每一個區域所對應到的資料量大於快閃記憶體模組124中每一個區塊的大小,微處理器212可以採用第5~7圖所提到之存取模式或是第8~12圖所提到之存取模式來對區域命名空間310_1進行存取;若是區域命名空間310_2之每一個區域所對應到的資料量小於快閃記憶體模組124中每一個區塊的大小,微處理器212可以採用第13~17圖所提到之存取模式或是第18~21圖所提到之存取模式來對區域命名空間310_2進行存取。同樣地,快閃記憶體控制器122內的微處理器212可以根據區域命名空間310_2之每一個區域的大小來選擇所採用的存取模式,而區域命名空間310_2所採用之存取模式並非一定要與區域命名空間310_1相同,例如區域命名空間310_1可以採用第5~7圖所提到之存取模式、而區域命名空間310_2則可以採用第8~12圖所提到之存取模式。
請注意到,由於快閃記憶體控制器122無法事先得知主裝置110所欲設定的區域大小,如果為了讓快閃記憶體控制器122能夠與所有符合規範的主裝置互相搭配,快閃記憶體控制器122必須要有能力執行第5~21圖所示的實施例的所有存取方式。舉例來說,快閃記憶體控制器122在得知快閃記憶體模組124的單一實體區塊大小(或是超級區塊大小,超級區塊之概念將於下詳述)以及主裝置110所設定的區域大小之後,可以依照實體區塊大小及區域大小規劃出主裝置實際可以使用的記憶體空間,並選擇應當依照上述四種存取模式中哪一種方式進行存取。
倘若區域大小小於實體區塊大小,則快閃記憶體控制器122得選擇第13~21圖的方式進行存取。由於第13~17圖所提到之存取模式可能會浪費較多的記憶體空間,甚至可能會導致快閃記憶體控制器122無法規劃出足夠的記憶體空間給主機使用,例如,依此存取模式,快閃記憶體控制器122僅能將總容量2TB的快閃記憶體模組規劃出1.2TB的容量供主裝置110使用,而主裝置可能期待至少需要1.5TB的容量可以使用,則快閃記憶體控制器122需要改變其存取模式。例如快閃記憶體控制器122可以改成第18~21圖的方式進行存取,由於依此種存取模式,將會大大減少快閃記憶體空間的浪費,因此快閃記憶體控制器122可以規劃出較多的容量供主裝置110使用,例如快閃記憶體控制器122可將總容量2TB的快閃記憶體模組規劃出1.8TB的容量供主裝置110使用,如此一來則可滿足主裝置110對記憶體儲存空間的使用需求。換句話說,上述主裝置110可能期待的容量可以視為一標準,而當區域命名空間在採用第13~17圖的存取方式時所規劃的容量高於主裝置110的該標準時,則快閃記憶體控制器122可以選擇第13~17圖的存取方式;另外,若是區域命名空間在採用第13~17圖的存取方式時所規劃的容量低於主裝置110的該標準時,則快閃記憶體控制器122可以選擇第18~21圖的存取方式。
倘若區域大小大於實體區塊大小,則快閃記憶體控制器122得選擇第5~12圖的方式進行存取。由於第5~7圖所提到之存取模式可能會浪費較多的記憶體空間,甚至可能會導致快閃記憶體控制器122無法規劃出足夠的記憶體空間給主機使用,例如,依此存取模式,快閃記憶體控制器122僅能將總容量2TB的快閃記憶體模組規劃出1.2TB的容量供主裝置110使用,而主裝置可能期待至少需要1.5TB的容量可以使用,則快閃記憶體控制器122需要改變其存取模式。例如快閃記憶體控制器122可以改成第8~12圖的方式進行存取,由於依此種存取模式,將會大大減少快閃記憶體空間的浪費,因此快閃記憶體控制器122可以規劃出較多的容量供主裝置110使用,例如快閃記憶體控制器122可將總容量2TB的快閃記憶體模組規劃出1.8TB的容量供主裝置110使用,如此一來則可滿足主裝置110對記憶體儲存空間的使用需求。換句話說,上述主裝置110可能期待的容量可以視為一標準,而當區域命名空間在採用第5~7圖的存取方式時所規劃的容量高於主裝置110的該標準時,則快閃記憶體控制器122可以選擇第5~7圖的存取方式;另外,若是區域命名空間在採用第5~7圖的存取方式時所規劃的容量低於主裝置110的該標準時,則快閃記憶體控制器122可以選擇第8~12圖的存取方式。
第25圖為根據本發明一實施例之應用於一快閃記憶體控制器的控制方法的流程圖。參考以上實施例所述的內容,控制方法的流程如下所述:
步驟2500:流程開始。
步驟2502:接收來自一主裝置的設定指令,其中該設定指令係將快閃記憶體模組的至少一部份設定為一區域命名空間,其中該區域命名空間係邏輯性地包含多個區域,該主裝置對於該區域命名空間的資料寫入存取必須要以區域為單位來進行,每一個區域的大小都是相同的,每一個區域內所對應到的邏輯位址必須要是連續的,且區域之間不會有重疊的邏輯位址。
步驟2504:利用一第一存取模式、一第二存取模式、一第三存取模式及一第四存取模式中的其一,以將來自該主裝置的資料寫入至該快閃記憶體模組中,其中該資料為一特定區域的所有資料。
步驟2506:若是利用該第一存取模式,根據該資料之邏輯位址的順序,以依序將該資料寫入至該快閃記憶體模組的多個特定區塊中。
步驟2508:當該資料完成寫入之後,將該多個特定區塊之最後一個特定區塊的剩餘資料頁寫入無效資料、或是將剩餘資料頁維持空白而不寫入任何資料。
步驟2510:若是利用該第二存取模式,根據該資料之邏輯位址的順序,以依序將該資料寫入至該快閃記憶體模組的該多個特定區塊中。
步驟2512:當該資料完成寫入之後,使用一完成指標以將該多個特定區塊之最後一個特定區塊標註為寫入完成。
步驟2514:若是利用該第三存取模式,根據該資料之邏輯位址的順序,以依序將該資料寫入至該快閃記憶體模組的單一個特定區塊中。
步驟2516:當該資料完成寫入之後,將該特定區塊的剩餘資料頁寫入無效資料、或是將剩餘資料頁維持空白而不寫入任何資料。
步驟2518:若是利用該第四存取模式,根據該資料之邏輯位址的順序,以依序將該資料寫入至該快閃記憶體模組的單一個個特定區塊中。
步驟2520:當該資料完成寫入之後,使用一完成指標以將該特定區塊標註為寫入完成。
請注意到,在另一實施例中,為了讓控制器122的設計更簡單,控制器122也可以僅支援以上四種存取模式中單一種存取模式,或是控制器122也可以僅支援以上四種存取模式中兩種存取模式,或是控制器122也可以僅支援以上四種存取模式中三種存取模式,得依照特定的快閃記憶體模組及主裝置進行設計。
此外,在本發明之一實施例中,儲存裝置120_1可以是一安全數位卡(Secure Digital Memory Card),其支援傳統安全數位模式的資料傳輸,亦即採用UHS-I輸入/輸出通訊介面標準來與主裝置110進行通訊,且也支援同時支援PCIe通道與NVMe協定的PCIe模式。
在快閃記憶體模組124的實作上,快閃記憶體控制器122會將快閃記憶體模組124內部之屬於不同資料面(plane)的區塊組態為一個超級區塊,以方便在資料存取上的管理。具體來說,參考第22圖所示之快閃記憶體模組124之一般儲存空間320_1的示意圖。如第22圖所示,一般儲存空間320_1包含兩個通道(channel),通道1及通道2,分別連接了多個快閃記憶體晶片(chip)2210、2220、2230、2240,其中快閃記憶體晶片2210包含了兩個資料面(plane)2212、2214,快閃記憶體晶片2220包含了兩個資料面2222、2224,快閃記憶體晶片2230包含了兩個資料面2232、2234,快閃記憶體晶片2240包含了兩個資料面2242、2244,且每一個資料面均包含了多個區塊B0~BN。快閃記憶體控制器122在組態或初始化一般儲存空間320_1的過程中,會將每一個資料面的第一個區塊B0組態為一超級區塊2261、每一個資料面的第二個區塊B1組態為一超級區塊2262、…、以此類推。如第22圖所示,超級區塊2261包含了八個實體區塊,而快閃記憶體控制器122在存取超級區塊2261時則類似於一般區塊,舉例來說,超級區塊2261本身即是一個抹除單位,亦即超級區塊2261的之八個區塊B0雖然可以分開進行抹除操作,但是快閃記憶體控制器122卻一定會將八個區塊B0一起進行抹除;此外,超級區塊2261在進行資料寫入時可依序由資料面2212的第一個資料頁、資料面2214的第一個資料頁、資料面2222的第一個資料頁、資料面2224的第一個資料頁進行資料寫入,而直到資料面2244的第一個資料頁完成資料寫入之後,再將資料依序寫入至由2212的第二個資料頁、資料面2214的第二個資料頁、…、以此類推,換言之,快閃記憶體控制器122會將超級區塊2261中每個區塊B0的第一個資料頁寫滿後,才接著寫超級區塊2261中每個區塊B0的第二個資料頁。超級區塊係快閃記憶體控制器122為了方便管理儲存空間320_1而在邏輯上設定之一集合區塊,並非物理上之集合區塊。此外,在進行垃圾收集、計算區塊有效頁、計算區塊寫入時間長短時,也都可以超級區塊為單位來進行計算。在本發明的教導之下,熟悉此項技藝者,當可搭配第5~21圖所示的實施例,理解在第5~21圖所示的實施例所提到之一實體區塊,也可以是一超級區塊,所有的相關的實施例均可利用超級區塊來實現,而非侷限於單一個實體區塊。
然而,在快閃記憶體控制器122將快閃記憶體模組124內的區塊組態為超級區塊的情形下,若是採用第5~8圖的實施例來進行資料存取,則很有可能會造成每一個區塊都有很多剩餘資料頁(空白資料頁)的情形,因而浪費快閃記憶體模組124的內部空間。舉例來說,假設主裝置110所規劃之區域之資料量大小約為六個實體區塊的大小,則包含八個區塊的超級區塊2261所儲存的資料量僅會有六個實體區塊大小的資料量,亦即超級區塊2261中約有兩個區塊的儲存空間便因為要維持空白或是要寫入無效資料而浪費了。因此,本發明一實施例提出了一種根據主裝置110所設定之區域的資料量來組態區域命名空間310_1的方法,以有效率地使用區域命名空間310_1。
第23圖為根據本發明一實施例之組態快閃記憶體模組124的方法的流程圖。在步驟2300中,流程開始,且主裝置110、快閃記憶體控制器122與快閃記憶體模組124已完成相關的初始化操作。在步驟2302,主裝置110透過發送一個設定指令集以將快閃記憶體模組124的至少一部份設定為區域命名空間,在以下的說明中,係以區域命名空間310_1來做為說明,例如,主裝置110對儲存裝置120_1設定區域命名空間310_1中每個區域的大小、區域數量、邏輯區塊位址大小等基本設定,例如利用區域命名空間指令集(Zoned Namespaces Command Set)進行設定。在步驟2304中,快閃記憶體控制器122中的微處理器212根據主裝置110所設定之區域的資料量大小(Zone size)、以及快閃記憶體模組124中每一個區塊(實體區塊)的大小,來決定出一個超級區塊所包含之區塊的數量。具體來說,假設主裝置110所設定之區域的資料量大小為A、快閃記憶體模組124中每一個實體區塊中用來儲存主機所用的資料量大小為B,微處理器212以A除以B後所得到的餘數若不為零,則A除以B後所得到的商數加上一,即可為一個超級區塊所包含之區塊的數量。而若微處理器212以A除以B後所得到的餘數為零,則A除以B後所得到的商數,即可為一個超級區塊所包含之區塊的數量。以第24圖所例來說明,快閃記憶體模組124包含了多個快閃記憶體晶片2410、2420、2430、2440,其中快閃記憶體晶片2410包含了兩個資料面2412、2414,快閃記憶體晶片2420包含了兩個資料面2422、2424,快閃記憶體晶片2430包含了兩個資料面2432、2434,快閃記憶體晶片2440包含了兩個資料面2442、2444,且每一個資料面均包含了多個區塊B0~BN,若是A除以B後的商數為‘5’餘數為’3’,則微處理器212可以決定出一個超級區塊包含六個區塊,因此,快閃記憶體控制器122在組態或初始化區域命名空間310_1的過程中,會將資料面2412、2414、2422、2424、2432、2434的第一個區塊B0組態為一超級區塊2461、資料面2412、2414、2422、2424、2432、2434的第二個區塊B1組態為一超級區塊2462、…、以此類推。此外,資料面2442以及資料面2444的區塊B0~BN則可以不需要組態為超級區塊,或是可以另外組成一個獨立於資料面2412、2414、2422、2424、2432、2434的超級區塊。在另一實施例中,快閃記憶體控制器122在組態或初始化區域命名空間310_1的過程中,會將資料面2412、2414、2422、2424、2432、2434的第一個區塊B0組態為一超級區塊2461、資料面2422、2424、2432、2434、2442、2444、的第二個區塊B1組態為一超級區塊2462。只要能使同一超級區塊中的各個區塊平行的進行存取,即可提昇超級區塊存取速度。因此可以在符合此概念之下,任意地進行超級區塊的設定。
在另一實施例中,假設主裝置110所設定之區域的資料量大小為C、快閃記憶體模組124中每一個實體區塊中用來儲存主機所用的資料量大小為D,若是C除以D後的商數為‘3’餘數為’2’, 則微處理器212可以決定出一個超級區塊包含4個區塊,即商數加一。快閃記憶體控制器122在接收到主裝置設定區域命名空間310_1的命令之後,將資料面2412、2414、2422、2424的第一個區塊B0組態為一超級區塊2461,而將2432、2434、2442、2444的第一個區塊B0組態為一超級區塊2462,以此類推。
請注意到,儲存裝置120_1、儲存裝置120_2……儲存裝置120_N等在進行出廠前的初始化設定時可以對快閃記憶體模組進行初步的超級區塊設定。以儲存裝置120_1為例,此時的超級區塊設定可以將可同時存取的資料面2412、2414、2422、2424、2432、2434、2442、2444的第一個區塊B0組態為一超級區塊2461,將可同時存取的資料面2412、2414、2422、2424、2432、2434、2442、2444的第二個區塊B1組態為一超級區塊2462,以取得最大存取頻寬。而在儲存裝置120_1與主裝置110連結,並得到主裝置110對於區域命名空間的命令(例如設定區域命名空間310_1)之後,再針對區域命名空間的大小,於快閃記憶體模組124內劃定一特定儲存區域作為區域命名空間310_1的專用空間,且基於主裝置110對區域命名空間310_1的每個區域大小的設定,重新設定該特定儲存空間的超級區塊的大小與結合方式。例如,將資料面2412、2414、2422、2424的第一個區塊B0組態為一超級區塊2461,而將2432、2434、2442、2444的第一個區塊B0組態為一超級區塊2462,以此類推。此時儲存裝置120_1中將有兩種不同大小的超級區塊,專屬於區域命名空間310_1的特定儲存區域之超級區塊設定,將與非專屬於區域命名空間310_1的特定儲存區域之超級區塊設定方式不同。而且,專屬於區域命名空間310_1的特定儲存區域之超級區塊設定也與儲存裝置120_1在進行出廠前的初始化設定不同。
如上所述,透過根據主裝置110所設定之區域的資料量來決定出超級區塊所包含的區塊數量,讓超級區塊達到最佳的空間利用。
需注意的是,在第22、24圖的實施例中所述之快閃記憶體晶片的數量、每一個快閃記憶體晶片所包含的資料面數量僅是作為範例說明,而非是本發明的限制。此外,在第22、24圖的實施例中,區域命名空間310_1所包含之快閃記憶體晶片2410、2420、2430、2440與一般儲存空間320_1則包含之快閃記憶體晶片2210、2220、2230、2240可以進行整合。具體來說,快閃記憶體模組124可以僅包含四個快閃記憶體晶片2210、2220、2230、2240,而快閃記憶體晶片2210、2220、2230、2240整體來說包含了第3圖所示的區域命名空間310_1以及一般儲存空間320_1,因此,微處理器212可以將四個快閃記憶體晶片2210、2220、2230、2240組態為同時包含多種具有不同區塊數量的超級區塊,例如,包含了第22圖所示之包含八個區塊的超級區塊以及第24圖所示之包含六個區塊的超級區塊。
另一方面,第3圖所示之一般儲存空間320_1也可以在後續的時間點被主裝置110組態為區域命名空間,而此時一般儲存空間320_1內先前所組態的超級區塊的大小便會需要變更。詳細來說,在第一時間點,微處理器會對一般儲存空間320_1進行設定以規劃出每一個超級區塊的大小,以第22圖為例,由於超級區塊最多能包含八個區塊,故微處理器212設定每一個超級區塊包含八個區塊。接著,若是主裝置110將一般儲存空間320_1重新設定為區域命名空間,則微處理器212需要重新設定其中每一個超級區塊所包含之區塊的數量,例如第22圖所示之六個區塊。
請注意到,快閃記憶體控制器122為了提高存取速度,通常可以將主裝置110所欲存入儲存裝置120_1的資料先暫存在快閃記憶體模組124的單層儲存記憶體細胞中,或者說以SLC的儲存方式暫存在快閃記憶體模組124中,而最後仍會將該些資料儲存至多層儲存記憶體細胞中,或者說以MLC的儲存方式儲存在快閃記憶體模組124中。本發明之實施例中省略了將該些資料以SLC的儲存方式儲存在快閃記憶體模組124中的過程,直接說明最後以MLC的儲存方式儲存在快閃記憶體模組124中的態樣,熟悉此項技藝者當可在本發明的教導之下,將本發明之技術與將資料以SLC的儲存方式暫存在快閃記憶體模組124中之技術相結合。
簡要歸納本發明,在本發明之應用於快閃記憶體控制器的控制方法中,透過規劃區域資料寫入至快閃記憶體的模式,可以有效地降低L2P映射表的尺寸,以降低緩衝記憶體或是DRAM的負擔;此外,透過根據區域的資料量以及實體區塊的大小來決定超級區塊所包含的區塊數量,可以更有效地利用快閃記憶體模組的空間。 以上所述僅為本發明之較佳實施例,凡依本發明申請專利範圍所做之均等變化與修飾,皆應屬本發明之涵蓋範圍。
100:電子裝置 110:主裝置 120_1, 120_2, 120_N:儲存裝置 122:快閃記憶體控制器 124:快閃記憶體模組 212:微處理器 212C:程式碼 212M:唯讀記憶體 214:控制邏輯 216:緩衝記憶體 218:介面邏輯 232:編碼器 234:解碼器 240:動態隨機存取記憶體 200:區塊 BL1, BL2, BL3:位元線 WL0~WL2, WL4~WL6:字元線 310_1, 310_2:區域命名空間 320_1, 320_2:一般儲存空間 Z0, Z1, Z2, Z3:區域 LBA_k~LBA_(k+x-1):邏輯位址 500~508:步驟 B3, B7, B8, B12, B99, B6:區塊 P1~PM:資料頁 700, 710, 720, 730:L2P映射表 800~806:步驟 900~906:步驟 1100A, 1100B:L2P映射表 1130A, 1130B:共用區塊表 1230:共用區塊表 1300~1306:步驟 1400~1408:步驟 B20, B30, B35:區塊 1600:L2P映射表 1700~1706:步驟 1800~1806:步驟 2000:L2P映射表 2100~2106:步驟 2210, 2220, 2230, 2240:快閃記憶體晶片 2212, 2214, 2222, 2224, 2232, 2234, 2242, 2244:資料面 2261, 2262:超級區塊 2300~2306:步驟 2412, 2414, 2422, 2424, 2432, 2434, 2442, 2444:資料面 2461, 2462:超級區塊
第1圖為根據本發明一實施例之電子裝置的示意圖。 第2A圖為依據本發明一實施例之儲存裝置內的快閃記憶體控制器的示意圖。 第2B圖為依據本發明一實施例之快閃記憶體模組中一區塊的示意圖。 第3圖為快閃記憶體模組包含一般儲存空間以及區域命名空間的示意圖。 第4圖為區域命名空間被劃分為多個區域的示意圖。 第5圖為根據本發明一實施例之將來自主裝置的資料寫入至區域命名空間的流程圖。 第6圖為區域的資料寫入至快閃記憶體模組內之區塊的示意圖。 第7A圖為本發明一實施例之L2P映射表的示意圖。 第7B圖為本發明另一實施例之L2P映射表的示意圖。 第7C圖為本發明另一實施例之L2P映射表的示意圖。 第7D圖為本發明另一實施例之L2P映射表的示意圖。 第8圖為根據本發明一實施例之自區域命名空間讀取資料的流程圖。 第9圖為根據本發明另一實施例之將來自主裝置的資料寫入至區域命名空間的流程圖。 第10圖為區域的資料寫入至快閃記憶體模組內之區塊的示意圖。 第11A圖為根據本發明一實施例之L2P映射表與共用區塊表的示意圖。 第11B圖為根據本發明一實施例之L2P映射表與共用區塊表的示意圖。 第12圖為根據本發明另一實施例之共用區塊表的示意圖。 第13圖為根據本發明一實施例之自區域命名空間讀取資料的流程圖。 第14圖為根據本發明另一實施例之將來自主裝置的資料寫入至區域命名空間的流程圖。 第15圖為區域的資料寫入至快閃記憶體模組內之區塊的示意圖。 第16圖為根據本發明一實施例之L2P映射表的示意圖。 第17圖為根據本發明另一實施例之自區域命名空間讀取資料的流程圖。 第18圖為根據本發明另一實施例之將來自主裝置的資料寫入至區域命名空間的流程圖。 第19圖為區域的資料寫入至快閃記憶體模組內之區塊的示意圖。 第20圖為根據本發明一實施例之L2P映射表的示意圖。 第21圖為根據本發明一實施例之自區域命名空間讀取資料的流程圖。 第22圖為一般儲存空間內之超級區塊的示意圖。 第23圖為根據本發明一實施例之組態快閃記憶體模組的方法的流程圖。 第24圖為區域命名空間內之超級區塊的示意圖。 第25圖為根據本發明一實施例之應用於一快閃記憶體控制器的控制方法的流程圖。
100:電子裝置
110:主裝置
120_1,120_2,120_N:儲存裝置
122:快閃記憶體控制器
124:快閃記憶體模組

Claims (15)

  1. 一種應用於一快閃記憶體控制器的控制方法,其中該快閃記憶體控制器用以存取一快閃記憶體模組,該快閃記憶體模組包含了多個資料面,每一個資料面包含了多個區塊,且每一個區塊包含了多個資料頁,以及該控制方法包含有: 接收來自一主裝置的設定指令,其中該設定指令係將快閃記憶體模組的至少一部份設定為一區域命名空間(zoned namespace),其中該區域命名空間係邏輯性地包含多個區域(zone),該主裝置對於該區域命名空間的資料寫入存取必須要以區域為單位來進行,每一個區域的大小都是相同的,每一個區域內所對應到的邏輯位址必須要是連續的,且區域之間不會有重疊的邏輯位址; 對該區域命名空間進行組態以規劃出多個第一超級區塊,其中每一個第一超級區塊包含了分別位於至少兩個資料面內的多個區塊,且每一個第一超級區塊所包含之區塊的數量是根據每一個區域的大小以及每一個區塊的大小所決定的; 接收來自該主裝置之對應至一特定區域的資料,其中該資料為該特定區域的所有資料; 根據該資料之邏輯位址的順序,以依序將該資料寫入至該快閃記憶體模組之該多個第一超級區塊中的一特定第一超級區塊中;以及 當該資料完成寫入之後,將該特定第一超級區塊所包含之最後一個區塊的剩餘資料頁寫入無效資料、或是將剩餘資料頁維持空白而且在抹除前不依據該主裝置的寫入指令寫入來自該主裝置的資料。
  2. 如申請專利範圍第1項所述之控制方法,其中就儲存來自該主裝置的資料的角度來看,單一個第一超級區塊只會儲存單一個區域的資料。
  3. 如申請專利範圍第1項所述之控制方法,其中該快閃記憶體模組包含了N個資料面,每一個區域的大小為A,每一個區塊的大小為B,其中A大於B;且對該區域命名空間進行組態以規劃出該多個第一超級區塊的步驟包含有: 對該區域命名空間進行組態以規劃出該多個第一超級區塊,以使得每一個第一超級區塊所包含之區塊的數量為A除以B的商數加上‘1’,且每一個第一超級區塊所包含之區塊係分別位於不同的資料面。
  4. 如申請專利範圍第1項所述之控制方法,另包含有: 將該快閃記憶體模組的另一部分設定為一一般儲存空間;以及 對該一般儲存空間進行組態以規劃出多個第二超級區塊,其中每一個第二超級區塊包含了分別該多個資料面的多個區塊。
  5. 如申請專利範圍第4項所述之控制方法,其中該快閃記憶體模組包含了N個資料面,每一個區域的大小為A,每一個區塊的大小為B,其中A大於B;且對該區域命名空間進行組態以規劃出該多個第一超級區塊的步驟包含有: 對該區域命名空間進行組態以規劃出該多個第一超級區塊,以使得每一個第一超級區塊所包含之區塊的數量為A除以B的商數加上‘1’,且每一個第一超級區塊所包含之區塊係分別位於不同的資料面;以及 對該一般儲存空間進行組態以規劃出該多個第二超級區塊的步驟包含有: 對該一般儲存空間進行組態以規劃出該多個第二超級區塊,以使得每一個第一超級區塊所包含之區塊的數量為N,且每一個第二超級區塊所包含之區塊係分別位於不同的資料面。
  6. 如申請專利範圍第4項所述之控制方法,另包含有: 將該一般儲存空間的至少一部分重新設定為另一區域命名空間; 對該另一區域命名空間進行組態以規劃出多個第三超級區塊,其中每一個第三超級區塊包含了分別位於至少兩個資料面內的多個區塊,且每一個第三超級區塊所包含之區塊的數量是根據該另一區域命名空間之每一個區域的大小以及每一個區塊的大小所決定的。
  7. 如申請專利範圍第6項所述之控制方法,其中就儲存來自該主裝置的資料的角度來看,單一個第三超級區塊只會儲存單一個區域的資料。
  8. 一種快閃記憶體控制器,其中該快閃記憶體控制器係用來存取一快閃記憶體模組,該快閃記憶體模組包含了多個資料面,每一個資料面包含了多個區塊,且每一個區塊包含了多個資料頁,且該快閃記憶體控制器包含有: 一唯讀記憶體,用來儲存一程式碼; 一微處理器,用來執行該程式碼以控制對該快閃記憶體模組之存取;以及 一緩衝記憶體; 其中該微處理器接收來自一主裝置的設定指令,其中該設定指令係將快閃記憶體模組的至少一部份設定為一區域命名空間(zoned namespace),其中該區域命名空間係邏輯性地包含多個區域(zone),該主裝置對於該區域命名空間的資料寫入存取必須要以區域為單位來進行,每一個區域的大小都是相同的,每一個區域內所對應到的邏輯位址必須要是連續的,且區域之間不會有重疊的邏輯位址; 其中該微處理器對該區域命名空間進行組態以規劃出多個第一超級區塊,其中每一個第一超級區塊包含了分別位於至少兩個資料面內的多個區塊,且每一個第一超級區塊所包含之區塊的數量是根據每一個區域的大小以及每一個區塊的大小所決定的;該微處理器接收來自該主裝置之對應至一特定區域的資料,其中該資料為該特定區域的所有資料,且該微處理器根據該資料之邏輯位址的順序,以依序將該資料寫入至該快閃記憶體模組之該多個第一超級區塊中的一特定第一超級區塊中;以及當該資料完成寫入之後,該微處理器將該特定第一超級區塊所包含之最後一個區塊的剩餘資料頁寫入無效資料、或是將剩餘資料頁維持空白而且在抹除前不依據該主裝置的寫入指令寫入來自該主裝置的資料。
  9. 如申請專利範圍第8項所述之快閃記憶體控制器,其中就儲存來自該主裝置的資料的角度來看,單一個第一超級區塊只會儲存單一個區域的資料。
  10. 如申請專利範圍第8項所述之快閃記憶體控制器,其中該快閃記憶體模組包含了N個資料面,每一個區域的大小為A,每一個區塊的大小為B,其中A大於B;且該微處理器對該區域命名空間進行組態以規劃出該多個第一超級區塊,以使得每一個第一超級區塊所包含之區塊的數量為A除以B的商數加上‘1’,且每一個第一超級區塊所包含之區塊係分別位於不同的資料面。
  11. 如申請專利範圍第8項所述之快閃記憶體控制器,其中該微處理器將該快閃記憶體模組的另一部分設定為一一般儲存空間,且對該一般儲存空間進行組態以規劃出多個第二超級區塊,其中每一個第二超級區塊包含了分別該多個資料面的多個區塊。
  12. 一種儲存裝置,包含有: 一快閃記憶體模組,其中該快閃記憶體模組包含了多個資料面,每一個資料面包含了多個區塊,且每一個區塊包含了多個資料頁;以及 一快閃記憶體控制器,用以存取該快閃記憶體模組; 其中該快閃記憶體控制器接收來自一主裝置的設定指令,其中該設定指令係將快閃記憶體模組的至少一部份設定為一區域命名空間(zoned namespace),其中該區域命名空間係邏輯性地包含多個區域(zone),該主裝置對於該區域命名空間的資料寫入存取必須要以區域為單位來進行,每一個區域的大小都是相同的,每一個區域內所對應到的邏輯位址必須要是連續的,且區域之間不會有重疊的邏輯位址; 其中該快閃記憶體控制器對該區域命名空間進行組態以規劃出多個第一超級區塊,其中每一個第一超級區塊包含了分別位於至少兩個資料面內的多個區塊,且每一個第一超級區塊所包含之區塊的數量是根據每一個區域的大小以及每一個區塊的大小所決定的;該快閃記憶體控制器接收來自該主裝置之對應至一特定區域的資料,其中該資料為該特定區域的所有資料,且該快閃記憶體控制器根據該資料之邏輯位址的順序,以依序將該資料寫入至該快閃記憶體模組之該多個第一超級區塊中的一特定第一超級區塊中;以及當該資料完成寫入之後,該快閃記憶體控制器將該特定第一超級區塊所包含之最後一個區塊的剩餘資料頁寫入無效資料、或是將剩餘資料頁維持空白而且在抹除前不依據該主裝置的寫入指令寫入來自該主裝置的資料。
  13. 如申請專利範圍第12項所述之儲存裝置,其中就儲存來自該主裝置的資料的角度來看,單一個第一超級區塊只會儲存單一個區域的資料。
  14. 如申請專利範圍第12項所述之儲存裝置,其中該快閃記憶體模組包含了N個資料面,每一個區域的大小為A,每一個區塊的大小為B,其中A大於B;且該快閃記憶體控制器對該區域命名空間進行組態以規劃出該多個第一超級區塊,以使得每一個第一超級區塊所包含之區塊的數量為A除以B的商數加上‘1’,且每一個第一超級區塊所包含之區塊係分別位於不同的資料面。
  15. 如申請專利範圍第12項所述之儲存裝置,其中該快閃記憶體控制器將該快閃記憶體模組的另一部分設定為一一般儲存空間,且對該一般儲存空間進行組態以規劃出多個第二超級區塊,其中每一個第二超級區塊包含了分別該多個資料面的多個區塊。
TW110106234A 2021-02-23 2021-02-23 儲存裝置、快閃記憶體控制器及其控制方法 TWI808384B (zh)

Priority Applications (3)

Application Number Priority Date Filing Date Title
TW110106234A TWI808384B (zh) 2021-02-23 2021-02-23 儲存裝置、快閃記憶體控制器及其控制方法
CN202110390186.6A CN114974366A (zh) 2021-02-23 2021-04-12 储存装置、快闪存储器控制器及其控制方法
US17/394,427 US20220269440A1 (en) 2021-02-23 2021-08-05 Control method for flash memory controller and associated flash memory controller and storage device

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
TW110106234A TWI808384B (zh) 2021-02-23 2021-02-23 儲存裝置、快閃記憶體控制器及其控制方法

Publications (2)

Publication Number Publication Date
TW202234226A true TW202234226A (zh) 2022-09-01
TWI808384B TWI808384B (zh) 2023-07-11

Family

ID=82899651

Family Applications (1)

Application Number Title Priority Date Filing Date
TW110106234A TWI808384B (zh) 2021-02-23 2021-02-23 儲存裝置、快閃記憶體控制器及其控制方法

Country Status (3)

Country Link
US (1) US20220269440A1 (zh)
CN (1) CN114974366A (zh)
TW (1) TWI808384B (zh)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
TWI775268B (zh) * 2021-01-07 2022-08-21 慧榮科技股份有限公司 儲存裝置、快閃記憶體控制器及其控制方法
KR20230094622A (ko) * 2021-12-21 2023-06-28 에스케이하이닉스 주식회사 슈퍼 메모리 블록의 프로그램 상태를 기초로 타깃 동작을 실행하는 메모리 시스템 및 그 방법

Family Cites Families (17)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
DE102005001038B3 (de) * 2005-01-07 2006-05-04 Hyperstone Ag Verfahren zur Umsetzung von logischen in reale Blockadressen in Flashspeichern
US20060184718A1 (en) * 2005-02-16 2006-08-17 Sinclair Alan W Direct file data programming and deletion in flash memories
KR101430097B1 (ko) * 2006-09-15 2014-08-13 샌디스크 테크놀로지스, 인코포레이티드 비휘발성 메모리 및 클래스 기반의 업데이트 블록 대체 규칙을 위한 방법
KR20090087689A (ko) * 2008-02-13 2009-08-18 삼성전자주식회사 다중 채널 플래시 메모리 시스템 및 그것의 액세스 방법
US8688894B2 (en) * 2009-09-03 2014-04-01 Pioneer Chip Technology Ltd. Page based management of flash storage
CN102693758B (zh) * 2011-03-22 2015-05-06 群联电子股份有限公司 数据读取方法、存储器储存装置及其存储器控制器
TWI584189B (zh) * 2012-03-20 2017-05-21 群聯電子股份有限公司 記憶體控制器、記憶體儲存裝置與資料寫入方法
US9395924B2 (en) * 2013-01-22 2016-07-19 Seagate Technology Llc Management of and region selection for writes to non-volatile memory
US20170124104A1 (en) * 2015-10-31 2017-05-04 Netapp, Inc. Durable file system for sequentially written zoned storage
CN107025066A (zh) * 2016-09-14 2017-08-08 阿里巴巴集团控股有限公司 在基于闪存的存储介质中写入存储数据的方法和装置
JP2019057178A (ja) * 2017-09-21 2019-04-11 東芝メモリ株式会社 メモリシステムおよび制御方法
JP6785204B2 (ja) * 2017-09-21 2020-11-18 キオクシア株式会社 メモリシステムおよび制御方法
JP2019057172A (ja) * 2017-09-21 2019-04-11 東芝メモリ株式会社 メモリシステムおよび制御方法
JP7010667B2 (ja) * 2017-11-06 2022-01-26 キオクシア株式会社 メモリシステムおよび制御方法
US10387243B2 (en) * 2017-12-08 2019-08-20 Macronix International Co., Ltd. Managing data arrangement in a super block
TWI709855B (zh) * 2018-01-26 2020-11-11 慧榮科技股份有限公司 用來於一記憶裝置中進行寫入管理之方法以及記憶裝置及其控制器
US11550727B2 (en) * 2020-06-18 2023-01-10 Micron Technology, Inc. Zone-aware memory management in memory subsystems

Also Published As

Publication number Publication date
CN114974366A (zh) 2022-08-30
US20220269440A1 (en) 2022-08-25
TWI808384B (zh) 2023-07-11

Similar Documents

Publication Publication Date Title
TWI418980B (zh) 記憶體控制器、用於格式化記憶體系統中之記憶體陣列和固態驅動器之方法及固態記憶體系統
TWI679537B (zh) 資料移動方法及儲存控制器
TWI775268B (zh) 儲存裝置、快閃記憶體控制器及其控制方法
US10977189B2 (en) Reducing forward mapping table size using hashing
TWI828085B (zh) 快閃記憶體控制器的控制方法、快閃記憶體控制器以及儲存裝置
TWI821151B (zh) 快閃記憶體控制器的控制方法、快閃記憶體控制器以及儲存裝置
TWI808384B (zh) 儲存裝置、快閃記憶體控制器及其控制方法
TW201908957A (zh) 資料寫入方法、記憶體控制電路單元及記憶體儲存裝置
TW202249018A (zh) 儲存裝置、快閃記憶體控制器及其控制方法
TWI821152B (zh) 儲存裝置、快閃記憶體控制器及其控制方法
CN115390747A (zh) 存储设备及其操作方法
TW201913353A (zh) 資料儲存方法、記憶體控制電路單元及記憶體儲存裝置
TWI806508B (zh) 快閃記憶體控制器的控制方法、快閃記憶體控制器以及儲存裝置
TWI818370B (zh) 資料儲存分配方法、記憶體儲存裝置及記憶體控制電路單元
US11693574B2 (en) Method of writing data in storage device and storage device performing the same
CN117766004A (zh) 数据写入方法、存储器存储装置及存储器控制电路单元
CN110286846A (zh) 数据移动方法及储存控制器