JP5971423B2 - 情報処理装置、メモリコントローラ、記憶装置の制御プログラム及び記憶装置の制御方法 - Google Patents

情報処理装置、メモリコントローラ、記憶装置の制御プログラム及び記憶装置の制御方法 Download PDF

Info

Publication number
JP5971423B2
JP5971423B2 JP2015533374A JP2015533374A JP5971423B2 JP 5971423 B2 JP5971423 B2 JP 5971423B2 JP 2015533374 A JP2015533374 A JP 2015533374A JP 2015533374 A JP2015533374 A JP 2015533374A JP 5971423 B2 JP5971423 B2 JP 5971423B2
Authority
JP
Japan
Prior art keywords
data
unit
channel
control unit
storage unit
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
JP2015533374A
Other languages
English (en)
Other versions
JPWO2016013076A1 (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.)
Fujitsu Ltd
Original Assignee
Fujitsu Ltd
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 Fujitsu Ltd filed Critical Fujitsu Ltd
Application granted granted Critical
Publication of JP5971423B2 publication Critical patent/JP5971423B2/ja
Publication of JPWO2016013076A1 publication Critical patent/JPWO2016013076A1/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/16Protection against loss of memory contents
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/16Handling requests for interconnection or transfer for access to memory bus

Description

本発明は、情報処理装置、メモリコントローラ、記憶装置の制御プログラム及び記憶装置の制御方法に関する。
近年、磁気ディスクよりも高速に動作する不揮発性メモリを用いた情報処理装置が知られている。このような情報処理システムの一例として、不揮発性メモリの一種であるNANDフラッシュメモリデバイスがメモリシステムやストレージシステムとして様々な分野で利用されている。NANDフラッシュメモリデバイスは従来の磁気ディスクに比べて動作速度が高速で、かつ他の不揮発性メモリよりも大容量化が容易である。以下の説明では、NANDフラッシュメモリデバイスをNANDデバイスと記載する。さらに、NANDデバイスを用いたストレージとしては、複数のNANDデバイスを有するSSD(Solid State Drive)といったものがある。
ここで、NANDデバイスは、データの記憶領域である物理ページ単位でデータの書込み、読出し、データの更新に係る移動を行い、複数の物理ページを含む物理ブロック単位でデータの消去を行う。このため、NANDデバイスは、有効なデータを格納するページと無効なデータを格納するページとが混在した物理ブロックを有する場合がある。また、NANDデバイスは、データを消去する際に素子が劣化するので、頻繁に更新されるデータが書込まれた物理ページと、あまり更新されないデータが書込まれた物理ページとでは素子が劣化する期間にばらつきが発生する。
このため、各物理ブロックに対するデータの書込み状況やデータの書込時刻に応じて、各物理ブロックに書込まれたデータの移動を実行し、データの整理や劣化の平準化を行うNANDコントローラが知られている。ある物理ブロック内の有効ページが少なくなったときに、残っている有効ページを他のブロックに移動してブロックを消去できるように整理する処理は、「ガベージコレクション」と呼ばれる。また、ブロック毎の劣化速度のばらつきを抑えるために、書き込まれてから長時間更新のないデータを別のブロックに移動して消去回数を平準化する処理は、「ウェアレベリング」と呼ばれる。さらに、データが正常に保管されていることを確認するために、データを読み出し、エラー検出を行い、エラーを検出した場合、他のアドレスにデータを訂正して書き込む処理は、「スクラブ」と呼ばれる。
NANDコントローラは、物理ブロック毎に、各物理ページのデータが有効であるか否かを示す情報と、最後にデータが書き込まれた時刻を示す情報とが格納された管理情報テーブルを有する。そして、NANDコントローラは、仮情報テーブルを用いてガベージコレクション、ウェアレベリング及びスクラブを行う。
例えば、NANDコントローラは、管理情報テーブルを参照し、物理ブロック毎に、有効なデータの数やデータが書込まれてから経過した時間に応じて、データを移動させるか否かを判定する。その後、NANDコントローラは、データを移動させると判定した場合は、物理ブロックに書込まれた有効なデータを、予備ブロックの物理ページに移動し、選択した物理ブロックのデータを消去することで、新たな予備ブロックの確保や、劣化の平準化を行う。
また、NANDコントローラは、情報処理装置が実行するシステムがデータの指定に用いる論理アドレスを、データが格納された物理ページを示す物理アドレスに変換するアドレス変換テーブルを有する。そして、NANDコントローラは、データの移動を行った場合は、データの移動元、および、データの移動先を示す物理アドレスを用いて、アドレス変換テーブルの更新を行う。
例えば、NANDデバイスの技術として、複数のストライプの各々が異なる処理状態となるようにスケジューリングし、各処理の競合を分散する従来技術が有る。また、NANDコントローラからデータの読み出しと移動先への書き込みを同時に行い、データをNANDコントローラに一時保管せずに、直接NANDデバイスから他のNANDデバイスへ移動させる従来技術がある。
特表2013−513881号公報 特開2012−230621号公報
しかしながら、ガベージコレクションにおいて、NANDデバイスから読み出した移動対象のデータを、NANDデバイスに書き込む場合、書き込みを行っているチャネルに対するCPUによるデータの読み出しや書き込みが妨げられてしまう。これにより処理効率が低下してしまう。これは、ウェアレベリングの場合も同じである。
また、ストライプ毎に状態を異ならせる従来技術を用いた場合、複数のチャネルをまたぐデータ移動が多くなり、処理能力が低下するおそれがある。また、データのNANDデバイスへの一時保管を行わずにNANDデバイス間でデータの移動を行う従来技術を用いても、CPUからの命令とガベージコレクションなどの処理との競合を取り除くことは困難である。
開示の技術は、上記に鑑みてなされたものであって、処理効率を向上させた情報処理装置、メモリコントローラ、記憶装置の制御プログラム及び記憶装置の制御方法を提供することを目的とする。
本願の開示する情報処理装置、メモリコントローラ、記憶装置の制御プログラム及び記憶装置の制御方法は、一つの態様において、複数の記憶部は、アクセスする経路が異なるグループに分けられる。データ移動部は、複数の前記記憶部のうちの第1記憶部へ接続する第1経路を経由して前記第1記憶部から格納データを読み出し、複数の前記記憶部のうちの第2記憶部へ接続する第2経路を経由して前記第2記憶部へ読み出した前記格納データを書き込む。書込実行部は、データの書込命令を受けて、複数の前記記憶部のうちの第3記憶部に接続する第3経路を経由して前記第3記憶部に前記書込命令で指定されたデータを書き込む。選択部は、前記第1経路及び前記第2経路と、前記第3経路とが異なるように前記第3記憶部を選択する。
本願の開示する情報処理装置、メモリコントローラ、記憶装置の制御プログラム及び記憶装置の制御方法の一つの態様によれば、処理効率が向上するという効果を奏する。
図1は、情報処理装置の概略構成図である。 図2は、実施例1に係るNANDコントローラのブロック図である。 図3は、管理テーブルの一例を表す図である。 図4は、調停部へ入力される信号のフォーマットの一例の図である。 図5は、ガベージコレクション実行前の管理テーブル及びアドレス変換テーブルの状態を表す図である。 図6は、ガベージコレクション実行後の管理テーブル及びアドレス変換テーブルの状態を表す図である。 図7は、調停部及びチャネル切替部のデータの書き込みに関する詳細なブロック図である。 図8は、NANDコントローラの各部からの出力を表すタイムチャートである。 図9は、データ移動処理及びCPUからの書込命令の処理のフローチャートである。 図10は、実施例2に係るNANDコントローラによるスクラブの処理のフローチャートである。 図11は、実施例3に係るNANDコントローラのブロック図である。
以下に、本願の開示する情報処理装置、メモリコントローラ、記憶装置の制御プログラム及び記憶装置の制御方法の実施例を図面に基づいて詳細に説明する。なお、以下の実施例により本願の開示する情報処理装置、メモリコントローラ、記憶装置の制御プログラム及び記憶装置の制御方法が限定されるものではない。
図1は、情報処理装置の概略構成図である。情報処理装置1は、複数のメモリ2a及び2b、複数のCPU(Central Processing Unit)3a及び3b、I/O(Input Output)ハブ4、並びに、複数のSSD(Solid State Drive)5a及び5bを有する。また、SSD5aは、NANDコントローラ6a及び複数のNANDデバイス71a〜78aを有する。
また、SSD5bは、NANDコントローラ6b及び複数のNANDデバイス71b〜78bを有する。なお、以下の説明では、SSD5b、NANDコントローラ6b、及び複数のNANDデバイス71b〜78bは、SSD5a、NANDコントローラ6a、及び複数のNANDデバイス71a〜78aと同様の機能を発揮するものとして、説明を省略する。
各メモリ2a及び2bは、各CPU3a及び3bが演算処理に用いるデータを記憶する記憶装置である。また、各CPU3a及び3bは、メモリ2a及び2bが記憶するデータを用いて、各種演算処理を行う演算処理装置である。例えば、CPU3a及び3bは、NUMA(Non-Uniform Memory Access)の技術を用いて、メモリ2a及び2bが記憶するデータを取得し、取得したデータを用いて演算処理を実行する。
また、CPU3a及び3bは、I/Oハブ4を介して、各SSD5a及び5bが記憶するデータを取得し、取得したデータを用いて演算処理を実行する。詳細には、CPU3aは、SSD5aに対し、データの読出し要求や書込み要求を発行し、各NANDデバイス71a〜78aからデータの読出しや書込みを行う。例えば、CPU3aは、SSD5aに対し、読出し対象となるデータを指定する論理アドレスが格納された読出し要求を発行する。また、CPU3aは、データの書込み先を指定する論理アドレスと、書込み対象となるデータとが格納された書込み要求を発行する。
NANDデバイス71aは、各種データを記憶する不揮発性メモリである。詳細には、NANDデバイス71aは、データの記憶領域である物理ページを複数有し、物理ページ単位でデータの書込みを行う。また、NANDデバイス71aは、複数の物理ページを有する物理ブロックを複数有し、ブロック単位でデータの消去を行う。ここで、1つの物理ページは、例えば、8キロバイトの記憶容量を有し、1つの物理ブロックは、例えば、128の物理ページを有する。
また、NANDデバイス71aは、NANDコントローラ6aと伝送路81aで接続されている。このNANDデバイス71aとNANDコントローラ6aとを結ぶ伝送路81aは、チャネルと呼ばれる。以下では、伝送路81aを、チャネル81aと呼ぶ。同様に、NANDデバイス72aも、NANDデバイス71aと同様のチャネル81aによりNANDコントローラ6aに接続される。このように、1つのチャネル81aは、NANDデバイス71a及び72aにより共有される。ここで、1つのチャネルを共有するNANDデバイスの数は1つでも又3以上であってもよい。
同様に、図1では、チャネル82aは、NANDデバイス73a及びNANDデバイス74aにより共有される。また、チャネル83aは、NANDデバイス75a及びNANDデバイス76aにより共有される。チャネル84aは、NANDデバイス77a及びNANDデバイス78aにより共有される。このNANDデバイス71a〜78aが、「記憶部」の一例にあたる。
NANDコントローラ6aは、各NANDデバイス71a〜78aに対してアクセスし、データの読出しや書込みを行う。例えば、NANDコントローラ6aは、データが記憶された記憶領域を各CPU3a及び3bが指定する際に用いる論理アドレスと、データが格納されたNANDデバイス71a〜78aの記憶領域を示す物理アドレスとを対応付けたアドレス変換テーブルを有する。
そして、NANDコントローラ6aは、読出し要求とともに論理アドレスを受信すると、アドレス変換テーブルを用いて、論理アドレスと対応付けられた物理アドレスを識別し、識別した物理アドレスが示す記憶領域からデータの読出しを行う。その後、NANDコントローラ6aは、I/Oハブ4を介して、読出したデータをCPU3aに送信する。
なお、以下の説明では、理解を容易にするため、各物理ページの先頭アドレスとなる論理アドレスを単に論理アドレスと記載し、各物理ページの先頭アドレスとなる物理アドレスを単に物理アドレスと記載する。また、CPU3a又は3bは、各物理ページの先頭アドレスとなる論理アドレスに対する読出し要求や書込み要求を発行するものとする。
また、以下では、NANDコントローラ6a及び6bを区別しない場合、単に「NANDコントローラ6」という。また、NANDデバイス71a〜78a及び71b〜78bを区別しない場合、単に「NANDデバイス70」という。また、CPU3a及び3bを区別しない場合、単に「CPU3」という。さらに、チャネル81a〜84a及び81b〜84bを区別しない場合、単に「チャネル80」という。
図2を参照して、NANDコントローラ6について説明する。図2は、実施例1に係るNANDコントローラのブロック図である。図2に示すように、NANDコントローラ6は、移動対象検出部61、データ移動制御部62、リードライト制御部63、調停部64、管理テーブル制御部65、チャネル切替部66及びNAND−IF(Interface)67a〜67dを有している。以下では、NAND−IF67a〜67dを区別しない場合、単に「NAND−IF67」という。また、本実施例に係るNANDコントローラ6は、管理テーブル68及びアドレス変換テーブル69を有している。
本実施例に係る管理テーブル68は、図3に示すフォーマットを有している。図3は、管理テーブルの一例を表す図である。図3に示すように、管理テーブル68は、各チャネルのブロック毎に、そのブロックが有する各ページが有効であるか無効であるかの情報及び最終の更新時刻を保持している。
管理テーブル68における「PageValid」は、ブロックが有する各ページが有効であるか無効であるかの情報である。図3では、1つのブロックに4つのページが有る場合であり、各ページを4つのビットで表している。そして、あるページに対応するビットが0であれば、そのページが無効ページであることを表す。また、あるページに対応するビットが1であれば、そのページが有効ページであることを表している。また、「TimeStamp」は、各ページの最終の更新時刻を表している。
管理テーブル68は、例えば、ガベージコレクションやウェアレベリング、又はCPUからのデータの書込命令における書き込み先の検出に用いられる。
アドレス変換テーブル69は、CPU3によって指定される論理アドレスと、NANDデバイス71における物理アドレスとの対応関係が登録されている。アドレス変換テーブル69は、物理アドレスの情報として、その物理アドレスを有するページの情報とそのページを含むブロックの情報との組み合わせを保持している。さらに、アドレス変換テーブル69は、物理アドレスの情報として、その物理アドレスを有するページを含むNANDデバイス70にアクセスするためのチャネル80の情報を保持している。
例えば、アドレス変換テーブル69は、リードライト制御部63がCPU3により指定された論理アドレスに対応する物理アドレスを取得する場合に用いられる。
さらに、アドレス変換テーブル69は、NANDデバイス70に対してデータの書き込みが行われた場合、管理テーブル制御部65により、書き込むデータの格納場所として指定された論理アドレスと書き込み先の物理アドレスとが対応するように更新される。また、その場合、アドレス変換テーブル69は、管理データ制御部65により、書き込むデータの読み出し元のデータが格納されていた物理アドレスと論理アドレスとの対応が削除される。
移動対象検出部61は、ソフトウェアからの指示や内部タイマーを契機として、管理テーブル68の検索リクエストを管理テーブル制御部65へ送信する。その後、移動対象検出部61は、ガベージコレクション又はウェアレベリングを実行する場合、実行対象のページの情報の入力をリクエスト応答として管理テーブル制御部65から受ける。ここで、移動対象検出部61は、実行対象のページの情報として、例えば、そのページが存在する物理ブロックの情報、そのページの物理アドレス及びそのページにアクセスするためのチャネル80の情報を取得する。
そして、移動対象検出部61は、実行対象のページの情報をデータ移動制御部62に通知する。さらに、移動対象検出部61は、実行する処理の種類、すなわち、ガベージコレクション又はウェアレベリングのいずれの処理を実行するかを表す情報をデータ移動制御部62に通知する。これにより、移動対象検出部61は、実行対象のページのデータを新たな物理ブロックに順次移動することをデータ移動制御部62に指示する。その後、移動対象検出部61は、ガベージコレクション又はウェアレベリングの処理完了の応答をデータ移動制御部62から受信して、ガベージコレクション又はウェアレベリングの処理を終了する。
データ移動制御部62は、実行対象のページの情報、及びガベージコレクション又はウェアレベリングのいずれの処理を実行するかを表す情報を移動対象検出部61から受信する。
そして、データ移動制御部62は、移動対象検出部61により通知された各実行対象のページからのデータの読出命令を調停部64へ順次出力する。その後、データ移動制御部62は、指定したページから読み出したデータの入力を調停部64から受ける。そして、データ移動制御部62は、受信したデータを読み出し元である移動対象のページの情報と対応させて一時保管する。
次に、データ移動制御部62は、一次保管したデータを、読み出しに使用したチャネル80の情報及び書込命令とともに調停部64へ出力する。ここで、読み出しに使用したチャネル80とは、データの読み出し元である移動対象のページを有するNANDデバイス70へアクセスするためのチャネル80である。
その後、データ移動制御部62は、ガベージコレクション又はウェアレベリングの処理完了の応答を調停部64から受信する。そして、データ移動制御部62は、ガベージコレクション又はウェアレベリングの処理完了の応答を移動対象検出部61へ送信する。
ここで、図4を参照して、データ移動制御部62から調停部64へ入力される信号について説明する。図4は、調停部へ入力される信号のフォーマットの一例の図である。ただし、データ移動制御部62からの信号だけでではなく、リードライト制御部63から調停部64に入力される信号も、図4に示すフォーマットを有する。
図4に示すように、データ移動制御部62から調停部64へ入力される信号は、ヘッダ部に命令種101、論理アドレス102、物理アドレス103、データ移動制御の命令の番号104及び管理テーブルの検索チャネル105が格納される。また、データ移動制御部62から調停部64へ入力される信号は、データ部にデータ106及びデータのエラー訂正ビット107が格納される。
命令種101には、CPU3から指示された書き込み又は読み出し、ガベージコレクション又はウェアレベリングの書き込み又は読み出しのいずれかを示す情報が格納される。論理アドレス102には、CPU3からの書き込み又は読み出し命令の場合に処理の対象とする論理アドレスが格納される。物理アドレス103には、調停部64へ入力される時点では空である。データ移動制御の命令の番号は、ガベージコレクション、ウェアレベリング又はスクラブのいずれかを表す番号が格納される。管理テーブルの検索チャネル105には、処理対象とするページを検索する場合に用いるチャネル80の番号が格納される。
また、データ106には、書き込み対象のデータが格納される。また、データのエラー訂正ビット107には、書き込み対象のデータの誤り訂正用の情報が格納される。誤り訂正用の情報は、例えばECC(Error Check and Correct)の誤り検出符号である。
読出命令の場合、データ移動制御部62は、ガベージコレクション又はウェアレベリングのいずれかを示す情報を命令種101に格納する。また、データ移動制御部62は、移動対象のページの物理アドレスを物理アドレス103に格納する。また、データ移動制御部62は、ガベージコレクション又はウェアレベリングのいずれかを示す番号をデータ移動制御の命令の番号104に格納する。さらに、データ移動制御部62は、移動対象のページを有するNANDデバイス70にアクセスするためのチャネル80の情報を管理テーブルの検索チャネル105に格納する。この場合、データ移動制御部62は、論理アドレス102、データ106及びデータのエラー訂正ビット107には何も格納しない。
書込命令の場合、データ移動制御部62は、ガベージコレクション又はウェアレベリングのいずれかを示す情報を命令種101に格納する。この場合、データ移動制御部62は、論理アドレス102を空のままとする。また、この時点では書き込み先のページは決まっていないので、データ移動制御部62は、物理アドレス103を空のままとする。また、データ移動制御部62は、ガベージコレクション又はウェアレベリングのいずれかを示す番号をデータ移動制御の命令の番号104に格納する。さらに、データ移動制御部62は、読み出しに使用したチャネル80の情報を管理テーブルの検索チャネル105に格納する。また、データ移動制御部62は、書き込み対象のデータをデータ106に格納する。さらに、データ移動制御部62は、書き込み対象のデータのエラー訂正用の情報を算出し、算出したエラー訂正用の情報をデータのエラー訂正ビット107に格納する。このデータ移動制御部62が、「データ移動部」の一例にあたる。
リードライト制御部63は、NANDデバイス70に対するデータの書込命令の入力をCPU3から受ける。そして、リードライト制御部63は、書込命令で指示された論理アドレスに対応する物理アドレスをアドレス変換テーブル69から取得する。そして、リードライト部63は、取得した物理アドレスを読出アドレスとする書込命令を調停部64へ出力する。
ただし、書き込むデータが初めてNANDデバイス70に格納される場合、そのデータの格納場所として指定された論理アドレスに物理アドレスは割り当てられていない。その場合、リードライト制御部63は、読出アドレスを指定せずに書込命令を調停部64へ出力する。
その後、データの書き込みが完了すると、リードライト制御部63は、書き込み完了の応答を調停部64から受信する。そして、リードライト制御部63は、書き込み完了の応答をCPU3へ返す。
また、リードライト制御部63は、NANDデバイス70に対する読出命令の入力をCPU3から受ける。そして、リードライト制御部63は、読出命令で指示された論理アドレスに対応する物理アドレスをアドレス変換テーブル69から取得する。そして、リードライト制御部63は、取得した物理アドレスを読出アドレスとする読出命令を調停部64へ出力する。
その後、リードライト制御部63は、読み出されたデータの入力を調停部64から受ける。そして、リードライト制御部63は、受信した応答を読出命令の応答としてCPU3へ返す。
リードライト制御部63も、図4に示すフォーマットを有する信号を用いて、調停部64に対して書込命令又は読出命令を送る。
書込命令の場合、リードライト制御部63は、CPU3からの書込命令であることを表す情報を命令種101に格納する。さらに、リードライト制御部63は、書込命令で指示された論理アドレスを論理アドレス102に格納する。また、リードライト制御部63は、書込命令がデータの更新の場合、データの読み出し元となるページの物理アドレスを物理アドレス103に格納する。これに対して、書込命令がデータの更新でなく初めての書き込みの場合、リードライト制御部63は、物理アドレス103を空のままとする。さらに、リードライト制御部63は、データ移動制御の命令番号を空のままとする。また、書き込み先のページを検索するチャネル80も決まっていないので、リードライト制御部63は、管理テーブルの検索チャネル105を空のままとする。また、リードライト制御部63は、書き込むデータをデータ106に格納する。さらに、リードライト制御部63は、データから誤り訂正用の情報を算出し、算出した誤り訂正用の情報をデータのエラー訂正ビット107に格納する。
読出命令の場合、リードライト制御部63は、CPU3からの読出命令であることを表す情報を命令種101に格納する。さらに、リードライト制御部63は、読出命令で指示された論理アドレスを論理アドレス102に格納する。また、リードライト制御部63は、データの読み出し元となるページの物理アドレスを物理アドレス103に格納する。この場合、リードライト制御部63は、データ移動制御の命令番号は空のままとする。また、リードライト制御部63は、読み出しに使用するチャネル80を管理テーブルの検索チャネル105に格納する。また、読出命令の場合、リードライト制御部63は、データ106及びデータのエラー訂正ビット107には何も格納しない。このリードライト制御部63が、「書込実行部」の一例にあたる。
調停部64は、データ移動制御部62及びリードライト制御部63からの読出命令及び書込命令の調停を行い、管理テーブル制御部及びスイッチ素子662に出力する。
調停部64は、ガベージコレクション又はウェアレベリングを実施する場合、図4のフォーマットを有する信号を用いたページの読出命令をデータ移動制御部62から順次受信する。そして、調停部64は、読出命令で指定されたページからのデータの読み出しをチャネル切替部66に指示する。その後、調停部64は、読み出されたデータをチャネル切替部66から受信する。次に、調停部64は、読み出したデータをデータ移動制御部62へ出力する。
その後、調停部64は、図4のフォーマットを有する信号を用いた書込命令をデータ制御部62から受信する。これにより、調停部64は、書き込み指示とともに、読み出しに使用したチャネル80の情報及び書き込むデータを取得する。
次に、調停部64は、読み出しに使用したチャネル80に接続されているNANDデバイス70に存在する、予備ブロックを有するブロックの特定を管理テーブル制御部65に指示する。さらに、調停部64は、書き込み対象のデータをチャネル切替部66へ出力する。その後、調停部64は、データの書き込み完了の応答をチャネル切替部66から受信する。
調停部64は、以上の処理を、データ移動制御部62により読み出した指示された全てのページに対して実施する。その後、調停部64は、ガベージコレクション又はウェアレベリングの処理完了の応答をデータ移動制御部62に通知する。
一方、CPU3からデータの書き込み又は読み出しの指示があった場合、調停部64は、図4に示すフォーマットを有する信号を用いたデータの書込命令又は読出命令をリードライト制御部63から受ける。
書込命令の場合、調停部64は、書込命令で指定された物理アドレスからのデータの読み出しをチャネル切替部66に指示する。その後、調停部64は、読み出されたデータをチャネル切替部66から取得する。そして、調停部64は、読み出したデータとリードライト制御部63から受信したデータとをマージして、データを更新する。
次に、調停部64は、ガベージコレクション又はウェアレベリングの実行命令を受けているか否かを判定する。以下では、ガベージコレクションとウェアレベリングとを区別しない場合、「データ移動処理」という。
データ移動処理の実行命令を受けている場合、調停部64は、データ移動処理の命令において、移動対象のページを有するNANDデバイス70にアクセスするためのチャネル80を書込み命令から取得する。そして、調停部64は、取得したチャネル80以外のチャネル80から空きページを選択する指示を管理テーブル制御部65に通知する。さらに、調停部64は、データをチャネル切替部66へ出力する。その後、調停部64は、データの書き込み完了の応答をチャネル切替部66から受信する。そして、調停部64は、データの書き込み完了の応答をリードライト制御部63へ送信する。
一方、データ移動処理の実行命令を受けていない場合、調停部64は、全てのチャネル80から空きページを選択する指示を管理テーブル制御部65に通知する。さらに、調停部64は、データをチャネル切替部66へ出力する。その後、調停部64は、リードライト制御部63に書き込み完了の応答を送信する。その後、調停部64は、データの書き込み完了の応答をチャネル切替部66から受信する。そして、調停部64は、データの書き込み完了の応答をリードライト制御部63へ送信する。
読出命令の場合、調停部64は、読出命令で指定された物理アドレスからのデータの読み出しをチャネル切替部66に指示する。その後、調停部64は、読み出されたデータをチャネル切替部66から取得する。そして、調停部64は、読み出したデータを応答としてリードライト制御部63へ送信する。
管理テーブル制御部65は、データ移動処理の場合、データの書き込み時に、読み出しに使用したチャネル80に接続されているNANDデバイス70に存在する、予備ブロックを有するブロックの特定の指示を調停部64から受ける。そして、管理テーブル制御部65は、管理テーブル68を検索して、読み出しに使用したチャネル80に接続されているNANDデバイス70から、予備ブロックを有するブロックを特定する。さらに、管理テーブル制御部65は、特定した物理ブロックにおけるデータの書き込み先とするページの物理アドレスを管理テーブル68から取得する。そして、管理テーブル制御部65は、読み出しに使用したチャネル80の情報及び取得した物理アドレスをチャネル切替部66へ出力する。
例えば、管理テーブル68が図3に示す状態の場合に、読み出しに使用したチャネル80の識別番号が1であったとする。この場合、管理テーブル制御部65は、識別番号が1であるチャネル80に含まれるブロックの中から予備ブロックを有するブロックを特定する。すなわち、管理テーブル制御部65は、範囲Pを検索して予備ブロックを有するブロックを特定する。
その後、管理テーブル制御部65は、移動対象のページの論理アドレスが、移動先のページの物理アドレスに対応するようにアドレス変換テーブル69を更新する。
また、データ移動処理命令を受けている際のCPUからの書込命令の場合、管理テーブル制御部65は、データの書き込み時に、データ移動処理で使用するチャネル80以外のチャネル80から空きページを選択する指示を調停部64から受ける。そして、管理テーブル制御部65は、管理テーブル68を用いて、データ移動処理で使用するチャネル80以外のチャネル80に接続するNANDデバイス70の中から空きページを管理テーブル68から選択する。
例えば、管理テーブル68が図3に示す状態の場合に、データ移動処理で使用するチャネル80の識別番号が1であったとする。この場合、管理テーブル制御部65は、識別番号が1であるチャネル80以外のチャネル80に含まれるブロックの中から空きページを選択する。すなわち、管理テーブル制御部65は、範囲P以外を検索して空きページを選択する。
その後、管理テーブル制御部65は、データ移動処理で使用するチャネル80以外のチャネル80であって、書き込みに使用するチャネル80の情報及び書き込み先のページの物理アドレスをチャネル切替部66へ出力する。
さらに、管理テーブル制御部65は、書き込んだデータが格納されているページを示す論理アドレスが、書き込み先のページの物理アドレスに対応するようにアドレス変換テーブル69を更新する。
ここで、図5及び6を参照して、ガベージコレクション実行時の管理テーブル68及びアドレス変換テーブル69の遷移について説明する。図5は、ガベージコレクション実行前の管理テーブル及びアドレス変換テーブルの状態を表す図である。また、図6は、ガベージコレクション実行後の管理テーブル及びアドレス変換テーブルの状態を表す図である。
図5における管理テーブル68及びアドレス変換テーブル69は、ガベージコレクション実行前の状態を表している。また、表701は、チャネル#0及び#1に接続されたNANDデバイス70が有するページの状態を表している。そして、表701におけるバツがついたページは、無効ページを表している。ここでは、チャネル#0及び#1という少なくとも2つのチャネル80がある場合で説明する。
管理テーブル制御部65は、移動対象検出部61から管理テーブル68の検索リクエストを受けて、管理テーブル68の各チャネル毎の先頭のブロックから末尾のブロックまで無効ページの状態を検出する。そして、管理テーブル制御部65は、所定の条件を満たすブロックをガベージコレクションの対象のブロックとして選択する。図5では、管理テーブル制御部65は、行681で表されるチャネル#0のブロックP2をガベージコレクションの対象のブロックとして選択する。
そして、管理テーブル制御部65は、データの書き込み時に、読み出しに用いたチャネル80と同じチャネル80であるチャネル#0から予備ブロックを有するブロックを書き込み先のブロックとして選択する。すなわち、管理テーブル制御部65は、管理テーブル68の範囲Qに含まれるブロックを検索し、予備ブロックを有するブロックを選択する。本実施例では、管理テーブル制御部65は、チャネル#0のブロックP8を選択する。このように、本実施例では、書き込み先のブロックを検索する場合に、1つのチャネル80の範囲のみを検索対象とする。
次に、管理テーブル制御部65は、表701に示すように、チャネル#0のブロックP2のページ711を移動対象として選択する。ここでは、各ページの物理アドレスは、ブロック番号とページ番号との組み合わせで表す。例えば、ページ711の物理アドレスは、P2−3である。また、ページ711は、論理アドレスL3に対応している。
そして、管理テーブル制御部65は、図6の表702に示すように、ページ711のデータを選択したブロックP8のページ712に移動する。ページ712の物理アドレスは、P8−0である。
次に、管理テーブル制御部65は、管理テーブル68の行681におけるブロックP2のページ711を無効にする。さらに、管理テーブル制御部65は、管理テーブル68の行681におけるブロックP2の更新日時を更新する。
さらに、ページ711のデータをページ712に移動したので、論理アドレスL3は、ページ712に対応することになる。そこで、管理テーブル制御部65は、アドレス変換テーブル69の論理アドレスL3に対応する物理アドレス691の情報を書き込み先のページ712の情報に変更する。具体的には、管理テーブル制御部65は、論理アドレスL3に対応するチャネル80をチャネル#0とし、物理アドレスを表すブロックとページの情報をP8−0とする。以上により、データ移動処理における書き込み時の管理テーブル68及びアドレス変換テーブル69の更新が完了する。
また、データ移動処理命令を受けていない場合のCPU3からの書込命令の場合、管理テーブル制御部65は、データの書き込み時に、全てのチャネル80から空きページを選択する指示を調停部64から受ける。そして、管理テーブル制御部65は、管理テーブル68を用いて、全てのチャネル80に接続するNANDデバイス70の中から空きページを選択する。その後、管理テーブル制御部65は、書き込みに使用するチャネル80の情報及び書き込み先のページの物理アドレスをチャネル切替部66へ出力する。
さらに、管理テーブル制御部65は、書き込んだデータが格納されているページを示す論理アドレスが、書き込み先のページの物理アドレスに対応するようにアドレス変換テーブル69を更新する。この管理テーブル制御部65が、「選択部」の一例にあたる。
チャネル切替部66は、データ移動処理の場合、まずデータの読出命令を調停部64から受ける。次に、チャネル切替部66は、読み出し命令で指定されたページを有するNANDデバイス70にアクセスするためのチャネル80に接続するNAND−IF67に経路を切り替える。そして、チャネル切替部66は、調停部64から受信したデータ及び移動対象のページの情報を含む読出命令をNAND―IF67へ出力する。
その後、チャネル切替部66は、読み出したデータの入力をNAND−IF67から受ける。そして、チャネル切替部66は、受信したデータを調停部64へ送信する。
次に、チャネル切替部66は、書き込み対象のデータの入力を調停部64から受ける。さらに、チャネル切替部66は、読み出しに使用したチャネル80の情報及び書き込み先のページの物理アドレスの入力を管理テーブル制御部65から受ける。そして、チャネル切替部66は、読み出しに使用したチャネル80に接続するNAND−IF67に経路を切り替える。そして、チャネル切替部66は、調停部64から受信したデータ及び書き込み先のページの情報を含む書込命令をNAND―IF67へ出力する。
その後、チャネル切替部66は、データの書き込み完了の応答をNAND−IF67から受信する。そして、チャネル切替部66は、データの書き込み完了の応答を調停部64へ送信する。
また、CPUからの書込命令の場合、チャネル切替部66は、書き込み対象のデータの入力を調停部64から受ける。さらに、チャネル切替部66は、書き込みに使用するチャネル80の情報及び書き込み先のページの物理アドレスの入力を管理テーブル制御部65から受ける。ここで、データ移動処理命令を受けている場合であれば、チャネル切替部66は、書き込みに使用するチャネル80の情報として、データ移動処理に使用するチャネル80以外のチャネル80の情報を取得する。そして、チャネル切替部66は、書き込みに使用するチャネル80に接続するNAND−IF67に経路を切り替える。その後、チャネル切替部66は、調停部64から受信したデータ及び書き込み先のページの情報を含む書込命令をNAND―IF67へ出力する。
その後、チャネル切替部66は、データの書き込み完了の応答をNAND−IF67から受信する。そして、チャネル切替部66は、データの書き込み完了の応答を調停部64へ送信する。
また、CPUからの読出命令の場合、チャネル切替部66は、読み出し対象のデータの入力を調停部64から受ける。さらに、チャネル切替部66は、読み出しに使用するチャネル80の情報及び読み出し先のページの物理アドレスの入力を管理テーブル制御部65から受ける。そして、チャネル切替部66は、読み出し使用するチャネル80に接続するNAND−IF67に経路を切り替える。その後、チャネル切替部66は、読み出し先のページの情報を含む読出命令をNAND―IF67へ出力する。
その後、チャネル切替部66は、読み出したデータをNAND−IF67から受信する。そして、チャネル切替部66は、読み出したデータを調停部64へ出力する。
NAND−IF67は、それぞれ異なるチャネル80に接続している。すなわち、NAND−IF67は、異なるNANDデバイス70に対して書き込み及び読み出しを行う。
NAND−IF67は、読み出し先のページの物理アドレスを含むデータの読出命令の入力をチャネル切替部66から受ける。次に、NAND−IF67は、読み出し命令で指定された物理アドレスのページからデータを読み出す。そして、NAND−IF67は、読み出したデータを調停部64へ出力する。
また、NAND−IF67は、書き込み対象のデータ及び書き込み先のページの物理アドレスを含むデータの書込命令の入力をチャネル切替部66から受ける。次に、NAND−IF67は、書込命令で指定された物理アドレスのページに受信したデータを書き込む。そして、NAND−IF67は、書き込み完了の応答を調停部64へ出力する。
ここで、NAND−IF67は、データ移動処理では、移動対象のページを有するNANDデバイス70に接続するチャネル80を用いてデータを書き込む。つまり、ガベージコレクション又はウェアレベリングにおいて、読み出されたデータは、読み出しに使用されたチャネル80と同じチャネル80を用いて他のブロックに書き込まれる。すなわち、本実施例では、ガベージコレクション又はウェアレベリングにおいて、読み出しに使用するチャネル80と書き込みに使用するチャネル80が一致する。
また、NAND−IF67は、データ移動処理の実行命令を受けている状態で、CPU3からの書込命令を受けた場合、データ移動処理に使用しているチャネル80以外のチャネル80を用いてデータの書き込みを行う。また、データ移動処理の実行命令を受けていない状態で、CPU3からの書込命令を受けた場合、NAND−IF67は、チャネル80の制限なく空きページを選択してデータの書き込みを行う。
いずれにせよ、NAND−IF67は、データ移動処理に使用するチャネル80以外のチャネル80を用いて、CPU3から書き込みを指示されたデータの書き込みを行う。すなわち、CPU3から書き込みを指示されたデータの書き込みに用いるチャネル80は、データ移動処理に使用するチャネル80と競合しない。
さらに、図7を参照して、データ書き込み時のチャネル80の選択について詳細に説明する。図7は、調停部及びチャネル切替部のデータの書き込みに関する詳細なブロック図である。
調停部64は、出力元選択部641、検索チャネル選択部642、FIFO(Fast In Fast Out)バッファ643及び644、並びに、スイッチ素子645を有している。また、チャネル切替部66は、切替制御部661、スイッチ素子662、並びに、FIFOバッファ663a〜663dを有している。
FIFOバッファ643は、FIFOキューを有している。FIFOバッファ643は、データ移動処理におけるデータの書込命令の入力をデータ移動制御部62から受ける。この書き込み命令には、読み出しに使用したチャネル80の情報が書き込みに用いるチャネルの情報として格納されている。
そして、FIFOバッファ643は、入力が古い書込命令から順に、スイッチ素子645を経由させて管理テーブル制御部65に書き込み先のページの選択指示を、読み出しに使用したチャネル80の情報とともに出力する。同時に、FIFOバッファ643は、スイッチ素子645を経由させてチャネル切替部66に書き込み対象のデータを出力する。
FIFOバッファ644は、FIFOキューを有している。FIFOバッファ644は、CPU3からのデータの書込命令の入力をリードライト制御部63から受ける。さらに、FIFOバッファ644は、書き込み先のページの検索対象とする検索チャネルの情報の入力を検索チャネル選択部642から受ける。この検索チャネルの情報は、並行して行われるデータ移動処理における書き込みに用いるチャネル80以外のチャネル80を示す情報である。
そして、FIFOバッファ644は、入力が古い書込命令から順に、スイッチ素子645を経由させて管理テーブル制御部65に書き込み先のページの選択指示を、検索チャネルの情報とともに出力する。同時に、FIFOバッファ644は、スイッチ素子645を経由させてチャネル切替部66に書き込み対象のデータを出力する。
検索チャネル選択部642は、FIFOバッファ643に格納されている先頭のデータ移動処理におけるデータの書込命令から書き込みに用いるチャネル80の情報、すなわち、読み出しに使用したチャネル80の情報を取得する。そして、検索チャネル選択部642は、移動処理におけるデータの書き込みに用いるチャネル80の情報を、書き込み先のページの検索対象とする検索チャネルの情報としてFIFOバッファ644へ出力する。
出力元選択部641は、データ移動制御部62からの出力とリードライト制御部63からの出力が均等にスイッチ素子645から出力されるように、予め決められた順番でスイッチ素子645を切り替える。例えば、出力元選択部641は、FIFOバッファ643の出力とFIFOバッファ644の出力とを交互に選択してスイッチ素子645から出力されるように順番に切り替える。
スイッチ素子645は、切替制御部661からの切替制御を受けて、FIFOバッファ643及び644からの出力のいずれかが管理テーブル制御部65及びスイッチ素子662から出力されるように経路を切り替える。
管理テーブル制御部65は、読み出しに使用したチャネル80の情報とともに書き込み先のページの選択指示の入力を、スイッチ素子645を介してFIFOバッファ643から受ける。次に、管理テーブル制御部65は、読み出しに使用したチャネル80に接続されたNANDデバイス70の中から予備ブロックを抽出し、抽出した予備ブロックの空きページを書き込み先のページとして選択する。そして、管理テーブル制御部65は、選択した書き込み先のページの情報を切替制御部661へ出力する。さらに、管理テーブル制御部65は、選択した書き込み先のページの情報をスイッチ素子645へ出力する。
また、管理テーブル制御部65は、検索チャネルの情報とともに書き込み先のページの選択指示の入力を、スイッチ素子645を介してFIFOバッファ644から受ける。具体的には、管理テーブル制御部65は、並行して行われるデータ移動処理における書き込みに用いるチャネル80以外のチャネル80の情報を検索チャネルの情報として取得する。
次に、管理テーブル制御部65は、並行して行われるデータ移動処理における書き込みに用いるチャネル80以外のチャネル80に接続されたNANDデバイス70の中から空きページを書き込み先のページとして選択する。そして、管理テーブル制御部65は、選択した書き込み先のページの情報を切替制御部661へ出力する。さらに、管理テーブル制御部65は、選択した書き込み先のページの情報をスイッチ素子645へ出力する。
切替制御部661は、データ移動処理における書き込み先のページの情報の入力を管理テーブル制御部65から受ける。そして、切替制御部661は、受信した書き込み先のページを有するNANDデバイス70に接続するチャネル80に、管理テーブル制御部65及びスイッチ素子645からの出力が送られるようにスイッチ素子643を切り替える。
また、切替制御部661は、CPU3からの書込命令における書き込み先のページの情報の入力を管理テーブル制御部65から受ける。そして、切替制御部661は、受信した書き込み先のページを有するNANDデバイス70に接続するチャネル80に、管理テーブル制御部65及びスイッチ素子645からの出力が送られるようにスイッチ素子662を切り替える。
スイッチ素子645は、切替制御部661からの切替制御を受けて、管理テーブル制御部65及びスイッチ素子645からの出力がFIFOバッファ663a〜663dのいずれかに入力されるように経路を切り替える。
FIFOバッファ663a〜663dは、FIFOキューを有している。そして、FIFOバッファ663a〜663dは、それぞれNAND−IF67a〜67dに接続する。FIFOバッファ663a〜663dのいずれも同様の機能を有しているので、以下では、FIFOバッファ663a〜663dを区別せずに「FIFOバッファ663」という。
FIFOバッファ663は、スイッチ素子662により経路が自己に接続するように切り替えられた場合、スイッチ素子662を介して、書き込み先のページの情報及びデータの入力を受ける。具体的には、FIFOバッファ663は、書き込み先のページの情報の入力を管理テーブル制御部65から受ける。また、データ移動処理の場合、FIFOバッファ663は、データ移動制御部62から送られたデータの入力を受ける。また、CPU3からの書込み命令の場合、FIFOバッファ663は、リードライト制御部63から送られたデータの入力を受ける。
そして、FIFOバッファ663は、受信した書き込み先のページの情報及び書き込み対象のデータを接続先のNAND−IF67へ出力する。
次に、図8を参照して、本実施例に係る情報処理装置1によるデータ移動処理及びCPU3からの書込命令に対する処理におけるデータの書き込み先の決定についてまとめて説明する。図8は、NANDコントローラの各部からの出力を表すタイムチャートである。ここでは、チャネル80として、チャネル#0〜#3の4つのチャネルがある場合で説明する。そして、データ移動処理として、チャネル#0に接続するNANDデバイス70が有するページに格納されたデータを移動対象のデータとする場合で説明する。
また、図8のチャート201は、データ移動制御部62から調停部64への出力を表している。チャート202は、リードライト制御部63から調停部64への出力を表している。チャート203は、調停部64から管理テーブル制御部65への出力を表している。チャート204は、管理テーブル制御部65からチャネル切替部66への出力を表している。チャート205は、チャネル切替部66からチャネル#0へ接続するNAND−IF67への出力を表している。チャート206は、チャネル切替部66からチャネル#1へ接続するNAND−IF67への出力を表している。チャート207は、チャネル切替部66からチャネル#2へ接続するNAND−IF67への出力を表している。チャート208は、チャネル切替部66からチャネル#3へ接続するNAND−IF67への出力を表している。そして、図8の横軸は時間の経過を表している。
そして、各チャート201〜208に記載した各四角が出力信号を表しており、出力信号中の上段に、信号の発生源が記載される。ここでの発生源としては、ガベージコレクション(GC:gavage Collection)又はCPU3がある。また、出力信号中の中段に、処理の内容及び処理の順番が記載されている。処理の内容としては、読出処理(Read)及び書込処理(Write)がある。また、処理の順番は、処理の内容に続く括弧の中の数字の順番で表す。さらに、出力信号中の下段に、処理対象とするチャネル80の番号が記載されている。例えば、「ch0」であれば、チャネル#0を表している。
チャート201に示すように、データ移動制御部62は、ガベージコレクションの0番目の読出命令で処理対象のチャネル80がチャネル#0である信号211を調停部64へ出力する。次に、データ移動制御部62は、ガベージコレクションの1番目の読出命令で処理対象のチャネル80がチャネル#0である信号212を調停部64へ出力する。その後、データ移動制御部62は、ガベージコレクションの0番目の書込命令である信号213を調停部64へ出力する。ここで、本実施例に係るデータ移動制御部62は、ガベージコレクションの書き込みにおける処理対象のチャネル80を、読み出しに用いたチャネル80と同じとする。そこで、信号211における、処理対象のチャネル80はチャネル#0となる。次に、データ移動制御部62は、ガベージコレクションの1番目の書込命令で、且つ処理対象のチャネル80がチャネル#0である信号214を調停部64へ出力する。
チャート203に示すように、調停部64は、データ移動制御部62から受信した信号211を管理テーブル制御部65へ出力する。次に、調停部64は、データ移動制御部62から受信した信号212を管理テーブル制御部65へ出力する。
チャート204に示すように、管理テーブル制御部65は、調停部64から受信した信号211をチャネル切替部66へ出力する。次に、管理テーブル制御部65は、調停部64から受信した信号212をチャネル切替部66へ出力する。
チャート205に示すように、チャネル切替部66は、管理テーブル制御部65から受信した信号211が示す処理対象のチャネル80であるチャネル#0に接続するNAND−IF67へ出力する。その後、NAND−IF67は、信号211に対応するデータをチャネル#0を介してNANDデバイス70へ書き込む。また、チャネル切替部66は、管理テーブル制御部65から受信した信号212が示す処理対象のチャネル80であるチャネル#0に接続するNAND−IF67へ出力する。その後、NAND−IF67は、信号212に対応するデータをチャネル#0を介してNANDデバイス70へ書き込む。
次に、チャート202に示すように、リードライト制御部63は、CPU3からの0番目の読出命令で処理対象のチャネル80がチャネル#0である信号221を調停部64へ出力する。次に、リードライト制御部63は、CPU3からの1番目の読出命令で処理対象のチャネル80がチャネル#1である信号212を調停部64へ出力する。
次に、チャート201に示すように、データ移動制御部62は、ガベージコレクションの0番目の書込命令で処理対象のチャネル80がチャネル#0である信号213を調停部64へ出力する。
次に、チャート202に示すように、リードライト制御部63は、CPU3からの0番目の書込命令で処理対象のチャネル80が未決定である信号223を調停部64へ出力する。
次に、データ移動制御部62は、ガベージコレクションの1番目の書込命令で処理対象のチャネル80がチャネル#0である信号214を調停部64へ出力する。これに並行して、チャート202に示すように、リードライト制御部63は、CPU3からの1番目の書込命令で処理対象のチャネル80が未決定である信号224を調停部64へ出力する。
次に、チャート202に示すように、リードライト制御部63は、CPU3からの2番目の書込命令で処理対象のチャネル80がチャネル#1である信号225を調停部64へ出力する。
調停部64は、チャート203に示すように、リードライト制御部63から受信した信号221を管理テーブル制御部65及びチャネル切替部66へ出力する。その後、調停部64は、リードライト制御部63からの出力である信号222〜225とデータ移動制御部62の出力である信号213〜214とを交互に管理テーブル制御部65へ出力する。
ここで、調停部64は、1つ前に出力した信号213の処理対象のチャネル80であるチャネル#0以外のチャネル80の中から信号223の書き込み先のページを検索するチャネル80を選択する。ここでは、調停部64は、信号223の処理対象のチャネル80としてチャネル#1を選択する。さらに、調停部64は、1つ前に出力した信号214の処理対象のチャネル80であるチャネル#0以外のチャネル80の中から信号224の書き込み先のページを検索するチャネル80を選択する。ここでは、調停部64は、信号224の処理対象のチャネル80としてチャネル#1を選択する。
管理テーブル制御部68は、チャート204に示すように、信号222〜225及び213〜214の入力を調停部64から受ける。そして、管理テーブル制御部68は、各信号で示される処理対象のチャネル80に接続するNANDデバイス70の中から空のページを選択する。そして、管理テーブル制御部68は、選択した空のページの情報とともに信号222〜225及び213〜214をチャネル切替部66へ出力する。
チャネル切替部66は、管理テーブル制御部65から受信した信号を、その信号の処理対象のチャネル80に繋がるNAND−IF67へ出力する。具体的には、チャネル切替部66は、チャート205に示すように、信号211,213及び214を、チャネル#0に接続するNAND−IF67へ出力する。また、チャネル切替部66は、チャート206に示すように、信号222〜225を、チャネル#1に接続するNAND−IF67へ出力する。
この場合、チャネル切替部66は、チャート207及び208に示すように、チャネル#2及び#3に接続するNAND−IF67には信号の出力は行わない。
そして、チャート205の信号221,213及び214とチャート206の信号222〜225に示すように、データ移動処理とCPU3からの書込命令に対する処理とで使用するチャネル80の競合が発生しない。すなわち、本実施例に係る情報処理装置1は、データ移動処理及びCPU3からの書込命令に対する処理の待機時間を軽減させることができ、処理効率を向上させることができる。
次に、図9を参照して、データ移動処理及びCPU3からの書込命令の処理の流れを説明する。図9は、データ移動処理及びCPUからの書込命令の処理のフローチャートである。ここでは、データ移動処理と並行してCPU3から書込命令が入力された場合で説明する。
管理テーブル制御部65は、移動対象検出部61からのリクエストを受けて、管理テーブル68を検索し、移動対象のページの物理アドレスを選択する。そして、データ移動制御部62は、管理テーブル制御部65が選択した移動対象のページの物理アドレスを取得する(ステップS1)。
次に、データ移動制御部62は、移動対象のページからのデータの読出命令を調停部64へ出力する。調停部64は、移動対象の物理アドレスを基にNANDデバイス70からデータを読み出し、データ移動制御部62へ出力する。データ移動制御部62は、読み出したデータを一次保管する(ステップS2)。
次に、データ移動制御部62は、読み出したデータの書き込みを調停部64に指示する。調停部64は、データを読み出したチャネル80を書込み先のページの検索に用いる検索チャネルとして、管理テーブル制御部65に通知する(ステップS3)。
調停部64は、CPU3からの書込命令の入力をリードライト制御部63から受ける。そして、調停部64は、データ移動処理の書き込みに用いるチャネル80以外のチャネル80をCPU3から指定されたデータの書き込みに用いるチャネル80として管理テーブル制御部65に通知する(ステップS4)。
管理テーブル制御部65は、調停部64から通知されたチャネル80を検索チャネルとして予備ブロックを管理テーブル68から検索し、検索結果の予備ブロックを書き込み先のページとする(ステップS5)。
そして、チャネル切替部66は、調停部64により選択されたページに接続するNAND−IF67にデータ移動制御部62が一次保管していたデータを送信する。NAND−IF67は、読み出しに使用されたチャネル80を用いてNANDデバイス70の検索結果の予備ブロックにデータを書き込む(ステップS6)。
管理テーブル制御部65は、管理テーブル68及びアドレス変換テーブル69を更新する(ステップS7)。
次に、管理テーブル制御部65は、CPU3からの書込命令に対するデータの書き込み先のページを、データ移動処理の書き込みに用いるチャネル80以外のチャネル80を検索チャネルとして検索する。そして、チャネル切替部66は、管理テーブル制御部65により選択された書き込み先のページに接続するNAND−IF67にデータを送信する。NAND−IF67は、データ移動処理の書き込みに用いるチャネル80以外のチャネル80を用いてNANDデバイス70の検索結果のページにデータを書き込む(ステップS8)。
移動対象検出部61は、データ移動処理を管理テーブル68の全てのブロックに対して実行したか否かを判定する(ステップS9)。データ移動処理が終わっていないブロックがある場合(ステップS9:否定)、移動対象検出部61は、ステップS1に戻る。
これに対して、データ移動処理を全てのブロックに対して実行した場合(ステップS9:肯定)、NANDコントローラ6は、データの移動処理を終了する。
ここで、図9では、データ移動処理と並行してCPU3からの書込命令を処理する場合で説明したが、CPU3からの書込命令が無い場合は、NANDコントローラ6は、読み出しと書き込みで同じチャネル80を用いたデータ移動処理を単に実行する。
以上に説明したように、本実施例に係るNANDコントローラは、データ移動処理において用いるチャネルとは異なるチャネルをCPUからの書込命令の処理に用いる。これにより、データ移動処理で使用するチャネルとCPUからの書込命令に使用するチャネルとの競合を抑えることができ、処理効率を向上させることができる。
ここで、本実施例では、制御の容易さや理解のし易さから、データ移動処理において読み出しに用いるチャネルと書き込みに用いるチャネルとを一致させ、それ以外のチャネルをCPUの書込命令の処理に用いた。しかし、データ移動処理に用いるチャネルとCPUの書込命令の処理に用いるチャネルとが異なるチャネルであれば、チャネルの選択方法はこれに限らない。例えば、チャネル数が十分にあれば、データ移動処理の書き込みに用いるチャネルは適当に選択し、データの移動処理に用いられるチャネル以外のチャネルをCPUの書込命令の処理に用いてもよい。
次に、実施例2について説明する。本実施例に係るNANDコントローラは、エラー検出訂正を行うスクラブの実行において、データの読み出しに用いるチャネルと書き込みに用いるチャネルとを異ならせる。そこで、以下では、スクラブにおける各部の機能について主に説明する。本実施例に係る情報処理装置及びNANDコントローラも、図1及び2で表される。以下では、実施例1と同じ各部の機能については説明を省略する。
移動対象検出部61は、ソフトウェアからの指示や内部タイマーを契機として、管理テーブル68の検索リクエストを管理テーブル制御部65へ送信する。その後、移動対象検出部61は、スクラブを実行する場合、実行対象のページの情報の入力をリクエスト応答として管理テーブル制御部65から受ける。そして、移動対象検出部61は、スクラブの実行対象のページの物理アドレスをデータ移動制御部62に通知する。さらに、移動対象検出部61は、スクラブの実行の指示をデータ移動制御部62に通知する。
データ移動制御部62は、スクラブを実行するページの物理アドレスの入力を移動対象検出部61から受ける。そして、データ移動制御部62は、物理アドレスとともにデータの読出命令を調停部64へ出力する。その後、データ移動制御部62は読み出されたデータを調停部64から受信する。そして、データ移動制御部62は、読み出しされたデータを一時保管する。
次に、データ移動制御部62は、保管したデータのエラー検出を行う。エラーを検出しない場合、データ移動制御部62は、読み出したデータを破棄し、次の物理アドレスからのデータの読み出しを行う。
これに対して、エラーを検出した場合、データ移動制御部62は、エラーが検出されたデータに対してエラー訂正を行う。次に、データ移動制御部62は、読み出しに用いたチャネル80以外のチャネル80を管理テーブル68から選択する。そして、データ移動制御部62は、選択したチャネル80へのエラー訂正後のデータの書込命令を調停部64へ出力する。
調停部64は、データ移動制御部62から受信した物理アドレス及びデータの読出命令をチャネル切替部66へ出力する。その後、調停部64は、読み出されたデータをチャネル切替部66から受信する。そして、調停部64は、読み出されたデータをデータ移動制御部62へ出力する。
その後、調停部64は、読み出したデータにエラーが検出された場合、データ移動制御部62により選択されたチャネル80へのエラー訂正後のデータの書込命令の入力を受ける。そして、調停部64は、データ移動制御部62により選択されたチャネル80へのエラー訂正後のデータの書込命令を管理テーブル制御部65へ出力する。また、調停部64は、エラー訂正後のデータをチャネル切替部66へ出力する。
管理テーブル制御部65は、データ移動制御部62により選択されたチャネル80へのエラー訂正後のデータの書込命令の入力を調停部64から受ける。そして、管理テーブル制御部65は、指定されたチャネル80に接続されているNANDデバイス70のページの中から書き込み先のページを選択する。次に、管理テーブル制御部65は、選択したページの物理アドレスをチャネル切替部66へ通知する。その後、管理テーブル制御部65は、管理テーブル68及びアドレス変換テーブル69を更新する。
チャネル切替部66は、調停部64から指定された物理アドレスに接続するNAND−IF67に物理アドレス及びデータの読出命令を出力する。その後、チャネル切替部66は、読み出されたデータをNAND−IF67から受信する。そして、チャネル切替部66は、読み出されたデータを調停部64へ出力する。
その後、読み出したデータにエラーが検出された場合、チャネル切替部66は、エラー訂正後のデータを書き込むページの物理アドレスの入力を管理テーブル制御部65から受ける。また、チャネル切替部66は、エラー訂正後のデータの入力を調停部64から受ける。そして、チャネル切替部66は、エラー訂正後のデータの管理テーブル制御部65から受信した物理アドレスへの書込命令を、その物理アドレスを有するページに接続するNANDデバイス70に書き込む。
NAND−IF67は、チャネル切替部66から読出命令を受けて、NANDデバイス70の指定された物理アドレスからデータを読み出し、チャネル切替部66へ出力する。
また、NAND−IF67は、チャネル切替部66から書込命令を受けて、NANDデバイス70の指定された物理アドレスへデータを書き込む。ここで、データを書き込むNAND−IF67は、読み出しに用いたチャネル80とは異なるチャネル80に接続している。そのため、データの書き込みは、データの読み出しとは異なるチャネル80を用いて行われる。
次に、図10を参照して、本実施例に係るNANDコントローラによるスクラブの処理の流れについて説明する。図10は、実施例2に係るNANDコントローラによるスクラブの処理のフローチャートである。
管理テーブル制御部65は、移動対象検出部61からのリクエストを受けて、管理テーブル68を検索し、スクラブの実行対象のページの物理アドレスを選択する。そして、データ移動制御部62は、管理テーブル制御部65が選択した実行対象のページの物理アドレスを取得する(ステップS11)。
データ移動制御部62は、調停部64、チャネル切替部66及びNAND−IF67を介してNANDデバイス70における指定された物理アドレスからデータを読み出し一時保管する(ステップS12)。
データ移動制御部62は、保管したデータに対してエラー検出を実行する(ステップS13)。
そして、データ移動制御部62は、読み出されたデータにおいてエラーが発生したか否かを判定する(ステップS14)。エラーが発生していない場合(ステップS14:否定)、NANDコントローラ6は、ステップS19へ進む。
これに対して、エラーが発生した場合(ステップS14:肯定)、データ移動制御部62は、データを読み出したチャネル80とは異なるチャネル80を検索チャネルとして管理テーブル68から選択する(ステップS15)。そして、データ移動制御部62は、エラー訂正を行い、検索チャネル80を用いたエラー訂正後のデータの書込命令を調停部64へ通知する。
調停部64は、検索チャネルからの予備ブロックの選択を管理テーブル制御部65へ指示する。管理テーブル制御部65は、検索チャネルにおける予備ブロックを管理テーブル68から検索し、書き込み先のページの物理アドレスを取得する(ステップS16)。そして、管理テーブル制御部65は、取得した物理アドレスをチャネル切替部66へ通知する。
チャネル切替部66は、調停部64から受信したエラー訂正後のデータの書き込み命令を、管理テーブル制御部65から指定された物理アドレスを有するページに接続するNAND−IF67へ出力する。NAND−IF67は、検索結果の予備ブロックの物理アドレスにエラー訂正後のデータを書き込む(ステップS17)。
管理テーブル制御部65は、管理テーブル68及びアドレス変換テーブル69を更新する(ステップS18)。
移動対象検出部61は、管理テーブル68における最終アドレスまでスクラブを実行したか否かを判定する(ステップS19)。最終アドレスまでスクラブの実行が終わっていない場合(ステップS19:否定)、移動対象検出部61は、ステップS11に戻る。
これに対して、最終アドレスまでスクラブの実行が終わった場合(ステップS19:肯定)、移動対象検出部61は、スクラブ処理を終了する。
以上に説明したように、本実施例に係るNANDコントローラは、スクラブにおいてデータの読み出しとエラー訂正後のデータの書き込みとで異なるチャネルを用いる。これにより、エラーが発生したページに接続するチャネルとは異なるチャネルにエラー訂正後のデータを格納でき、データの安全な保管及び信頼性の向上を図ることができる。
図11は、実施例3に係るNANDコントローラのブロック図である。本実施例に係るNANDコントローラ6は、CPU601によるソフトウェアの実行により各機能を実現する。図11において、図2と同じ符号を有する各部は、特に説明のない限り同じ機能を有するものとする。
NANDコントローラ6は、CPU601及びデバイスアクセス制御部602を有する。CPU601とデバイスアクセス制御部602は、バスで接続される。また、CPU601は、情報処理装置1のCPU3と接続される。また、CPU601は、メモリデバイス8と接続される。さらに、デバイスアクセス制御部602は、NANDデバイス70に接続される。
メモリデバイス8には、移動対象検出部61、データ移動制御部62、調停部64、管理テーブル制御部65及びリードライト制御部63の機能を実現するプログラムを含む各種プログラムが格納されている。また、メモリデバイス8には、アドレス変換テーブル69及び管理テーブル68が格納されている。
CPU601は、メモリデバイス8に格納されている各種プログラムを読み出し、移動対象検出部61、データ移動制御部62、調停部64、管理テーブル制御部65及びリードライト制御部63の機能を実現するプロセスを展開する。そして、CPU601は、展開した各プロセスをアドレス変換テーブル69及び管理テーブル68を用いて実行することで、移動対象検出部61、データ移動制御部62、調停部64、管理テーブル制御部65及びリードライト制御部63の各機能を実現する。
デバイスアクセス制御部602は、CPU601とNANDデバイス70とのデータの授受を仲介する。デバイスアクセス制御部602は、図2に例示したチャネル切替部66及びNAND−IF67A〜67Dの機能を実現する。
以上に説明したように、CPUによりソフトウェアを実行することで各機能を実現する構成であっても、実施例1と同様に制御を行うことができ、データ移動処理で使用するチャネルとCPUからの書込命令に使用するチャネルとの競合を抑えることができ、処理効率を向上させることができる。
1 情報処理装置
2a,2b メモリ
3a,3b CPU
4 I/Oハブ
5a,5b SSD
6a,6b NANDコントローラ
61 移動対象検出部
62 データ移動制御部
63 リードライト制御部
64 調停部
65 管理テーブル制御部
66 チャネル切替部
67A〜67D NAND−IF
68 管理テーブル
69 アドレス変換テーブル
81a〜81d,82a〜82d チャネル
71a〜78a,71b〜78b NANDデバイス
641 出力元選択部
642 検索チャネル選択部
643,644 FIFOバッファ
645 スイッチ素子
661 切替制御部
662 スイッチ素子
663a〜663d FIFOバッファ

