Deprecated: The each() function is deprecated. This message will be suppressed on further calls in /home/zhenxiangba/zhenxiangba.com/public_html/phproxy-improved-master/index.php on line 456
JP7618440B2 - メモリシステム及び制御方法 - Google Patents
[go: Go Back, main page]

JP7618440B2 - メモリシステム及び制御方法 - Google Patents

メモリシステム及び制御方法 Download PDF

Info

Publication number
JP7618440B2
JP7618440B2 JP2020209603A JP2020209603A JP7618440B2 JP 7618440 B2 JP7618440 B2 JP 7618440B2 JP 2020209603 A JP2020209603 A JP 2020209603A JP 2020209603 A JP2020209603 A JP 2020209603A JP 7618440 B2 JP7618440 B2 JP 7618440B2
Authority
JP
Japan
Prior art keywords
data
clusters
memory
logical
memory 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
JP2020209603A
Other languages
English (en)
Other versions
JP2022096478A (ja
Inventor
大輝 和田
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Kioxia Corp
Original Assignee
Kioxia Corp
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 Kioxia Corp filed Critical Kioxia Corp
Priority to JP2020209603A priority Critical patent/JP7618440B2/ja
Priority to US17/406,584 priority patent/US11928361B2/en
Publication of JP2022096478A publication Critical patent/JP2022096478A/ja
Application granted granted Critical
Publication of JP7618440B2 publication Critical patent/JP7618440B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING OR CALCULATING; 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
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; 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
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; 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
    • G06F3/0611Improving I/O performance in relation to response time
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; 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 OR CALCULATING; 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 OR CALCULATING; 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/0607Interleaved addressing
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; 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
    • G06F2212/1024Latency reduction
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/65Details of virtual memory and virtual address translation
    • G06F2212/657Virtual address space management
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; 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 OR CALCULATING; 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/7203Temporary buffering, e.g. using volatile buffer or dedicated buffer blocks
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; 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/7208Multiple device management, e.g. distributing data over multiple flash devices

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)
  • Memory System (AREA)
  • Techniques For Improving Reliability Of Storages (AREA)

Description

