JP7026833B1 - 記憶装置、フレッシュメモリコントローラ及びその制御方法 - Google Patents

記憶装置、フレッシュメモリコントローラ及びその制御方法 Download PDF

Info

Publication number
JP7026833B1
JP7026833B1 JP2021029144A JP2021029144A JP7026833B1 JP 7026833 B1 JP7026833 B1 JP 7026833B1 JP 2021029144 A JP2021029144 A JP 2021029144A JP 2021029144 A JP2021029144 A JP 2021029144A JP 7026833 B1 JP7026833 B1 JP 7026833B1
Authority
JP
Japan
Prior art keywords
data
block
fresh memory
access mode
area
Prior art date
Legal status (The legal status 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 status listed.)
Active
Application number
JP2021029144A
Other languages
English (en)
Other versions
JP2022106634A (ja
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 慧榮科技股▲分▼有限公司
Application granted granted Critical
Publication of JP7026833B1 publication Critical patent/JP7026833B1/ja
Publication of JP2022106634A publication Critical patent/JP2022106634A/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/10Address translation
    • G06F12/1009Address translation using page tables, e.g. page table structures
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • G06F12/023Free address space management
    • G06F12/0238Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory
    • G06F12/0246Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory in block erasable memory, e.g. flash memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • G06F12/0292User address space allocation, e.g. contiguous or non contiguous base addressing using tables or multilevel address translation means
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/06Addressing a physical block of locations, e.g. base addressing, module addressing, memory dedication
    • G06F12/0615Address space extension
    • 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/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/0604Improving or facilitating administration, e.g. storage management
    • G06F3/0605Improving or facilitating administration, e.g. storage management by facilitating the interaction with a user or administrator
    • 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/061Improving I/O performance
    • 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/0638Organizing or formatting or addressing of data
    • G06F3/064Management of blocks
    • 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/0646Horizontal data movement in storage systems, i.e. moving data in between storage devices or systems
    • G06F3/0652Erasing, e.g. deleting, data cleaning, moving of data to a wastebasket
    • 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/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
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1004Compatibility, e.g. with legacy hardware
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1016Performance improvement
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1041Resource optimization
    • G06F2212/1044Space efficiency improvement
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/72Details relating to flash memory management
    • G06F2212/7201Logical to physical mapping or translation of blocks or pages
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/72Details relating to flash memory management
    • G06F2212/7202Allocation control and policies

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)
  • Read Only Memory (AREA)
  • Memory System (AREA)
  • Techniques For Improving Reliability Of Storages (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Debugging And Monitoring (AREA)

Abstract

【課題】本発明は、フレッシュメモリコントローラに応用される制御方法を提供する。【解決手段】前記フレッシュメモリコントローラは、フレッシュメモリモジュールにアクセスするために用いられ、前記制御方法は、主装置からの設定指令を受信してフレッシュメモリモジュールの少なくとも一部をZNSと設定し;及び、前記主装置からの書き込み指令を受信して第一領域に対応するデータを前記フレッシュメモリモジュール中の複数のブロックに書き込むことを含み、そのうち、前記第一領域のデータを前記複数のブロックに書き込むに採用するアクセスモードは、各領域及び各ブロックのサイズにより決定される。【選択図】図1

Description

本発明は、フレッシュメモリに関する。
不揮発性メモリ記憶装置(Non-Volatile Memory express、NVMe)規格において、1つのZNS(ゾーンネームスペース(zoned namespace))が規定されている。しかし、上述のZNS及びその中の各領域が単に主装置(ホスト装置)の角度から見たものであるので、主装置により定義される各領域のサイズと、記憶装置の中のフレッシュメモリモジュール内の各ブロック(block)のサイズとの間には固定の関係がない。よって、主装置が1つの領域に対応するデータをフレッシュメモリモジュールに書き込もうとするときに、フレッシュメモリコントローラは、大量の論理(logiccal)アドレスと物理アドレスのマッピング表を生成する必要があり、例えば、データページ(page)を単位として論理アドレスと物理アドレスのマッピング関係を記録する必要がある。その結果、フレッシュメモリコントローラがデータ処理を行うときに、負担がかかり、且つ静的ランダムアクセスメモリ(Static Random Access Memory、SRAM)及び/又は動的ランダムアクセスメモリ(Dynamic Random Access Memory、DRAM)の記憶空間が占用されてしまう。
よって、本発明の目的の1つは、フレッシュメモリコントローラを提供することにあり、それにより、主装置がフレッシュメモリモジュール内のZNSに書き込むデータを効率的に管理することができ、且つ生成される論理アドレスと物理アドレスのマッピング表が比較的小さいサイズを有するため、従来技術に存在する問題を解決することができる。
本発明の一実施例において、フレッシュメモリコントローラに応用される制御方法が提供され、そのうち、前記フレッシュメモリコントローラはフレッシュメモリモジュールにアクセスするために用いられ、前記フレッシュメモリモジュールは複数のブロックを含み、且つ各ブロックは複数のデータページを含み、前記制御方法は、主装置からの設定指令を受信し、そのうち、前記設定指令はフレッシュメモリモジュールの少なくとも一部をZNSと設定し、そのうち、前記ZNSは複数の領域を論理的に含み、前記主装置の前記ZNSに対してのデータの書き込み及びアクセスは必ず領域を単位として行われ、各領域のサイズはすべて同じであり、各領域内の対応する論理アドレスは必ず連続したものであり、且つ領域の間にはオーバーラップした論理アドレスが存在せず;第一アクセスモード、第二アクセスモード、第三アクセスモード及び第四アクセスモードのうちの1つを用いて、前記主装置からのデータを前記フレッシュメモリモジュールに書き込み、そのうち、前記データは特定領域のすべてのデータであり;前記第一アクセスモードを用いる場合、前記データの論理アドレスの順序に従って、前記データを前記フレッシュメモリモジュールの複数の特定ブロックに順次書き込み;及び、前記データの書き込みが完了した後に、前記複数の特定ブロックの最後の1つの特定ブロックの剰余データページに無効データを書き込み、又は、剰余データページを空白に維持し且つ消去前に前記主装置の書き込み指令に基づいて前記主装置からのデータを書き込まず;前記第二アクセスモードを用いる場合、前記データの論理アドレスの順序に従って、前記データを前記フレッシュメモリモジュールの前記複数の特定ブロックに順次書き込み;及び、前記データの書き込みが完了した後にのみ、前記最後の1つの特定ブロックの剰余データページは他の領域のデータの書き込み用に供することができ;前記第三アクセスモードを用いる場合、前記データの論理アドレスの順序に従って、前記データを前記フレッシュメモリモジュールの単一の特定ブロックに順次書き込み;及び前記データの書き込みが完了した後に、前記特定ブロックの剰余データページに無効データを書き込み、又は剰余データページを空白に維持し且つ消去前に前記主装置の書き込み指令に基づいて前記主装置からのデータを書き込まず;及び、前記第四アクセスモードを用いる場合、前記データの論理アドレスの順序に従って、前記データを前記フレッシュメモリモジュールの単一の特定ブロックに順次書き込み;及び前記データの書き込みが完了した後にのみ、前記最後の1つの特定ブロックの剰余データページは他の領域のデータの書き込み用に供することができることを含む。
本発明の他の実施例において、フレッシュメモリコントローラが提供され、そのうち、前記フレッシュメモリコントローラはフレッシュメモリモジュールにアクセスするために用いられ、前記フレッシュメモリモジュールは複数のブロックを含み、各ブロックは複数のデータページを含み、且つ前記フレッシュメモリコントローラはリードオンリーメモリ、マイクロプロセッサー及びバッファメモリを含む。前記リードオンリーメモリはプログラムコードを記憶するために用いられ、且つ前記マイクロプロセッサーは前記プログラムコードを実行して前記フレッシュメモリモジュールに対してのアクセスを制御するために用いられる。前記フレッシュメモリコントローラの操作では、前記マイクロプロセッサーは主装置からの設定指令を受信し、そのうち、前記設定指令はフレッシュメモリモジュールの少なくとも一部をZNSと設定し、そのうち、前記ZNSは複数の領域を論理的に含み、前記主装置の前記ZNSに対してのデータの書き込み及びアクセスは必ず領域を単位として行われ、各領域のサイズはすべて同じであり、各領域内の対応する論理アドレスは必ず連続したものであり、且つ領域の間にはオーバーラップした論理アドレスが存在せず;そのうち、前記マイクロプロセッサーは第一アクセスモード、第二アクセスモード、第三アクセスモード及び第四アクセスモードのうちの1つを用いて、前記主装置からのデータを前記フレッシュメモリモジュールに書き込み、そのうち、前記データは特定領域のすべてのデータであり;そのうち、前記マイクロプロセッサーが前記第一アクセスモードを用いる場合、前記データの論理アドレスの順序に従って、前記データを前記フレッシュメモリモジュールの複数の特定ブロックに順次書き込み;及び、前記データの書き込みが完了した後に、前記複数の特定ブロックの最後の1つの特定ブロックの剰余データページに無効データを書き込み、又は剰余データページを空白に維持し且つ消去前に前記主装置の書き込み指令に基づいて前記主装置からのデータを書き込まず;そのうち、前記マイクロプロセッサーが前記第二アクセスモードを用いる場合、前記データの論理アドレスの順序に従って、前記データを前記フレッシュメモリモジュールの前記複数の特定ブロックに順次書き込み;及び、前記データの書き込みが完了した後にのみ、前記最後の1つの特定ブロックの剰余データページは他の領域のデータの書き込み用に供することができ;そのうち、前記マイクロプロセッサーが前記第三アクセスモードを用いる場合、前記データの論理アドレスの順序に従って、前記データを前記フレッシュメモリモジュールの単一の特定ブロックに順次書き込み;及び、前記データの書き込みが完了した後に、前記特定ブロックの剰余データページに無効データを書き込み、又は剰余データページを空白に維持し且つ消去前に前記主装置の書き込み指令に基づいて前記主装置からのデータを書き込まず;前記マイクロプロセッサーが前記第四アクセスモードを用いる場合、前記データの論理アドレスの順序に従って、前記データを前記フレッシュメモリモジュールの単一の特定ブロックに順次書き込み;及び、前記データの書き込みが完了した後にのみ、前記最後の1つの特定ブロックの剰余データページは他の領域のデータの書き込み用に供することができる。
本発明の他の実施例において、記憶装置が提供され、それは、フレッシュメモリモジュール及びフレッシュメモリコントローラを含み、そのうち、前記フレッシュメモリモジュールは複数のブロックを含み、各ブロックは複数のデータページを含み、且つ前記フレッシュメモリコントローラは前記フレッシュメモリモジュールにアクセスするために用いられる。前記記憶装置の操作では、前記フレッシュメモリコントローラは主装置からの設定指令を受信し、そのうち、前記設定指令はフレッシュメモリモジュールの少なくとも一部をZNSと設定し、そのうち、前記ZNSは複数の領域を論理的に含み、前記主装置の前記ZNSに対してのデータ書き込み及びアクセスは必ず領域を単位として行われ、各領域のサイズはすべて同じであり、各領域内の対応する論理アドレスは必ず連続したものであり、且つ領域の間にはオーバーラップした論理アドレスが存在せず;そのうち、前記フレッシュメモリコントローラは、第一アクセスモード、第二アクセスモード、第三アクセスモード及び第四アクセスモードのうちの1つを用いて、前記主装置からのデータを前記フレッシュメモリモジュールに書き込み、そのうち、前記データは特定領域のすべてのデータであり;そのうち、前記フレッシュメモリコントローラが前記第一アクセスモードを用いる場合、前記データの論理アドレスの順序に従って、前記データを前記フレッシュメモリモジュールの複数の特定ブロックに順次書き込み;及び、前記データの書き込みが完了した後に、前記複数の特定ブロックの最後の1つの特定ブロックの剰余データページに無効データを書き込み、又は剰余データページを空白に維持し且つ消去前に前記主装置の書き込み指令に基づいて前記主装置からのデータを書き込まず;そのうち、前記フレッシュメモリコントローラが前記第二アクセスモードを用いる場合、前記データの論理アドレスの順序に従って、前記データを前記フレッシュメモリモジュールの前記複数の特定ブロックに順次書き込み;及び、前記データの書き込みが完了した後にのみ、前記最後の1つの特定ブロックの剰余データページは他の領域のデータの書き込み用に供することができ;そのうち、前記フレッシュメモリコントローラが前記第三アクセスモードを用いるときに、前記データの論理アドレスの順序に従って、前記データを前記フレッシュメモリモジュールの単一の特定ブロックに順次書き込み;及び、前記データの書き込みが完了した後に、前記特定ブロックの剰余データページに無効データを書き込み、又は剰余データページを空白に維持し且つ消去前に前記主装置の書き込み指令に基づいて前記主装置からのデータを書き込まず;そのうち、前記フレッシュメモリコントローラが前記第四アクセスモードを用いる場合、前記データの論理アドレスの順序に従って、前記データを前記フレッシュメモリモジュールの単一の特定ブロックに順次書き込み;及び、前記データの書き込みが完了した後にのみ、前記最後の1つの特定ブロックの剰余データページは他の領域のデータの書き込み用に供することができる。
本発明の上述の特徴及びび利点をより明らかにするために、以下、実施例を挙げ、添付した図面を参照することにより、詳細に説明する。
本発明の一実施例における電子装置を示す図である。 本発明の一実施例における記憶装置内のフレッシュメモリコントローラを示す図である。 本発明の一実施例におけるフレッシュメモリモジュール中のブロックを示す図である。 フレッシュメモリモジュールが一般記憶空間及びZNSを含むことを示す図である。 ZNSが複数の領域に分割されることを示す図である。 本発明の一実施例における主装置からのデータをZNSに書き込むフローチャートである。 領域のデータをフレッシュメモリモジュール内のブロックに書き込むことを示す図である。 本発明の一実施例におけるL2Pマッピング表を示す図である。 本発明の他の実施例のL2Pマッピング表を示す図である。 本発明の他の実施例のL2Pマッピング表を示す図である。 本発明の他の実施例のL2Pマッピング表を示す図である。 本発明の一実施例におけるZNSからデータを読み取るフローチャートである。 本発明の他の実施例における主装置からのデータをZNSに書き込むフローチャートである。 領域のデータをフレッシュメモリモジュール内のブロックに書き込むことを示す図である。 本発明の一実施例におけるL2Pマッピング表及び共通ブロック表を示す図である。 本発明の一実施例におけるL2Pマッピング表及び共通ブロック表を示す図である。 本発明の他の実施例における共通ブロック表を示す図である。 本発明の一実施例におけるZNSからデータを読み取るフローチャートである。 本発明の他の実施例における主装置からのデータをZNSに書き込むフローチャートである。 領域のデータをフレッシュメモリモジュール内のブロックに書き込むことを示す図である。 本発明の一実施例におけるL2Pマッピング表を示す図である。 本発明の他の実施例におけるZNSからデータを読み取るフローチャートである。 本発明の他の実施例における主装置からのデータをZNSに書き込むフローチャートである。 領域のデータをフレッシュメモリモジュール内のブロックに書き込むことを示す図である。 本発明の一実施例におけるL2Pマッピング表を示す図である。 本発明の一実施例におけるZNSからデータを読み取るフローチャートである。 一般記憶空間内のスーパーブロックを示す図である。 本発明の一実施例におけるフレッシュメモリモジュールの構成方法のフローチャートである。 ZNS内のスーパーブロックを示す図である。 本発明の一実施例におけるフレッシュメモリコントローラに応用される制御方法のフローチャートである。
以下、添付した図面を参照しながら本発明を実施するための形態を詳細に説明する。
図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に対してのアクセス操作(特に、少なくとも1つのブロック又は少なくとも1つのデータページに対してのアクセス操作)を行い、バッファメモリ216を用いて必要なバッファ処理を行い、及びインターフェースロジック218を用いて主装置110とのやり取りを行う。バッファメモリ216はランダムアクセスメモリ(Random Access Memory、RAM)により実施される。例えば、バッファメモリ216はSRAMであっても良いが、本発明はこれに限定されない。また、フレッシュメモリコントローラ122はDRAM240に接続される。なお、DRAM240もフレッシュメモリコントローラ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では、一番上の1つの平面を例とし、ワードラインWL0上のすべての浮遊ゲートトランジスタが少なくとも1つのデータページを構成し、ワードラインWL1上のすべての浮遊ゲートトランジスタが他の少なくとも1つのデータページを構成し、ワードラインWL2のすべての浮遊ゲートトランジスタが別の少なくとも1つのデータページを構成し、…、これに基づいて類推する。また、フレッシュメモリに書き込む方式が異なることにより、ワードラインWL0とデータページ(論理データページ)との間の定義にも異なることがある。詳しく言えば、単層型記憶(Single-Level Cell、SLC)の方式で書き込むときに、ワードラインWL0上のすべての浮遊ゲートトランジスタは単一の論理データページにのみ対応し;双層型記憶(Multi-Level Cell、MLC)の方式で書き込むときに、ワードラインWL0上のすべての浮遊ゲートトランジスタは2つの論理データページに対応し;三層型記憶(TLC)の方式で書き込むときに、ワードラインWL0上のすべての浮遊ゲートトランジスタは3つの論理データページに対応し;及び、四層型記憶(QLC)の方式で書き込むときに、ワードラインWL0上のすべての浮遊ゲートトランジスタは4つの論理データページに対応する。なお、当業者が三次元NAND型フレッシュメモリの構造及びワードラインとデータページとの間の関係を理解し得るはずであるため、ここでは関連する細部の説明を省略する。
本実施例では、主装置110は1つの設定指令集、例えば、ZNS指令集(Zoned Namespaces Command Set)を送信することで、フレッシュメモリモジュール124の少なくとも一部をZNS(zoned namespace)と設定することができる。図3に示すように、主装置110は設定指令集をフレッシュメモリコントローラ122に送信することで、フレッシュメモリモジュール124が少なくとも1つのZNS(本実施例では、ZNS310_1、310_2を例とする)及び少なくとも1つの一般記憶空間(本実施例では、一般記憶空間320_1、320_2を例とする)を有するようにさせることができる。ZNS310_1はアクセスの面において複数の領域(zone)に分割することができ、主装置110のZNS310_1に対してのデータ書き込みは必ず論理ブロックアドレス(Logical block address、LBA)を単位として行われ、1つの論理ブロックアドレス(又は論理アドレスと略称する)は512バイト(512bytes)のデータ量を表すことができ、主装置110は1つの領域に対して連続的な書き込みを行う必要がある。具体的に言えば、図4に示すように、ZNS310_1は複数の領域(例えば、Z0、Z1、Z2、Z3、…等々)に分割され、そのうち、領域のサイズは主装置110により設定されるが、各領域のサイズはすべて同じであり、各領域内の対応する論理アドレスは必ず連続したものであり、且つ領域の間にはオーバーラップした論理アドレスが存在しない(即ち、1つの論理アドレスが1つのみの領域内に存在する)。例を挙げて言えば、各領域のサイズが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を有するデータを記憶するために用いられ、…、これに基づいて類推する。また、1つの論理アドレスに対応するデータ量のサイズは主装置110により決定することができ、例えば、1つの論理アドレスに対応するデータ量のサイズは4キロバイト(Kilobyte、KB)であっても良い。
また、各領域のデータを書き込むときに、必ず論理アドレスの順序に従って行う必要がある。詳しく言えば、フレッシュメモリコントローラ122は、書き込まれるデータに基づいて1つの書き込みポインター(write point)を設定することで、データの書き込み順序を制御することができる。詳しく言えば、領域Z1が論理アドレスLBA_2001~LBA_4000を有するデータを記憶するために用いられるとすれば、主装置110が論理アドレスLBA_2001~LBA_2051に対応するデータをフレッシュメモリコントローラ122に伝送した後に、フレッシュメモリコントローラ122は、書き込みポインターが次の1つの論理アドレスLBA_2052であると設定することができる。その後、主装置110が同一の領域に属するが論理アドレスLBA_2052を有しないデータを伝送するときに、例えば、主装置110が論理アドレスLBA_3000を有するデータを伝送する場合、フレッシュメモリコントローラ122は今回のデータ書き込みを拒否し、書き込み失敗のメッセージを主装置110にフィードバックすることができ;言い換えると、受信されたデータの論理アドレスが書き込みポインターにより指向される論理アドレスと同じであるときにのみ、フレッシュメモリコントローラ122はデータの書き込みを許す。また、複数の領域のデータが交替で書き込まれるときに、各領域は自分の書き込みポインターを有しても良い。
上述のように、主装置110は領域を単位として記憶装置120_1とのやり取りを行うことでZNS310_1に対してアクセスを行うが、上述のZNS310_1及び各領域が主装置110の角度から見たものであるから、主装置110により定義される各領域のサイズと、記憶装置120_1の中のフレッシュメモリモジュール124内の各物理ブロックのサイズとは固定の関係を有しない。具体的に言えば、異なるフレッシュメモリモジュールメーカーにより製造されるフレッシュメモリモジュールは同じではなく、異なるメモリモジュールは異なるサイズの物理ブロックを有し、これらの物理ブロックのサイズは必ずしも整数倍ではない。例えば、Aモデルのフレッシュメモリモジュールの物理ブロックのサイズがBモデルのフレッシュメモリモジュールの物理ブロックの1.3倍であり、Cモデルのフレッシュメモリモジュールの物理ブロックのサイズがBモデルのフレッシュメモリモジュールの物理ブロックの3.7倍である可能性があるため、主装置110により設定される領域は物理ブロックとアライン(align)することが非常に難しい。このときに、フレッシュメモリコントローラ122は、論理ブロックを物理ブロックに対応させるときに非常に大きな困難に直面する。例えば、記憶装置120_1の中の多くの冗長空間が使用者により使用されられない可能性があり、又は、主装置110が1つの領域に対応するデータをフレッシュメモリモジュール124に書き込もうとするときに、フレッシュメモリコントローラ122が論理アドレスから物理アドレスへの(logical address to physical address、L2P)マッピング表を生成するときの複雑度を増加させる可能性がある。本発明は、以下の実施例において、フレッシュメモリコントローラ122が主装置110のアクセス指令に基づいてZNS310_1に効率的にアクセスし得る方法を提供する。
図5は本発明の一実施例における主装置110からのデータをZNS310_1に書き込むフローチャートである。そのうち、本実施例では、各領域に対応するデータ量がフレッシュメモリモジュール124の中の各物理ブロックのサイズよりも大きく、且つ各領域に対応するデータ量がフレッシュメモリモジュール124の中の各物理ブロックのサイズの整数倍ではないと仮定する。ステップ500において、フローが開始し、主装置110及び記憶装置120_1は通電して初期化操作を完了し、主装置110は、記憶装置120_1における少なくとも一部の記憶領域に対して各領域のサイズ、領域の数、論理ブロックアドレスサイズ等の基本設定を設定し、例えば、ZNS指令集(Zoned Namespaces Command Set)を用いて設定することができる。ステップ502において、主装置110は書き込み指令及び対応するデータをフレッシュメモリコントローラ122に送信し、そのうち、上述のデータは1つ又は複数の領域に対応するデータであり、例えば、図4中の領域Z3の論理アドレスLBA_k~LBA_(k+x-1)に対応するデータである。ステップ504において、フレッシュメモリコントローラ122は、フレッシュメモリモジュール124のうちから少なくとも1つのブロック(空白ブロックであり、スペアブロック(spare block)とも称する)を選択し、そして、順次、主装置110からのデータを前記少なくとも1つのブロックに書き込に。主装置110により設定される領域のサイズが物理ブロックのサイズとアラインすることが非常に難しいので、主装置が領域Z3におけるすべての論理アドレスに書き込み指令を送った後に、主装置110が書き込もうとするデータは通常、依然として、物理ブロックの記憶空間を満たすことができず、又は、通常、1つの領域に対応するデータの記憶量は1つの物理ブロックの中の、主装置110が書き込むデータを格納する領域のサイズの整数倍ではないと言っても良い。ステップ506において、データが最後の1つのブロックに書き込まれてデータの書き込みが完了した後に、フレッシュメモリコントローラ122は最後の1つのブロックの剰余データページに無効データ(invalid data)を書き込むことができ、又は、直接、剰余データページを空白状態に維持することができる。なお、各ブロックは、通常、若干のデータページを、システム管理情報を格納するために保留することができ、例えば、書き込み時間表、論理物理対応表、誤り訂正符号のチェックビット、ディスクアレイのパリティデータ(RAID parity)等々の管理に必要なデータを格納するために用いられる。また、ここで言う剰余データページとは、これらのシステム管理情報、及び主装置110が書き込もうとするデータを書き込んだ後に依然として剰余を有するデータページを指す。
例を挙げて言えば、図6に示すように、各領域に対応するデータ量がフレッシュメモリモジュール124の中の2つのブロックと3つのブロックとの間にあるとすれば、フレッシュメモリコントローラ122は、主装置110が領域Z1に対して送信する書き込み命令に応じて、領域Z1のデータをブロックB3、B7及びB8に順次書き込むことができる。なお、一実施例において、主装置110が領域Z1に対して送信する書き込み指令には領域Z1の開始論理アドレスが含まれ、フレッシュメモリコントローラ122は領域Z1の開始論理アドレスを物理ブロックB3の開始物理記憶空間、例えば、1番目の物理データページに対応させ、また、フレッシュメモリコントローラ122は、領域Z1の開始論理アドレスに対応するデータを物理ブロックB3の開始物理記憶空間、例えば、1番目の物理データページに記憶することができる。ブロックB3、B7、B8はすべてデータページP1~PMを含み、領域Z1のデータは、論理アドレスに基づいてブロックB3の1番目のデータページP1から最後の1つのデータページPMに順次書き込まれ、ブロックB3のデータ書き込みが完了した後に、引き続き、ブロックB7の1番目のデータページP1から最後の1つのデータページPMに書き込まれる。なお、主装置110が領域Z1内の論理アドレスについて連続的に書き込んでも、フレッシュメモリコントローラ122は依然として不連続のブロックB3、B7を選択してこれらの論理上連続したデータを記憶することができる。ブロックB7のデータ書き込みが完了した後に、引き続きブロックB8の1番目のデータページP1から、領域Z1のデータが終了するまで、データ書き込みが行われ、また、ブロックB8の剰余データページは空白に維持され、又は無効データが書き込まれ得る。同様に、フレッシュメモリコントローラ122は、領域Z3のデータをブロックB12、B99及びB6に順次書き込むことができ、そのうち、ブロックB12、B99及びB6はすべてデータページP1~PMを含み、領域Z3のデータは、論理アドレスに基づいてブロックB12の1番目のデータページP1から最後の1つのデータページPMに順次書き込まれ、ブロックB12のデータ書き込みが完了した後に、引き続き、ブロックB99の1番目のデータページP1から最後の1つのデータページPMに書き込まれ、且つブロックB99のデータ書き込みが完了した後に、引き続き、ブロックB6の1番目のデータページP1から、領域Z3のデータが終了するまで、データ書き込みが行われ;また、ブロックB6の剰余データページは空白に維持され、又は無効データが書き込まれ得る。なお、フレッシュメモリコントローラ122は、無効データの所在するこれらの物理データページについて論理ページと物理ページのリンク関係を生成しなくても良い。空白に維持され又は無効データが書き込まれる物理データページを有するこれらの物理ブロックは、通常、フレッシュメモリコントローラ122により各領域の最後の一部に対応させられ、又は、フレッシュメモリコントローラ122は、領域の最後の1つの論理アドレスに対応するデータを、空白ページを有し又は無効ページデータが書き込まれる1つの物理ブロックに記憶し得ると言っても良い。例えば、図7B(後述する)に示すように、論理アドレスZ1_LBA+S+2*yは物理ブロックアドレスPBA8に対応することができる。また、領域の最後の1つの論理アドレスのデータが物理ブロックのX番目の記憶単位(例えば、物理記憶ページ又はセグメント)に記憶される場合、前記物理ブロックのX+1番目の記憶単位は、空白ページを保留し又は無効ページデータが書き込まれ、即ち、空白ページ、又は無効データが書き込まれるデータページは、対応領域の最後の1つの論理アドレスのデータが格納される物理記憶単位の後に接続される。もう1つの実施例において、主装置110は、1つの比較的大きい領域のサイズ(Zone Size)、及び1つの比較的小さい領域の容量(Zone capacity)を定義し、例えば、領域のサイズは512MBであり、領域の容量は500MBであり、この例では、フレッシュメモリコントローラ122は、空白ページ又は無効データが書き込まれるデータページを、直接、対応領域の最後の1つの論理アドレスのデータが格納される物理記憶単位の後に接続しなくても良い。
他の実施例において、主装置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の最後の1つの論理アドレスと領域Z2の1番目の論理アドレスを含む書き込み命令)を送信し、且つ或る特定物理ブロック(例えば、物理ブロックB8)にこれらの連続した論理アドレスのデータを記憶する十分な空間がまだあっても、フレッシュメモリコントローラ122は依然としてこれらの連続した論理アドレスに対応するデータを前記特定物理ブロックに連続的に記憶することができず、不連続的に領域Z2の1番目の論理アドレスに対応するデータをもう1つの物理ブロック、例えば、ブロックB20に書き込む。それ相応に、主装置110が領域Z1、Z2内の連続した論理アドレスに対して読取指令(例えば、領域Z1の最後の1つの論理アドレスと領域Z2の1番目の論理アドレスを含む読取命令)を送る場合、フレッシュメモリコントローラ122は、物理ブロックP8に記憶される、領域Z1の最後の1つの論理アドレスに対応するデータを読み取った後に、不連続的にブロックB20の1番目の記憶位置を読み取り、これにより、領域Z2の1番目の論理アドレスのデータを取得することができる。
ステップ508にいて、フレッシュメモリコントローラ122はL2Pマッピング表を生成又は更新することで、論理アドレスと物理アドレスのマッピング関係を、後続のZNS310_1からのデータ読取時に使用されるために記憶する。図7Aは本発明の一実施例におけるL2Pマッピング表700を示す図である。L2Pマッピング表700は2つの欄を含み、そのうち、1つの欄に領域の開始論理アドレスが記録され、もう1つの欄にブロックの物理ブロックアドレスが記録される。図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からのデータをZNS310_1に書き込むフローチャートの中の各ステップは、同じ目的を達成することができれば、必ずしも固定の順序に従って行われる必要が無く、例えば、ステップ508は、ステップ502の後に実行されても良い。これは、当業者が本発明の教示をもとに理解し得るはずである。なお、この実施例では、各物理ブロックはすべて1つのみの領域に対応し、例えば、ブロックB3、B7及びB8は領域Z1にのみ対応し、ブロックB12、B99及びB6は領域Z3にのみ対応する。又は、単一のブロックは単一の領域のデータのみを記憶し、例えば、ブロックB3、B7及びB8は領域Z1に対応するデータのみを記憶し、ブロックB12、B99及びB6は領域Z3に対応するデータのみを記憶すると言っても良い。
これに加えて、主装置110が1つの領域をリセット(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が発したリセット指令に含まれない無効データを他の物理ブロックに移さなく、直接、物理ブロック全体を削除する。
以上の実施例では、ZNS310_1内の任意の1つの物理ブロックに記憶のデータのすべては必ず同じ領域に属し、即ち、任意の1つの物理ブロックに記憶のすべてのデータの対応する論理アドレスは同一の領域に属する。また、主装置110は1つのみの領域内の論理アドレスに対して連続的に書き込むことができる。よって、本実施例のL2Pマッピング表700はZNS310_1の物理ブロックアドレスのみを含み、何れものデータページアドレスを含まなくても良く、即ち、L2Pマッピング表700は任意のブロック内のデータページ順番号又は関連するデータページ情報を記録することがない。また、L2Pマッピング表700は各領域の開始論理アドレスのみを記憶することもできるから、L2Pマッピング表700自身はとても小さいデータ量のみを有する。よって、L2Pマッピング表700はバッファメモリ216又はDRAM240に常駐することができ、バッファメモリ216又はDRAM240の記憶空間に大きい負担をもたらすことがない。なお、主装置110が領域のサイズ及び領域の個数を設定した後に、各領域の開始論理アドレスは固定している。よって、L2Pマッピング表700はさらに1つの欄と簡略化することができ、即ち、物理ブロックアドレス欄のみを有しても良い。領域の開始論理アドレス欄が表のエントリー(entry)により表されるから、図7Bに示すL2Pマッピング表710のように、実際には複数の領域の開始論理アドレスを記憶する必要がない。
以上の実施例では、L2Pマッピング表700にはZNS310_1の物理ブロックアドレスのみが含まれ、任意のデータページアドレスが含まれなくても良い。しかし、他の実施例において、L2Pマッピング表700は各領域の開始論理アドレス及び対応する物理ブロックアドレス及び1番目のデータページの物理データページアドレスを含んでも良い。L2Pマッピング表の中の1つの領域に1つのみの物理ブロックアドレス及び1つのみの物理データページアドレスが含まれるので、依然としてとても小さいデータ量のみがある。
図7Cは本発明の一実施例におけるL2Pマッピング表720を示す図である。L2Pマッピング表720は2つの欄を含み、そのうち、1つの欄に論理アドレスが記録され、もう1つの欄にブロックの物理ブロックアドレスが記録される。図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に書き込むデータの1番目の論理アドレス(即ち、ブロックB7のデータページP1に対応する論理アドレス)であっても良く、論理アドレス(Z1_LBA_S+2*y)はブロックB8に書き込むデータの1番目の論理アドレス(即ち、ブロック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に書き込むデータの1番目の論理アドレス(即ち、ブロックB99のデータページP1に対応する論理アドレス)であっても良く、論理アドレス(Z3_LBA_S+2*y)はブロックB6に書き込むデータの1番目の論理アドレス(即ち、ブロックB6のデータページP1に対応する論理アドレス)であっても良い。なお、上述の“y”は、1つのブロックのために幾つかの論理アドレスのデータを記憶するかを表すことができ、特に、主装置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はさらに1つの欄と簡略化することができ、即ち、物理ブロックアドレス欄のみを有しても良い。論理アドレス欄が表のエントリー(entry)により表されるから、実際には複数のサブ領域の開始論理アドレスを記憶する必要がなく、例えば、図7DのL2Pマッピング表740に示す通りである。
なお、本実施例のL2Pマッピング表720はZNS310_1の物理ブロックアドレスのみを含み、何れのデータページアドレスも含むことがない。即ち、L2Pマッピング表720は任意のブロック内のデータページ順番号又は関連するデータページ情報を記憶することがない。また、L2Pマッピング表720は各ブロックに対応する1番目の論理アドレスのみを記憶し得るので、L2Pマッピング表720自身はとても小さいデータ量を有する。よって、L2Pマッピング表720はバッファメモリ216又はDRAM240に常駐することができ、バッファメモリ216又はDRAM240の記憶空間に大きい負担をかけることがない。一実施例において、上述L2Pマッピング表720に記録の物理ブロックアドレスはさらに1番目のデータページの物理データページアドレスと組み合わせられても良いが、1つの物理データページアドレスの追加は実際には記憶空間に大きい負担を与えることがない。
図8は本発明の一実施例におけるZNS310_1からデータを読み取るフローチャートである。そのうち、本実施例では、ZNS310_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であり、1つの領域が2000個の論理アドレスを含み、L2Pマッピング表700に記憶の領域Z1の開始論理アドレスZ1_LBA_SがLBA_2001であるとする場合、マイクロプロセッサー212は前記特定の論理アドレスが領域Z1に属することを判断できる。続いて、マイクロプロセッサー212は、前記特定の論理アドレスと領域Z1の開始論理アドレスZ1_LBA_Sとの間の差、及び、ブロックの各データページに幾つかの論理アドレスのデータを記憶可能かに基づいて、前記特定の論理アドレスに対応する前記物理データページアドレスを決定することができる。説明の便宜のため、ブロック中の各データページに1つのみの論理アドレスのデータを記憶可能であり、前記特定の論理アドレスと領域Z1の開始論理アドレスZ1_LBA_Sとの間の差が500個の論理アドレスであるとする場合、マイクロプロセッサー212は、前記特定の論理アドレスがブロックB3の500番目のデータページP500の物理データページアドレスに対応することを計算することができ、ブロックB3のデータページ数が500未満の場合、ブロックB3の1番目のデータページP1から500番目のデータページまで数えてブロックB7に位置する物理データページアドレスを取得することができる。
他の面において、図7BのL2Pマッピング表720を例にとって説明し、L2Pマッピング表720に複数の領域の複数の論理アドレスが記憶されており、且つこれらの論理アドレスがそれぞれブロックB3、B7、B8の1番目のデータページP1に対応するので、マイクロプロセッサー212は上述の情報から前記特定の論理アドレスがどの領域及びどのブロックに属するかを知ることができる。続いて、マイクロプロセッサー212は、前記特定の論理アドレスと領域Z1の論理アドレス(例えば、Z1_LBA_S、(Z1_LBA_S+y)又は(Z1_LBA_S+2y))との間の差、及び、ブロックの各データページに幾つかの論理アドレスのデータを記憶可能かに基づいて、前記特定の論理アドレスに対応する前記物理データページアドレスを決定することができる。説明の便宜のため、ブロック中の各データページに1つのみの論理アドレスのデータを記憶可能であり、前記特定の論理アドレスと領域Z1の開始論理アドレスZ1_LBA_Sのとの間の差が500個の論理アドレスであるとする場合、マイクロプロセッサー212は、前記特定の論理アドレスがブロックB3の500番目のデータページP500の物理データページアドレスに対応すると計算することができる。
ステップ806において、マイクロプロセッサー212はステップ804で決定される物理ブロックアドレス及び物理データページアドレスに基づいて、ZNS310_1のうちから対応するデータを読み取り、そして、読み取ったデータを主装置110にフィードバックする(返す)ことができる。
上述のように、以上の実施例に記載の内容により、フレッシュメモリコントローラ122はとても小さいサイズのL2Pマッピング表700/710/720/730を生成した場合にでも、依然として、ZNS310_1のデータの書き込み及び読も取りを完了することができる。しかし、この実施例では、多くの物理ブロックの剰余データページ、例えば、物理ブロックB8、物理ブロックB6の中の空白又は無効データページが浪費され、これらの剰余データページは使用者の使用可能なメモリ空間を減少させることができる。このような方法では、フレッシュメモリコントローラ122の管理上の負担を低減することができるが、使用者の利用可能なメモリ空間を減少させ、ひいては、幾つかの極端の例では、剰余データページの割合が高すぎるから、フレッシュメモリコントローラ122は、使用者が使用するための十分なメモリ空間を計画することができない場合もある。
図9は本発明の他の実施例における主装置110からのデータをZNS310_1に書き込むフローチャートである。そのうち、本実施例では、各領域に対応するデータ量がフレッシュメモリモジュール124中の各ブロックのサイズよりも大きく、且つ各領域に対応するデータ量がフレッシュメモリモジュール124中の各ブロックのサイズの整数倍ではないと仮定する。ステップ900において、フローが開始し、主装置110及び記憶装置120_1は通電して初期化操作を完了し、主装置110は記憶装置120_1に対して各領域のサイズ、領域の数、論理ブロックアドレスサイズ等の基本設定を設定し、例えば、ZNS指令集(Zoned Namespaces Command Set)を用いて設定することができる。ステップ902において、主装置110は書き込み指令及び対応するデータをフレッシュメモリコントローラ122に送信し、そのうち、上述のデータは1つ又は複数の領域に対応するデータであり、例えば、図4中の領域Z3は論理アドレスLBA_k~LBA_(k+x-1)のデータに対応する。ステップ904において、フレッシュメモリコントローラ122はフレッシュメモリモジュール124のうちから少なくとも1つのブロック(空白ブロックであり、スペアブロックとも言う)を選択し、又は、少なくとも1つの空白ブロック又は少なくとも1つの共通ブロックを選択し、そして、主装置110からのデータをこれらのブロックに順次書き込む。例を挙げて言えば、図10に示すように、各領域に対応するデータ量がフレッシュメモリモジュール124の中の2つのブロックと3つのブロックとの間にあるとする場合、フレッシュメモリコントローラ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のデータをZNS310_1に書き込もうとし、共通ブロックB8に剰余空間がまだあるので、マイクロプロセッサー212は2つの空白ブロック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に記憶することができる。これらの専用ブロックは、同一の領域に属するデータのみを記憶し得るから、専用ブロックと称される。任意の1つの領域の最後の1つのデータ(前記領域の最後の1つの論理アドレスに対応するデータ)はすべて共通ブロック、例えば、ブロックB8に記憶することができ、前記共通ブロックでは、もう1つの領域の最後の1つのデータを記憶することもできる。この実施例では、共通ブロックは1つだけの領域のデータを記憶するのではなく、又は、共通ブロックは1つ以上の領域の最後の1つのデータを記憶し、専用ブロックは単一の領域のデータのみを記憶すると言っても良い。
ステップ906において、フレッシュメモリコントローラ122はL2Pマッピング表を生成又は更新して論理アドレスと物理アドレスのマッピング関係を記録し、また、共通ブロック表を記録し、これらは、後続のZNS310_1からのデータ読取時の使用に供する。図11Aは、本発明の一実施例におけるL2Pマッピング表1100A及び共通ブロック表1130Aを示す図である。L2Pマッピング表1100Aは2つの欄を含み、そのうち、1つの欄に論理アドレスが記録され、もう1つの欄にブロックの物理ブロックアドレスが記録される。図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に書き込むデータの1番目の論理アドレス(即ち、第二部分のデータZ1_1の1番目の論理アドレスであり、且つブロックB7の1番目のデータページP1に対応する論理アドレスでもある)であっても良く、論理アドレス(Z1_LBA_S+2*y)はブロックB8に書き込むデータの1番目の論理アドレス(即ち、第三部分のデータZ1_2の1番目の論理アドレス)であっても良く;同様に、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に書き込むデータの1番目の論理アドレス(即ち、第二部分のデータZ3_1の1番目の論理アドレスでり、且つブロックB99の1番目のデータページP1に対応する論理アドレスでもある)であっても良く、論理アドレス(Z3_LBA_S+2*y)はブロックB8に書き込むデータの1番目の論理アドレス(即ち、第三部分のデータZ3_2の1番目の論理アドレス)であっても良い。なお、上述の“y”は、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マッピング表1100はさらに1つの欄と簡略化することができ、即ち、物理ブロックアドレス欄のみを有しても良い。論理アドレス欄が表のエントリー(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は2つの欄を含み、そのうち、1つの欄に論理アドレスが記録され、もう1つの欄に論理アドレスに対応する物理ブロックアドレス及び物理データページアドレスが記録される。図11Aでは、共通ブロック表1130Aは領域Z1の第三部分のデータZ1_2の1番目の論理アドレス(Z1_LBA_S+2*y)及び対応する物理ブロックアドレスPBA8及び物理データページアドレスP1を記録し、即ち、第三部分のデータZ1_2において1番目の論理アドレスに対応するデータはブロックB8の1番目のデータページP1に書き込まれ;共通ブロック表1130Aは領域Z3の第三部分のデータZ3_2の1番目の論理アドレス(Z3_LBA_S+2*y)及び対応する物理ブロックアドレスPBA8及び物理データページアドレスP120を記録し、即ち、第三部分のデータZ3_2において1番目の論理アドレスに対応するデータはブロックB8の120番目のデータページP120に書き込まれる(なお、ここでは、ブロック中の各データページに1つのみの論理アドレスのデータを記憶可能とするが、実際には1つのデータページに幾つかの論理アドレスのデータを記憶可能かに基づいて調整することができる)。図11B中のL2Pマッピング表1100Bと同様に、図11A中の共通ブロック表1130Aも図11Bにおける共通ブロック表1130Bの形式で現れても良く、その理由も同じであるから、ここではその詳しい説明を省略する。
なお、領域Z1及び領域Z3のデータを書き込む過程において、その書き込む過程は、領域Z1のデータが全部書き込まれた後に領域Z3のデータをZNS310_1に書き込むのではない可能性があり、言い換えると、領域Z1のデータの書き込みが未完了のときに、フレッシュメモリコントローラ122は、領域Z3のデータをZNS310_1に書き込む必要が出る可能性がある。よって、本発明のもう1つの実施例において、共通ブロック表1130はさらに1つの完了ポインター欄を含んでも良く、それは、領域のデータが共通ブロックにおいて完全に書き込まれているかを指示するために用いられる。図12を参照し、そのうち、図12に示す共通ブロック表1230は図10の実施例をもとにする。図12(a)では、領域Z1の第三部分のデータZ1_2がすべて共通ブロックB8に書き込まれた後に、マイクロプロセッサー212は完了ポインターを‘0’から‘1’に変更し、その後、マイクロプロセッサー212は、領域Z3の第三部分のデータZ3_2をZNS310_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をNS310_1に書き込む必要がある場合、共通ブロックB8の領域Z1の第三部分データZ1_2に対応する完了ポインターが‘0’であるから、マイクロプロセッサー212は、共通ブロックB8が現在に第三部分のデータZ3_2の書き込みみ用に供することができないと判断し、そのため、マイクロプロセッサー212はさらに1つの空白ブロック(例えば、ブロックB15)を選択し、そして、領域Z3の第三部分のデータZ3_2をブロックB15に書き込み、また、共通ブロック表1230において第三部分のデータZ3_2及び対応する物理ブロックアドレスPBA15及び物理データページアドレスP1を記録する。なお、図12における共通ブロック表1230も、図11Bの中の共通ブロック表1130Bと同様の形式で完了ポインター欄を追加する形式で現れ、固定の論理アドレス位置で論理アドレス欄を置換しても良く、その理由はL2Pマッピング表1100B及び共通ブロック表1130Bと同じであるので、ここではその詳しい説明を省略する。
一実施例において、主装置110が1つの領域をリセット(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はZNS310_1の物理ブロックアドレスのみを含み、何れのデータページアドレスも含むことがない。即ち、L2Pマッピング表1100A/1100Bは任意のブロック内のデータページ順番号又は関連するデータページ情報を記憶することがない。また、共通ブロック表1130A/1130B/1230も少量の論理アドレスのみを記録し、ひいては、共通ブロック表1130A/1130B/1230の論理アドレスが非常に規則的であるため、論理アドレス欄を省略し、表のエントリー(entry)だけで表しても良い。よって、L2Pマッピング表1100A/1100B及び共通ブロック表1130A/1130B/1230自身はとても小さいデータ量のみがあるため、L2Pマッピング表1100A/1100B及び共通ブロック表1130A/1130B/1230はバッファメモリ216又はDRAM240に常駐することができ、バッファメモリ216又はDRAM240の記憶空間に大きい負担をかけることがない。
また、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は本発明の一実施例におけるZNS310_1からデータを読み取るフローチャートである。そのうち、本実施例では、ZNS310_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))との間の差、及び、ブロックの各データページに幾つかの論理アドレスのデータを記憶可能かに基づいて、前記特定の論理アドレスに対応する前記物理データページアドレスを決定することができる。説明の便宜のため、ブロック中の各データページに1つのみの論理アドレスのデータを記憶可能とする場合、前記特定の論理アドレスと領域Z1の開始論理アドレスZ1_LBA_Sとの間の差は500個の論理アドレスであり、且つ前記特定の論理アドレスはZ1_LBA_Sと(Z1_LBA_S+y)との間(そのうち、yは、各物理ブロックがホスト装置からのデータを格納するためのアドレスの数であり、この例では、y>500である)にあり、この場合、マイクロプロセッサー212は、前記特定の論理アドレスがブロックB3の500番目のデータページP500の物理データページアドレスに対応することを計算でき、この例では、マイクロプロセッサー212は、差500をyで割ることで、商0及び余数500を取得し、この場合、マイクロプロセッサー212は、特定の論理アドレスに対応する物理ブロックアドレスがL2Pマッピング表1100Aの1番目のエントリーにあるはずであることを知り、ルックアップした後に、マイクロプロセッサー212は、特定の論理アドレスに対応する物理ブロックアドレスが物理ブロックアドレスでPBA3であることを発見した。また、余数が500であるため、マイクロプロセッサー212は特定の論理アドレスに対応する物理ページアドレスがP500であることを知ることができ、なお、物理ページを単位とする以外に、より小さい読取単位でアドレス単位としても良く、例えば、セクター(sector)又は4Kbyte等の他のNVMe規格を満たすアドレス単位を採用しても良く;他の面において、前記特定の論理アドレスが領域Z3に属するとすれば、マイクロプロセッサー212は前記特定の論理アドレスと領域Z3の論理アドレス(例えば、Z3_LBA_S、(Z3_LBA_S+y)又は(Z3_LBA_S+2y))との間の差、及び、ブロックの各データページに幾つかの論理アドレスのデータを記憶することが可能かを基づいて、前記特定の論理アドレスに対応する前記物理データページアドレスを決定することができる。説明の便宜のため、ブロック中の各データページに1つのみの論理アドレスのデータを記憶可能であり、前記特定の論理アドレスが(Z3_LBA_S+2y)よりも大きく且つ領域Z3の最大論理アドレス以下であり、且つ前記特定の論理アドレスと領域Z3の論理アドレス(Z3_LBA_S+2y)との間の差が80個の論理アドレスであるとする場合、マイクロプロセッサー212は、共通ブロック表1130に記録の領域Z3の第三部分のデータZ3_2に対応する物理データページアドレスP120を参照することで、前記特定の論理アドレスが共通ブロックB8の200番目のデータページP200の物理データページアドレスに対応することを計算することができる。
ステップ1306において、マイクロプロセッサー212は、ステップ1304で決定された物理ブロックアドレス及び物理データページアドレスに基づいて、ZNS310_1のうちから対応するデータを読み取り、そして、読み取ったデータを主装置110にフィードバックすることができる。
上述のように、以上の実施例に記載の内容により、フレッシュメモリコントローラ122は、とても小さいサイズのL2Pマッピング表1100A/1100B及び共通データ表1130A/1130B/1230を生成した場合にでも、依然としてZNS310_1のデータの書き込み及び読み取りを効率的に完了することができる。
以上の図5~図13の実施例では、各領域に対応するデータ量がフレッシュメモリモジュール124中の各ブロックのサイズよりも大きいと仮定しているが、主装置110は、各領域に対応するデータ量を、フレッシュメモリモジュール124中の各ブロックのサイズよりも小さくしても良く、その関連するアクセス方式は以下の通りである。
図14は本発明の他の実施例における主装置110からのデータをZNS310_1に書き込むフローチャートである。そのうち、本実施例では、各領域に対応するデータ量がフレッシュメモリモジュール124中の各ブロックのサイズよりも小さいと仮定する。ステップ1400において、フローが開始し、主装置110及び記憶装置120_1は通電して初期化操作を完了し、主装置110は記憶装置120_1に対して各領域のサイズ、領域の数、論理ブロックアドレスサイズ等の基本設定を設定し、例えば、ZNS指令集(Zoned Namespaces Command Set)を用いて設定することができる。ステップ1402において、主装置110は書き込み指令及び対応するデータをフレッシュメモリコントローラ122に送信し、そのうち、上述のデータは1つ又は複数の領域に対応するデータであり、例えば、図4の中の領域Z3の論理アドレスLBA_k~LBA_(k+x-1)に対応するデータである。ステップ1404において、フレッシュメモリコントローラ122は、ZNS310_1のうちから少なくとも1つのブロック(空白ブロックであり、スペアブロックとも言う)を選択し、そして、論理アドレス順序に従って主装置110からのデータを前記少なくとも1つのブロックに順次書き込む。本実施例では、1つのブロックは単一の領域のデータのみを書き込むために用いられ、図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の最後の1つの論理アドレスと領域Z1の1番目の論理アドレスを含む書き込み命令)を送信し、且つ或る特定物理ブロック(例えば、物理ブロックB20)にこれらの連続した論理アドレスのデータを記憶する十分な空間がまだある場合にでも、フレッシュメモリコントローラ122はこれらの連続した論理アドレスに対応するデータを前記特定物理ブロックに連続して記憶することができず、不連続的に領域Z1の1番目の論理アドレスに対応するデータをもう1つの物理ブロック、例えば、ブロックB30に書き込む。それ相応に、主装置110が領域Z0、Z1内の連続した論理アドレスに読取指令(例えば、領域Z0の最後の1つの論理アドレスと領域Z1の1番目の論理アドレスを含む読取命令)を送信する場合、フレッシュメモリコントローラ122は、物理ブロックB20に記憶される、領域Z1の最後の1つの論理アドレスに対応するデータを読み取った後に、不連続的にブロックB30の1番目の記憶位置を読み取り、これにより、領域Z1の1番目の論理アドレスのデータを取得することができる。
ステップ1408において、フレッシュメモリコントローラ122はL2Pマッピング表を生成又は更新して論理アドレスと物理アドレスのマッピング関係を記録し、これは、後続のZNS310_1からのデータ読取時の使用に供する。図16は本発明の一実施例におけるL2Pマッピング表1600を示す図である。L2Pマッピング表1600は2つの欄を含み、そのうち、1つの欄に領域順番号又は関連する認識可能な内容が記録され、もう1つの欄にブロックの物理ブロックアドレスが記録される。図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である。なお、この実施例では、各物理ブロックはすべて1つの領域にのみ対応し、例えばブロックB20、B30及びB35はそれぞれ領域Z0、Z1、Z2にのみ対応する。又は、単一ブロックは単一の領域のデータのみを記憶し、例えばブロックB20は領域Z0に対応するデータのみを記憶し、ブロックB30は領域Z1に対応するデータのみを記憶し、ブロックB35は領域Z2に対応するデータのみを記憶する。
以上の実施例では、ZNS310_1内の任意の1つの物理ブロックに記憶のデータのすべては必ず同じ領域に属し、即ち、任意の1つの物理ブロックに記憶のすべてのデータの論理アドレスは同一の領域に属する。よって、本実施例のL2Pマッピング表1600はZNS310_1の物理ブロックアドレスのみを含み、任意のデータページアドレスを含まなくても良い。即ち、L2Pマッピング表1600は何れのブロック内のデータページ順番号又は関連するデータページ情報を記録することがない。また、L2Pマッピング表1600は各領域の領域順番号又は開始論理アドレスを記録することもできる。よって、L2Pマッピング表1600自身はとても小さいデータ量のみを有するから、L2Pマッピング表1600はバッファメモリ216又はDRAM240に常駐することができ、バッファメモリ216又はDRAM240の記憶空間に大きい負担をかけることがない。一実施例において、上述のL2Pマッピング表1600に記録の物理ブロックアドレスはさらに1番目のデータページの物理データページアドレスと組み合わせられても良いが、1つの物理データページアドレスの追加は実際には記憶空間に大きい負担をかけることがない。なお、主装置110が領域のサイズ及び領域の個数を設定した後に、各領域の開始論理アドレスは固定しているので、同様に、L2Pマッピング表1600はさらに1つの欄と簡略化することができ、即ち、物理ブロックアドレス欄位のみを有しても良い。論理アドレス欄が表のエントリー(entry)により表されるので、実際には複数の領域の開始論理アドレスを記憶する必要がない。
これに加えて、主装置110が1つの領域をリセット(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は本発明の他の実施例におけるZNS310_1からデータを読み取るフローチャートである。そのうち、本実施例では、ZNS310_1に図15に示す領域Z0、Z1及びZ2のデータが記憶されていると仮定する。ステップ1700において、フローが開始し、主装置110及び記憶装置120_1は通電して初期化操作(例えば、電源オン手順)を完了する。ステップ1702において、主装置110は読取指令を送信して特定の論理アドレスを有するデータの読み取りを要求する。ステップ1704において、フレッシュメモリコントローラ122中のマイクロプロセッサー212は前記特定の論理アドレスがどの領域に属するかを判断し、そして、L2Pマッピング表1600に記録の論理アドレスに基づいて前記特定の論理アドレスに対応する物理データページアドレスを計算する。図16のL2Pマッピング表1600を例にとって説明し、L2Pマッピング表1600に各領域の領域順番号又は開始論理アドレスが記録されており、また、各領域の論理アドレスの数が既知であるので、マイクロプロセッサー212は上述の情報から前記特定の論理アドレスがどの領域に属するかを知ることができる。例を挙げて言えば、1つの領域が2000個の論理アドレスを含み、マイクロプロセッサー212が、ホスト装置がアクセスしようとする論理アドレス(特定の論理アドレス)を2000で割ることにより得た商は、前記特定の論理アドレスの所在する領域であり、図15、図16の実施例を例にとって説明し、マイクロプロセッサー212は、前記特定の論理アドレスを2000で割った後に、商が1であると発見したとすると、前記特定の論理アドレスが領域Z1に属すると判断することができる。この場合、マイクロプロセッサー212は前記特定の論理アドレスと領域Z1の開始論理アドレスとの間の差(前記差は前記マイクロプロセッサー212が前記特定の論理アドレスを2000で割った後の余数である)、及び、ブロックの各データページに幾つかの論理アドレスのデータを記憶可能かに基づいて、前記特定の論理アドレスに対応する前記物理データページアドレスを決定することができる。説明の便宜のため、ブロック中の各データページに1つのみの論理アドレスのデータを記憶可能であり、且つ前記特定の論理アドレスと領域Z1の開始論理アドレスとの間の差が200個の論理アドレスであるとする場合、マイクロプロセッサー212は、前記特定の論理アドレスがブロックB20の200番目のデータページの物理データページアドレスに対応すると計算することができる。
ステップ1706において、マイクロプロセッサー212はステップ1704で決定された物理ブロックアドレス及び物理データページアドレスに基づいて、ZNS310_1のうちから対応するデータを読み取り、そして。読み取ったデータを主装置110にフィードバックすることができる。
上述のように、以上の実施例に記載の内容により、フレッシュメモリコントローラ122は、とても小さいサイズのL2Pマッピング表700/720を生成した場合にでも、依然としてZNS310_1のデータの書き込み及び読み取りを効率的に完了することができる。しかし、この実施例では、依然として大量の物理ブロックの記憶空間、例えば、図15中に示す空白又は無効データページが浪費される。
図18は本発明の他の実施例における主装置110からのデータをZNS310_1に書き込むフローチャートである。そのうち、本実施例では、各領域に対応するデータ量がフレッシュメモリモジュール124中の各ブロックのサイズよりも小さいと仮定している。ステップ1800において、フローが開始し、主装置110及び記憶装置120_1は通電して初期化操作を完了し、主装置110は記憶装置120_1に対して各領域のサイズ、領域の数、論理ブロックアドレスサイズ等の基本設定を設定し、例えば、ZNS指令集(Zoned Namespaces Command Set)を用いて設定することができる。ステップ1802において、主装置110は書き込み指令及び対応するデータをフレッシュメモリコントローラ122に送信し、そのうち、上述のデータは1つ又は複数の領域に対応するデータであり、例えば、図4の中の領域Z3の、論理アドレスLBA_k~LBA_(k+x-1)に対応するデータである。ステップ1804において、フレッシュメモリコントローラ122はZNS310_1のうちから少なくとも1つのブロック(空白ブロックであり、スペアブロックとも言う)を選択し、又は、複数の空白ブロック及び共通ブロックを選択し、そして、1つの領域内の論理アドレスの順序に従って主装置110からのデータをこれらのブロックに順次書き込む。例を挙げて言えば、図19に示すように、フレッシュメモリコントローラ122は論理アドレスの順序に従って領域Z0、Z2、Z1のデータをブロックB20、B30に順次書き込むことができる。図19を例にとり、領域Z0の一番目のデータがブロックB20の1番目のデータページから書き込まれ、且つ領域Z0のデータがすべて書き込まれた後に、図20のL2Pマッピング表2000を参照し、この表は後述し、フレッシュメモリコントローラ122は領域順番号Z0に対応する可用ポインターを0から1に変更し、これは領域順番号Z0のデータがすべて書き込まれておりし、領域順番号Z0が記憶される物理ブロックPBA20の剰余の空間が他のデータを記憶するために用いられ得ることを表す。物理ブロックPBA20の剰余の空間が他のデータを記憶するために用いられ得るから、領域Z2のデータは引き続きブロックB20の剰余データページに書き込むことができる。フレッシュメモリコントローラ122が領域Z2の書き込み指令を処理するときに、対応する可用ポインターが1である任意の1つの物理ブロックを見つけることができない場合、フレッシュメモリコントローラ122は1つの空白ブロック又はスペアブロックを、領域Z2のデータを書き込むために抽出する必要がある。
この例では、物理ブロックPBA20に対応する可用ポインターが1であるため、フレッシュメモリコントローラ122は直接、物理ブロックPBA20を用いて領域Z2のデータを記憶することができ、もう1つの空白ブロック又はスペアブロックを抽出する必要がない。ブロックB20の剰余データページの数が領域Z2のすべてのデータの記憶に足りないので、領域Z2のデータは第一部分のZ2_1及び第二部分のZ2_2に分けられ、そのうち、第一部分のZ2_1はブロックB20に記憶され、第二部分のZ2_2は、フレッシュメモリコントローラ122がもう1つの空白ブロック即ちブロックB30を抽出することで、ブロックB30の1番目のデータページから書き込まれる。Z2の第一部分のZ2_1をブロックB20の剰余データページに満たした後に、物理ブロックPBA20がフル(一杯)になっており、データを書き込むことがもうできないので、フレッシュメモリコントローラ122は領域Z0に対応する可用ポインターを0に変更し、且つ領域Z2_1に対応する可用ポインターを0に維持する。領域Z2の第二部分のZ2_2がすべて書き込まれた後に、フレッシュメモリコントローラ122は領域順番号Z2_2に対応する可用ポインターを0から1に変更し、同様に、領域Z1のデータも引き続きブロックB30の剰余データページに書き込まれる。
ステップ1806において、フレッシュメモリコントローラ122はL2Pマッピング表を生成又は更新して論理アドレスと物理アドレスのマッピング関係を記録し、これは、後続のZNS310_1からのデータ読取時の使用に供する。図20は本発明の一実施例におけるL2Pマッピング表2000を示す図である。L2Pマッピング表2000は2つの欄を含み、そのうち、1つの欄にブロック順番号又は論理アドレス区間が記録され、もう1つの欄に前記論理アドレス区間の1番目の論理アドレスに対応する物理ブロックアドレス及び物理データページアドレスが記録される。図20では、L2Pマッピング表2000は、領域Z0又は領域Z0の論理アドレス区間の1番目の論理アドレス、及び対応する物理ブロックアドレスPBA20及び物理データページアドレスP1、領域Z2の第一部Z2_1の論理アドレス区間及び前記区間1番目の論理アドレスに対応する物理ブロックアドレスPBA20及び物理データページアドレスPa、領域Z2の第二部分Z2_2の論理アドレス区間及び前記区間1番目の論理アドレスに対応する物理ブロックアドレスPBA30及び物理データページアドレスP1、及び領域Z1又は領域Z1の論理アドレス区間及び前記区間1番目の論理アドレスに対応する物理ブロックアドレスPBA30及び物理データページアドレスPbを記録する。なお、この例では、データにより満たされた1つの物理ブロックはすべて複数の領域のデータを記憶する。
なお、領域Z0、Z2、及び領域Z1のデータを書き込む過程において、その書き込む過程は、領域Z0のデータが全部書き込まれてから領域Z1のデータをZNS310_1に書き込むのではない可能性があり、言い換えると、領域Z0のデータの書き込みが未完了のときに、フレッシュメモリコントローラ122は、領域Z1のデータをZNS310_1に書き込む必要が出る可能性がある。よって、上述のように、本発明のもう1つの実施例において、L2Pマッピング表2000はさらに1つの可用ポインター欄を含んでも良く、それは、領域のデータが共通ブロックにおいて完全に書き込まれているかを指示するために用いられる。
以上の実施例では、L2Pマッピング表2000が異なる領域に対応するデータのブロック内のアドレス関係を記録しているから、論理アドレスが異なる領域に属するデータが同じ物理ブロックに記憶され得ると見なすことができる。よって、物理ブロックの空間を効率的に利用することができる。
なお、本実施例のL2Pマッピング表2000は少量の論理アドレス(少量の物理データページアドレス)のみを記録するから、L2Pマッピング表2000自身はとても小さいデータ量のみを有する。よって、L2Pマッピング表2000はバッファメモリ216又はDRAM240に常駐することができ、バッファメモリ216又はDRAM240の記憶空間に大きい負担をかけることがない。
図21は本発明の一実施例におけるZNS310_1からデータを読み取るフローチャートである。そのうち、本実施例では、ZNS310_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で決定された物理ブロックアドレス及び物理データページアドレスに基づいて、ZNS310_1のうちから対応するデータを読み取り、読み取ったデータを主装置110にフィードバックする。
上述のように、以上の実施例に記載の内容により、フレッシュメモリコントローラ122はとても小さいサイズのL2Pマッピング表2000を生成した場合にでも、依然としてZNS310_1のデータの書き込み及び読み取りを効率的に完了することができる。
以上の図5~図21に示す実施例を参照し、図5~図7は各領域に対応するデータ量がフレッシュメモリモジュール124中の各ブロックのサイズよりも大きく、且つフレッシュメモリモジュール124中の各ブロックが単一の領域に対応するデータのみを記憶し、即ち、異なる領域のデータが同じ物理ブロックに書き込まれないことを説明した。図8~図12は各領域に対応するデータ量がフレッシュメモリモジュール124中の各ブロックのサイズよりも大きく、且つフレッシュメモリモジュール124において一部のブロックが複数の領域に対応するデータを記憶し、即ち、異なる領域のデータが同じ物理ブロックに書き込まれ得ることを説明した。図13~図17は各領域に対応するデータ量がフレッシュメモリモジュール124中の各ブロックのサイズよりも小さく、且つフレッシュメモリモジュール124中の各ブロックが単一の領域に対応するデータのみを記憶し、即ち、異なる領域のデータが同じ物理ブロックに書き込まれないことを説明した。図18~図21は各領域に対応するデータ量がフレッシュメモリモジュール124中の各ブロックのサイズよりも小さく、且つフレッシュメモリモジュール124中のブロックが複数の領域に対応するデータを記憶し、即ち、異なる領域のデータが同じ物理ブロックに書き込まれ得ることを説明した。
一実施例において、上述の4種のアクセスモードは選択的にフレッシュメモリモジュール124のZNSに応用することができ、且つフレッシュメモリモジュール124が複数のZNSを有する場合、これらのZNSは異なるアクセスモードを採用することができる。具体的に言えば、図3に示すように、フレッシュメモリコントローラ122内のマイクロプロセッサー212は、ZNS310_1の各領域のサイズに基づいて、採用するアクセスモードを選択することができる。例を挙げて言えば、ZNS310_1の各領域に対応するデータ量がフレッシュメモリモジュール124中の各ブロックのサイズよりも大きい場合、マイクロプロセッサー212は図5~図7に言及のアクセスモード又は図8~図12に言及のアクセスモードを用いてZNS310_1にアクセスすることができ;ZNS310_2の各領域に対応するデータ量がフレッシュメモリモジュール124中の各ブロックのサイズよりも小さい場合、マイクロプロセッサー212は図13~図17に言及のアクセスモード又は図18~図21に言及のアクセスモードを用いてZNS310_2にアクセスすることができる。同様に、フレッシュメモリコントローラ122内のマイクロプロセッサー212はZNS310_2の各領域のサイズに基づいて、採用するアクセスモードを選択することができ、ZNS310_2が採用するアクセスモードは必ずZNS310_1と同じである必要がなく、例えば、ZNS310_1は図5~図7に言及のアクセスモードを採用することができ、ZNS310_2は図8~図12に言及のアクセスモードを採用することができる。
なお、フレッシュメモリコントローラ122が事前に主装置110が設定しようとする領域のサイズを知らないので、フレッシュメモリコントローラ122が規格を満たすすべての主装置と組み合わせることができるようにさせるために、フレッシュメモリコントローラ122は必ず図5~図21に示す実施例のすべてのアクセス方式を実行する能力がある必要である。例を挙げて言えば、フレッシュメモリコントローラ122は、フレッシュメモリモジュール124の単一の物理ブロックのサイズ(又はスーパーブロックのサイズ(スーパーブロックの概念は後述する))及び主装置110が設定した領域のサイズを知った後に、物理ブロックのサイズ及び領域のサイズに基づいて、主装置が実際に使用し得るメモリ空間を計画し、そして、上述の4種のアクセスモードのうちのどの種の方式に従ってアクセスを行うかを選択する。
領域のサイズが物理ブロックのサイズよりも小さい場合、フレッシュメモリコントローラ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が期待する容量を基準と見なしても良く、ZNSの、図13~図17のアクセス方式を用いるときに計画される容量が主装置110の前記基準よりも高いときに、フレッシュメモリコントローラ122は図13~図17のアクセス方式を選択することができ;また、ZNSの、図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が期待する容量を基準と見なしても良く、ZNSの、図5~図7のアクセス方式を採用するときに計画される容量が主装置110の前記基準よりも高いときに、フレッシュメモリコントローラ122は図5~図7のアクセス方式を選択することができ;また、ZNSの、図5~図7のアクセス方式を採用するときに計画される容量が主装置110の前記基準よりも低いときに、フレッシュメモリコントローラ122は図8~図12のアクセス方式を選択することができる。
図25は本発明の一実施例におけるフレッシュメモリコントローラに応用される制御方法のフローチャートである。以上の実施例に記載の内容を参照し、制御方法のフローは以下の通りである。
ステップ2500:フローが開始する。
ステップ2502:主装置からの設定指令を受信し、そのうち、前記設定指令はフレッシュメモリモジュールの少なくとも一部をZNSと設定し、そのうち、前記ZNSは複数の領域を論理的に含み、前記主装置の前記ZNSに対してのデータの書き込み及びアクセスは必ず領域を単位として行われ、各領域のサイズはすべて同じであり、各領域内の対応する論理アドレスは必ず連続したものであり、且つ領域の間にはオーバーラップした論理アドレスが存在しない。
ステップ2504:第一アクセスモード、第二アクセスモード、第三アクセスモード及び第四アクセスモードのうちの1つを用いて、前記主装置からのデータを前記フレッシュメモリモジュールに書き込み、そのうち、前記データは特定領域のすべてのデータである。
ステップ2506:前記第一アクセスモードを用いる場合、前記データの論理アドレスの順序に従って、前記データを前記フレッシュメモリモジュールの複数の特定ブロックに順次書き込み。
ステップ2508:前記データの書き込みが完了した後に、前記複数の特定ブロックの最後の1つの特定ブロックの剰余データページに無効データを書き込み、又は剰余データページを空白に維持して何れのデータも書き込まない。
ステップ2510:前記第二アクセスモードを用いる場合、前記データの論理アドレスの順序に従って、前記データを前記フレッシュメモリモジュールの前記複数の特定ブロックに順次書き込み。
ステップ2512:前記データの書き込みが完了した後に、完了ポインターを用いて前記複数の特定ブロックの最後の1つの特定ブロックを書き込み完了と標識する。
ステップ2514:前記第三アクセスモードを用いる場合、前記データの論理アドレスの順序に従って、前記データを前記フレッシュメモリモジュールの単一の特定ブロックに順次書き込み。
ステップ2516:前記データの書き込みが完了した後に、前記特定ブロックの剰余データページに無効データを書き込み、又は剰余データページを空白に維持して何れのデータも書き込まない。
ステップ2518:前記第四アクセスモードを用いる場合、前記データの論理アドレスの順序に従って、前記データを前記フレッシュメモリモジュールの単一の特定ブロックに順次書き込み。
ステップ2520:前記データの書き込みが完了した後に、完了ポインターを用いて前記特定ブロックを書き込み完了と標識する。
なお、他の実施例において、コントローラ122の設計を簡単にするために、コントローラ122は以上の4種のアクセスモードのうちの1種のみのアクセスモードをサポートしても良く、又はコントローラ122は以上の4種のアクセスモードのうちの2種のアクセスモードをサポートしても良く、又はコントローラ122は以上の4種のアクセスモードのうちの3種のアクセスモードをサポートしても良く、これは、特定のフレッシュメモリモジュール及び主装置に従って設計を行う必要がある。
また、本発明の一実施例において、記憶装置120_1はSDメモリーカード(Secure Digital Memory Card)であっても良く、それは従来のSDモードのデータ伝送をサポートし、即ち、UHS-I入力/出力通信インターフェース規格を用いて主装置110と通信を行い、且つPCIeチャンネル及びNVMeプロトコルを同時にサポートするPCIeモードもサポートする。
フレッシュメモリモジュール124の実装にあたって、フレッシュメモリコントローラ122は、フレッシュメモリモジュール124の内部の異なるデータプレーン(plane)に属するブロックを1つのスーパーブロックとして構成することで、データアクセス上の管理を容易にすることができる。具体的に言えば、図22を参照し、図22はフレッシュメモリモジュール124の一般記憶空間320_1を示す図である。図22に示すように、一般記憶空間320_1は2つのチャンネル(channel)、即ち、チャンネル1及びチャンネル2を含み、それぞれ、複数のフレッシュメモリチップ(chip)2210、2220、2230、2240が接続され、そのうち、フレッシュメモリチップ2210は2つのデータプレーン(plane)2212、2214を含み、フレッシュメモリチップ2220は2つのデータプレーン2222、2224を含み、フレッシュメモリチップ2230は2つのデータプレーン2232、2234を含み、フレッシュメモリチップ2240は2つのデータプレーン2242、2244を含み、且つ各データプレーンはすべて複数のブロックB0~BNを含む。フレッシュメモリコントローラ122は、一般記憶空間320_1を構成又は初期化する過程において、各データプレーンの1番目のブロックB0をスーパーブロック2261として構成し、各データプレーンの2番目のブロックB1をスーパーブロック2262として構成し、…、これに基づいて類推する。図22に示すように、スーパーブロック2261は8つの物理ブロックを含み、フレッシュメモリコントローラ122はスーパーブロック2261にアクセスするときに一般ブロックと類似しており、例を挙げて言えば、スーパーブロック2261自身は1つの消去単位であり、即ち、スーパーブロック2261の8つのブロックB0は別々で消去操作が行われても良いが、フレッシュメモリコントローラ122は必ず8つのブロックB0を一緒に消去し;また、スーパーブロック2261は、データを書き込むときに、順次、データプレーン2212の1番目のデータページ、データプレーン2214の1番目のデータページ、データプレーン2222の1番目のデータページ、データプレーン2224の1番目のデータページからデータが書き込まれ、データプレーン2244の1番目のデータページのデータ書き込みが完了した後に、データをデータプレーン2212の2番目のデータページ、データプレーン2214の2番目のデータページ、…に書き込み、これに基づいて類推し、換言すれば、フレッシュメモリコントローラ122は、スーパーブロック2261中の各ブロックB0の1番目のデータページにデータを満たした後に、引き続き、スーパーブロック2261中の各ブロックB0の2番目のデータページに対して書き込む。スーパーブロックは、フレッシュメモリコントローラ122が記憶空間320_1を容易に管理するために論理上設定する集合ブロックであり、物理上の集合ブロックではない。また、ゴミ収集、ブロックの有効ページの計算、ブロックの書き込み時間長の計算のときに、スーパーブロックを単位として行っても良い。なお、本発明の教示をもとに、当業者は、図5~図21に示す実施例を組み合わせることもでき、また、図5~図21に示す実施例に言及の物理ブロックもスーパーブロックであっても良く、すべての関連する実施例はスーパーブロックにより実現されても良く、単一の物理ブロックに限られないということを理解することもできる。
しかし、フレッシュメモリコントローラ122がフレッシュメモリモジュール124内のブロックをスーパーブロックとして構成する場合、図5~図8の実施例を採用してデータのアクセスを行うときに、各ブロックに多くの剰余データページ(空白データページ)来す可能性があり、これにより、フレッシュメモリモジュール124の内部空間が浪費される恐れがある。例を挙げて言えば、主装置110が計画する領域のデータ量のサイズが約6つの物理ブロックのサイズであるとすれば、8つのブロックを含むスーパーブロック2261に記憶のデータ量は6つの物理ブロックのサイズのデータ量だけであり、即ち、スーパーブロック2261では、約2つのブロックの記憶空間が空白の維持又は無効データの書き込みにより浪費されてしまう。よって、本発明の一実施例では、主装置110が設定する領域のデータ量に基づいてZNS310_1を構成する方法が提案され、これにより、ZNS310_1を効率的に使用することができる。
図23は、本発明の一実施例におけるフレッシュメモリモジュール124の構成方法のフローチャートである。ステップ2300において、フローが開始し、且つ主装置110、フレッシュメモリコントローラ122及びフレッシュメモリモジュール124は関連する初期化操作を完了する。ステップ2302において、主装置110は1つの設定指令集を送信してフレッシュメモリモジュール124の少なくとも一部をZNSと設定し、以下の説明では、ZNS310_1を例として説明し、例えば、主装置110は、記憶装置120_1に対してZNS310_1中の各領域のサイズ、領域の数、論理ブロックアドレスサイズ等の基本設定を設定し、例えば、ZNS指令集(Zoned Namespaces Command Set)を用いて設定を行うことができる。ステップ2304において、フレッシュメモリコントローラ122中のマイクロプロセッサー212は、主装置110が設定する領域のデータ量のサイズ(Zone size)、及びフレッシュメモリモジュール124中の各ブロック(物理ブロック)のサイズに基づいて、1つのスーパーブロックに含まれるブロックの数を決定する。具体的に言えば、主装置110が設定する領域のデータ量のサイズがAであり、フレッシュメモリモジュール124中の各物理ブロックにおいてホスト装置が使用するデータ量を記憶するためのサイズがBであり、マイクロプロセッサー212がAをBで割った後に得た余数がゼロではない場合、AをBで割った後に得た商に1をプラスした数は、1つのスーパーブロックに含まれるブロックの数である。マイクロプロセッサー212がAをBで割った後に得た余数がゼロである場合、AをBで割った後に得た商は、1つのスーパーブロックに含まれるブロックの数である。図24を例にとって説明し、フレッシュメモリモジュール124が複数のフレッシュメモリチップ2410、2420、2430、2440を含み、そのうち、フレッシュメモリチップ2410が2つのデータプレーン2412、2414を含み、フレッシュメモリチップ2420が2つのデータプレーン2422、2424を含み、フレッシュメモリチップ2430が2つのデータプレーン2432、2434を含み、フレッシュメモリチップ2440が2つのデータプレーン2442、2444を含み、且つ各データプレーンがすべて複数のブロックB0~BNを含み、AをBで割った後の商が‘5’であり、余数が‘3’である場合、マイクロプロセッサー212は、1つのスーパーブロックが6つのブロックを含むと決定することができる。よって、フレッシュメモリコントローラ122は、ZNS310_1を構成又は初期化する過程において、データプレーン2412、2414、2422、2424、2432、2434の1番目のブロックB0をスーパーブロック2461として構成し、データプレーン2412、2414、2422、2424、2432、2434の2番目のブロックB1をスーパーブロック2462として構成し、…、これに基づいて類推する。また、データプレーン2442及びデータプレーン2444のブロックB0~BNは、スーパーブロックとして構成される必要がなく、又は、データプレーン2412、2414、2422、2424、2432、2434と独立した別の1つのスーパーブロックとしてさらに構成されても良い。他の実施例において、フレッシュメモリコントローラ122は、ZNS310_1を構成又は初期化する過程において、データプレーン2412、2414、2422、2424、2432、2434の1番目のブロックB0をスーパーブロック2461として構成し、データプレーン2422、2424、2432、2434、2442、2444の2番目のブロックB1をスーパーブロック2462として構成しても良い。同一のスーパーブロック中の各個ブロックに対して平行にアクセスすることができれば、スーパーブロックのアクセス速度を向上させることができる。よって、この概念をもとに、スーパーブロックの設定を任意に行っても良い。
他の実施例において、主装置110が設定する領域のデータ量のサイズがCであり、フレッシュメモリモジュール124中の各物理ブロックにおいてホスト装置が使用するデータ量を記憶するためのサイズがDであり、CをDで割った後の商が‘3’であり、余数が‘2’である場合、マイクロプロセッサー212は、1つのスーパーブロックが4つのブロックであり、即ち、商プラス1であると決定することができる。フレッシュメモリコントローラ122は、主装置が設定するZNS310_1の命令を受信した後に、データプレーン2412、2414、2422、2424の1番目のブロックB0をスーパーブロック2461として構成し、2432、2434、2442、2444の1番目のブロックB0をスーパーブロック2462として構成し、これに基づいて類推する。
なお、記憶装置120_1、記憶装置120_2、…、記憶装置120_N等は出荷前の初期化設定を行うときにフレッシュメモリモジュールに対して初期のスーパーブロック設定を行うことができる。記憶装置120_1を例とし、このときのスーパーブロック設定は、同時アクセスが可能なデータプレーン2412、2414、2422、2424、2432、2434、2442、2444の1番目のブロックB0をスーパーブロック2461として構成し、同時アクセスが可能なデータプレーン2412、2414、2422、2424、2432、2434、2442、2444の2番目のブロックB1をスーパーブロック2462として構成し、最大アクセス周波数幅を取得することができる。記憶装置120_1は主装置110に接続され、主装置110がZNSの命令(例えば、ZNS310_1を設定する)を得た後に、ZNSのサイズについて、フレッシュメモリモジュール124内で特定の記憶領域をZNS310_1の専用空間として計画し、且つ主装置110のZNS310_1の各領域のサイズに対しての設定に基づいて、前記特定の記憶空間のスーパーブロックのサイズ及び結合方式を再び設定しても良い。例えば、データプレーン2412、2414、2422、2424の1番目のブロックB0をスーパーブロック2461として構成し、2432、2434、2442、2444の1番目のブロックB0をスーパーブロック2462として構成し、これに基づいて類推する。このときに、記憶装置120_1には2種の異なるサイズのスーパーブロックがあり、ZNS310_1専用の特定の記憶領域のスーパーブロックの設定は、ZNS310_1専用ではない特定の記憶領域のスーパーブロックの設定方式とは異なる。また、ZNS310_1専用の特定の記憶領域のスーパーブロックの設定は、記憶装置120_1の出荷前の初期化設定とも異なる。
上述のように、主装置110により設定される領域のデータ量に基づいてスーパーブロックに含まれるブロック数を決定することで、スーパーブロックは最適の空間利用を達成することができる。
なお、図22、図24の実施例に記載のフレッシュメモリチップの数、各フレッシュメモリチップに含まれるデータプレーンの数は例示に過ぎず、本発明を限定するものではない。また、図22、図24の実施例において、ZNS310_1に含まれるフレッシュメモリチップ2410、2420、2430、2440は、一般記憶空間320_1に含まれるフレッシュメモリチップ2210、2220、2230、2240と統合しても良い。具体的に言えば、フレッシュメモリモジュール124は、4つのみのフレッシュメモリチップ2210、2220、2230、2240を含んでも良く、フレッシュメモリチップ2210、2220、2230、2240は全体的に言えば図3に示すZNS310_1及び一般記憶空間320_1を含む。よって、マイクロプロセッサー212は、4つのフレッシュメモリチップ2210、2220、2230、2240を、複数種の異なるブロック数を含むスーパーブロックとして構成しても良く、例えば、図22に示す、8つのブロックを含むスーパーブロック、及び図24に示す、6つのブロックを含むスーパーブロックを含んでいる。
他の面において、図3に示す一般記憶空間320_1は、後続の時点で主装置110によりZNSとして構成されても良く、このときに、一般記憶空間320_1内で前に構成されたスーパーブロックのサイズは変更する必要がある。詳しく言えば、第一時点でマイクロプロセッサーは一般記憶空間320_1に対して設定を行い、各スーパーブロックのサイズを計画することができ、図22を例とし、スーパーブロックが最大で8つのブロックを含み得るので、マイクロプロセッサー212は、各スーパーブロックが8つのブロックを含むと設定する。引き続き、主装置110が一般記憶空間320_1をZNSとして再び設定するとすれば、マイクロプロセッサー212は、そのうちの各スーパーブロックに含まれるブロックの数を再び設定する必要があり、例えば、図22に示す6つのブロックである。
なお、フレッシュメモリコントローラ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:ZNS
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:スーパーブロック

Claims (20)

  1. フレッシュメモリコントローラに応用される制御方法であって、
    前記フレッシュメモリコントローラは、フレッシュメモリモジュールにアクセスするために用いられ、前記フレッシュメモリモジュールは複数のブロックを含み、各ブロックは複数のデータページを含み、
    前記制御方法は、
    主装置からの設定指令を受信し、前記設定指令はフレッシュメモリモジュールの少なくとも一部をZNS(zoned namespace)と設定するために用いられ、前記ZNSは複数の領域(zone)を論理的に含み、前記主装置の前記ZNSに対してのデータの書き込み及びアクセスは必ず領域を単位として行われ、各領域のサイズはすべて同じであり、各領域内の対応する論理アドレスは必ず連続したものであり、領域の間にはオーバーラップした論理アドレスが存在せず;
    第一アクセスモード、第二アクセスモード、第三アクセスモード及び第四アクセスモードのうちの1つを用いて、前記主装置からのデータを前記フレッシュメモリモジュールに書き込み、前記データは特定領域のすべてのデータであり;
    前記第一アクセスモードを用いる場合、
    前記データの論理アドレスの順序に従って、前記データを前記フレッシュメモリモジュールの複数の特定ブロックに順次書き込み;及び
    前記データの書き込みが完了した後に、前記複数の特定ブロックの最後の1つの特定ブロックの剰余データページに無効データを書き込み、又は剰余データページを空白に維持し且つ消去前に前記主装置の書き込み指令に基づいて前記主装置からのデータを書き込まず;
    前記第二アクセスモードを用いる場合、
    前記データの論理アドレスの順序に従って、前記データを前記フレッシュメモリモジュールの前記複数の特定ブロックに順次書き込み;及び
    前記データの書き込みが完了した後にのみ、前記最後の1つの特定ブロックの剰余データページは他の領域のデータの書き込み用に供することができ;
    前記第三アクセスモードを用いる場合、
    前記データの論理アドレスの順序に従って、前記データを前記フレッシュメモリモジュールの単一の特定ブロックに順次書き込み;及び
    前記データの書き込みが完了した後に、前記特定ブロックの剰余データページに無効データを書き込み、又は剰余データページを空白に維持し且つ消去前に前記主装置の書き込み指令に基づいて前記主装置からのデータを書き込まず;及び
    前記第四アクセスモードを用いる場合、
    前記データの論理アドレスの順序に従って、前記データを前記フレッシュメモリモジュールの単一の特定ブロックに順次書き込み;及び
    前記データの書き込みが完了した後にのみ、前記最後の1つの特定ブロックの剰余データページは他の領域のデータの書き込み用に供することができるステップを含む、制御方法。
  2. 請求項1に記載の制御方法であって、
    前記第一アクセスモード、前記第二アクセスモード、前記第三アクセスモード及び前記第四アクセスモードのうちの1つを用いるステップは、
    各領域のサイズが各ブロックのサイズよりも大きい場合、前記第一アクセスモード又は前記第二アクセスモードを使用し;及び
    各領域のサイズが各ブロックのサイズよりも小さい場合、前記第三アクセスモード又は前記第四アクセスモードを使用することを含む、制御方法。
  3. 請求項2に記載の制御方法であって、
    前記第一アクセスモード、前記第二アクセスモード、前記第三アクセスモード及び前記第四アクセスモードのうちの1つを用いるステップは、
    各領域のサイズが各ブロックのサイズよりも大きく、且つ前記ZNSの、前記第一アクセスモードを用いるときに計画される容量が前記主装置の第一基準より高い場合、前記第一アクセスモードを使用し;
    各領域のサイズが各ブロックのサイズよりも大きく、且つ前記ZNSの、前記第一アクセスモードを用いて計画される容量が前記主装置の前記第一基準よりも低い場合、前記第二アクセスモードを使用し;
    各領域のサイズが各ブロックのサイズよりも小さく、且つ前記ZNSの、前記第三アクセスモードを用いるときに計画される容量が前記主装置の第二基準よりも高い場合、前記第三アクセスモードを使用し;及び
    各領域のサイズが各ブロックのサイズよりも小さく、且つ前記ZNSの、前記第三アクセスモードを用いるときに計画される容量が前記主装置の前記第二基準よりも低い場合、前記第四アクセスモードを使用することを含む、制御方法。
  4. 請求項1に記載の制御方法であって、さらに、
    前記第一アクセスモードを用いる場合、
    前記主装置が前記データを伝送し、及び論理アドレスが前記データの最後の1つの論理アドレスに接続される他のデータを伝送するときに、前記他のデータを前記複数の特定ブロックとは異なる他のブロックに書き込み、前記他のデータを前記複数の特定ブロックの最後の1つの特定ブロックの剰余データページに書き込まないことを含む、制御方法。
  5. 請求項4に記載の制御方法であって、
    前記第一アクセスモードを用いる場合、前記主装置からのデータを記憶する角度から見れば、単一のブロックは単一の領域のデータのみを記憶し得る、制御方法。
  6. 請求項1に記載の制御方法であって、さらに。
    前記第二アクセスモードを用いる場合、
    前記主装置からの第一データを受信し、前記第一データは第一領域のすべてのデータであり;
    前記第一データの論理アドレスの順序に従って、前記第一データを前記フレッシュメモリモジュールの前記少なくとも1つの第一特定ブロック及び共通ブロックに順次書き込み、前記第一データにおいて1番目の論理アドレスに対応する内容は前記少なくとも1つの第一特定ブロックに記憶され、前記第一データにおいて最後の1つの論理アドレスに対応する内容は前記共通ブロックに記憶され;
    前記主装置からの第二データを受信し、前記第二データは第二領域のすべてのデータであり;及び
    前記第二データの論理アドレスの順序に従って、前記第二データを前記フレッシュメモリモジュールの前記少なくとも1つの第二特定ブロック及び前記共通ブロックに順次書き込むことを含む、制御方法。
  7. 請求項6に記載の制御方法であって、
    前記第二データにおいて1番目の論理アドレスに対応する内容は前記少なくとも1つの第二特定ブロックに記憶され、前記第二データにおいて最後の1つの論理アドレスに対応する内容は前記共通ブロックに記憶される、制御方法。
  8. 請求項6に記載の制御方法であって、
    前記主装置からのデータを記憶する角度から見れば、前記少なくとも1つの第一特定ブロックは前記第一領域に対応するデータのみを記憶し、前記少なくとも1つの第二特定ブロックは前記第二領域に対応するデータのみを記憶する、制御方法。
  9. 請求項6に記載の制御方法であって、
    前記第二データの1番目の論理アドレスは前記第一データの最後の1つの論理アドレスに接続され、前記主装置は前記第一データ及び前記第二データを前記フレッシュメモリコントローラに連続して伝送して、前記第一データの少なくとも一部及び前記第二データの少なくとも一部を前記共通ブロックに書き込むよう要求する、制御方法。
  10. 請求項1に記載の制御方法であって、
    前記主装置からのデータを記憶する角度から見れば、前記第三アクセスモードを用いる場合、単一のブロックは単一の領域のデータのみを記憶し得る、制御方法。
  11. 請求項1に記載の制御方法であって、さらに、
    前記第四アクセスモードを用いる場合、
    前記主装置からの第一データを受信し、前記第一データは第一領域のすべてのデータであり;
    前記第一データの論理アドレスの順序に従って、前記第一データを共通ブロックに順次書き込み;
    前記主装置からの第二データを受信し、前記第二データは第二領域のすべてのデータであり;及び
    前記第二データの論理アドレスの順序に従って、前記第二データを前記共通ブロック中の剰余データページに順次書き込むことを含む、制御方法。
  12. 請求項11に記載の制御方法であって、
    前記第四アクセスモードを用いる場合、データにより満たされた何れのブロックは必ず複数の領域のデータを記憶する、制御方法。
  13. フレッシュメモリコントローラであって、
    前記フレッシュメモリコントローラはフレッシュメモリモジュールにアクセスするために用いられ、前記フレッシュメモリモジュールは複数のブロックを含み、各ブロックは複数のデータページを含み、
    前記フレッシュメモリコントローラは、
    プログラムコードを記憶するためのリードオンリーメモリ;
    前記プログラムコードを実行して、前記フレッシュメモリモジュールに対してのアクセスを制御するためのマイクロプロセッサー;及び
    バッファメモリを含み、
    前記マイクロプロセッサーは主装置からの設定指令を受信し、前記設定指令はフレッシュメモリモジュールの少なくとも一部をZNS(zoned namespace)と設定し、前記ZNSは複数の領域(zone)を論理的に含み、前記主装置の前記ZNSに対してのデータの書き込み及びアクセスは必ず領域を単位として行われ、各領域のサイズはすべて同じであり、各領域内の対応する論理アドレスは必ず連続したものであり、領域の間にはオーバーラップした論理アドレスが存在せず;
    前記マイクロプロセッサーは第一アクセスモード、第二アクセスモード、第三アクセスモード及び第四アクセスモードのうちの1つを用いて、前記主装置からのデータを前記フレッシュメモリモジュールに書き込み、前記データは特定領域のすべてのデータであり;
    前記マイクロプロセッサーが前記第一アクセスモードを用いる場合、前記データの論理アドレスの順序に従って、前記データを前記フレッシュメモリモジュールの複数の特定ブロックに順次書き込み;及び、前記データの書き込みが完了した後に、前記複数の特定ブロックの最後の1つの特定ブロックの剰余データページに無効データを書き込み、又は剰余データページを空白に維持し且つ消去前に前記主装置の書き込み指令に基づいて前記主装置からのデータを書き込まず;
    前記マイクロプロセッサーが前記第二アクセスモードを用いる場合、前記データの論理アドレスの順序に従って、前記データを前記フレッシュメモリモジュールの前記複数の特定ブロックに順次書き込み;及び、前記データの書き込みが完了した後にのみ、前記最後の1つの特定ブロックの剰余データページは他の領域のデータの書き込み用に供することができ;
    前記マイクロプロセッサーが前記第三アクセスモードを用いる場合、前記データの論理アドレスの順序に従って、前記データを前記フレッシュメモリモジュールの単一の特定ブロックに順次書き込み;及び、前記データの書き込みが完了した後に、前記特定ブロックの剰余データページに無効データを書き込み、又は剰余データページを空白に維持し且つ消去前に前記主装置の書き込み指令に基づいて前記主装置からのデータを書き込まず;
    前記マイクロプロセッサーが前記第四アクセスモードを用いるときに、前記データの論理アドレスの順序に従って、前記データを前記フレッシュメモリモジュールの単一の特定ブロックに順次書き込み;及び、前記データの書き込みが完了した後にのみ、前記最後の1つの特定ブロックの剰余データページは他の領域のデータの書き込み用に供することができる、フレッシュメモリコントローラ。
  14. 請求項13に記載のフレッシュメモリコントローラであって、
    各領域のサイズが各ブロックのサイズよりも大きい場合、前記マイクロプロセッサーは前記第一アクセスモード又は前記第二アクセスモードを使用し;各領域のサイズが各ブロックのサイズよりも小さい場合、前記マイクロプロセッサーは前記第三アクセスモード又は前記第四アクセスモードを使用する、フレッシュメモリコントローラ。
  15. 請求項13に記載のフレッシュメモリコントローラであって、
    前記第一アクセスモードを選択する場合、前記主装置が前記データを伝送し、及び論理アドレスが前記データの最後の1つの論理アドレスに接続される他のデータを伝送するときに、前記マイクロプロセッサーは前記他のデータを前記複数の特定ブロックとは異なる他のブロックに書き込み、前記他のデータを前記複数の特定ブロックの最後の1つの特定ブロックの剰余データページに書き込まない、フレッシュメモリコントローラ。
  16. 請求項15に記載のフレッシュメモリコントローラであって、
    前記第一アクセスモードを選択する場合、単一のブロックは単一の領域のデータのみを記憶する、フレッシュメモリコントローラ。
  17. 請求項13に記載のフレッシュメモリコントローラであって、
    前記マイクロプロセッサーが前記第二アクセスモードを用いる場合、前記マイクロプロセッサーは、以下の操作を実行し、即ち、前記主装置からの第一データを受信し、前記第一データは第一領域のすべてのデータであり;前記第一データの論理アドレスの順序に従って、前記第一データを前記フレッシュメモリモジュールの前記少なくとも1つの第一特定ブロック及び共通ブロックに順次書き込み、前記第一データにおいて1番目の論理アドレスに対応する内容は前記少なくとも1つの第一特定ブロックに記憶され、前記第一データにおいて最後の1つの論理アドレスに対応する内容は前記共通ブロックに記憶され;前記主装置からの第二データを受信し、前記第二データは第二領域のすべてのデータであり;及び、前記第二データの論理アドレスの順序に従って、前記第二データを前記フレッシュメモリモジュールの前記少なくとも1つの第二特定ブロック及び前記共通ブロックに順次書き込み、前記第二データにおいて1番目の論理アドレスに対応する内容は前記少なくとも1つの第二特定ブロックに記憶され、且つ前記第二データにおいて最後の1つの論理アドレスに対応する内容は前記共通ブロックに記憶される、フレッシュメモリコントローラ。
  18. 記憶装置であって、
    複数のブロックを含み、各ブロックが複数のデータページを含むフレッシュメモリモジュール;及び
    前記フレッシュメモリモジュールにアクセスするために用いられるフレッシュメモリコントローラを含み、
    前記フレッシュメモリコントローラは主装置からの設定指令を受信し、前記設定指令はフレッシュメモリモジュールの少なくとも一部をZNS(zoned namespace)と設定し、前記ZNSは論理的に複数の領域(zone)を含み、前記主装置の前記ZNSに対してのデータの書き込み及びアクセスは必ず領域を単位として行われ、各領域のサイズはすべて同じであり、各領域内の対応する論理アドレスは必ず連続したものであり、且つ領域の間にはオーバーラップした論理アドレスが存在せず;
    前記フレッシュメモリコントローラは第一アクセスモード、第二アクセスモード、第三アクセスモード及び第四アクセスモードのうちの1つを用いて、前記主装置からのデータを前記フレッシュメモリモジュールに書き込み、前記データは特定領域のすべてのデータであり;
    前記フレッシュメモリコントローラが前記第一アクセスモードを用いる場合、前記データの論理アドレスの順序に従って、前記データを前記フレッシュメモリモジュールの複数の特定ブロックに順次書き込み;及び、前記データの書き込みが完了した後に、前記複数の特定ブロックの最後の1つの特定ブロックの剰余データページに無効データを書き込み、又は剰余データページを空白に維持し且つ消去前に前記主装置の書き込み指令に基づいて前記主装置からのデータを書き込まず;
    前記フレッシュメモリコントローラが前記第二アクセスモードを用いる場合、前記データの論理アドレスの順序に従って、前記データを前記フレッシュメモリモジュールの前記複数の特定ブロックに順次書き込み;及び、前記データの書き込みが完了した後にのみ、前記最後の1つの特定ブロックの剰余データページは他の領域のデータの書き込み用に供することができ;
    前記フレッシュメモリコントローラが前記第三アクセスモードを用いるときに、前記データの論理アドレスの順序に従って、前記データを前記フレッシュメモリモジュールの単一の特定ブロックに順次書き込み;及び、前記データの書き込みが完了した後に、前記特定ブロックの剰余データページに無効データを書き込み、又は剰余データページを空白に維持し且つ消去前に前記主装置の書き込み指令に基づいて前記主装置からのデータを書き込まず;
    前記フレッシュメモリコントローラが前記第四アクセスモードを用いるときに、前記データの論理アドレスの順序に従って、前記データを前記フレッシュメモリモジュールの単一の特定ブロックに順次書き込み;及び、前記データの書き込みが完了した後にのみ、前記最後の1つの特定ブロックの剰余データページは他の領域のデータの書き込み用に供することができる、記憶装置。
  19. 請求項18に記載の記憶装置であって、
    各領域のサイズが各ブロックのサイズよりも大きい場合、前記フレッシュメモリコントローラは前記第一アクセスモード又は前記第二アクセスモードを選択し;各領域のサイズが各ブロックのサイズよりも小さい場合、前記フレッシュメモリコントローラは前記第三アクセスモード又は前記第四アクセスモードを選択する、記憶装置。
  20. 請求項18に記載の記憶装置であって、
    前記前記フレッシュメモリコントローラが前記第二アクセスモードを用いる場合、前記フレッシュメモリコントローラは、以下の操作を実行し、即ち、前記主装置からの第一データを受信し、前記第一データは第一領域のすべてのデータであり;前記第一データの論理アドレスの順序に従って、前記第一データを前記フレッシュメモリモジュールの前記少なくとも1つの第一特定ブロック及び共通ブロックに順次書き込み、前記第一データにおいて1番目の論理アドレスに対応する内容は前記少なくとも1つの第一特定ブロックに記憶され、前記第一データにおいて最後の1つの論理アドレスに対応する内容は前記共通ブロックに記憶され;前記主装置からの第二データを受信し、前記第二データは第二領域のすべてのデータであり;及び、前記第二データの論理アドレスの順序に従って、前記第二データを前記フレッシュメモリモジュールの前記少なくとも1つの第二特定ブロック及び前記共通ブロックに順次書き込み、前記第二データにおいて1番目の論理アドレスに対応する内容は前記少なくとも1つの第二特定ブロックに記憶され、且つ前記第二データにおいて最後の1つの論理アドレスに対応する内容は前記共通ブロックに記憶される、記憶装置。
JP2021029144A 2021-01-07 2021-02-25 記憶装置、フレッシュメモリコントローラ及びその制御方法 Active JP7026833B1 (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
TW110100581 2021-01-07
TW110100581A TWI775268B (zh) 2021-01-07 2021-01-07 儲存裝置、快閃記憶體控制器及其控制方法

Publications (2)

Publication Number Publication Date
JP7026833B1 true JP7026833B1 (ja) 2022-02-28
JP2022106634A JP2022106634A (ja) 2022-07-20

Family

ID=79025089

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2021029144A Active JP7026833B1 (ja) 2021-01-07 2021-02-25 記憶装置、フレッシュメモリコントローラ及びその制御方法

Country Status (6)

Country Link
US (2) US11593008B2 (ja)
EP (1) EP4033364A1 (ja)
JP (1) JP7026833B1 (ja)
KR (1) KR102596244B1 (ja)
CN (1) CN114741330A (ja)
TW (1) TWI775268B (ja)

Families Citing this family (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11221958B2 (en) * 2017-08-29 2022-01-11 Samsung Electronics Co., Ltd. System and method for LBA-based RAID
TWI775268B (zh) 2021-01-07 2022-08-21 慧榮科技股份有限公司 儲存裝置、快閃記憶體控制器及其控制方法
US11940925B2 (en) * 2021-12-29 2024-03-26 Micron Technology, Inc. Performing memory access operations with a logical-to-physical mapping table with reduced size
TWI835221B (zh) * 2022-07-26 2024-03-11 旺宏電子股份有限公司 記憶體裝置及其操作方法
US12056361B2 (en) 2022-07-26 2024-08-06 Macronix International Co., Ltd. Memory device and operation method thereof
JP2024036068A (ja) * 2022-09-05 2024-03-15 キオクシア株式会社 メモリシステムおよび制御方法

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2007517335A (ja) * 2003-12-30 2007-06-28 サンディスク コーポレイション 不揮発性メモリおよびブロック管理システムを伴う方法
JP2010521718A (ja) * 2007-12-28 2010-06-24 株式会社東芝 半導体記憶装置及びその制御方法、コントローラ、情報処理装置

Family Cites Families (24)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9811462B2 (en) * 2015-04-30 2017-11-07 Toshiba Memory Corporation Memory system executing garbage collection
JP6403162B2 (ja) * 2015-07-23 2018-10-10 東芝メモリ株式会社 メモリシステム
US20170123928A1 (en) * 2015-10-30 2017-05-04 Netapp, Inc. Storage space reclamation for zoned storage
US20170124104A1 (en) * 2015-10-31 2017-05-04 Netapp, Inc. Durable file system for sequentially written zoned storage
JP6524039B2 (ja) * 2016-09-23 2019-06-05 東芝メモリ株式会社 メモリシステム及び制御方法
US10437476B2 (en) 2017-10-23 2019-10-08 Micron Technology, Inc. Namespaces allocation in non-volatile memory devices
JP2019191909A (ja) * 2018-04-25 2019-10-31 東芝メモリ株式会社 メモリシステムおよび制御方法
TWI708144B (zh) 2018-06-22 2020-10-21 慧榮科技股份有限公司 快閃記憶體的命名空間操作裝置及電腦程式產品
US11204721B2 (en) 2019-05-06 2021-12-21 Micron Technology, Inc. Input/output size control between a host system and a memory sub-system
KR20200130011A (ko) * 2019-05-10 2020-11-18 에스케이하이닉스 주식회사 메모리 컨트롤러 및 그 동작 방법
US11416161B2 (en) * 2019-06-28 2022-08-16 Western Digital Technologies, Inc. Zone formation for zoned namespaces
US20200409601A1 (en) * 2019-06-28 2020-12-31 Western Digital Technologies, Inc. Hold of Write Commands in Zoned Namespaces
US20200089407A1 (en) * 2019-11-22 2020-03-19 Intel Corporation Inter zone write for zoned namespaces
US20210182166A1 (en) * 2019-12-12 2021-06-17 Western Digital Technologies, Inc. Zoned namespace management of non-volatile storage devices
CN111124305B (zh) * 2019-12-20 2021-08-31 浪潮电子信息产业股份有限公司 固态硬盘磨损均衡方法、装置及计算机可读存储介质
US11797433B2 (en) * 2019-12-20 2023-10-24 Sk Hynix Nand Product Solutions Corp. Zoned namespace with zone grouping
JP7366795B2 (ja) * 2020-02-14 2023-10-23 キオクシア株式会社 メモリシステムおよび制御方法
US11586385B1 (en) * 2020-05-06 2023-02-21 Radian Memory Systems, Inc. Techniques for managing writes in nonvolatile memory
CN111694515B (zh) * 2020-05-23 2023-01-10 苏州浪潮智能科技有限公司 一种基于ZNS固态硬盘的zone写分发方法及系统
US12093545B2 (en) * 2020-12-31 2024-09-17 Pure Storage, Inc. Storage system with selectable write modes
TWI775268B (zh) * 2021-01-07 2022-08-21 慧榮科技股份有限公司 儲存裝置、快閃記憶體控制器及其控制方法
TWI808384B (zh) * 2021-02-23 2023-07-11 慧榮科技股份有限公司 儲存裝置、快閃記憶體控制器及其控制方法
US11733895B2 (en) * 2021-03-31 2023-08-22 Silicon Motion, Inc. Control method of flash memory controller and associated flash memory controller and storage device
US20230236765A1 (en) * 2022-01-26 2023-07-27 Samsung Electronics Co., Ltd. Storage controller performing active zone refresh, method of operating storage controller, and method of operating storage device having storage controller

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2007517335A (ja) * 2003-12-30 2007-06-28 サンディスク コーポレイション 不揮発性メモリおよびブロック管理システムを伴う方法
JP2010521718A (ja) * 2007-12-28 2010-06-24 株式会社東芝 半導体記憶装置及びその制御方法、コントローラ、情報処理装置

Also Published As

Publication number Publication date
TWI775268B (zh) 2022-08-21
KR20220099874A (ko) 2022-07-14
EP4033364A1 (en) 2022-07-27
US12014063B2 (en) 2024-06-18
JP2022106634A (ja) 2022-07-20
US20220214808A1 (en) 2022-07-07
US20230153002A1 (en) 2023-05-18
TW202228136A (zh) 2022-07-16
KR102596244B1 (ko) 2023-10-30
US11593008B2 (en) 2023-02-28
CN114741330A (zh) 2022-07-12

Similar Documents

Publication Publication Date Title
JP7026833B1 (ja) 記憶装置、フレッシュメモリコントローラ及びその制御方法
TWI418980B (zh) 記憶體控制器、用於格式化記憶體系統中之記憶體陣列和固態驅動器之方法及固態記憶體系統
TWI828085B (zh) 快閃記憶體控制器的控制方法、快閃記憶體控制器以及儲存裝置
TWI821151B (zh) 快閃記憶體控制器的控制方法、快閃記憶體控制器以及儲存裝置
TWI808384B (zh) 儲存裝置、快閃記憶體控制器及其控制方法
TWI844891B (zh) 儲存裝置、快閃記憶體控制器及其控制方法
TWI806508B (zh) 快閃記憶體控制器的控制方法、快閃記憶體控制器以及儲存裝置
TWI821152B (zh) 儲存裝置、快閃記憶體控制器及其控制方法
US11693574B2 (en) Method of writing data in storage device and storage device performing the same
US20240320173A1 (en) Storage device providing direct memory access, computing system including the same, and operating method of the storage device
US20240319897A1 (en) Control method of flash memory controller and associated flash memory controller and storage device

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20210225

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20220118

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20220215

R150 Certificate of patent or registration of utility model

Ref document number: 7026833

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150