Claims (8)

  1. アクセスする経路が異なるグループに分けられた複数の記憶部と、
    複数の前記記憶部のうちの第1記憶部へ接続する第1経路を経由して前記第1記憶部から格納データを読み出し、複数の前記記憶部のうちの第2記憶部へ接続する第2経路を経由して前記第2記憶部へ読み出した前記格納データを書き込むデータ移動部と、
    データの書込命令を受けて、複数の前記記憶部のうちの第3記憶部に接続する第3経路を経由して前記第3記憶部に前記書込命令で指定されたデータを書き込む書込実行部と、
    前記第1経路及び前記第2経路と、前記第3経路とが異なるように前記第3記憶部を選択する選択部と
    を備えたことを特徴とする情報処理装置。
  2. 前記選択部は、前記第2経路が前記第1経路と一致するように、前記第2記憶部を選択し、前記第3経路が前記第2経路と異なるように、前記第3記憶部を選択することを特徴とする請求項1に記載の情報処理装置。
  3. 前記記憶部は、格納データが移動されると無効となる複数の記憶領域に分割されており、前記記憶部内の全ての記憶領域が無効又は未使用となるとデータの消去が行われ未使用の状態となり、
    前記データ移動部は、前記第1記憶部の前記記憶領域の有効な格納データを、前記第2記憶部の前記記憶領域に移動し、前記第1記憶部内の全ての前記記憶領域を無効としてデータの消去可能状態とする
    ことを特徴とする請求項1に記載の情報処理装置。
  4. 前記記憶部は、不揮発性メモリであることを特徴とする請求項1に記載の情報処理装置。
  5. 前記データ移動部は、前記第1記憶部から前記第1経路を経由して格納データを読み出し、読み出した前記格納データのエラー検出を行い、エラーを検出した場合、読み出したデータのエラー訂正を行い、エラー訂正したデータを前記第2記憶部へ前記第2経路を経由して書き込み、
    前記選択部は、前記第1経路と前記第2経路とが異なるように前記データ移動部に第1記憶部及び前記第2記憶部を選択させる
    ことを特徴とする請求項1に記載の情報処理装置。
  6. アクセス経路が異なるグループに分けられた複数のメモリの中の第1メモリにアクセスする第1アクセス経路を経由して前記第1メモリから格納データを読み出し、読み出した前記格納データを複数の前記メモリの中の第2メモリにアクセスする第2経路を経由して前記第2メモリに書き込むデータ移動部と、
    データ書込命令を受けて、前記データ書込命令で指定されたデータを複数の前記メモリの中の第3メモリにアクセスする第3経路を経由して前記第3メモリに書き込む書込実行部と、
    前記第1経路及び前記第2経路と、前記第3経路とが異なるように前記第3メモリを選択する選択部と
    を備えたことを特徴とするメモリコントローラ。
  7. アクセス経路が異なるグループに分けられた複数の記憶部を有する記憶装置の制御プログラムであって、
    複数の前記記憶部のうちの第1記憶部に接続する第1経路及び複数の前記記憶部のうちの第2記憶部に接続する第2経路と、複数の前記記憶部のうちの第3記憶部に接続する第3経路とが異なるように前記第3記憶部を選択し、
    前記第1経路を経由して前記第1記憶部から格納データを読み出し、
    読み出した前記格納データを、前記第2経路を経由して前記第2記憶部へ書き込み、
    データ書込命令を受けて、前記第3経路を経由して前記第3記憶部に前記書込命令で指定されたデータを書き込む
    処理をコンピュータに実行させることを特徴とする記憶装置の制御プログラム。
  8. アクセス経路が異なるグループに分けられた複数の記憶部を有する記憶装置の制御方法であって、
    複数の前記記憶部のうちの第1記憶部に接続する第1経路及び複数の前記記憶部のうちの第2記憶部に接続する第2経路と、複数の前記記憶部のうちの第3記憶部に接続する第3経路とが異なるように前記第3記憶部を選択し、
    前記第1経路を経由して前記第1記憶部から格納データを読み出し、
    読み出した前記格納データを、前記第2経路を経由して前記第2記憶部へ書き込み、
    データ書込命令を受けて、前記第3経路を経由して前記第3記憶部に前記書込命令で指定されたデータを書き込む
    ことを特徴とする記憶装置の制御方法。