本実施形態は、メモリシステム及び制御方法に関する。
SSD(Solid State Drive)などのメモリシステムにおいては、ホストからコマンドを受信したことに応じて、受信されたコマンドに従った処理を行う。このとき、メモリシステムでは、コマンドを受信してからコマンドに従った処理を完了するまでの時間を短くすることが望まれる。
特開2010-152517号公報 米国特許第9384124号明細書 米国特許第9898207号明細書
一つの実施形態は、コマンドを受信してからコマンドに従った処理を完了するまでの時間を容易に短縮できるメモリシステム及び制御方法を提供することを目的とする。
一つの実施形態によれば、コントローラと複数のチャネルと不揮発性メモリとを有するメモリシステムが提供される。複数のチャネルは、コントローラに接続されている。不揮発性メモリは、第1のメモリ領域及び第2のメモリ領域を含む。第1のメモリ領域及び第2のメモリ領域は、それぞれが、複数のチャネルを介してコントローラによりアクセス可能である。コントローラは、ホストからのシーケンシャルデータに関するライトコマンドに応じて、複数のクラスタのデータを第1のメモリ領域に複数のチャネル経由で書き込む。コントローラは、ログ情報に応じて、複数のクラスタのデータの書き込まれた順序を特定する。コントローラは、特定された順序に応じて順序情報を生成する。順序情報は、クラスタの識別情報と書き込み順を示す情報とが対応付けられた情報である。コントローラは、内部処理に関するリード命令に応じて、複数のクラスタのデータのうち複数の有効クラスタのデータ選択的に第1のメモリ領域から読み出す。コントローラは、読み出された複数の有効クラスタのデータを順序情報に応じて並べ替える。コントローラは、並べ替えられた複数の有効クラスタのデータに物理アドレスをシーケンシャルに付け直す。コントローラは、内部処理に関するライト命令に応じて、並べ替えられた複数のクラスタのデータを第2のメモリ領域に複数のチャネル経由で付け直された物理アドレス順に書き込む。
図1は、実施形態にかかるメモリシステムの構成を示す図である。 図2は、実施形態における論理ページを示す図である。 図3は、実施形態における複数の並列動作要素を示す図である。 図4は、実施形態における物理ブロックを示す図である。 図5は、実施形態における内部処理部の構成及び動作を示す図である。 図6は、実施形態における順序情報を生成する処理を示す図である。 図7は、実施形態における複数のクラスタのデータを並び替える処理を示す図である。 図8は、実施形態にかかるメモリシステムの動作の一例を示すフローチャートである。 図9は、実施形態における複数のクラスタのデータを並び替える処理を示すフローチャートである。
以下に添付図面を参照して、実施形態にかかるメモリシステムを詳細に説明する。なお、この実施形態により本発明が限定されるものではない。
(実施形態)
実施形態にかかるメモリシステムは、不揮発性メモリ及びコントローラが複数のチャネルを介して接続されて構成される。コントローラは、ホストからのコマンドに応じて、不揮発性メモリに対するデータの書き込み及び読み出しを複数のチャネル経由で行い得る。コントローラは、ホストからライト対象の論理アドレス長がある程度長い一群のライトコマンド及び一群のライトコマンドに対応する複数のクラスタのデータを受けることがある。この一群のライトコマンドをシーケンシャルライトコマンドと呼ぶことにする。シーケンシャルライトコマンドは、複数の論理アドレスを含み、複数の論理アドレスはある長さ以上連続している。クラスタは、コントローラによるデータの管理単位である。コントローラは、シーケンシャルライトコマンドに応じて、シーケンシャルな複数の論理アドレスをシーケンシャルな複数の物理アドレスに割り当てる。シーケンシャルな複数の物理アドレスは、複数のチャネルをシーケンシャルな順に選択して用いる。コントローラは、複数のクラスタのデータを不揮発性メモリ内の第1のメモリ領域におけるシーケンシャルな複数の物理アドレスに複数のチャネル経由で書き込む。このとき、メモリシステムは、第1のメモリ領域について、「シーケンシャルな複数の論理アドレス」と「シーケンシャルな複数の物理アドレス」との対応関係が成立するようなアドレス変換情報を生成する。
また、メモリシステムは、ホストからのコマンドに基づかずに自律的に内部処理を行うことがある。内部処理は、ガベージコレクション、リフレッシュ、ウェアレベリングなどを含む。メモリシステムは、内部処理を行う際に、書き込まれた複数のクラスタのデータに対して、リード命令を発行して不揮発性メモリ内の第1のメモリ領域から複数のチャネル経由で読み出すことがある。このとき、複数のチャネル間でリード処理に要する時間がばらつきやすく、書き込んだ順とは入れ替わった順で複数のクラスタのリードデータを受けることがある。メモリシステムは、入れ替わった順のまま、複数のクラスタのリードデータに対して、内部処理に従ったライト命令を発行して不揮発性メモリ内の第1のメモリ領域と異なる第2のメモリ領域に複数のチャネル経由で書き込む。このとき、メモリシステムは、第2のメモリ領域について、「シーケンシャルな複数の論理アドレス」と「シーケンシャルな複数の物理アドレス」との対応関係が部分的に崩れたアドレス変換情報を生成する。
例えば、その後にホストからリード対象の論理アドレス長がある程度長い一群のリードコマンドを受けることがある。この一群のリードコマンドをシーケンシャルリードコマンドと呼ぶことにする。この場合、メモリシステムは、シーケンシャルリードコマンドに応じて、「シーケンシャルな複数の論理アドレス」と「シーケンシャルな複数の物理アドレス」との対応関係が部分的に崩れたアドレス変換情報を用いて、第2のメモリ領域にアクセスする。すなわち、メモリシステムは、第2のメモリ領域における複数の物理アドレスに部分的にシーケンシャルでない順で複数のチャネル経由でアクセスすることになる。不揮発性メモリには、チャネルごとにキャッシュが設けられている。このため、複数のチャネルが部分的にシーケンシャルでない順で選択されることがあると、リード時のキャッシュヒット率が低下して、内部的なデータ転送の頻度が増大し得る。このため、第2のメモリ領域における複数の物理アドレスにシーケンシャルでない順でアクセスされることがない場合に比べて、リード処理の効率が低下し、シーケンシャルリードコマンドの実行を完了するまでのコマンド実行時間が長くなる可能性がある。
そこで、本実施形態では、メモリシステムにおいて、内部処理に関するリード命令で第1のメモリ領域から読み出された複数のクラスタのデータをログ情報に応じて特定された書き込み順で並べ替える。その後の内部処理に関するライト命令では、並べ替えられた順で第2のメモリ領域に書き戻す。これにより、その後のシーケンシャルリードコマンドの実行時間の短縮を図る。
具体的には、メモリシステム1は、図1に示すように構成される。図1は、メモリシステム1の構成を示す図である。
メモリシステム1は、通信媒体を介してホスト100に接続され、ホスト100に対する外部記憶媒体として機能する。ホスト100は、例えば、パーソナルコンピュータ又はCPUコアを含む。メモリシステム1は、例えば、SSD(Solid State Drive)を含む。
メモリシステム1は、コントローラ5、複数のチャネルCh0~Ch17、揮発性メモリ22、及び不揮発性メモリ7を有する。コントローラ5及び不揮発性メモリ7は、複数のチャネルCh0~Ch17を介して接続されている。図1では、チャネルChが18本である構成を例示しているが、チャネルChの本数は18本に限定されない。
コントローラ5は、ホストインターフェース(ホストI/F)11、中央処理演算部(CPU)21、揮発性メモリ22、誤り訂正(ECC)回路23、及びメモリインターフェース(メモリI/F)24を有する。メモリI/F24と不揮発性メモリ7とは、複数のチャネルCh0~Ch17を介して接続されている。
メモリシステム1では、不揮発性メモリ7を用いてデータを不揮発に記憶する。不揮発性メモリ7は、NAND型フラッシュメモリ、3次元構造フラッシュメモリ、ReRAM(Resistive Random Access Memory)、FeRAM(Ferroelectric Random Access Memory)、相変化型メモリ(Phase Change Memory:PCM)、磁気抵抗メモリ(Magnetoresistive Random Access Memory:MRAM)などを含む。図1では、不揮発性メモリ7がNAND型フラッシュメモリである場合について例示している。
不揮発性メモリ7には、コントローラ5により複数の論理ブロックが割り当てられる。複数の論理ブロックのうち一部の論理ブロックが管理情報格納領域30に割り当てられ、残りの(大部分の)論理ブロックがストレージ領域31に割り当てられる。各論理ブロックは、複数の論理ページを含む。ストレージ領域31は、ホスト100から書き込み要求されたデータが記憶される領域であり、管理情報格納領域30は、コントローラ5による管理情報が格納される領域である。
例えば、論理ブロックBL0は、複数の論理ページPG0~PG(N-1)(各論理ページを特に区別しない場合は、PGで示すことにする)を含む。Nは、任意の2以上の整数を表す。各論理ページPGは、バンクインターリーブが可能な複数のバンクを含む。チャネルCh0~Ch17ごとに2個のバンクBK(BK0,BK1)についてバンクインターリーブが可能である。各バンクBKは、複数のメモリチップCPを含む。各メモリチップCP内は、並列にアクセスが可能な複数のプレーンを含み得る。
例えば、論理ページPG0は、図2に示すように、2個のバンクBK0,BK1を含む。図2は、論理ページPG0の構成を例示する図であり、他の論理ページPG1~PG(N-1)の構成も論理ページPG0の構成と同様である。
複数のバンクBK0,BK1は、バンクインターリーブによる並列動作が可能に構成されている。バンクBK0は、メモリチップCP0,CP2,・・・,CP34(以下、CP0~CP34とする)を含む。バンクBK0内の各メモリチップCP0~CP34へは、複数のチャネルCh0~Ch17を介してメモリI/F24から並列にアクセスが可能である。バンクBK1は、メモリチップCP1,CP3,・・・,CP35(以下、CP1~CP35とする)を含む。バンクBK1内の各メモリチップCP1~CP35へは、複数のチャネルCh0~Ch17を介してメモリI/F24から並列にアクセスが可能である。各メモリチップCP0~CP35は、各メモリチップCP0~CP35内で並列動作可能である複数のプレーンPlane0,Plane1を含み得る。各メモリチップCP0~CP35は、複数のメモリセルアレイMARを含み、このうち幾つかのメモリセルアレイMARが、1又は複数の物理ブロックを構成する。
不揮発性メモリ7は、図3に示すように、複数個のチャネル並列動作要素2(2-0~2-17)によって構成されている。これら複数のチャネル並列動作要素2-0~2-17とメモリI/F24とは複数のチャネルCh0~Ch17によって接続されている。複数のチャネル並列動作要素2-0~2-17は、複数のチャネルCh0~Ch17に対応している。各チャネルCh0~Ch17は、対応するチャネル並列動作要素2とメモリI/F24とを接続する複数の通信線を含む。例えば、各チャネルCh0~Ch17は、コントロール信号線CTR、I/O信号線IO、チップイネーブル信号線CE[0][0:1]~[17][0:1]、レディー・ビジー信号線RB[0]~RB[17]をそれぞれ有している。各チャネル並列動作要素2-0~2-17は、複数のバンク(図2及び図3では2バンクBK0~BK1)を構成しており、各々のバンクBKは、複数のメモリチップCPによって構成されている。各メモリチップCPは、複数のプレーンPlane0~Plane1を有する。各Planeは、メモリセルアレイMAR及びキャッシュCSHを含む。キャッシュCSHは、メモリチップCP内でメモリセルアレイMARと入出力端子との間に電気的に接続されている。
チャネル並列動作要素2-k(k=0~17)において、コントローラ5は、コントロール信号線CTR、I/O信号線IOを共有する複数のバンクBK0~BK1を2本のチップイネーブル信号線CE[k][0:1]でバンク毎に個別に制御する。CE[k][0]がバンクBK0用のチップイネーブル信号線であり、CE[k][1]がバンクBK1用のチップイネーブル信号線である。ここでは、CE[k][0]の値がバンクBK0(CP0~CP34のいずれか)の選択状態を示し、CE[k][1]の値がバンクBK1(CP1~CP35のいずれか)の選択状態を示す。コントローラ5は、コントロール信号線CTR、I/O信号線IOを共有する複数のバンクBK0~BK1のアクセス状態を、1本のレディー・ビジー信号線RB[k]を用いて監視する。CE[k][0]がアクティブになった場合、RB[k]の値がバンクBK0(CP0~CP34)のアクセス状態を示し、CE[k][1]がアクティブになった場合、RB[k]の値がバンクBK1(CP1~CP35)のアクセス状態を示す。ここでは、信号RB=Lowがビジー状態を示し、信号RB=Highがレディ状態を示すこととする。
各メモリチップCPは、物理ページと呼ばれる単位でライト処理及びリード処理が行われ、複数の物理ページを含む物理ブロックと呼ばれる単位で消去処理が行われる。コントローラ5は、物理ブロックを複数含む論理ブロックの単位で一括して消去処理を行い得る。各メモリチップは、並列アクセス可能な単位として複数のプレーン(図2、図3では、Plane0、Plane1)を含む。各プレーンは、1以上の物理ブロックを含む。各物理ブロックは、図4に示すように、複数のワードラインと複数のビットラインとの交差位置にメモリセルを含む。図4は、物理ブロックの構成を示す図である。
各物理ブロックBLKは、複数のストリングユニットSU0~SU3を有する。複数のストリングユニットSU0~SU3は、複数の選択ゲートラインSGD0~SGD3に対応しているとともに選択ゲートラインSGSを共有している。各ストリングユニットSU0~SU3は、物理ブロックBLKにおける駆動単位として機能する。各ストリングユニットSU0~SU3は、複数の選択ゲートラインSGD0~SGD3のうちその対応する選択ゲートラインと選択ゲートラインSGSとで駆動される。また、各ストリングユニットSU0~SU3は、複数のメモリストリングMSTを含む。
各メモリストリングMSTは、例えば4個のメモリセルトランジスタMT(MT0~MT3)および選択トランジスタSDT,SSTを含んでいる。メモリセルトランジスタMTは、コントロールゲートと電荷蓄積膜とを有し、データを不揮発に保持する。そして4個のメモリセルトランジスタMT(MT0~MT3)は、選択トランジスタSDTのソースと選択トランジスタSSTのドレインとの間に直列接続されている。なお、メモリストリングMST内のメモリセルトランジスタMTの個数は4個に限定されない。
ビットラインBL0~BL(p-1)(各ビットラインを区別しない場合には、BLで示すことにする)は、メモリストリングMSTに接続されている。選択トランジスタSDTがオンされた際に、メモリストリングMST内の各メモリセルトランジスタMTのチャネル領域がビットラインBLに導通される。
ワードラインWL0~WL3(各ワードラインを区別しない場合には、WLで示すことにする)は、物理ブロックBLK内の各ストリングユニットSU内の各メモリストリングMST間で、メモリセルトランジスタMTのコントロールゲートを共通に接続している。つまり、物理ブロックBLK内の各ストリングユニットSU内において同一行にあるメモリセルトランジスタMTのコントロールゲートは、同一のワードラインWLに接続される。すなわち、物理ブロックBLKのストリングユニットSUは複数のワードラインWLに対応した複数のセルユニットCUを含み、各セルユニットCUは同一のワードラインWLに接続されるp個のメモリセルトランジスタMTを含む。各メモリセルトランジスタMTに1ビットの値を保持可能に構成される場合(シングルレベルセル(SLC)モードで動作する場合)には、同一のワードラインWLに接続されるp個のメモリセルトランジスタMT(すなわち、セルユニットCU)は1つの物理ページとして取り扱われ、この物理ページごとにデータのライト処理及びデータのリード処理が行われる。なお、図4では、4本のワードラインWL(WL0~WL3)を例示しているが、ワードラインWLの本数は4本に限定されない。
各メモリセルトランジスタMTに複数ビットの値を保持可能に構成される場合がある。例えば、各メモリセルトランジスタMTがn(n≧2)ビットの値を記憶可能な場合、セルユニットCU当たりの記憶容量はn個の物理ページ分のサイズに等しくなる。各メモリセルトランジスタMTが2ビットの値の記憶を行うマルチレベルセル(MLC)モードでは、各セルユニットCUに2個の物理ページ分のデータが保持される。各メモリセルトランジスタMTが3ビットの値の記憶を行うトリプルレベルセル(TLC)モードでは、各セルユニットCUに3個の物理ページ分のデータが保持される。
図1に戻って、不揮発性メモリ7は、キャッシュ領域32をさらに有する。キャッシュ領域32は、ストレージ領域31と複数のチャネルCh0~Ch17との間に配される。キャッシュ領域32は、複数のキャッシュCM0~CM17を有する。複数のキャッシュCM0~CM17は、複数のチャネルCh0~Ch17に対応している。各キャッシュCM0~CM17は、対応するチャネルChを介したコントローラ5及びストレージ領域31の間で授受されるデータを一時的に格納する。各キャッシュCMは、対応するチャネルChを介して接続されたメモリチップCP内でメモリセルアレイMARと入出力端子との間に電気的に接続されたキャッシュCSHを含む。例えば、キャッシュCM0は、メモリチップCP0のキャッシュCSHとメモリチップCP1のキャッシュCSHとを含む(図3参照)。
コントローラ5は、例えば、LSI(Large-Scale Integrated circuit)などの半導体チップ(SoC:System on a Chip)で構成されている。コントローラ5は、ホスト100と不揮発性メモリ7との間のデータ転送などを制御する。
コントローラ5において、ホストI/F11は、論理アドレスを含むライトコマンド及びライトデータをホスト100から受信すると、ライトコマンドをCPU21に転送する。ホストI/F11は、論理アドレスを含むリードコマンドをホスト100から受信すると、リードコマンドをCPU21に転送する。CPU21は、ライトコントローラ21a、ブロック管理部21b、内部処理部21c、リードコントローラ21dを有する。
揮発性メモリ22は、不揮発性メモリ7よりも高速アクセスが可能な揮発性の半導体メモリであり、SRAM(Static Random Access Memory)やDRAM(Dynamic Random Access Memory)が用いられる。図1では、揮発性メモリ22がDRAMである場合が例示されている。
揮発性メモリ22は、ライトバッファ221、リードバッファ222、内部処理バッファ223を有する。ライトバッファ221は、ホスト100からのライトコマンドで指示されたライトデータが一時記憶される領域である。リードバッファ222は、ホスト100からのリードコマンドで不揮発性メモリ7から読み出されたデータが一時記憶される領域である。内部処理バッファ223は、メモリシステム1内で内部処理を実行する際に、内部処理の対象となるデータが一時的に記憶されるバッファである。また、揮発性メモリ22は、アドレス変換情報(LUT)224を格納し得る。アドレス変換情報(LUT)30bは、不揮発性メモリ7内に格納されたユーザデータの論理アドレスと物理アドレスとの対応が記録された情報であり、ルックアップテーブル(LUT)とも呼ばれる。論理アドレスは、論理ブロックアドレス(LBA:Logical Block Address)を含む。物理アドレスは、後述する論理クラスタアドレス(MCA:Media Cluster Address)を含む。CPU21は、揮発性メモリ22内のアドレス変換情報(LUT)224を、所定のタイミングで管理情報格納領域30にアドレス変換情報(LUT)30bとして格納し不揮発化する。
ライトコントローラ21aは、ホスト100からホストI/F11を介してライトコマンド及びライト対象のデータを受けると、このデータに対してECC回路23を用いて誤り訂正符号化処理を行い、データに対応したデータ部分と誤り訂正符号とを含むシンボルを生成してライトバッファ221に一時的に記憶させる。ライトコントローラ21aは、ライトコマンドに含まれた論理アドレスを物理アドレスに割り当て、それに応じて、アドレス変換情報(LUT)224及びログ情報(LogCluster)30aを更新する。ログ情報30aは、ライト処理の履歴を示す情報であり、書き込み時の論理アドレスと物理アドレスとの対応が記録された情報である。ライトコントローラ21aは、ライトバッファ221に一時記憶させたシンボルをメモリI/F24及びチャネルCh経由で不揮発性メモリ7における割り当てられた物理アドレスに書き込む。また、ライトコントローラ21aは、更新後のログ情報30aを管理情報格納領域30に格納する。
ブロック管理部21bは、データ書込み可能な論理ブロックであるフリーブロックの数や論理ブロック内の有効データ率などを管理している。ブロック管理部21bは、フリーブロックの数が不足するとガーベージコレクションを内部処理部21cに実行させることによって、フリーブロックの数を増やす。また、ブロック管理部21bは、パフォーマンスが所定の基準より低下したブロック内の領域があると、その領域のデータをブロック内の他の領域又は他のブロックに書き直して、パフォーマンスの低下を抑制する。ブロック管理部21bは、内部処理部21cに内部処理の実行を指示する。
内部処理部21cは、内部処理バッファ223を用いながら内部処理に伴う各部の動作を制御する。内部処理は、ガーベージコレクション、リフレッシュ、ウェアレベリングなどを含む。ガーベージコレクションは、論理ブロック内の不使用の又は使用中の論理ページを整理する処理である。ガーベージコレクションが実行されることによって、離散化した使用中の論理ページが1つの論理ブロックにまとめられてフリーブロックが確保される。リフレッシュは、論理ブロック内でビット誤り率が所定値より高くなるなど疲弊した論理ブロックのデータを他の論理ページへ書き換える処理である。リフレッシュが実行されることによって、リード・ライトのパフォーマンスが確保される。ウェアレベリングは、ブロック毎の書き込み又は消去の回数を複数の論理ブロック間で平滑化する処理である。ウェアレベリングの1つとして、ブロック間で有効なデータを移動するリフレッシュが行われることがある。
リードコントローラ21dは、ホスト100からホストI/F11を介してリードコマンドを受けると、アドレス変換情報(LUT)224を参照し、リードコマンドに含まれた論理アドレス(LBA)に対応する物理アドレス(MCA)を特定する。リードコントローラ21dは、メモリI/F24及びチャネルCh経由で不揮発性メモリ7における特定された物理アドレスから、データ部分と誤り訂正符号とを含むシンボルを読み出す。リードコントローラ21dは、読み出されたシンボルに含まれた誤り訂正符号を用いてデータ部分の誤り訂正復号処理を行い、処理後のデータをリードデータとしてリードバッファ222に一時的に記憶させる。リードコントローラ21dは、リードデータをホストI/F11経由でホスト100へ返す。
メモリシステム1では、コントローラ5による内部的なデータ管理がクラスタ単位で行われ、ホスト100からのデータの更新がセクタ単位で行われる。図2では、「0」~「287」の値が書かれた四角の1マスがクラスタを示している。図2に示すように、論理ページPGは、複数のクラスタをひとまとめにした単位であるとし、クラスタは、複数のセクタをひとまとめにした単位であるとする。セクタは、ホスト100からのデータの最小アクセス単位である。セクタは、例えば、512Bのサイズを有し、クラスタは、例えば、4KBのサイズを有する。ホスト100は、LBA(Logical Block Addressing)によってアクセスするデータを指定できる。コントローラ5は、ホスト100から指定された論理ブロックアドレス(LBA)に対して、さらに、論理ブロック内でアクセスすべきクラスタに応じて論理クラスタアドレス(MCA:Media Cluster Address)を指定できる。
コントローラ5は、ホスト100からライト対象の論理アドレス長がある程度長い一群のライトコマンド及び一群のライトコマンドに対応する複数のクラスタのデータを受けることがある。この一群のライトコマンドをシーケンシャルライトコマンドと呼ぶことにする。シーケンシャルライトコマンドは、複数の論理アドレスを含み、複数の論理アドレスはある長さ以上連続している。コントローラ5は、シーケンシャルライトコマンドに応じて、シーケンシャルな複数の論理アドレスをシーケンシャルな複数の物理アドレスに割り当てる。シーケンシャルな複数の物理アドレスは、複数のチャネルCh0~Ch17をシーケンシャルな順に選択することで得られる。コントローラ5は、複数のクラスタのデータを不揮発性メモリ7内の第1のメモリ領域におけるシーケンシャルな複数の物理アドレスに複数のチャネルCh0~Ch17経由で書き込む。
例えば、図2に示すように、コントローラ5は、シーケンシャルライトコマンドに含まれた論理アドレスを物理アドレスに割り当て、それに応じて、アドレス変換情報(LUT)224を更新する。それとともに、コントローラ5は、ログ情報(LogCluster)30aを更新する。コントローラ5は、先頭の18個のクラスタデータを、不揮発性メモリ7内の論理ブロックBL0の論理ページPG0のバンクBK0のプレーンPlane0に、複数のチャネルCh0~Ch17を順に用いて書き込む。図2では、各クラスタに書き込む順番を「0」~「17」の数字で示している。同様に、「18」~「287」番目のクラスタデータについても、コントローラ5は、複数のチャネルCh0~Ch17を順に用いながら、不揮発性メモリ7内の論理ブロックBL0の論理ページPG0内の該当クラスタに書き込む。それとともに、コントローラ5は、ログ情報30aを更新する。コントローラ5は、ライト処理が完了すると、更新後のログ情報30aを管理情報格納領域30に格納する。
また、コントローラ5は、ホスト100からのコマンドに基づかずに自律的に内部処理を行うことがある。このとき、コントローラ5は、ログ情報30aに応じて複数のクラスタのデータの書き込まれた順序を特定する。コントローラ5は、特定された順序に応じて、順序情報223eを生成する。順序情報223eは、クラスタの識別情報と書き込み順を示す情報とが対応付けられた情報である(図6参照)。コントローラ5は、内部処理に関するリード命令に応じて複数のクラスタのデータを不揮発性メモリ7内の第1のメモリ領域から読み出す。コントローラ5は、読み出された複数のクラスタのデータを順序情報223eに応じて並べ替える。コントローラ5は、並べ替えられた複数のクラスタのデータに、連続した複数の論理クラスタアドレスを割り当て、それに応じて、ログ情報30aを更新する。コントローラ5は、複数のクラスタのデータを、内部処理に関するライト命令に応じて、不揮発性メモリ7内の第2のメモリ領域に複数のチャネルCh0~Ch17経由で書き込む。コントローラ5は、内部処理が完了すると、ログ情報30aを管理情報格納領域30に格納する。
具体的には、コントローラ5において、内部処理部21cは、図5に示すように、有効クラスタ判定部21c1、リード管理部21c2、リード結果並び替え部21c3、MCA割り当て部21c4を有する。内部処理部21c内の各構成は、コントローラ5でファームウェアが実行されることでCPU21によって機能的に実現される。なお、内部処理部21c内の各構成は、少なくとも一部がハードウェア(回路)により実現されてもよい。
内部処理部21cは、複数の論理ページに対する内部処理を論理ページごとに行う。有効クラスタ判定部21c1は、内部処理の要求をブロック管理部21bから受けると、不揮発性メモリ7の管理情報格納領域30にアクセスして、ログ情報(LogCluster)30aを読み出す。有効クラスタ判定部21c1は、ログ情報30aを内部処理バッファ223にログ情報223aとして一時的に格納する。ログ情報30a又は223aは、図6に示すように、論理ブロックアドレス(LBA)と論理クラスタアドレス(MCA)とが対応付けられ時間順に記録された情報である。図6は、順序情報223eを生成する処理を示す図である。図6の場合、ログ情報30a又は223aは、上の行から下の行の順に新しく記録された情報になっている。論理ブロックアドレス(LBA)は、ホスト100から指定された論理ブロックを示す論理アドレスである。論理クラスタアドレス(MCA)は、不揮発性メモリ7内のデータが記録された物理的な位置を示す物理アドレスである。論理クラスタアドレス(MCA)は、論理ブロックアドレス(MBA:Media Block Address)+論理ページアドレス(MPA:Media Page Address)+論理ページ内のクラスタオフセット(MCO:Media Cluster Offset)を含み得る。
なお、図6では、ログ情報30a又は223aの横に、アドレス変換情報30b又は224が示されている。ログ情報30a又は223aとアドレス変換情報30b又は224とは、いずれも、論理アドレス(例えば、ホスト指定の論理ブロックアドレス(LBA))と物理アドレス(例えば、コントローラ指定の論理クラスタアドレス(MCA))とが対応付けられた情報である点で共通している。また、ログ情報30a又は223aは、過去の書き込み時における論理アドレスと物理アドレスとの対応の履歴を示すのに対し、アドレス変換情報30b又は224は、最新の論理アドレスと物理アドレスとの対応を示す点で互いに異なっている。
図5に示す有効クラスタ判定部21c1は、ログ情報30a又は223aとアドレス変換情報30b又は224を参照し、処理対象の論理ページ内の有効クラスタを判定する。すなわち、有効クラスタ判定部21c1は、処理対象の論理ページのログ情報30aを不揮発性メモリ7から読み出し、読み出されたログ情報30aを内部処理バッファ223にログ情報223aとして一時的に格納する。有効クラスタ判定部21c1は、ログ情報223aの論理ブロックアドレス(LBA)をキーとして、アドレス変換情報30b又は224を参照する。有効クラスタ判定部21c1は、ログ情報223a上で論理ブロックアドレス(LBA)に対応する論理クラスタアドレス(MCA)と、アドレス変換情報224上で論理ブロックアドレス(LBA)に対応する論理クラスタアドレス(MCA)とを比較する。有効クラスタ判定部21c1は、両者が同じであれば、ログ情報223a上の論理クラスタアドレス(MCA)で示されるクラスタが有効クラスタであると判定する。有効クラスタ判定部21c1は、両者が異なれば、ログ情報223a上の論理クラスタアドレス(MCA)で示されるクラスタが無効クラスタであると判定する。
例えば、図6に示すように論理ブロックBL0の論理ページPG0が処理対象の論理ページである場合、有効クラスタ判定部21c1は、ログ情報223aを参照して、論理ページPG0に対応する各論理ブロックアドレス0x00000100~0x00000111に対応する論理クラスタアドレス「MBA=0x10,MPA=0x2,MCO=0x154」~「MBA=0x10,MPA=0x2,MCO=0x165」を特定する。有効クラスタ判定部21c1は、論理ページPG0に対応する各論理ブロックアドレス0x00000100~0x00000111をキーとしてアドレス変換情報224を参照する。有効クラスタ判定部21c1は、アドレス変換情報224上で各論理ブロックアドレス0x00000100~0x00000111に対応する論理クラスタアドレス「MBA=0x10,MPA=0x2,MCO=0x154」~「MBA=0x10,MPA=0x3,MCO=0x118」を特定する。有効クラスタ判定部21c1は、有効クラスタ判定部21c1は、各論理ブロックアドレス0x00000100~0x00000111についてログ情報223a上の論理クラスタアドレスとアドレス変換情報224上の論理クラスタアドレスとを比較する。有効クラスタ判定部21c1は、両者が同じであれば、ログ情報223a上の論理クラスタアドレス(MCA)で示されるクラスタが有効クラスタであると判定する。
例えば、論理ブロックアドレス0x00000100について、ログ情報223a上の論理クラスタアドレス「MBA=0x10,MPA=0x2,MCO=0x154」とアドレス変換情報224上の論理クラスタアドレス「MBA=0x10,MPA=0x2,MCO=0x154」が同じである。このため、有効クラスタ判定部21c1は、論理クラスタアドレス「MBA=0x10,MPA=0x2,MCO=0x154」で示されるクラスタが有効クラスタであると判定する。
また、論理ブロックアドレス0x00000102について、ログ情報223a上の論理クラスタアドレス「MBA=0x10,MPA=0x2,MCO=0x156」とアドレス変換情報224上の論理クラスタアドレス「MBA=0x10,MPA=0x3,MCO=0x010」が異なる。このため、有効クラスタ判定部21c1は、論理クラスタアドレス「MBA=0x10,MPA=0x2,MCO=0x156」で示されるクラスタが無効クラスタであると判定する。
同様に、有効クラスタ判定部21c1は、図6のログ情報223a上の論理クラスタアドレスのうち斜線のハッチングが付されていない論理クラスタアドレスで示されるクラスタを有効クラスタと判定し、斜線のハッチングが付された論理クラスタアドレスで示されるクラスタを無効クラスタと判定する。
図5に示す有効クラスタ判定部21c1は、処理対象の論理ページに対応する各論理ブロックアドレスについてログ情報223a上の論理クラスタアドレスが有効クラスタの物理アドレスか無効クラスタの物理アドレスかをアドレス順にチェックし、チェック結果に応じて有効クラスタプール223bを生成又は逐次的に更新して内部処理バッファ223に格納する。有効クラスタ判定部21c1は、論理クラスタアドレスが有効クラスタの物理アドレスであれば、有効クラスタプール223bに追加する。有効クラスタ判定部21c1は、論理クラスタアドレスが無効クラスタの物理アドレスであれば、有効クラスタプール223bに追加しない。これにより、図6に示すように、有効クラスタプール223bには、有効クラスタの論理クラスタアドレスが書き込み順に格納される。この書き込み順とは、シーケンシャルライトコマンドで過去に書き込まれた順序と同じ順序であり、内部処理で書き込まれるべき順序を指す。有効クラスタプール223bがFIFO(First In First Out)構造を有する場合、有効クラスタプール223bの先頭から後ろにかけて書き込み順に有効クラスタの論理クラスタアドレスが格納された状態になる。
図5に示すリード管理部21c2は、有効クラスタプール223bを参照し、図6に示すように、処理対象の論理ページ内の有効クラスタの書き込み順を特定し、特定された書き込み順に応じて順序情報223eを生成する。順序情報223eは、MCA割り当て順223e1と論理クラスタ識別情報223e2とが複数の論理クラスタについて対応付けられた情報である。MCA割り当て順223e1は、新たに論理クラスタアドレス(MCA)が割り当てられるべき順序を示す情報であり、例えば順番を示す情報である。論理クラスタ識別情報223e2は、複数の論理クラスタを互いに識別する情報であり、例えば現在割り当てられている論理クラスタアドレスである。
また、図5に示すリード管理部21c2は、有効クラスタプール223bを参照し、処理対象の論理ページについて、図7に示すように、内部処理に従ったリード命令を、有効クラスタの論理クラスタアドレスを順に含めた形で発行する。リード管理部21c2は、発行したリード命令を不揮発性メモリ7へ複数のチャネルCh経由で供給する。図7は、複数のクラスタのデータを並び替える処理を示す図である。これに応じて、不揮発性メモリ7は、キャッシュ領域32を用いながらリード命令を実行し、複数のクラスタのデータをストレージ領域31内の指定された物理位置から読み出し、読み出されたリード結果をリード管理部21c2へ複数のチャネルCh経由で返す。
このとき、不揮発性メモリ7において複数のクラスタのデータの間でリード処理に要する時間がばらつきやすく、リード管理部21c2は、入れ替わった順序で複数のクラスタのリードデータを受け得る。
例えば、図5に示すリード管理部21c2は、リード結果を受信すると、データ部分を復元し、図7に示すようなリード結果223cを生成して内部処理バッファ223に格納する。このリード結果223cでは、リード命令に比べて、論理クラスタアドレスの順序が入れ替わっている。図7の場合、例えば、リード命令で先頭にあった「MBA=0x10,MPA=0x2,MCO=0x154」のクラスタが、リード結果223cでは、後ろから3番目になっている。リード命令で後ろから2番目にあった「MBA=0x10,MPA=0x2,MCO=0x15F」のクラスタが、リード結果223cでは、先頭になっている。
このため、図5に示すリード結果並び替え部21c3は、図7に示すように、順序情報223eを参照して、MCA割り当て順223e1を元に、リード結果223cに含まれた複数のクラスタのデータを並び替える。リード結果並び替え部21c3は、並び替え結果223dを内部処理バッファ223に格納する。あるいは、リード結果並び替え部21c3は、並び替え結果223dをMCA割り当て部21c4へ直接的に投入してもよい。
図5に示すMCA割り当て部21c4は、図7に示すように、並び替え結果223dを参照して、複数のクラスタのデータに新たな論理クラスタアドレスを順に割り当てる。図7の場合、並び替え結果223dの論理クラスタアドレス「MBA=0x10,MPA=0x2,MCO=0x154」~「MBA=0x10,MPA=0x2,MCO=0x160」のクラスタのそれぞれに、論理クラスタアドレス「MBA=0x11,MPA=0x1,MCO=0x154」~「MBA=0x11,MPA=0x1,MCO=0x15C」が新たに割り当てられる。
図5に示すMCA割り当て部21c4は、処理対象の論理ページについて、図7に示すように、内部処理に従ったライト命令を、有効クラスタの論理クラスタアドレスを順番に含めた形で発行して不揮発性メモリ7へ複数のチャネルCh経由で供給する。これに応じて、不揮発性メモリ7は、キャッシュ領域32を用いながらライト命令を実行し、複数のクラスタのデータをストレージ領域31内の指定された物理位置に書き込み、その完了通知をMCA割り当て部21c4へ返す。
すなわち、内部処理によるデータのストレージ領域31への書き込みが、過去のシーケンシャルライトコマンドと同じ順序に従い、シーケンシャルな複数の物理アドレスに対して行われる。これにより、その後にホストからシーケンシャルリードコマンドを受けた場合、メモリシステム1は、シーケンシャルリードコマンドに応じて、内部処理で書き込まれたメモリ領域におけるシーケンシャルな複数の物理アドレスから順に複数のチャネル経由でデータを読み出すことができる。このため、リード時のキャッシュヒット率を向上でき、リード処理の効率を向上できるので、シーケンシャルリードコマンドの実行を完了するまでのコマンド実行時間を短縮できる。
なお、キャッシュヒット率とは、キャッシュCM上にデータが存在する確率である。不揮発性メモリ7は、チャネルChを介してリードコマンドを受けると、データをメモリセルアレイMARからキャッシュCM(キャッシュCSH)へ転送する。リードコマンドがシーケンシャルリードコマンドである場合、データがキャッシュCM上に存在すれば、データをメモリセルアレイMARからキャッシュCMへ転送する処理を省略できるため、リード処理の効率が上がる。
次に、メモリシステム1の動作について図8を用いて説明する。図8は、メモリシステム1の動作を示すフローチャートである。
メモリシステム1のコントローラ5において、有効クラスタ判定部21c1は、不揮発性メモリ7上の有効クラスタを判定し、有効クラスタ情報を有効クラスタ情報プール223bに格納する(S1)。リード管理部21c2は、有効クラスタ情報プール223bから有効クラスタ情報を取り出し、MCA割り当て順223e1を付与して順序情報223eを生成する。また、リード管理部21c2は、不揮発性メモリ7へ有効クラスタ情報に応じたリード命令を供給する(S2)。リード結果並び替え部21c3は、リード結果223eをMCA割り当て順223e1に応じた順序で並べて、並び替え結果223dを生成してMCA割り当て部21c4に供給する(S3)。
例えば、S3では、図9に示すように、次の処理が行われる。図9は、複数のクラスタデータを並び替える処理を示すフローチャートである。リード結果並び替え部21c3は、不揮発性メモリ7から1クラスタ分のリード結果を受信すると(S31)、リード結果223cを内部処理バッファ223に保存する(S32)。リード結果並び替え部21c3は、現在のMCA割り当て順のクラスタが内部処理バッファ223になければ(S33でNo)、処理をS31へ戻す。リード結果並び替え部21c3は、現在のMCA割り当て順のクラスタがバッファにあれば(S33でYes)、MCA割り当て順のクラスタをMCA割り当て部21c4に供給する(S34)。リード結果並び替え部21c3は、MCA割り当て順をインクリメントして次に進める(S35)。リード結果並び替え部21c3は、順序情報223eのMCA割り当て順223e1について、MCA割り当て順を最後まで確認していなければ(S36でNo)、処理をS31に戻す。リード結果並び替え部21c3は、MCA割り当て順を最後まで確認していれば(S36でYes)、処理を終了する。
S3が完了すると、MCA割り当て部21c4では、並び替え結果223dに応じてライト順に論理クラスタアドレス(MCA)を割り当て、不揮発性メモリ7にライト命令を供給する(S4)。
以上のように、本実施形態では、メモリシステム1において、コントローラ5は、内部処理に関するリード命令で不揮発性メモリ7内のシーケンシャルライトコマンドでデータが書き込まれたメモリ領域から複数のクラスタのデータを読み出す。コントローラ5は、読み出された複数のクラスタのデータを、ログ情報に応じて特定された書き込み順で並べ替える。コントローラ5は、並べ替え後の複数のクラスタのデータを、内部処理に関するライト命令で不揮発性メモリ7内の他のメモリ領域に書き戻す。これにより、内部処理によるデータの不揮発性メモリ7への書き込みを、過去のシーケンシャルライトコマンドと同じ順序に従い、シーケンシャルな複数の物理アドレスに対して行うことができる。この結果、その後にホストからシーケンシャルリードコマンドを受けた場合、メモリシステム1は、シーケンシャルリードコマンドに応じて、内部処理で書き込まれたメモリ領域におけるシーケンシャルな複数の物理アドレスから順に複数のチャネル経由でデータを読み出すことができる。したがって、リード時のキャッシュヒット率を向上でき、リード処理の効率を向上できるので、シーケンシャルリードコマンドの実行を完了するまでのコマンド実行時間を短縮できる。
なお、実施形態では、複数のクラスタのデータを並び替える処理が1論理ページの単位で行われる場合を例示しているが、複数のクラスタのデータを並び替える処理は、複数の論理ページの単位で行われてもよい。この場合も、並び替え後の順序で複数のクラスタデータを含むライト命令が発行されれば、内部処理によるデータの不揮発性メモリ7への書き込みを過去のシーケンシャルライトコマンドと同じ順序で行うことができる。
また、内部処理に関するリード命令で不揮発性メモリ7から読み出されるリード結果としてリード命令で指示した順序と異なる順序で複数のクラスタデータが返ってくることに対して、内部処理の対象となる論理ブロックのデータをそのままコピーする方法を採用することは困難である。これは、コピー元の論理ブロックとコピー先の論理ブロックとで欠損箇所や誤り訂正の符号化率が違うことがあり、適正にデータを移すことが難しいことがあるからである。
本発明のいくつかの実施形態を説明したが、これらの実施形態は、例として提示したものであり、発明の範囲を限定することは意図していない。これら新規な実施形態は、その他の様々な形態で実施されることが可能であり、発明の要旨を逸脱しない範囲で、種々の省略、置き換え、変更を行うことができる。これら実施形態やその変形は、発明の範囲や要旨に含まれるとともに、特許請求の範囲に記載された発明とその均等の範囲に含まれる。
1 メモリシステム、5 コントローラ、7 不揮発性メモリ、Ch0~Ch17 チャネル。

