【実施例1】
【0012】
以下の実施例1では、
図1を用いて、本願に係る情報処理装置の一例を説明する。
図1は、実施例1に係る情報処理装置を説明する図である。
図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デバイス7a〜7hを有する。また、SSD5bは、NANDコントローラ6bと、複数のNANDデバイス8a〜8hを有する。
【0013】
なお、以下の説明では、NANDコントローラ6b、および複数のNANDデバイス8a〜8hは、NANDコントローラ6a、および複数のNANDデバイス7a〜7hと同様の機能を発揮するものとして、説明を省略する。
【0014】
各メモリ2a、2bは、各CPU3a、3bが演算処理に用いるデータを記憶する記憶装置である。また、各CPU3a、3bは、メモリ2a、2bが記憶するデータを用いて、各種演算処理を行う演算処理装置である。例えば、CPU3a、3bは、NUMA(Non-Uniform Memory Access)の技術を用いて、メモリ2a、2bが記憶するデータを取得し、取得したデータを用いて演算処理を実行する。
【0015】
また、CPU3a、3bは、I/Oハブ4を介して、各SSD5a、5bが記憶するデータを取得し、取得したデータを用いて演算処理を実行する。詳細には、CPU3aは、SSD5aに対し、データの読出し要求や書込み要求を発行し、各NANDデバイス7a〜7hからデータの読出しや書込みを行う。例えば、CPU3aは、SSD5aに対し、読出し対象となるデータを指定する論理アドレスが格納された読出し要求を発行する。また、CPU3aは、データの書込み先を指定する論理アドレスと、書込み対象となるデータとが格納された書込み要求を発行する。
【0016】
NANDデバイス7aは、各種データを記憶する不揮発性メモリである。詳細には、NANDデバイス7aは、データの記憶領域である物理ページを複数有し、物理ページ単位でデータの書込みを行う。また、NANDデバイス7aは、複数の物理ページを有する物理ブロックを複数有し、ブロック単位でデータの消去を行う。ここで、1つの物理ページは、例えば、8キロバイトの記憶容量を有し、1つの物理ブロックは、例えば、128の物理ページを有する。
【0017】
NANDコントローラ6aは、各NANDデバイス7a〜7hに対してアクセスし、データの読出しや書込みを行う。例えば、NANDコントローラ6aは、各CPU3a、3bのデータが記憶された記憶領域を指定する際に用いる論理アドレスと、データが格納されたNANDデバイス7a〜7hの記憶領域を示す物理アドレスとを対応付けたアドレステーブルを有する。
【0018】
そして、NANDコントローラ6aは、読出し要求とともに論理アドレスを受信すると、アドレステーブルを用いて、論理アドレスと対応付けられた物理アドレスを識別し、識別した物理アドレスが示す記憶領域からデータの読出しを行う。その後、NANDコントローラ6aは、I/Oハブ4を介して、読出したデータをCPU3aに送信する。
【0019】
なお、以下の説明では、理解を容易にするため、各物理ページの先頭アドレスとなる論理アドレスを単に論理アドレスと記載し、各物理ページの先頭アドレスとなる物理アドレスを単に物理アドレスと記載する。また、情報処理装置1が実行するシステムは、各物理ページの先頭アドレスとなる論理アドレスに対する読出し要求や書込み要求を発行するものとする。
【0020】
ここで、NANDデバイス7aは、データが書込まれたページに新たなデータを上書きすることができない。また、NANDデバイス7aの素子は、データの消去を行う際に劣化が進む。このため、従来のNANDコントローラは、データの書込みを行う場合は、NANDデバイス7a〜7hから、データが書込まれていない物理ページのうち、データが書込まれた回数が最も少ない物理ページを検索し、検索した物理ページにデータの書込みを行う。
【0021】
例えば、
図2は、従来の管理テーブルの一例を説明する図である。なお、
図2には、従来のNANDコントローラが記憶する管理テーブルの一例を記載した。
図2に示す例では、管理テーブルの各エントリは、NANDデバイス7a〜7hの物理アドレスと、各物理アドレスが示す物理ページにデータが書込まれた回数である書込み回数と、データが書込まれているか否かを示すバリッドビットとが対応付けて格納される。ここで、バリッドビットは、値が「1」の場合は、データが消去されてからデータが書込まれた旨を示し、値が「0」の場合は、データが消去されてからデータが書込まれていない旨を示す。
【0022】
例えば、従来のNANDコントローラは、書込み対象のデータを受信すると、
図2に例示する管理テーブルの全エントリを参照し、データが格納されていない物理ページのうち、データの書込み回数が最も少ない物理ページを検索する。そして、
図2に示す例では、NANDコントローラは、バリッドビットの値が「0」である物理アドレスのうち、書込み回数の値が最も少ない物理アドレス「P04」を選択する。その後、NANDコントローラは、選択した物理アドレス「P04」が示す物理ページに、データの書込みを行う。
【0023】
しかしながら、NANDコントローラは、管理テーブルの全エントリからデータの書込み先となる物理ページを検索した場合は、データの書込みに要する時間が増大する結果、NANDデバイス7a〜7hに対するアクセス性能が悪化してしまう。また、NANDデバイス7a〜7hの記憶容量が増大した場合は、管理テーブルのエントリ数も増大するので、データの書込みに要する時間がさらに増大してしまう。
【0024】
そこで、実施例1に係るNANDコントローラ6aは、以下の処理を実行する。まず、NANDコントローラ6aは、書込み対象となるデータを受信すると、受信したデータの論理アドレスの値に応じて、データの書込み先を検索する物理アドレスの範囲を決定する。そして、NANDコントローラ6aは、決定した範囲に含まれる物理アドレスが示す物理ページから、データが書込みされていない物理ページを検索し、検索した物理ページにデータの書込みを行う。
【0025】
例えば、NANDコントローラ6aは、NANDデバイス7a〜7hの各物理ページの物理アドレスを所定の数のグループに分割し、各グループに「0」から始まる連続する番号を振り分ける。そして、NANDコントローラ6aは、書込み対象となるデータの論理アドレスを所定の数で除算した際の剰余を算出し、算出した剰余の値が振り分けられたグループを検索対象とする。その後、NANDコントローラ6aは、検索対象としたグループに含まれる物理アドレスが示す物理ページから、データが格納されていない物理ページを検索し、検索した物理ページにデータの書込みを行う。
【0026】
このように、NANDコントローラ6aは、NANDデバイス7a〜7hの全物理ページを検索対象とするのではなく、書込み対象のデータの論理アドレスに応じた範囲の物理ページのみを検索対象とする。このため、NANDコントローラ6aは、データ書込み時に、書込み先ページを検索する時間を短縮することができる。なお、NANDコントローラ6aは、各物理ページにデータが書込まれた回数を管理し、検索対象とした範囲に含まれる物理アドレスが示す物理ページのうち、データが格納されておらず、かつ、データが書込まれた回数が最も少ない物理ページを検索してもよい。
【0027】
以下、
図3を用いて、実施例1に係るNANDコントローラ6aの機能構成の一例について説明する。
図3は、実施例1に係るNANDコントローラが有する機能構成の一例を説明する図である。
【0028】
図3に示す例では、NANDコントローラ6aは、アドレステーブル記憶部10、管理テーブル記憶部11、CPUインターフェース部12、チャネル決定部13、管理テーブル制御部14、アドレステーブル制御部15、チャネル切替部16を有する。また、NANDコントローラ6aは、複数のNANDインターフェース部17a〜17dを有する。
【0029】
また、各NANDデバイス7a〜7hは、各NANDデバイス7a〜7hが有する物理ページの物理アドレスの範囲に応じて、NANDデバイス7a〜7hにアクセスする経路であるチャネル#0〜#3のいずれかに振り分けられる。例えば、NANDデバイス7a、7eは、チャネル#0に振り分けられ、NANDデバイス7b、7fは、チャネル#1に振り分けられ、NANDデバイス7c、7gは、チャネル#2に振り分けられ、NANDデバイス7d、7hは、チャネル#3に振り分けられる。
【0030】
また、NANDコントローラ6aの各NANDインターフェース部17a〜17dは、それぞれ異なるチャネルに振り分けられたNANDデバイスにアクセスするインターフェースである。なお、NANDインターフェース部17b〜17dは、NANDインターフェース部17aと同様の機能を発揮するものとして、以下の説明を省略する。
【0031】
なお、
図3に示す例では、NANDコントローラ6aが有する機能構成のうち、新たなデータの書込みを行うための機能構成について記載した。しかしながら、実施例はこれに限定されるものではなく、例えば、NANDコントローラ6aは、データが書込まれてから経過した時間に応じて、データを他の物理ページに移動させるウェアレベリング機能を有してもよい。また、例えば、NANDコントローラ6aは、物理ブロック内の有効なデータのみを新たな物理ブロックに移動させ、移動元の物理ブロックが記憶するデータを消去することで、予備ブロックを生成するガベージコレクション機能を有してもよい。
【0032】
アドレステーブル記憶部10は、CPU3a、3bがデータを指定する際に用いる論理アドレスと、データが格納された物理ページを示す物理アドレスとを対応付けたアドレステーブルを記憶する。以下、
図4を用いて、アドレステーブル記憶部10が記憶するアドレステーブルの一例について説明する。
【0033】
図4は、アドレステーブルの一例を説明する図である。
図1に示す例では、アドレステーブル10aは、複数のエントリを有し、各エントリに、論理アドレスと、論理アドレスが示すデータが格納された物理ページを示す物理アドレスとが対応付けて格納されている。ここで、
図4に示す例では、各物理ページの物理アドレスとして、物理ページが存在するNANDデバイスが振り分けられたチャネルを識別するチャネル番号と、同一のチャネル内で物理ページを識別するデバイスアドレスとを組み合わせた物理アドレスを記載した。
【0034】
例えば、
図4に示す例では、アドレステーブル10aは、論理アドレス「L101」が示すデータが、物理アドレス「#0、P02」が示す物理ページに格納されている旨を示す。ここで、物理アドレス「#0、P02」が示す物理ページとは、チャネル#0に含まれるNANDデバイス7a、7eの物理ページのうち、デバイスアドレス「P02」が示す物理ページである。
【0035】
また、アドレステーブル10aは、論理アドレス「L102」が示すデータが物理アドレス「#1、P05」が示す物理ページに格納されている旨を示す。また、アドレステーブル10aは、論理アドレス「L103」が示すデータが物理アドレス「#2、P11」が示す物理ページに格納されている旨を示す。
【0036】
なお、物理アドレスが所定長のビット列である場合は、所定長の上位ビットをチャネル番号に対応させ、残りのビット列をデバイスアドレスに対応させてもよい。以下の説明では、NANDコントローラ6aは、チャネル番号と、デバイスアドレスとを組み合わせた物理アドレスを用いるものとする。
【0037】
図3に戻り、管理テーブル記憶部11は、各物理ページの物理アドレスと、データが書込まれた回数を示す書込み回数と、データ消去後にデータが書込まれたか否かを示すバリッドビットとを対応付けた管理テーブルを記憶する。以下、
図5を用いて、管理テーブル記憶部11が記憶する管理テーブルの一例について説明する。
【0038】
図5は、管理テーブルの一例を説明する図である。
図5に示す例では、管理テーブル11aは、複数のエントリを有し、各エントリに物理アドレスと管理情報とが対応付けて格納されている。ここで、
図5に示す例では、物理アドレスは、チャネル番号と、デバイスアドレスとの組み合わせであり、管理情報は、書込み回数とバリッドビットである。また、
図5に示す例では、管理テーブル11aには、チャネル番号が「#0」〜「「#3」でデバイスアドレスが「P01」〜「P10」となる30個の物理ページについて、書込み回数とバリッドビットとが格納されている。
【0039】
例えば、
図5に示す例では、管理テーブル11aには、チャネル番号「#0」、デバイスアドレス「P01」が示す物理ページについて、データが書込まれた回数「23」と、データ消去後にデータが書込まれた旨とが格納されている。つまり、管理テーブル11aは、チャネル#0のNANDデバイス7a、7eが有する物理ページのうち、デバイスアドレスが「P01」の物理ページにデータが「23」回書込まれており、データ消去後にデータが書込まれた旨を示す。
【0040】
また、例えば、管理テーブル11aには、チャネル番号「#0」、デバイスアドレス「P02」が示す物理ページについて、データが書込まれた回数「24」回と、データ消去後にデータが書込まれていない旨とが格納されている。つまり、管理テーブル11aは、チャネル#0のNANDデバイス7a、7eが有する物理ページのうち、デバイスアドレスが「P02」の物理ページにデータが「24」回書込まれており、データ消去後にデータが書込まれていない旨を示す。
【0041】
図3に戻り、CPUインターフェース部12は、CPU3a、3bからNANDデバイス7a〜7hに対するリクエストを受信するリクエストのインターフェースである。例えば、CPUインターフェース部12は、CPU3a、3bからI/Oハブ4を介して、論理アドレスを含む読出し要求を受信する。すると、CPUインターフェース部12は、読出し対象の論理アドレスを読出し要求から抽出し、抽出した論理アドレスをアドレステーブル制御部15に出力する。その後、CPUインターフェース部12は、チャネル切替部16から読出し対象のデータを受信すると、読出し要求の発行元となるCPU3a、3bに対して、データを送信する。
【0042】
また、CPUインターフェース部12は、CPU3a、3bから、NANDデバイス7a〜7hに対して書込むデータと、書込み対象となるデータの論理アドレスとを含む書込み要求を受信する。かかる場合は、CPUインターフェース部12は、書込み対象のデータをチャネル切替部16に出力する。
【0043】
また、CPUインターフェース部12は、書込み対象のデータの論理アドレスを書込み要求から抽出し、抽出した論理アドレスをチャネル決定部13とアドレステーブル制御部15とに出力する。その後、CPUインターフェース部12は、チャネル切替部16から書込みが完了した旨の応答信号を受信すると、書込み要求の発行元となるCPU3a、3bに対して、応答を送信する。
【0044】
チャネル決定部13は、NANDデバイス7a〜7hに書込むデータの論理アドレスに応じて、データの書込み先となる物理ページを検索する範囲を決定する。なお、チャネル決定部13は、請求の範囲に記載の決定部の一例である。例えば、チャネル決定部13は、NANDデバイス7a〜7hが有する物理ページをチャネルごとにグループ分けし、論理アドレスをチャネルの数で除算した剰余の値に応じて、データの書込み先となる物理ページを有するチャネルを決定する。そして、チャネル決定部13は、決定したチャネルのチャネル番号を管理テーブル制御部14に通知し、チャネル切替部16からデータを書込んだ旨の応答を受信すると、処理を終了する。
【0045】
例えば、チャネル決定部13は、論理アドレスをチャネル数4で除算した際の剰余が「0」である場合は、管理テーブル制御部14に、チャネル番号「#0」を通知する。また、チャネル決定部13は、論理アドレスをチャネル数4で除算した際の剰余が「1」である場合は、管理テーブル制御部14に、チャネル番号「#1」を通知する。また、チャネル決定部13は、論理アドレスをチャネル数4で除算した際の剰余が「2」である場合は、管理テーブル制御部14に、チャネル番号「#2」を通知する。また、チャネル決定部13は、論理アドレスをチャネル数4で除算した際の剰余が「3」である場合は、管理テーブル制御部14に、チャネル番号「#3」を通知する。
【0046】
なお、チャネル決定部13は、NANDデバイス7a〜7hが有する物理ページを任意の数のグループにグループ分けしてもよい。例えば、チャネル決定部13は、NANDデバイス7a〜7hが有する物理ページをn個のグループにグループ分けし、各グループに「0」〜「n−1」までの値を対応付ける。そして、チャネル決定部13は、書込み対象のデータを示す論理アドレスをnで除算した際の剰余を算出し、算出した剰余と対応付けられたグループを、データの書込み先となる物理ページを検索する対象としてもよい。
【0047】
また、例えば、チャネル決定部13は、CPUインターフェース部12から論理アドレスを受信すると、受信した論理アドレスの下位2ビットの値に応じて、データの書込み先となる物理ページを有するチャネルを決定してもよい。例えば、チャネル決定部13は、参照した論理アドレスの下位2ビットが「00」である場合は、管理テーブル制御部14に、チャネル番号「#0」を通知する。
【0048】
また、チャネル決定部13は、参照した論理アドレスの下位2ビットが「01」である場合は、管理テーブル制御部14に、チャネル番号「#1」を通知する。また、チャネル決定部13は、参照した論理アドレスの下位2ビットが「10」である場合は、管理テーブル制御部14に、チャネル番号「#2」を通知する。また、チャネル決定部13は、参照した論理アドレスの下位2ビットが「11」である場合は、管理テーブル制御部14に、チャネル番号「#3」を通知する。
【0049】
管理テーブル制御部14は、NANDデバイス7a〜7hが有する物理ページのうち、書込み対象となるデータの論理アドレスに応じて決定した範囲に含まれる物理ページから、データの書込み先となる物理ページを検索する。なお、管理テーブル制御部14は、請求の範囲に記載の検索部の一例である。詳細には、管理テーブル制御部14は、チャネル決定部13から受信したチャネル番号が示すチャネル内の物理ページから、データが書込まれておらず、かつ、データの書込み回数が最も少ない物理ページを検索する。
【0050】
例えば、管理テーブル制御部14は、チャネル決定部13からチャネル番号「#1」を受信すると、管理テーブル記憶部11が記憶する管理テーブル11aを参照し、チャネル番号が「#1」である物理アドレスの範囲を識別する。そして、管理テーブル制御部14は、識別した範囲の物理アドレスから、対応付けられたバリッドビットが「0」で、データの書込み回数が最も少ない物理アドレスを検索する。この結果、例えば、管理テーブル制御部14は、物理アドレス「#1、P02」を特定する。
【0051】
そして、管理テーブル制御部14は、特定した物理アドレス「#1、P02」をチャネル切替部16と、アドレステーブル制御部15とに出力する。その後、管理テーブル制御部14は、チャネル切替部16から、データを書込んだ旨の応答を受信すると、チャネル切替部16に出力した物理アドレスと対応付けられた書込み回数に1を加算し、バリッドビットを「1」に更新する。
【0052】
なお、管理テーブル制御部14は、NANDコントローラ6aが有する各種機能に応じて、管理テーブル11aを更新する機能を有してもよい。例えば、管理テーブル制御部14は、NANDコントローラ6aがウェアレベリング機能やガベージコレクション機能を発揮した場合は、データの移動先となる物理アドレスと対応付けられた書込み回数に1を加算し、バリッドビットを「1」に更新してもよい。
【0053】
アドレステーブル制御部15は、論理アドレスと物理アドレスとの変換を行う。例えば、アドレステーブル制御部15は、読出し対象の論理アドレスをCPUインターフェース部12から受信すると、アドレステーブル10aを参照し、受信した論理アドレスと対応付けられた物理アドレスを取得する。そして、アドレステーブル制御部15は、取得した物理アドレスをチャネル切替部16に出力する。
【0054】
また、アドレステーブル制御部15は、書込み対象となるデータの論理アドレスをCPUインターフェース部12から受信した場合は、受信した論理アドレスが格納されたエントリをアドレステーブル10aから特定する。また、アドレステーブル制御部15は、管理テーブル制御部14から物理アドレスを受信する。そして、アドレステーブル制御部15は、チャネル切替部16から、データを書込んだ旨の応答を受信すると、特定したエントリに格納された物理アドレスを、管理テーブル制御部14から受信した物理アドレスに更新する。
【0055】
なお、アドレステーブル制御部15は、管理テーブル制御部14と同様に、NANDコントローラ6aがウェアレベリング機能やガベージコレクション機能を発揮した場合は、アドレステーブル10aを更新してもよい。例えば、アドレステーブル制御部15は、移動対象となるデータの論理アドレスと対応付けられた物理アドレスを、データの移動先となる物理アドレスに更新してもよい。
【0056】
チャネル切替部16は、管理テーブル制御部14が検索した物理ページに対して、データの書込みを行う。以下、データ読出し時にチャネル切替部16が実行する処理とデータ書込み時にチャネル切替部16が実行する処理とを説明する。
【0057】
まず、データ読出し時にチャネル切替部16が実行する処理について説明する。例えば、チャネル切替部16は、アドレステーブル制御部15から物理アドレスを受信すると、受信した物理アドレスからチャネル番号とデバイスアドレスとを抽出する。そして、チャネル切替部16は、抽出したチャネル番号に対応するNANDインターフェース部に対し、抽出したデバイスアドレスと、データの読出し要求とを出力する。
【0058】
この結果、チャネル切替部16は、データの読出し要求を出力したNANDインターフェース部から読出し対象のデータを受信する。かかる場合は、チャネル切替部16は、CPUインターフェース部12に対して、受信したデータを出力する。例えば、チャネル切替部16は、物理アドレス「#0、P01」とデータ読出し要求とをアドレステーブル制御部15から受信する。かかる場合は、チャネル切替部16は、チャネル#0のNANDデバイス7a、7eに対してアクセスするNANDインターフェース部17aに対し、デバイスアドレス「P01」とデータ読出し要求とを出力する。
【0059】
この結果、チャネル切替部16は、チャネル#0のNANDデバイス7a、7eが有する物理ページのうち、デバイスアドレス「P01」が示す物理ページに格納されたデータを受信する。そして、チャネル切替部16は、受信したデータをCPUインターフェース部12に出力する。
【0060】
次に、データ書込み時にチャネル切替部16が実行する処理について説明する。例えば、チャネル切替部16は、管理テーブル制御部14から物理アドレスを受信し、CPUインターフェース部12から書込み対象のデータを受信する。すると、チャネル切替部16は、受信した物理アドレスからチャネル番号とデバイスアドレスとを抽出し、抽出したチャネル番号に対応するNANDインターフェース部に抽出したデバイスアドレスとデータとデータの書込み要求とを出力する。
【0061】
この結果、チャネル切替部16は、データの書込み要求を出力したNANDインターフェース部からデータの書込みを行った旨の応答を受信する。その後、チャネル切替部16は、CPUインターフェース部12、チャネル決定部13、管理テーブル制御部14、アドレステーブル制御部15に対し、データの書込みを行った旨の応答を出力する。
【0062】
例えば、チャネル切替部16は、物理アドレス「#2、P05」を管理テーブル制御部14から受信し、書込み対象のデータをCPUインターフェース部12から受信する。かかる場合は、チャネル切替部16は、チャネル#2のNANDデバイス7c、7gに対してアクセスするNANDインターフェース部17cに対し、デバイスアドレス「P05」と、書込み対象のデータとデータ書込み要求とを出力する。そして、チャネル切替部16は、NANDインターフェース部17cから応答を受信すると、CPUインターフェース部12、チャネル決定部13、管理テーブル制御部14、アドレステーブル制御部15に対し、データの書込みを行った旨の応答を出力する。
【0063】
NANDインターフェース部17aは、チャネル#0のNANDデバイス7a、7eからデータの読出しやデータの書込みを行うインターフェースである。なお、NANDインターフェース部17a〜17dは、請求の範囲に記載の書込部、および、入出力部の一例である。例えば、NANDインターフェース部17aは、デバイスアドレス「P01」とデータ読出し要求とを受信すると、NANDデバイス7a、7eが有する物理ページのうち、デバイスアドレス「P01」が示す物理ページからデータの読出しを行う。そして、NANDインターフェース部17aは、読出したデータをチャネル切替部16に出力する。
【0064】
また、NANDインターフェース部17aは、デバイスアドレス「P05」と、書込み対象のデータとデータ書込み要求とを受信する。かかる場合は、NANDデバイス7a、7eが有する物理ページのうち、デバイスアドレス「P05」が示す物理ページに、受信したデータの書込みを行う。そして、NANDインターフェース部17aは、データの書込みを行った旨の応答をチャネル切替部16に出力する。
【0065】
なお、NANDインターフェース部17bは、チャネル#1のNANDデバイス7b、7fからデータの読出しや書込みを行うインターフェースである。また、NANDインターフェース部17bは、チャネル#2のNANDデバイス7c、7gからデータの読出しや書込みを行うインターフェースである。
【0066】
また、NANDインターフェース部17cは、チャネル#3のNANDデバイス7c、7gからデータの読出しや書込みを行うインターフェースである。また、NANDインターフェース部17dは、チャネル#4のNANDデバイス7d、7hからデータの読出しや書込みを行うインターフェースである。
【0067】
なお、CPUインターフェース部12、チャネル決定部13、管理テーブル制御部14、アドレステーブル制御部15、チャネル切替部16は、連続して発行されたデータの読出し要求を並行して処理することができる。例えば、CPUインターフェース部12は、連続して書込み要求を受信した際、先に受信した書込み要求に係るデータをチャネル切替部16に出力し、論理アドレスをチャネル決定部13に出力する。そして、CPUインターフェース部12は、チャネル切替部16から応答を受信する前に、続いて受信した書込み要求に係るデータをチャネル切替部16に出力し、論理アドレスをチャネル決定部13に出力する。
【0068】
また、チャネル切替部16は、例えば、物理アドレス「#1、P01」をアドレステーブル制御部15から受信すると、NANDインターフェース部17aに対し、デバイスアドレス「P01」とデータ読出し要求とを出力する。続いて、チャネル切替部16は、物理アドレス「#2、P05」をアドレステーブル制御部15から受信する。
【0069】
かかる場合は、チャネル切替部16は、NANDインターフェース部17aからデバイスアドレス「P01」のデータを受信する前に、NANDインターフェース部17bにデバイスアドレス「P05」とデータ読出し要求とを出力する。この結果、NANDコントローラ6aは、連続して発行された複数のデータ読出し要求を並行して処理できる。
【0070】
なお、例えば、CPUインターフェース部12、チャネル決定部13、管理テーブル制御部14、アドレステーブル制御部15、チャネル切替部16、NANDインターフェース部17a〜17dは、電子回路である。ここで、電子回路の例として、ASIC(Application Specific Integrated Circuit)やFPGA(Field Programmable Gate Array)などの集積回路、またはCPU(Central Processing Unit)やMPU(Micro Processing Unit)などを適用する。
【0071】
また、アドレステーブル記憶部10、管理テーブル記憶部11は、RAM(Random Access Memory)、フラッシュメモリ(flash memory)などの半導体メモリ素子などの記憶装置である。
【0072】
次に、
図6を用いて、論理アドレスの値に応じて、データの書込み対象となる物理ページを検索するチャネルを特定する処理の流れについて説明する。
図6は、チャネル決定処理の一例を説明する図である。例えば、NANDコントローラ6aは、CPUインターフェース部12から論理アドレスを受信すると、
図6中(A)に示すように、論理アドレスをチャネル数4で除算した際の剰余を算出する。
【0073】
そして、NANDコントローラ6aは、
図6中(B)に示すように、管理テーブル11aを参照し、算出した剰余の値に対応するチャネルの物理ページから、データが書込まれておらず、かつ、データの書込み回数が最も少ない物理ページを検索する。例えば、NANDコントローラ6aは、算出した剰余の値が「1」である場合は、チャネル番号が「#1」であり、デバイスアドレスが「P01」〜「P10」である物理ページから、データの書込み先となる物理ページを検索する。
【0074】
この結果、例えば、NANDコントローラ6aは、
図6中(C)に示すように、チャネル番号が「#1」、デバイスアドレスが「P02」の物理ページをデータの書込み先として特定する。そして、NANDコントローラ6aは、
図6中(D)に示すように、チャネル番号が「#1」のNANDデバイス7b、7fにアクセスするNANDインターフェース部17bを介して、データの書込みを行う。
【0075】
このように、NANDコントローラ6aは、データの論理アドレスに応じて、データの書込み先となる物理ページの検索範囲を決定し、決定した範囲から、データの書込み左記となる物理ページを検索するので、データの書込みに要する時間を削減できる。また、NANDコントローラ6aは、NANDデバイス7a〜7hが有する物理ページを、チャネルごとにグループ分けし、各グループと0から始まるチャネル番号とを対応付ける。そして、NANDコントローラ6aは、論理アドレスをチャネルの数で除算した剰余の値と同じチャネル番号が対応付けられたグループを検索範囲とする。
【0076】
このため、NANDコントローラ6aは、例えば、連続する論理アドレスが割り当てられた4つのデータをそれぞれ異なるチャネル番号の物理ページに格納するので、各データの書込みや読出しを並列に実行できる。この結果、NANDコントローラ6aは、データの書込みや読出しに要する時間を短縮し、NANDデバイス7a〜7hに対するアクセス性能を向上させることができる。
【0077】
以下、図面を用いて、NANDコントローラ6aがNANDデバイス7a〜7hに対するアクセス性能を向上させることができる効果について詳しく説明する。まず、
図7〜
図9を用いて、連続する論理アドレスのデータを従来のNANDコントローラがNANDデバイス7a〜7hに書込む際に要する時間について説明する。なお、以下の説明では、従来のNANDコントローラをNANDコントローラ50と記載する。
【0078】
図7は、従来のNANDコントローラがデータの書込みを行う処理の流れを説明する図である。例えば、NANDコントローラ50は、
図7中(a)に示すように、I/Oハブ等を介して、CPUからデータの書込み要求を受信する。すると、NANDコントローラ50は、
図7中(b)に示すように、管理テーブルを用いて、データの書込み先となる物理ページを検索する。例えば、NANDコントローラ50は、データが格納されておらず、かつ、データの書込み回数が最も少ない物理ページをNANDデバイス7a〜7hの全物理ページから検索する。
【0079】
そして、NANDコントローラ50は、
図7中(c)に示すように、検索した物理ページの物理アドレスのチャネル番号に応じて、チャネル切替部がデータを出力するチャネルの切替を行う。また、NANDコントローラ50は、
図7中(d)に示すように、書込み対象のデータをチャネル切替部に出力し、データを検索した物理ページに格納する。例えば、NANDコントローラ50は、
図7中(e)に示すように、チャネル#0のNANDデバイス7a、7eが有する物理ページにデータを格納する。
【0080】
また、NANDコントローラ50は、
図7中(f)に示すように、検索した物理ページとデータの論理アドレスとをアドレステーブルに格納する。また、NANDコントローラ50は、データの書込みが終了すると、
図7中(g)に示すように、管理テーブルを更新し、
図7中(h)に示すように、書込み要求の発行元となるCPUに応答を出力する。
【0081】
ここで、NANDコントローラ50は、連続した論理アドレスが示す複数のデータを同じチャネルの物理ページに格納する場合がある。例えば、NANDコントローラ50は、チャネル#0のある物理ブロックにアクセス頻度が他のデータよりも低いデータが格納した場合、所定時間経過後に、ウェアレベリング処理やガベージコレクション処理によりデータを他の物理ブロックへ移動させる。この結果、チャネル#0には、各物理ページに対するデータの書込み回数が他の物理ページよりも少なく、かつ、データの書込みがされていない予備ブロックが存在することとなる。
【0082】
かかる場合、NANDコントローラ50は、複数のデータ書込み要求を受信すると、各データの書込み先として、チャネル#0の予備ブロックが有する各物理ページを選択する。この結果、NANDコントローラ50は、同一のNANDインターフェースを用いて、複数のデータをNANDデバイス7a、7eに順次書込むので、データの書込み処理を並行して行うことができない。
【0083】
例えば、
図8は、従来のNANDコントローラが同じチャネルの物理ページにデータを格納する際のタイムチャートである。なお、
図8には、NANDコントローラ50が書込み要求A〜Eと、書込み対象となるデータA〜Eとを受信した際に、チャネル#0に対して各データA〜Eを書込む際のタイムチャートを記載した。なお、データA〜Eは、連続した論理アドレスが付与されているものとする。
【0084】
例えば、NANDコントローラ50は、CPUから書込み要求A〜Eと、書込みデータA〜Eとを順次受信する。すると、NANDコントローラ50は、書込み要求Aを実行し、データAをチャネル#0の物理ページに格納する。また、NANDコントローラ50は、データAの書込みが終了すると、書込み要求Bを実行し、データBをチャネル#0の物理ページに格納する。その後も、NANDコントローラ50は、各書込み要求C〜Eを順次実行し、データC〜Eを順次チャネル#0の物理ページに格納する。このように、NANDコントローラ50は、連続して受信したデータA〜Eを同一のチャネル#0内の物理ページに格納するので、各書込み要求A〜Eを並行して実行することができず、NANDデバイス7a〜7hに対するデータ書込み性能を悪化させてしまう。
【0085】
また、連続する論理アドレスのデータは、同時に読出しされる場合が多い。しかしながら、NANDコントローラ50は、連続する論理アドレスのデータを同一のチャネル内の物理ページに格納した場合、読出し要求を並行して実行できず、NANDデバイス7a〜7hに対するデータ読出し性能を悪化させてしまう。
【0086】
例えば、
図9は、従来のNANDコントローラが同じチャネルから複数のデータを読出す際のタイムチャートである。なお、
図9には、NANDコントローラ50が、チャネル#0から複数のデータを連続して読出し要求A〜Eを受信した際に実行する読出し処理のタイムチャートを記載した。なお、読出し対象となるデータA〜Eは、
図8と同様に、連続する論理アドレスが付与されているものとする。
【0087】
例えば、NANDコントローラ50は、CPUから読出し要求A〜Eを連続して受信する。すると、NANDコントローラ50は、読出し要求Aを実行し、データAをチャネル#0の物理ページから読出して、CPUへ送信する。また、NANDコントローラ50は、データAの送信後、読出し要求Bを実行し、データBをチャネル#0の物理ページから読出して、CPUへ送信する。その後も、NANDコントローラ50は、各読出し要求C〜Eを順次実行し、データC〜Eの読出しと送信を順次実行する。このように、NANDコントローラ50は、連続した論理アドレスが示すデータを同一のチャネル内の物理ページに格納した場合は、読出し要求を並行して実行できず、NANDデバイス7a〜7hに対するデータ読出し性能を悪化させてしまう。
【0088】
一方、実施例1に係るNANDコントローラ6aは、論理アドレスをチャネル数で除算した際の剰余に応じて、データの書込み先となるチャネルを決定し、決定したチャネル内の物理ページにデータを格納する。この結果、NANDコントローラ6aは、連続する論理アドレスのデータをNANDデバイス7a〜7hに書込む場合は、各データをそれぞれ異なるチャネルの物理ページに格納する。このため、NANDコントローラ6aは、連続する論理アドレスのデータを書込む際、および読出す際に処理を並行して実行することができるので、NANDデバイス7a〜7hに対するデータ書込み性能、およびデータ読出し性能を向上させることができる。
【0089】
例えば、
図10は、実施例1に係るNANDコントローラがデータの書込みを行う際の処理を説明する図である。例えば、NANDコントローラ6aは、
図10中(E)に示すように、データの書込み要求を受信し、
図10中(F)に示すように、書込み対象のデータを受信する。すると、NANDコントローラ6aは、
図6中(G)に示すように、チャネル決定部13を用いて、データの論理アドレスに応じたチャネルを決定する。詳細には、NANDコントローラ6aは、論理アドレスをチャネルの数で除算した際の剰余の値に応じて、データの書込み先となるチャネルを決定する。
【0090】
そして、NANDコントローラ6aは、
図10中(H)に示すように、管理テーブル11aを参照し、決定したチャネルの物理ページからデータの書込み先となる物理ページを検索する。そして、NANDコントローラ6aは、
図10中(I)に示すように、チャネル切替部16がデータを出力するチャネルを切替する。その後、NANDコントローラ6aは、
図10中(J)に示すように、決定したチャネルのNANDインターフェースに、書込み対象となるデータを出力する。
【0091】
また、NANDコントローラ6aは、
図10中(K)、および
図10中(L)に示すように、書込み対象のデータの論理アドレスと、データを書込んだ物理ページの物理アドレスとを対応付けてアドレステーブル10aに格納する。また、NANDコントローラ6aは、データの書込みが終了すると、
図10中(M)に示すように、管理テーブル11aを更新し、
図10中(N)に示すように、応答を出力する。
【0092】
この結果、NANDコントローラ6aは、例えば、連続する論理アドレスのデータを異なるチャネルの物理ページに書込むので、書込み要求を並行して実行できる。例えば、
図11は、実施例1に係るNANDコントローラがデータを書込む際のタイムチャートである。なお、
図11には、NANDコントローラ6aが書込み要求A〜EとデータA〜Eを連続して受信した際に実行する処理のタイムチャートを記載した。また、データA〜Eは、連続する論理アドレスが付与されているものとする。
【0093】
例えば、NANDコントローラ6aは、CPU3aからから書込み要求A〜Eと、書込みデータA〜Eとを順次受信する。すると、NANDコントローラ6aは、書込み要求Aを実行し、データAの論理アドレスから、データAの書込み先となるチャネルをチャネル#0に決定する。そして、NANDコントローラ6aは、データAをチャネル#0の物理ページに格納する。
【0094】
一方、NANDコントローラ6aは、データAの書込みが終了する前に、書込み要求Bを実行し、データBの論理アドレスから、データBの書込み先となるチャネルをチャネル#1に決定する。そして、NANDコントローラ6aは、データBをチャネル#1の物理ページに格納する。その後、NANDコントローラ6aは、各書込み要求C〜Eを実行し、データC〜Eの書込み先となるチャネルを、それぞれチャネル#2、チャネル#3、チャネル#1に決定する。そして、NANDコントローラ6aは、各データC〜Eをそれぞれチャネル#2、チャネル#3、チャネル#1の物理ページに書込む。
【0095】
この結果、
図11に示すように、NANDコントローラ6aは、書込み要求A〜Dを並行して実行し、書込み要求Eを書込み要求Aが終了した後で実行する。このため、NANDコントローラ6aは、NANDデバイス7a〜7hにデータを書込む際の時間を短縮する結果、NANDデバイス7a〜7hに対する書込み性能を向上させることができる。
【0096】
また、NANDコントローラ6aは、連続した論理アドレスのデータを異なるチャネルに書込むので、連続した論理アドレスのデータ読出す際に、処理を並行して実行することができる。例えば、
図12は、実施例1に係るNANDコントローラがデータを読出す際のタイムチャートである。なお、
図12には、NANDコントローラ6aが読出し要求A〜Eを連続して受信した際に実行する処理のタイムチャートを記載した。
【0097】
例えば、NANDコントローラ6aは、CPU3aから読出し要求A〜Eを連続して受信する。すると、NANDコントローラ6aは、読出し要求Aを実行し、データAをチャネル#0の物理ページから読出して、CPU3aへ送信する。また、NANDコントローラ6aは、データBがデータAとは異なるチャネルの物理ページに書込まれているので、データAの読出しと並行して読出し要求Bを実行し、データBをチャネル#1の物理ページから読出して、CPU3aへ送信する。
【0098】
また、NANDコントローラ6aは、各読出し要求C〜Eを並行して実行し、データC〜Eをそれぞれチャネル#2、チャネル#3、チャネル#1から並行して読出し、読出したデータC〜EをCPU3aに送信する。この結果、
図12に示すように、NANDコントローラ6aは、データA〜Dをそれぞれ異なるチャネルから並行して読出し、データEをデータAの読出し後に読出す。この結果、NANDコントローラ6aは、NANDデバイス7a〜7hから連続した論理アドレスのデータを読出す時間を短縮する結果、NANDデバイス7a〜7hに対する読出し性能を向上させることができる。
【0099】
次に、
図13を用いて、NANDコントローラ6aが実行する処理の流れについて説明する。
図13は、実施例1に係るNANDコントローラが実行する処理の流れを説明するためのフローチャートである。例えば、NANDコントローラ6aは、CPUから書込み命令を受信する(ステップS101)。すると、NANDコントローラ6aは、書込み命令から論理アドレスを抽出し(ステップS102)、抽出した論理アドレスからチャネル番号を決定する(ステップS103)。つまり、NANDコントローラ6aは、論理アドレスからデータ書込み先となる物理ページの検索範囲を決定する。
【0100】
続いて、NANDコントローラ6aは、管理テーブル11aを参照し、決定したチャネル番号のデバイスアドレスから書込み先となる物理ページのデバイスアドレスを選択する(ステップS104)。そして、NANDコントローラ6aは、選択したデバイスアドレスとチャネル番号とが示す物理ページにデータの書込みを行う(ステップS105)。続いて、NANDコントローラ6aは、管理テーブル11aを更新し(ステップS106)、アドレステーブル10aを更新して(ステップS107)、処理を終了する。
【0101】
[NANDコントローラ6aの効果]
上述したように、NANDコントローラ6aは、NANDデバイス7a〜7hに書込むデータの論理アドレスに応じて、NANDデバイス7a〜7hが有する物理ページのうち、データの書込み先となる物理ページを検索する範囲を決定する。そして、NANDコントローラ6aは、決定した範囲の物理ページから、データが書込まれていない物理ページを検索し、検索した物理ページにデータを書込む。このため、NANDコントローラ6aは、データの書込み先となる物理ページを検索する時間を短縮する結果、データの書込みにかかる時間を短縮できる。
【0102】
また、NANDコントローラ6aは、物理ページの物理アドレスと、バリッドビットと、データ書込み回数とが対応付けて格納された管理テーブル11aを有する。そして、NANDコントローラ6aは、管理テーブル11aを用いて、決定した範囲の物理ページから、データが書込まれていない物理ページのうち、データが書込まれた回数が最も少ない物理ページを検索する。その後、NANDコントローラ6aは、検索した物理ページにデータを書込む。このため、NANDコントローラ6aは、各物理ページにデータを書込む回数を平準化するので、NANDデバイス7a〜7hの寿命を最大限利用できる。
【0103】
また、NANDコントローラ6aは、NANDデバイス7a〜7hが有する物理ページのうち、それぞれ異なるチャネルの物理ページにアクセスする複数のNANDインターフェース部17a〜17dを有する。また、NANDコントローラ6aは、書込み対象のデータの論理アドレスに応じて、データの書込みに用いるNANDインターフェース部を決定する。つまり、NANDコントローラ6aは、データの論理アドレスに応じて、データを書込むチャネルを決定する。そして、NANDコントローラ6aは、決定したチャネルの物理ページから、データの書込み先となる物理ページを検索する。
【0104】
このため、NANDコントローラ6aは、複数の書込み要求を連続して受信した際に、データをそれぞれ異なるチャネルの物理ページに書込む。この結果、NANDコントローラ6aは、複数の書込み要求を並行して実行する結果、NANDデバイス7a〜7hに対する書込み性能を向上させることができる。
【0105】
また、NANDコントローラ6aは、データの論理アドレスをNANDインターフェース部17a〜17dの数で除算した剰余の値に応じて、データの書込みを行うNANDインターフェース部を決定する。すなわち、NANDコントローラ6aは、チャネルの数で除算した際の剰余の値に応じて、データの書込み先となる物理ページのチャネルを決定する。
【0106】
このため、NANDコントローラ6aは、連続する論理アドレスのデータを異なるチャネルの物理ページに書込むので、書込み要求を並行して実行する結果、NANDデバイス7a〜7hに対する書込み性能を向上させることができる。また、NANDコントローラ6aは、連続する論理アドレスのデータを異なるチャネルの物理ページに書込むので、連続する論理アドレスの読出し要求を並行して実行できる。この結果、NANDコントローラ6aは、NANDデバイス7a〜7hに対する読出し性能を向上させることができる。
【0107】
また、NANDコントローラ6aは、論理アドレスの下位ビットの値に応じて、データの書込みに用いるNANDインターフェース部17a〜17dを決定する。すなわち、NANDコントローラ6aは、論理アドレスの下位ビットの値に応じて、データの書込み先となる物理ページを有するチャネルを決定する。
【0108】
このため、NANDコントローラ6aは、複雑な処理を行う回路を有さずとも、簡易な回路構成で、データの書込み先となる物理ページを有するチャネルを決定できる。この結果、NANDコントローラ6aは、データの書込み先となる物理ページを有するチャネルを決定する際の時間を短縮できる。また、NANDコントローラ6aは、回路規模を縮小することができる。