JP2015533374A 2014-07-23 2014-07-23 情報処理装置、メモリコントローラ、記憶装置の制御プログラム及び記憶装置の制御方法 Active JP5971423B2 (ja)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/JP2014/069490 WO2016013076A1 (ja) 2014-07-23 2014-07-23 情報処理装置、メモリコントローラ、記憶装置の制御プログラム及び記憶装置の制御方法

Publications (2)

Publication Number Publication Date
JP5971423B2 true JP5971423B2 (ja) 2016-08-17
JPWO2016013076A1 JPWO2016013076A1 (ja) 2017-04-27

Family

ID=55162632

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2015533374A Active JP5971423B2 (ja) 2014-07-23 2014-07-23 情報処理装置、メモリコントローラ、記憶装置の制御プログラム及び記憶装置の制御方法

Country Status (2)

Country Link
JP (1) JP5971423B2 (ja)
WO (1) WO2016013076A1 (ja)

Families Citing this family (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10241860B2 (en) * 2016-08-15 2019-03-26 Samsung Electronics Co., Ltd. Method of executing data scrubbing inside a smart storage device
JP6765321B2 (ja) 2017-02-28 2020-10-07 キオクシア株式会社 メモリシステムおよび制御方法
JP6709180B2 (ja) * 2017-02-28 2020-06-10 キオクシア株式会社 メモリシステムおよび制御方法
JP6765322B2 (ja) * 2017-02-28 2020-10-07 キオクシア株式会社 メモリシステムおよび制御方法
JP6785204B2 (ja) 2017-09-21 2020-11-18 キオクシア株式会社 メモリシステムおよび制御方法
JP2020198128A (ja) * 2020-08-31 2020-12-10 キオクシア株式会社 メモリシステム
JP7132291B2 (ja) * 2020-08-31 2022-09-06 キオクシア株式会社 メモリシステムおよび制御方法
JP7102482B2 (ja) * 2020-10-23 2022-07-19 キオクシア株式会社 メモリシステムおよび制御方法

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20100174851A1 (en) * 2009-01-08 2010-07-08 Micron Technology, Inc. Memory system controller
US20120246383A1 (en) * 2011-03-24 2012-09-27 Kabushiki Kaisha Toshiba Memory system and computer program product
US20120278530A1 (en) * 2011-04-28 2012-11-01 Seagate Technology Llc Enforcing system intentions during memory scheduling

Patent Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20100174851A1 (en) * 2009-01-08 2010-07-08 Micron Technology, Inc. Memory system controller
WO2010080141A2 (en) * 2009-01-08 2010-07-15 Micron Technology, Inc. Memory system controller
JP2012514808A (ja) * 2009-01-08 2012-06-28 マイクロン テクノロジー, インク. メモリシステムコントローラ
US20130219113A1 (en) * 2009-01-08 2013-08-22 Micron Technology, Inc. Memory system controller
US20120246383A1 (en) * 2011-03-24 2012-09-27 Kabushiki Kaisha Toshiba Memory system and computer program product
JP2012203508A (ja) * 2011-03-24 2012-10-22 Toshiba Corp メモリシステムおよびプログラム
US20120278530A1 (en) * 2011-04-28 2012-11-01 Seagate Technology Llc Enforcing system intentions during memory scheduling

Also Published As

Publication number Publication date
JPWO2016013076A1 (ja) 2017-04-27
WO2016013076A1 (ja) 2016-01-28

Similar Documents

Publication Publication Date Title
JP5971423B2 (ja) 情報処理装置、メモリコントローラ、記憶装置の制御プログラム及び記憶装置の制御方法
TWI653533B (zh) 資料儲存裝置以及其操作方法
TWI694329B (zh) 用於記憶體之針對性淨除之方法及設備
US8990480B2 (en) Semiconductor memory device and computer program product
JP4182993B2 (ja) メモリコントローラ及びメモリコントローラを備えるフラッシュメモリシステム、並びにフラッシュメモリの制御方法
US20140372675A1 (en) Information processing apparatus, control circuit, and control method
TWI759699B (zh) 能夠快速產生或更新有效頁數目對照表之內容的快閃記憶體控制器、方法及對應的儲存裝置
US20080320211A1 (en) Nonvolatile memory control device, nonvolatile memory control method, and storage device
JP6306737B2 (ja) 半導体メモリデバイス、及び、半導体メモリデバイスを有するストレージ装置
US10817186B2 (en) Memory system
JP4743174B2 (ja) メモリコントローラ及びメモリコントローラを備えるフラッシュメモリシステム、並びにフラッシュメモリの制御方法
US20180267715A1 (en) Memory system, memory control device, and method of controlling memory system
JP2000011677A (ja) フラッシュメモリシステム
TWI380303B (en) Methods for storing memory operations in a queue
US10929061B2 (en) Memory system and memory control method
JP2012248109A (ja) マルチチャネルを有するメモリ装置及び同装置におけるコンパクションのためのリードコマンド群生成方法
JP4488048B2 (ja) メモリコントローラ、メモリコントローラを備えるフラッシュメモリシステム、並びにフラッシュメモリの制御方法
TWI626540B (zh) 一般及垃圾回收的資料存取方法以及使用該方法的裝置
US9632950B2 (en) Storage control device controlling access to a storage device and access controlling method of a storage device
JP5204265B2 (ja) 半導体記憶装置及び半導体記憶装置の制御方法
JP4697146B2 (ja) メモリコントローラ及びメモリコントローラを備えるフラッシュメモリシステム、並びにフラッシュメモリの制御方法
JP4539621B2 (ja) メモリコントローラ、フラッシュメモリシステム及びフラッシュメモリの制御方法
JP2013200726A (ja) 半導体記憶装置
JP4497124B2 (ja) メモリコントローラ、フラッシュメモリシステム及びフラッシュメモリの制御方法
JP4569554B2 (ja) メモリコントローラ及びメモリコントローラを備えるフラッシュメモリシステム、並びにフラッシュメモリの制御方法

Legal Events

Date Code Title Description
A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20160524

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20160627

R150 Certificate of patent or registration of utility model

Ref document number: 5971423

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150