Claims (6)

  1. コントローラと、
    前記コントローラに接続された複数のチャネルと、
    前記複数のチャネルを介して前記コントローラによりそれぞれがアクセス可能である第1のメモリ領域及び第2のメモリ領域を含む不揮発性メモリと、
    を備え、
    前記コントローラは、ホストからのシーケンシャルデータに関するライトコマンドに応じて複数のクラスタのデータを前記第1のメモリ領域に前記複数のチャネル経由で書き込み、ログ情報に応じて前記複数のクラスタのデータの書き込まれた順序を特定し、特定された前記順序に応じてクラスタの識別情報と書き込み順を示す情報とが対応付けられた順序情報を生成し、内部処理に関するリード命令に応じて前記複数のクラスタのデータのうち複数の有効クラスタのデータ選択的に前記第1のメモリ領域から読み出し、読み出された前記複数の有効クラスタのデータを前記順序情報に応じて並べ替え、並べ替えられた複数の有効クラスタのデータに物理アドレスをシーケンシャルに付け直し、前記内部処理に関するライト命令に応じて、前記並べ替えられた複数のクラスタのデータを前記第2のメモリ領域に前記複数のチャネル経由で前記付け直された物理アドレス順に書き込む
    メモリシステム。
  2. 前記コントローラは、前記ホストからの前記シーケンシャルデータに関するリードコマンドに応じて前記複数のクラスタのデータを前記第2のメモリ領域から前記複数のチャネル経由で読み出す
    請求項1に記載のメモリシステム。
  3. 前記コントローラは、前記複数のチャネルを介して前記第1のメモリ領域内の複数の領域に並行して書き込みを行い、前記複数のチャネルを介して前記第2のメモリ領域内の複数の領域に並行して書き込みを行い、前記複数のチャネルを介して前記第2のメモリ領域内の複数の領域から並行して読み出しを行う
    請求項2に記載のメモリシステム。
  4. 前記コントローラは、前記複数のクラスタのデータを前記第1のメモリ領域に書き込む際に前記複数のクラスタに複数の論理クラスタアドレスを割り当て、前記複数の論理クラスタアドレスをデータが書き込まれる順に前記ログ情報に記録し、前記ログ情報に記録される複数の論理クラスタアドレスの順序に応じて前記複数のクラスタのデータの書き込まれた順序を特定し、前記並べ替えられた複数のクラスタのデータを前記第2のメモリ領域に書き込む際に前記並べ替えられた複数のクラスタのデータに複数の論理クラスタアドレスを割り当てる
    請求項1から3のいずれか1項に記載のメモリシステム。
  5. 前記第1のメモリ領域は、複数の論理ページに割り当てられた複数の領域を含み、
    前記コントローラは、前記順序情報を前記論理ページごとに生成し、前記リード命令に応じて前記第1のメモリ領域から前記論理ページごとにデータを読み出し、前記順序情報に応じて前記論理ページごとにデータを並び替える
    請求項1から4のいずれか1項に記載のメモリシステム。
  6. 複数のチャネルを介してそれぞれがアクセス可能である第1のメモリ領域及び第2のメモリ領域を含む不揮発性メモリを有するメモリシステムにおいて、
    ホストからのシーケンシャルデータに関するライトコマンドに応じて複数のクラスタのデータを前記第1のメモリ領域に前記複数のチャネル経由で書き込むことと、
    ログ情報に応じて前記複数のクラスタのデータの書き込まれた順序を特定することと、
    特定された前記順序に応じてクラスタの識別情報と書き込み順を示す情報とが対応付けられた順序情報を生成することと、
    内部処理に関するリード命令に応じて前記複数のクラスタのデータのうち複数の有効クラスタのデータ選択的に前記第1のメモリ領域から読み出すことと、
    読み出された前記複数の有効クラスタのデータを前記順序情報に応じて並べ替えることと、
    並べ替えられた複数の有効クラスタのデータに物理アドレスをシーケンシャルに付け直すことと、
    前記内部処理に関するライト命令に応じて、前記並べ替えられた複数のクラスタのデータを前記第2のメモリ領域に前記複数のチャネル経由で前記付け直された物理アドレス順に書き込むことと、
    を含む制御方法。
JP2020209603A 2020-12-17 2020-12-17 メモリシステム及び制御方法 Active JP7618440B2 (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP2020209603A JP7618440B2 (ja) 2020-12-17 2020-12-17 メモリシステム及び制御方法
US17/406,584 US11928361B2 (en) 2020-12-17 2021-08-19 Memory system and control method

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2020209603A JP7618440B2 (ja) 2020-12-17 2020-12-17 メモリシステム及び制御方法

Publications (2)

Publication Number Publication Date
JP2022096478A JP2022096478A (ja) 2022-06-29
JP7618440B2 true JP7618440B2 (ja) 2025-01-21

Family

ID=82021290

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2020209603A Active JP7618440B2 (ja) 2020-12-17 2020-12-17 メモリシステム及び制御方法

Country Status (2)

Country Link
US (1) US11928361B2 (ja)
JP (1) JP7618440B2 (ja)

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN114333930B (zh) * 2021-12-23 2024-03-08 合肥兆芯电子有限公司 多通道存储器存储装置、控制电路单元及其数据读取方法
US12411763B2 (en) * 2022-05-16 2025-09-09 Micron Technology, Inc. Data defragmentation control
KR20250036521A (ko) * 2023-09-07 2025-03-14 삼성전자주식회사 스토리지 장치 및 이를 포함하는 전자 시스템

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2011154547A (ja) 2010-01-27 2011-08-11 Toshiba Corp メモリ管理装置及びメモリ管理方法
JP2011197788A (ja) 2010-03-17 2011-10-06 Toshiba Corp メモリシステム
JP2012027649A (ja) 2010-07-22 2012-02-09 Toshiba Corp データ記憶装置及びデータ読み出し方法
JP2012037971A (ja) 2010-08-04 2012-02-23 Tdk Corp メモリコントローラ及びメモリコントローラを備える不揮発性メモリシステム、並びに不揮発性メモリの制御方法
US20180188962A1 (en) 2016-12-30 2018-07-05 SK Hynix Inc. Controller and operation method thereof

Family Cites Families (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2010152517A (ja) 2008-12-24 2010-07-08 Toshiba Corp 不揮発性半導体メモリドライブ装置および不揮発性半導体メモリドライブ装置のアドレス管理方法
US9384124B2 (en) 2012-07-20 2016-07-05 Kabushiki Kaisha Toshiba Data storage device, memory control method, and electronic device with data storage device
KR102445662B1 (ko) 2015-07-01 2022-09-22 삼성전자주식회사 스토리지 장치

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2011154547A (ja) 2010-01-27 2011-08-11 Toshiba Corp メモリ管理装置及びメモリ管理方法
JP2011197788A (ja) 2010-03-17 2011-10-06 Toshiba Corp メモリシステム
JP2012027649A (ja) 2010-07-22 2012-02-09 Toshiba Corp データ記憶装置及びデータ読み出し方法
JP2012037971A (ja) 2010-08-04 2012-02-23 Tdk Corp メモリコントローラ及びメモリコントローラを備える不揮発性メモリシステム、並びに不揮発性メモリの制御方法
US20180188962A1 (en) 2016-12-30 2018-07-05 SK Hynix Inc. Controller and operation method thereof

Also Published As

Publication number Publication date
JP2022096478A (ja) 2022-06-29
US20220197562A1 (en) 2022-06-23
US11928361B2 (en) 2024-03-12

Similar Documents

Publication Publication Date Title
US12511230B2 (en) Storage system having a host directly manage physical data locations of storage device
KR101551584B1 (ko) 하이브리드 slc/mlc 메모리 내의 블록 관리 방식들
CN107957961B (zh) 存储设备、存储系统和计算设备
US9405679B2 (en) Determining a location of a memory device in a solid state device
US8762629B2 (en) Data conditioning to improve flash memory reliability
EP2374134B1 (en) Spare block management in non-volatile memories
JP5823875B2 (ja) 固体メモリフォーマッティング
US20070035998A1 (en) Nonvolatile memory apparatus
JP2011522350A (ja) ハイブリッドメモリ管理
CN112463647A (zh) 使用散列来减小前向映射表的大小
JP7618440B2 (ja) メモリシステム及び制御方法
US20190095341A1 (en) Low overhead mapping for highly sequential data
KR20200032404A (ko) 데이터 저장 장치 및 동작 방법, 이를 포함하는 스토리지 시스템
CN111309642B (zh) 一种存储器及其控制方法与存储系统
TWI914173B (zh) 記憶體系統
US11640336B2 (en) Fast cache with intelligent copyback
US20260079639A1 (en) Memory system and method
TW202611734A (zh) 記憶體系統

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20230911

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20240716

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20240717

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20240917

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: 20241210

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20250108

R150 Certificate of patent or registration of utility model

Ref document number: 7618440

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150