JP2015001909A - 情報処理装置、制御回路、制御プログラム、および制御方法 - Google Patents

情報処理装置、制御回路、制御プログラム、および制御方法 Download PDF

Info

Publication number
JP2015001909A
JP2015001909A JP2013127040A JP2013127040A JP2015001909A JP 2015001909 A JP2015001909 A JP 2015001909A JP 2013127040 A JP2013127040 A JP 2013127040A JP 2013127040 A JP2013127040 A JP 2013127040A JP 2015001909 A JP2015001909 A JP 2015001909A
Authority
JP
Japan
Prior art keywords
data
movement
physical
block
nand controller
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.)
Pending
Application number
JP2013127040A
Other languages
English (en)
Inventor
雅紀 日下田
Masaki Higeta
雅紀 日下田
早坂 和美
Kazumi Hayasaka
和美 早坂
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
Priority to JP2013127040A priority Critical patent/JP2015001909A/ja
Priority to US14/280,715 priority patent/US20140372673A1/en
Priority to EP14169085.9A priority patent/EP2816482A1/en
Publication of JP2015001909A publication Critical patent/JP2015001909A/ja
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • G06F12/023Free address space management
    • G06F12/0238Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory
    • G06F12/0246Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory in block erasable memory, e.g. flash memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • 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; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1041Resource optimization
    • G06F2212/1044Space efficiency improvement
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/72Details relating to flash memory management
    • G06F2212/7205Cleaning, compaction, garbage collection, erase control
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/72Details relating to flash memory management
    • G06F2212/7209Validity control, e.g. using flags, time stamps or sequence numbers
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/72Details relating to flash memory management
    • G06F2212/7211Wear leveling

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Techniques For Improving Reliability Of Storages (AREA)
  • Memory System (AREA)

Abstract

【課題】NANDデバイスに対するアクセス性能を改善する情報処理装置、制御回路、制御プログラム、および制御方法を提供する。
【解決手段】NANDコントローラ6aは、NANDデバイス7a〜10aに含まれる物理ブロックのうち、書込まれたデータが無効とされた物理ページを含む移動候補ブロックの数を計数する。また、NANDコントローラ6aは、物理ブロックのうち、各物理ページにデータが書込まれていない予備ブロックの数を計数する。そして、NANDコントローラ6aは、移動候補ブロックの数と予備ブロックの数との比較結果に応じて、移動候補ブロックから予備ブロックへデータを移動させる移動処理を開始するか否かを判定する。その後、NANDコントローラ6aは、移動処理を開始すると判定した場合は、移動候補ブロックの各物理ページに書込まれたデータのうち、有効なデータのみを予備ブロックに移動させる。
【選択図】図6

Description

本発明は、情報処理装置、制御回路、制御プログラム、および制御方法に関する。
従来、磁気ディスクよりも高速に動作する不揮発性メモリを用いた情報処理装置が知られている。このような情報処理システムの一例として、NANDフラッシュメモリデバイスをストレージ等の記憶装置として使用する情報処理装置が知られている。なお、以下の説明では、NANDフラッシュメモリデバイスをNANDデバイスと記載する。
ここで、NANDデバイスは、データの記憶領域である物理ページ単位でデータの書込み、読出し、データの更新に係る移動を行い、複数の物理ページを含む物理ブロック単位でデータの消去を行う。このため、NANDデバイスは、有効なデータと無効なデータとが混在した物理ブロックを有する場合がある。また、NANDデバイスは、データを消去する際に素子が劣化するので、頻繁に更新されるデータが書込まれた物理ページと、あまり更新されないデータが書込まれた物理ページとでは、素子が劣化する速度にばらつきが発生する。
このため、各物理ブロックに対するデータの書込み状況やデータの書込時刻に応じて、各物理ブロックに書込まれたデータの移動を実行し、データの整理や劣化の平準化を行うNANDコントローラが知られている。例えば、NANDコントローラは、物理ブロックごとに、各物理ページのデータが有効であるか否かを示す情報と、最後にデータが書込まれた時刻を示す情報とが格納された管理情報テーブルを有する。
そして、NANDコントローラは、管理情報テーブルを参照し、物理ブロックごとに、有効なデータの数やデータが書込まれてから経過した時間に応じて、データを移動させるか否かを判定する。その後、NANDコントローラは、データを移動させると判定した場合は、物理ブロックに書込まれた有効なデータを、予備ブロックの物理ページに移動し、選択した物理ブロックのデータを消去することで、新たな予備ブロックの確保や、劣化の平準化を行う。
特開平05−198198号公報 特開2008−146253号公報
しかしながら、上述した物理ブロックごとにデータを移動させるか否かを判定する技術では、1つの物理ブロックに含まれるすべての有効なデータを予備ブロックの物理ページに移動させるので、データの移動に時間がかかるという問題がある。
このため、例えば、NANDコントローラは、データを移動させている間、NANDデバイスに対するアクセスを待機させるので、NANDデバイスに対するアクセス性能を悪化させてしまう。
1つの側面では、NANDコントローラに対するアクセス性能を改善する情報処理装置、制御回路、制御プログラム、および制御方法を提供することを目的とする。
一態様の情報処理装置は、複数の記憶領域を含む記憶装置を有する。ここで、情報処理装置は、記憶装置に含まれる複数の記憶領域のうち一部の記憶領域を含んだブロックのうち、書込まれたデータが無効とされた記憶領域を含む移動候補ブロックの数を計数する。また、情報処理装置は、ブロックのうち、各記憶領域にデータが書込まれていない予備ブロックの数を計数する。そして、情報処理装置は、移動候補ブロックの数と予備ブロックの数との比較結果に応じて、移動候補ブロックから予備ブロックへデータを移動させる移動処理を開始するか否かを判定する。その後、情報処理装置は、移動処理を開始すると判定した場合は、移動候補ブロックの各記憶領域に書込まれたデータのうち、有効なデータのみを予備ブロックに移動させる。
一実施形態によれば、NANDコントローラに対するアクセス性能を改善することができる。
図1は、実施例1に係る情報処理装置を説明する図である。 図2は、メモリアクセスの一例を説明する図である。 図3は、実施例1に係るNANDコントローラが実行する処理の一例を説明する図である。 図4は、予備ブロックが枯渇する例を説明する図である。 図5は、実施例1に係るNANDコントローラが巡回参照制御を開始するか判定する処理の一例を説明する図である。 図6は、実施例1に係るNANDコントローラの機能構成を説明する図である。 図7は、実施例1に係るアドレス変換テーブルの一例を説明する図である。 図8は、実施例1に係る管理情報テーブルの一例を説明する図である。 図9は、実施例1に係るNANDコントローラが実行する処理の一例を説明する図である。 図10は、実施例1に係るNANDコントローラが実行する処理の流れを説明するフローチャートである。 図11は、実施例1に係るNANDコントローラが巡回参照制御を行うか判定する処理の流れを説明するフローチャートである。 図12は、実施例1に係るNANDコントローラがデータ消去時に実行する処理の流れを説明するフローチャートである。 図13は、実施例2に係るNANDコントローラの機能構成を説明する図である。 図14は、発行頻度を抑制する処理の一例を説明する図である。 図15は、実施例2に係るNANDコントローラが実行する処理の流れを説明するフローチャートである。 図16は、制御プログラムを実行するNANDコントローラの一例を説明する図である。
以下に添付図面を参照して本願に係る情報処理装置、制御回路、制御プログラム、および制御方法の実施例を図面に基づいて詳細に説明する。なお、以下の実施例により開示技術が限定されるものではない。また、各実施例は、矛盾しない範囲で適宜組みあわせてもよい。
以下の実施例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〜10aを有する。
また、SSD5bは、NANDコントローラ6b、および複数のNANDデバイス7b〜10bを有する。なお、以下の説明では、NANDコントローラ6b、および複数のNANDデバイス7b〜10bは、NANDコントローラ6a、および複数のNANDデバイス7a〜10aと同様の機能を発揮するものとして、説明を省略する。
各メモリ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デバイス7a〜10aからデータの読出しや書込みを行う。例えば、CPU3aは、SSD5aに対し、読出し対象となるデータを指定する論理アドレスが格納された読出し要求を発行する。また、CPU3aは、データの書込み先を指定する論理アドレスと、書込み対象となるデータとが格納された書込み要求を発行する。
NANDデバイス7aは、各種データを記憶する不揮発性メモリである。詳細には、NANDデバイス7aは、データの記憶領域である物理ページを複数有し、物理ページ単位でデータの書込みを行う。また、NANDデバイス7aは、複数の物理ページを有する物理ブロックを複数有し、ブロック単位でデータの消去を行う。ここで、1つの物理ページは、例えば、8キロバイトの記憶容量を有し、1つの物理ブロックは、例えば、128の物理ページを有する。なお、NANDデバイス7aは、特許請求の範囲に記載の記憶装置の一例である。
NANDコントローラ6aは、各NANDデバイス7a〜10aに対してアクセスし、データの読出しや書込みを行う。例えば、NANDコントローラ6aは、各CPU3a、3bがデータが記憶された記憶領域を指定する際に用いる論理アドレスと、データが格納されたNANDデバイス7a〜10aの記憶領域を示す物理アドレスとを対応付けたアドレス変換テーブルを有する。
そして、NANDコントローラ6aは、読出し要求とともに論理アドレスを受信すると、アドレス変換テーブルを用いて、論理アドレスと対応付けられた物理アドレスを識別し、識別した物理アドレスが示す記憶領域からデータの読出しを行う。その後、NANDコントローラ6aは、I/Oハブ4を介して、読出したデータをCPU3aに送信する。
なお、以下の説明では、理解を容易にするため、各物理ページの先頭アドレスとなる論理アドレスを単に論理アドレスと記載し、各物理ページの先頭アドレスとなる物理アドレスを単に物理アドレスと記載する。また、情報処理装置1が実行するシステムは、各物理ページの先頭アドレスとなる論理アドレスに対する読出し要求や書込み要求を発行するものとする。
例えば、NANDコントローラ6aは、NANDデバイス7a〜10aが、複数のブロックを有し、各ブロックに2個の物理ページが含まれている場合は、以下の処理を行う。まず、NANDコントローラ6aは、論理アドレスの下位qビットを論理的な1つのブロック内において、物理ページを識別するための論理ページ番号とし、残りの論理アドレスの上位pビットを論理的な1つのブロックを示す論理ブロックアドレスとする。
また、NANDコントローラ6aは、物理アドレスの上位pビットを物理的な1つのブロックを示す物理ブロックアドレスとし、物理アドレスの下位qビットを物理的な1つのブロック内において、各物理ページを識別するための物理ページ番号とする。つまり、NANDコントローラ6aは、論理アドレスを、論理ブロックを示す論理ブロックアドレスと、論理ページを論理ブロックごとに示す論理ページ番号とに分割する。また、NANDコントローラ6aは、物理アドレスを、物理ブロックを示す物理ブロックアドレスと、物理ページを物理ブロックごとに示す物理ページ番号とに分割する。
以下、図2を用いて、NANDコントローラ6aが実行するメモリアクセスの一例について説明する。図2は、メモリアクセスの一例を説明する図である。なお、図2に示す例では、理解を容易にするため、ブロック数を「9」とし、各ブロック内の物理ページ数が「4」のNANDデバイス7aについて記載した。また、図2に示す例では、NANDコントローラ6aが、論理ブロックアドレスと物理ブロックアドレスとを対応付けたアドレス変換テーブルを用いて、NANDデバイス7a〜10aが有する物理ページ単位でデータの書込みを行う処理について記載した。
例えば、NANDコントローラ6aは、図2中(a)に示すように、CPU3aが実行するファイルシステムから、論理ブロックアドレス「L0」の論理ページ番号「3」、すなわち論理アドレス「L0−3」に書込み要求を発行する。すると、NANDコントローラ6aは、アドレス変換テーブルを用いて、論理アドレス「L0−3」に対応付けられた物理アドレス「P4−3」を取得し、図2中(b)に示すように、更新前のデータが格納されている物理ページを識別する。
続いて、NANDコントローラ6aは、図2中(c)に示すように、物理アドレス「P4−3」が示す物理ページのデータを読出し、読出したデータを書込み対象のデータに更新し、更新後のデータを予備ブロックの空き物理ページに格納する。詳細な例を挙げると、NANDコントローラ6aは、図2中(d)に示すように、物理アドレス「P8−0」が示す物理ページに更新後のデータを格納する。その後、NANDコントローラ6aは、図2中(e)に示すように、論理アドレス「L0−3」と対応付けられていた物理アドレス「P4−3」を移動先の物理ページを示す「P8−0」に更新し、処理を終了する。
ここで、NANDデバイス7a〜10aに格納されたデータに対し、物理ページ単位で書込みや移動を行う場合は、1つの物理ブロック内に有効なデータと無効なデータとが混在する場合がある。例えば、図2に示す例では、NANDコントローラ6aは、論理アドレス「L0−3」が示すデータを更新する際、物理ブロックアドレス「P4」が示す物理ブロック内のデータを無効化する。そして、NANDコントローラ6aは、更新後のデータを物理ブロックアドレス「P8」が示す物理ブロックに格納する。このため、物理ブロックアドレス「P4」が示す物理ブロックには、有効なデータと無効なデータとが混在する。
ここで、NANDデバイス7a〜10aは、無効なデータが格納された物理ページに対してデータの上書きを行うことができず、あらかじめデータを消去した予備ブロックにデータの書込みを行う。しかしながら、有効なデータと無効なデータとが混在する物理ブロックが増えると、新たにデータを書込む予備ブロックを確保できなくなる。また、NANDデバイス7a〜10aは、データを保持するための素子を有する。かかる素子は、データの消去を行う際に劣化が進行し、劣化が進むと、電荷を適切に保持することができなくなる。
そこで、従来のNANDコントローラは、有効なデータを整理して新たな予備ブロックの確保や劣化を平準化するデータ移動制御を実行する。以下、従来のNANDコントローラが実行するデータ移動制御の一例として、新たな予備ブロックを確保するガベージコレクション処理と素子の劣化を平準化するウェアレベリング処理とについて説明する。
例えば、NANDコントローラは、情報処理装置が実行するシステムがデータの指定に用いる論理アドレスを、データが格納された物理ページを示す物理アドレスに変換するアドレス変換テーブルを有する。また、NANDコントローラは、物理ブロックごとに、データの格納状況を表すページバリッドと、データが格納された時刻を表すタイムスタンプとが対応付けて格納された管理情報テーブルを有する。ここで、ページバリッドとは、対応付けられた物理ブロックの各物理ページに格納されたデータが有効であるか否かを示す情報である。また、タイムスタンプとは、対応付けられた物理ブロックにデータが格納された時刻を示す情報である。
そして、例えば、NANDコントローラは、ガベージコレクション処理を実行する場合は、管理情報テーブルの各ページバリッドを参照する。また、NANDコントローラは、物理ブロックごとに、有効なデータが所定の数よりも少ないか否かを判定する。そして、NANDコントローラは、有効なデータが所定の数よりも少ないと判定した物理ブロックをデータの移動対象とし、移動対象とした物理ブロックから有効なデータを予備ブロックに移動させる。
また、例えば、NANDコントローラは、書込まれてから所定の時間が経過したデータを移動することで、素子の劣化を平準化するウェアレベリング処理を実行する場合は、管理情報テーブルの各タイムスタンプを参照する。そして、NANDコントローラは、物理ブロックごとに、参照したタイムスタンプと現在の時刻とを比較し、データが書込まれてから所定の時間が経過したか否かを判定する。そして、NANDコントローラは、データが書込まれてから所定の時間が経過したと判定した物理ブロックをデータの移動対象とし、移動対象とした物理ブロックから有効なデータを予備ブロックに移動させる。
その後、NANDコントローラは、データの移動対象とすると判定した物理ブロックに格納された有効なデータを予備ブロックに移動させ、移動元の物理ブロックのデータを消去し、新たな予備ブロックとする。しかしながら、NANDコントローラは、物理ブロック単位でデータを移動させた場合は、データの移動に時間を要する結果、NANDデバイス7a〜10aに対するアクセス性能を悪化させてしまう。
また、NANDコントローラは、ガベージコレクション処理やウェアレベリング処理等のデータ移動制御を実行した場合は、データの移動に応じて、アドレス変換テーブルの更新を行う。しかしながら、NANDコントローラは、物理ブロックごとにページバリッド、または、タイムスタンプを管理する管理情報テーブルを用いて、データを移動させるか否かを判定する。このため、NANDコントローラは、データ移動制御を行った後、移動させたデータの移動元物理アドレスを識別できるが、データの論理アドレスを識別できない。
ここで、NANDコントローラは、集積回路等のハードウェアで構成される場合、論理アドレスをインデックスとしてアドレス変換テーブルから物理アドレスを取得する。しかしながら、物理アドレスをインデックスとしてアドレス変換テーブルから論理アドレスを特定し、特定した論理アドレスと対応付けられた物理アドレスを更新できるようNANDコントローラを構成するのは、困難である。
そこで、NANDコントローラは、データの移動元物理アドレスを対応する論理アドレスに逆変換する手段を備える。例えば、NANDコントローラは、物理アドレスをインデックスとし、物理アドレスを論理アドレスに逆変換するアドレス逆変換テーブルを有する。また、NANDコントローラは、アドレス逆変換テーブルを用いて、データの移動元物理アドレスに対応する論理アドレスを特定する。そして、NANDコントローラは、アドレス変換テーブルに格納された物理アドレスのうち、特定した論理アドレスと対応付けられた物理アドレスを移動先物理アドレスに更新する。
しかしながら、NANDコントローラは、アドレス逆変換テーブル等、データの移動元物理アドレスを対応する論理アドレスに逆変換する手段を備えた場合は、回路規模が増大してしまう。また、NANDコントローラは、データ移動制御を行うたびにアドレス変換テーブルとアドレス逆変換テーブルとの参照や更新を行うので、データの移動に係る処理時間が増大し、システムの性能を低下させてしまう。
そこで、実施例1に係るNANDコントローラ6aは、以下の処理を実行する。まず、NANDコントローラ6aは、任意の手法で論理アドレスを1つ選択する。次に、NANDコントローラ6aは、選択した論理アドレスと対応付けられた物理アドレスをアドレス変換テーブルから取得する。そして、NANDコントローラ6aは、管理情報テーブルを用いて、取得した物理アドレスが示す物理ページを含む物理ブロックについて、データの移動を行うか否かを判定する。その後、NANDコントローラ6aは、データの移動を行った場合は、アドレス変換テーブルに格納された物理アドレスのうち、選択した論理アドレスと対応付けられた物理アドレスを、移動先物理アドレスに更新する。
以下、図3を用いて、NANDコントローラ6aが実行する各種処理について説明する。図3は、実施例1に係るNANDコントローラが実行する処理の一例を説明する図である。なお、以下の説明では、データの読出しや書込みを行う読出し・書込み制御と、データが書込まれてから経過した時間や物理ブロックに含まれる有効なデータの数に応じてデータを移動させるか否か判定する巡回参照制御とについて説明する。
また、以下の説明では、NANDコントローラ6aは、データを示す論理アドレスとデータが格納された物理ページを示す物理アドレスとが対応付けられたアドレス変換テーブルを有するものとする。また、NANDコントローラ6aは、物理ブロックごとに、データの格納状況と、データが格納された時刻とが対応付けて格納された管理情報テーブルを有するものとする。
まず、NANDコントローラ6aが実行する読出し・書込み制御について説明する。例えば、NANDコントローラ6aは、図3中(f)に示すように、I/Oハブ4から読出し要求を受信する。すると、NANDコントローラ6aは、読出し制御を実行する。例えば、NANDコントローラ6aは、図3中(g)に示すように、アドレス変換テーブルを用いて論理アドレスを物理アドレスに変換する。
そして、NANDコントローラ6aは、図3中(h)に示すように、変換後の物理アドレスを用いて、デバイスアクセス制御を実行する。詳細には、NANDコントローラ6aは、図3中(i)に示すように、変換後の物理アドレスが示す記憶領域からデータの読出しを行う。この結果、NANDコントローラ6aは、図3中(j)に示すように、読出し対象のデータを取得する。その後、NANDコントローラ6aは、図3中(k)に示すように、読出したデータを取得すると、取得したデータを読出し要求元のCPUへ出力する。
一方、NANDコントローラ6aは、データの更新に係る書込み要求を受信すると、図3中(g)に示すように、アドレス変換テーブルを用いて、論理アドレスを物理アドレスに変換し、更新前のデータが格納された移動元物理アドレスを取得する。また、NANDコントローラ6aは、図3中(l)に示すように、管理情報テーブルを閲覧し、データが格納されていない予備ブロックの物理アドレスを移動先物理アドレスとして取得する。
そして、NANDコントローラ6aは、図3中(h)、(i)に示すように、移動元物理アドレスが示す物理ページからデータを読出し、データの更新を行った後に、移動先物理アドレスが示す物理ページにデータを格納するようデバイスアクセス制御を実行する。この結果、NANDコントローラ6aは、図3中(j)、(k)に示すように、データの書込み要求に対する応答を取得する。すると、NANDコントローラ6aは、図3中(p)に示すように、データの移動に応じてアドレス変換テーブルと管理情報テーブルの更新を行う。
次に、NANDコントローラ6aが実行する巡回参照制御の一例を説明する。例えば、NANDコントローラ6aは、図3中(m)に示すように、アドレス変換テーブルを参照し、論理アドレスを選択する。そして、NANDコントローラ6aは、選択した論理アドレスと応付けられた物理アドレスをアドレス変換テーブルから取得し、取得した物理アドレスの上位ビットから物理ブロックアドレスを特定する。また、NANDコントローラ6aは、図3中(n)に示すように、管理情報テーブルを参照し、特定した物理ブロックアドレスと対応付けられたページバリッド、および、タイムスタンプに基づいて、物理ブロックのデータを移動させるか否かを判定する。
そして、NANDコントローラ6aは、物理ブロックのデータを移動させると判定した場合は、図3中(o)に示すように、データ移動制御を実行する。詳細には、NANDコントローラ6aは、特定した物理アドレスを移動元物理アドレスとする。また、NANDコントローラ6aは、管理情報テーブルを用いて予備ブロックに含まれる物理ページのうち、データが書込まれていない予備ページの物理アドレスを移動先物理アドレスとして特定する。そして、NANDコントローラ6aは、移動元物理アドレスが示す物理ページから移動先物理アドレスが示す物理ページへデータを移動するようデバイスアクセス制御を実行する。
続いて、NANDコントローラ6aは、データの移動に応じて、図3中(p)に示すように、アドレス変換テーブルと管理情報テーブルとの更新を行う。ここで、NANDコントローラ6aは、移動対象となったデータの論理アドレスを選択済みである。このため、NANDコントローラ6aは、選択した論理アドレスと対応付けられた物理アドレスをアドレス変換テーブルから特定し、特定した物理アドレスを移動先物理アドレスに更新する。その後、NANDコントローラ6aは、アドレス変換テーブルから次番の論理アドレスを選択し、選択した論理アドレスについて、同様の処理を実行する。
このように、NANDコントローラ6aは、論理アドレスを起点として、データの移動を行うか否かを判定し、データを移動させると判定した場合は、論理アドレスが示すデータを予備ブロックに移動させる。この結果、NANDコントローラ6aは、物理アドレスを論理アドレスに逆変換する手段を有さずとも、アドレス変換テーブルの更新を容易に行うことができる。
ここで、NANDコントローラ6aは、論理アドレスの順にデータを移動させるか否かを判断した場合は、適切にデータの移動を行うことができない場合がある。例えば、NANDコントローラ6aは、論理アドレスの順にデータ移動制御を行った場合は、物理アドレスの順にデータを移動させず、一見ランダムな順番で、各物理ページに格納されたデータを移動させる。
このため、例えば、NANDコントローラ6aは、データを移動させるべき物理ブロック内のデータを連続的に移動させず、NANDデバイス7a〜10aに書込まれたデータを一見ランダムな順序で移動させる。この結果、NANDコントローラ6aは、データを移動させるべき物理ブロックに格納されたデータを予備ブロックに移動させる前に、予備ブロックを枯渇させてしまう場合がある。
以下、図4を用いて、予備ブロックを枯渇させてしまう例について説明する。図4は、予備ブロックが枯渇する例を説明する図である。なお、図4に示す例では、理解を容易にするため、ブロック数を「11」とし、各ブロック内の物理ページ数が「4」のNANDデバイス7aについて記載した。また、図4に示す例では、物理アドレス「P10−3」、「P11−0」〜「P11−3」が示す物理ページが予備ページであるものとする。また、以下の説明では、無効となったデータが2つ以上存在する物理ブロックから、有効なデータを移動させる例について説明する。
例えば、NANDコントローラ6aは、図4中(q)に示すように、データの更新に係る書込み要求を受信すると、図4中(r)に示すように、更新前のデータを読出し、読出したデータの更新を行う。そして、NANDコントローラ6aは、図4中(s)に示すように、予備ブロックが有する物理ページのうち、データが書込まれていない予備ブロックに対し、物理ページ番号の順にデータを格納する。
例えば、NANDコントローラ6aは、図4に示す例では、論理アドレス「L7−1」が示すデータを物理アドレス「P3−2」から読出して更新する。そして、NANDコントローラ6aは、物理アドレス「P10−3」が先頭の予備ページである場合は、更新後のデータを物理アドレス「P10−3」が示す物理ページに書込む。その後、NANDコントローラ6aは、物理アドレス「P3−2」に格納されたデータを無効化する。
ここで、NANDコントローラ6aは、巡回参照制御を開始した場合は、論理アドレス「L0−1」を選択する。ここで、図4に示す例では、論理アドレス「L0−1」が示すデータは、無効となったデータが2つ存在する物理ブロック「#3」に格納されている。このため、NANDコントローラ6aは、図4中(t)に示すように、論理アドレス「L0−1」が示すデータを移動させる。詳細には、NANDコントローラ6aは、図4中(u)に示すように、論理アドレス「L0−1」が示すデータを物理アドレス「P3−3」が示す物理ページから読出す。そして、NANDコントローラ6aは、読出したデータを、図4中(v)に示すように、物理アドレス「P11−0」が示す予備ページに移動させる。
ここで、NANDコントローラ6aは、図4に示す例では、論理アドレス「L6−0」が示すデータを物理アドレス「P3−0」が示す物理ページから予備ページへ移動させれば、物理ブロック「#3」のデータを消去し、新たな予備ブロックとすることができる。しかしながら、NANDコントローラ6aは、論理アドレスの順にデータを移動させるか否かを判定し、移動させると判定したデータを予備ページに移動させる。このため、図4中(w)に示すように、NANDコントローラ6aは、論理アドレス「L6−0」が示すデータより先に、論理アドレス「L1−2」、「L2−0」、「L2−3」が示すデータを予備ページに移動させてしまい、予備ブロックを枯渇させてしまう。
この結果、NANDコントローラ6aは、例えば、図4中(x)に示すように、データの移動を行えないので、図4中(z)に示すように、物理ブロックのデータを消去できず、新たな予備ブロックを生成できないので、データの移動を行えなくなる。かかる問題を防ぐため、例えば、多数の予備ブロックを常に確保する方法が考えられるが、多数の予備ブロックを常に確保した場合は、NANDデバイス7aの記憶容量が減少し、資源使用効率が悪化してしまう。
そこで、NANDコントローラ6aは、以下の処理を実行する。まず、NANDコントローラ6aは、書込まれたデータが無効とされた物理ページを含む物理ブロックである移動候補ブロックの数を計数する。また、NANDコントローラ6aは、予備ブロックの数を計数する。そして、NANDコントローラ6aは、移動候補ブロックの数と予備ブロックの数とを常時比較し、比較結果に応じて、巡回参照制御を開始するか否かを判定する。そして、NANDコントローラ6aは、巡回参照制御を開始すると判定した場合は、図3に記載した巡回参照制御を実行する。
以下、図5を用いて、NANDコントローラ6aが移動候補ブロックの数と予備ブロックの数とに応じて、巡回参照制御を開始するか否かを判定する処理の一例について説明する。図5は、実施例1に係るNANDコントローラが巡回参照制御を開始するか判定する処理の一例を説明する図である。なお、NANDコントローラ6aが実行する処理のうち、読出し・書込み制御、および、データ移動制御については、図3に示した処理と同様の処理を実行するものとして、説明を省略する。
例えば、NANDコントローラ6aは、読出し・書込み制御を実行し、データの更新を実行した場合は、図5中(A)に示すように、管理情報テーブルを更新する。すると、NANDコントローラ6aは、図5中(B)に示すように、移動領域計測制御を実行し、以下の処理を実行する。
まず、NANDコントローラ6aは、データの更新に係るデータの移動により、データの移動元である物理ブロックが新たな移動候補ブロックとなったか否かを判定する。そして、NANDコントローラ6aは、データの移動元である物理ブロックが新たな移動候補ブロックとなった場合は、計数中である移動候補ブロックの数に1を加算する。また、NANDコントローラ6aは、データの移動先となる予備ページが予備ブロック内の先頭ページであるか否かを判定する。すなわち、NANDコントローラ6aは、データの移動先が新たな予備ブロックに含まれる予備ページであるか否かを判定する。そして、NANDコントローラ6aは、データの移動先となる予備ページが予備ブロック内の先頭ページである場合は、計測中の予備ページの数から1を減算する。
また、例えば、NANDコントローラ6aは、データ移動制御を実行し、データの移動を実行した場合は、図5中(C)に示すように、管理情報テーブルを更新する。すると、NANDコントローラ6aは、図5中(B)に示すように、移動領域計測制御を実行し、以下の処理を実行する。
まず、NANDコントローラ6aは、データの移動により、データの移動元である物理ブロックが新たな予備ブロックとなったか否かを判定する。そして、NANDコントローラ6aは、データの移動元である物理ブロックが新たな予備ブロックとなった場合は、計数中である移動候補ブロックの数から1を減算し、計測中の予備ページの数に1を加算する。
また、NANDコントローラ6aは、移動領域計測制御により計測された移動候補ブロックの数と予備ブロックの数とを比較する。そして、NANDコントローラ6aは、計測された移動候補ブロックの数と予備ブロックの数とが一致した場合は、図5中(D)に示すように、ガベージコレクションのための巡回参照制御を開始する。
例えば、NANDコントローラ6aは、図5中(E)に示すように、アドレス変換テーブルから論理アドレスを選択し、選択した論理アドレスと応付けられた物理アドレスをアドレス変換テーブルから取得する。そして、NANDコントローラ6aは、図5中(F)に示すように、管理情報テーブルを参照し、取得した物理アドレスの物理ブロックアドレスと対応付けられたページバリッドに基づいて、データを移動させるか否かを判定する。その後、NANDコントローラ6aは、データを移動させると判定した場合は、図5中(G)に示すように、データ移動制御を実行する。
このように、NANDコントローラ6aは、移動候補ブロックの数と予備ブロックの数とを計数し、計数した数の比較結果に応じて、ガベージコレクションのための巡回参照制御を開始するか否かを判定する。このため、NANDコントローラ6aは、予備ブロックを枯渇させることなく、データ移動制御を実行することができる。
例えば、データの移動候補ブロックには、有効なデータと無効なデータとが格納されている。一方、予備ブロックの各物理ページには、データが書込まれていない。このため、移動候補ブロックの数が予備ブロックの数以下である場合は、ガベージコレクションが確実に終了すると考えられる。このため、NANDコントローラ6aは、例えば、移動候補ブロックの数と予備ブロックの数とが一致したタイミングで巡回参照制御を開始した場合は、予備ブロックを枯渇させることなく、データ移動制御を実行することができる。
また、NANDコントローラ6aは、データの移動制御が必要となるタイミングで巡回参照制御を開始する。この結果、NANDコントローラ6aは、データ移動制御の実行を最小限に留めることができるので、NANDデバイス7a〜10aに対するアクセス性能を向上させることができる。
なお、NANDコントローラ6aは、移動候補ブロックの数と予備ブロックの数とが一致してから巡回参照制御を開始する必要はない。例えば、NANDコントローラ6aは、予備ブロックの数から移動候補ブロックの数を減算した値が所定の閾値以下となった場合に、巡回参照制御を開始することで、先取り的に、データの移動を開始してもよい。
また、NANDコントローラ6aは、データを無効化した物理ブロックが、ガベージコレクションのための巡回参照制御においてデータを移動させるか否かを判定する条件と同一の条件を満たすか否かを判定し、条件を満たすと判定した際に、移動候補ブロックの数を1つ加算してもよい。すなわち、NANDコントローラ6aは、実際にデータを移動させるブロックの数のみを計数してもよい。
次に、図6を用いて、NANDコントローラ6aが有する機能構成の一例について説明する。図6は、実施例1に係るNANDコントローラの機能構成を説明する図である。図6に示す例では、NANDコントローラ6aは、テーブル記憶部11、リクエスタインターフェース部12、リクエスト調停部13、テーブル制御部14を有する。また、NANDコントローラ6aは、デバイスアクセス制御部15、移動領域計測部16、巡回参照制御部17、データ移動制御部18を有する。
また、移動領域計測部16は、予備カウンタ16a、候補カウンタ16b、判定部16cを有する。また、テーブル記憶部11は、アドレス変換テーブル19、管理情報テーブル20を記憶する。
まず、図7、図8を用いて、テーブル記憶部11が記憶するアドレス変換テーブル19と、管理情報テーブル20に格納された情報について説明する。図7は、実施例1に係るアドレス変換テーブルの一例を説明する図である。
図7に示すように、アドレス変換テーブル19には、論理アドレスごとに、有効フラグと各論理アドレスが示すデータが格納された物理アドレスとが対応付けて格納されたエントリを有する。ここで、有効フラグとは、対応付けられた物理アドレスが示す物理ページに格納されたデータが有効なデータであるか否かを示すバリッドビットである。
例えば、図7に示す例では、アドレス変換テーブル19には、論理アドレス「L0−0」と対応付けられたエントリに、有効フラグ「1」と、物理アドレス「P4−0」とが対応付けて格納されている。すなわち、アドレス変換テーブル19は、物理アドレス「P4−0」が示すページに論理アドレス「L0−0」が指定する有効なデータが格納されている旨を示す。
同様に、図7に示す例では、アドレス変換テーブル19には、論理アドレス「L0−1」と対応付けられたエントリに、有効フラグ「1」と、物理アドレス「P3−3」とが対応付けて格納されている。また、アドレス変換テーブル19には、論理アドレス「L0−2」と対応付けられたエントリに、有効フラグ「1」と、物理アドレス「P2−2」とが対応付けて格納されている。また、アドレス変換テーブル19には、論理アドレス「L1−0」と対応付けられたエントリに、有効フラグ「1」と、物理アドレス「P2−0」とが対応付けて格納されている。また、アドレス変換テーブル19には、論理アドレス「L1−1」と対応付けられたエントリに、有効フラグ「1」と、物理アドレス「P1−2」とが対応付けて格納されている。
またアドレス変換テーブル19には、論理アドレス「L0−3」と対応付けられたエントリに、有効フラグ「0」と、物理アドレス「P4−3」とが対応付けて格納されている。また、アドレス変換テーブル19には、論理アドレス「L1−2」と対応付けられたエントリに、有効フラグ「0」と、物理アドレス「P3−2」とが対応付けて格納されている。すなわち、アドレス変換テーブル19は、物理アドレス「P4−3」、「P3−2」に格納されたデータが有効なデータではない旨を示す。
次に、図8を用いて、管理情報テーブル20に格納される情報について説明する。図8は、実施例1に係る管理情報テーブルの一例を説明する図である。図8に示すように、管理情報テーブル20には、物理ブロックアドレスと対応付けられたエントリに、ページバリッドと、タイムスタンプとが対応付けて格納される。
ここで、ページバリッドとは、対応付けられた物理ブロックアドレスが示す物理ブロックの各物理ページに格納されたデータが、有効なデータであるか否かを示すビット列である。例えば、管理情報テーブル20は、1つの物理ブロックに、n個の物理ページが含まれる場合は、nビットのビット列をページバリッドとする。また、管理情報テーブル20は、物理ブロックに含まれる各物理ページとページバリッドの各ビットとを対応付け、有効なデータが格納された物理ページと対応付けたビットを「1」とする。また、管理情報テーブル20は、有効なデータが格納されていない物理ページと対応付けたビットを「0」とする。なお、図8に示す例では、1つの物理ブロックに4つの物理ページが含まれる例について記載した。
また、タイムスタンプとは、対応付けられた物理ブロックアドレスが示す物理ブロックにデータを最後に書込んだ際の時刻を示す情報であり、例えば、図示を省略したタイマがデータを書込んだ際にカウントしていたカウント値である。例えば、図8に示す例では、管理情報テーブル20には、物理ブロックアドレス「P0」と対応付けられたエントリに、ページバリッド「1101」と、タイムスタンプ「10516」とが対応付けて格納される。すなわち、管理情報テーブル20は、物理ブロックアドレス「P0」が示す物理ブロックに含まれる物理ページのうち、物理ページ番号が「0」、「1」、「3」等の物理ページに格納されたデータが有効データである旨を示す。また、管理情報テーブル20は、物理ブロックアドレス「P0」が示す物理ブロックに対して、タイマのカウント値が「10516」である際に、データの書込みが行われた旨を示す。
同様に、図8に示す例では、管理情報テーブル20には、物理ブロックアドレス「P1」と対応付けられたエントリに、ページバリッド「1010」と、タイムスタンプ「912」とが対応付けて格納される。また、管理情報テーブル20には、物理ブロックアドレス「P2」と対応付けられたエントリに、ページバリッド「0001」と、タイムスタンプ「1229」とが対応付けて格納される。なお、管理情報テーブル20には、他にも、物理ブロックアドレスとページバリッドとタイムスタンプとが対応付けて格納されているものとする。
図6に戻り、リクエスタインターフェース部12は、CPU3a、3bからNANDデバイス7a〜10aに対するリクエストのインターフェースである。例えば、リクエスタインターフェース部12は、CPU3a、3bからI/Oハブ4を介して、論理アドレスを含む読出し要求を受信する。かかる場合は、リクエスタインターフェース部12は、読出し要求をリクエスト調停部13に出力する。また、リクエスタインターフェース部12は、NANDデバイス7a〜10aから読出したデータをリクエスト調停部13から受信すると、読出し要求の発行元となるCPU3a、3bに対して、データを送信する。
また、リクエスタインターフェース部12は、CPU3a、3bから、NANDデバイス7a〜10aに対して書込むデータと、書込み対象となるデータの論理アドレスとを含む書込み要求を受信する。かかる場合は、リクエスタインターフェース部12は、受信した書込み要求をリクエスト調停部13に発行する。また、リクエスタインターフェース部12は、リクエスト調停部13から、データ書込みが完了した旨の応答を受信すると、受信した応答を、書込み要求の発行元となるCPU3a、3bに対して、応答を送信する。なお、リクエスタインターフェース部12は、特許請求の範囲に記載の書込部の一例である。
リクエスト調停部13は、リクエスタインターフェース部12、データ移動制御部18、巡回参照制御部17が発行する各種リクエストの調停を行う。詳細には、リクエスト調停部13は、リクエスタインターフェース部12から受信する読出し要求、又は、書込み要求を受信する。また、リクエスト調停部13は、データ移動制御部18から、NANDデバイス7a〜10aが記憶するデータを、現在記憶するブロックから他のブロックに移動するよう要求する移動要求を受信する。また、リクエスト調停部13は、データ移動制御部18から、物理ブロック内のデータを消去するよう要求する消去要求を受信する。また、リクエスト調停部13は、巡回参照制御部17から、アドレス変換テーブル19または管理情報テーブル20の参照を要求するテーブル参照要求を受信する。
そして、リクエスト調停部13は、リクエスタインターフェース部12、データ移動制御部18、巡回参照制御部17から受信する読出し要求、書込み要求、移動要求、消去要求、テーブル参照要求の調停を行う。例えば、リクエスト調停部13は、CPU3a、3bからNANDデバイス7a〜10aに対するデータの読出しや書込みが阻害されないよう、リクエスタインターフェース部12が発行する読出し要求、および、書込み要求を最優先で実行する。また、例えば、リクエスト調停部13は、移動要求を消去要求、および、テーブル参照要求よりも優先して実行し、消去要求をテーブル参照要求よりも優先して実行する。
なお、リクエスト調停部13が各要求を調停するルールについては、上述した処理に限定されるものではなく、任意のルールを適用してよい。例えば、リクエスト調停部13は、管理情報テーブル20に格納された情報を用いて、NANDデバイス7a〜10aの空き容量を算出し、算出した空き容量が所定の閾値よりも少ない場合は、消去要求を他の要求よりも優先して実行してもよい。
以下、リクエスト調停部13が読出し要求、書込み要求、移動要求、消去要求、テーブル参照要求を受信した際に実行する処理の一例を説明する。例えば、リクエスト調停部13は、読出し要求を受信すると、読出し要求に含まれる論理アドレスをテーブル制御部14に出力する。そして、リクエスト調停部13は、テーブル制御部14から、読出し対象となる物理アドレスを受信すると、受信した物理アドレスを格納した読出し要求をデバイスアクセス制御部15に発行する。その後、リクエスト調停部13は、読出し対象となるデータをデバイスアクセス制御部15から受信すると、受信したデータをリクエスタインターフェース部12に出力する。
また、リクエスト調停部13は、書込み要求を受信すると、書込み要求に含まれる論理アドレスをテーブル制御部14に出力する。この結果、リクエスト調停部13は、書込み対象のデータが新たなデータである場合は、データが格納されていない予備ブロックのうち、データの書込み先となるページの物理アドレスをテーブル制御部14から受信する。
その後、リクエスト調停部13は、テーブル制御部14から受信した物理アドレスと、書込み対象のデータとを含む書込み要求をデバイスアクセス制御部15に発行する。また、リクエスト調停部13は、デバイスアクセス制御部15からデータの書込みが完了した旨の応答を受信すると、データの書込み先となるページの物理アドレスと、書込み要求に含まれる論理アドレスとを含むテーブル更新要求をテーブル制御部14に出力する。そして、リクエスト調停部13は、テーブル制御部14から、テーブルの更新が終了した旨の応答を受信した場合は、リクエスタインターフェース部12に、書込み要求に対する応答を出力する。
また、リクエスト調停部13は、書込みがデータの更新を目的とする場合は、更新元のデータが格納されたページの物理アドレスを更新元物理アドレスとしてテーブル制御部14から受信する。また、リクエスト調停部13は、テーブル制御部14から、予備ブロックに含まれるページの物理アドレス、すなわちデータの書込み先となるページの物理アドレスを更新先物理アドレスとして受信する。
そして、リクエスト調停部13は、更新元物理アドレスと、更新先物理アドレスとをテーブル制御部14から受信した場合は、データの更新を要求する更新要求をデバイスアクセス制御部15に発行する。詳細には、リクエスト調停部13は、更新元物理アドレスと、更新先物理アドレスと、書込むデータとを含む更新要求をデバイスアクセス制御部15に発行する。
また、リクエスト調停部13は、デバイスアクセス制御部15からデータの書込みが完了した旨の応答を受信すると、以下の処理を実行する。まず、リクエスト調停部13は、更新元物理アドレスと、更新先物理アドレスと、書込み要求に含まれる論理アドレスとを含むテーブル更新要求をテーブル制御部14に出力する。その後、リクエスト調停部13は、テーブル制御部14からテーブル更新要求に対する応答を受信すると、データの書込みが完了した旨の応答をリクエスタインターフェース部12に出力する。
また、リクエスト調停部13は、移動させるデータが格納された物理ページの物理アドレスである移動元物理アドレスと、移動させるデータを指定するための論理アドレスとを含む移動要求を受信する。また、リクエスト調停部13は、テーブル制御部14に問い合わせる等して、データの移動先となる物理ページの物理アドレスを移動先物理アドレスとして取得する。
そして、リクエスト調停部13は、移動元物理アドレスと、移動先物理アドレスとを含む移動要求をデバイスアクセス制御部15に発行する。また、リクエスト調停部13は、デバイスアクセス制御部15からデータの移動が完了した旨の応答を受信すると、以下の処理を実行する。すなわち、リクエスト調停部13は、データ移動制御部18から受信した移動対象のデータを指定する論理アドレスと、移動先物理アドレスと、移動元物理アドレスとを含むテーブル更新要求をテーブル制御部14に出力する。そして、リクエスト調停部13は、テーブル制御部14からテーブル更新要求に対する応答を受信した場合は、データ移動制御部18に対して、データの移動が完了した旨の応答を出力する。
また、リクエスト調停部13は、データの消去対象となる物理ブロックを示す物理ブロックアドレスを含む消去要求を受信する。また、リクエスト調停部13は、消去要求を受信すると、受信した消去要求をデバイスアクセス制御部15に発行する。そして、リクエスト調停部13は、デバイスアクセス制御部15からデータの消去が完了した旨の応答を受信すると、消去要求に格納された物理ブロックアドレスを含むテーブル更新要求をテーブル制御部14に出力する。また、リクエスト調停部13は、テーブル制御部14からデータの更新が終了した旨の応答を受信した場合は、データ移動制御部18に対して、データの消去が完了した旨の応答を出力する。
また、リクエスト調停部13は、テーブル参照要求を受信した場合は、テーブル制御部14に対し、アドレス変換テーブル19と管理情報テーブル20の参照要求を送信する。そして、リクエスト調停部13は、テーブル制御部14からアドレス変換テーブル19と管理情報テーブル20とを受信すると、受信したアドレス変換テーブル19と管理情報テーブル20とを巡回参照制御部17に出力する。
テーブル制御部14は、論理アドレスに対応付けられた物理アドレスを取得する。また、テーブル制御部14は、アドレス変換テーブル19と管理情報テーブル20との更新を行う。また、テーブル制御部14は、管理情報テーブル20を更新する際に以下の処理を実行する。
まず、テーブル制御部14は、データの消去により予備ブロックの数が増えた場合は、予備カウンタ16aが計数する値を1つインクリメントする。また、テーブル制御部14は、データの書込み、または、更新により予備ブロックの数が減った場合は、予備カウンタ16aが計数する値を1つデクリメントする。また、テーブル制御部14は、データの更新により移動候補ブロックの数が増えた場合には、候補カウンタ16bが計数する値を1つインクリメントする。また、テーブル制御部14は、データの消去により移動候補ブロックの数が減った場合は、候補カウンタ16bが計数する値を1つデクリメントする。
以下、テーブル制御部14が実行する処理について詳細に説明する。例えば、テーブル制御部14は、リクエスト調停部13から読出し要求に格納された論理アドレスを受信すると、アドレス変換テーブル19を参照し、受信した論理アドレスと対応付けられた物理アドレスを取得する。そして、テーブル制御部14は、取得した物理アドレスをリクエスト調停部13に出力する。
また、テーブル制御部14は、リクエスト調停部13から書込み要求に格納された論理アドレスを受信すると、アドレス変換テーブル19を参照し、受信した論理アドレスに、有効フラグ「1」が対応付けられているか判定する。そして、テーブル制御部14は、受信した論理アドレスに有効フラグ「0」が対応付けられている場合、すなわち、書込み対象のデータが新たなデータである場合は、以下の処理を実行する。
まず、テーブル制御部14は、管理情報テーブル20を参照し、データが格納されていない物理ブロック、すなわち、予備ブロックを識別する。例えば、テーブル制御部14は、管理情報テーブル20を参照し、対応付けられたページバリッドがすべて「0」である物理ブロックを検索し、検出した物理ブロックを予備ブロックとする。そして、テーブル制御部14は、予備ブロックに含まれる物理ページの物理アドレスをリクエスト調停部13に出力する。
なお、テーブル制御部14は、一度予備ブロックを識別すると、識別した予備ブロックに含まれる物理ページの全ての物理ページにデータが書込まれるまで、同一の予備ブロックに含まれる物理ページの物理アドレスを出力する。詳細には、テーブル制御部14は、予備ブロックに含まれる物理ページのうち、データが書込まれていない物理ページの物理アドレスを、物理ページ番号の順に出力する。そして、テーブル制御部14は、予備ブロックに含まれる全ての物理ページにデータが書込まれた場合は、管理情報テーブル20を参照して、新たな予備ブロックを識別する。
一方、テーブル制御部14は、受信した論理アドレスに有効フラグ「1」が対応付けられている場合、すなわち、書込みがデータの更新を目的とする場合は、以下の処理を実行する。まず、テーブル制御部14は、受信した論理アドレスと対応付けられた物理アドレスを更新元物理アドレスとしてリクエスト調停部13に出力する。また、テーブル制御部14は、予備ブロックを識別し、識別した予備ブロックに含まれる物理ページのうち、データが格納されていない物理ページの物理アドレスを更新先物理アドレスとしてリクエスト調停部13に出力する。
また、テーブル制御部14は、リクエスト調停部13が移動要求を受信した際には、リクエスト調停部13から移動先物理アドレスの問い合わせを受ける。かかる場合は、テーブル制御部14は、予備ブロックを識別し、識別した予備ブロックに含まれる物理ページのうち、データが格納されていない物理ページの物理アドレスを移動先物理アドレスとしてリクエスト調停部13に出力する。
また、テーブル制御部14は、データの書込み、移動、消去に応じて、アドレス変換テーブル19、および、管理情報テーブル20の更新を行い、更新内容に応じて、予備カウンタ16a、および、候補カウンタ16bの計数値を更新する。例えば、テーブル制御部14は、リクエスト調停部13が新たなデータの書込みを行う場合は、データの書込み先となる物理ページの物理アドレスと、書込み要求に含まれる論理アドレスとを含むテーブル更新要求を受信する。
かかる場合は、テーブル制御部14は、テーブル更新要求から、データの書込み先となる物理ページの物理アドレスと、論理アドレスとを抽出する。そして、テーブル制御部14は、アドレス変換テーブル19を参照し、抽出した論理アドレスと対応付けられた有効フラグを「1」に更新する。また、テーブル制御部14は、抽出した論理アドレスに対応付けて、抽出した物理アドレスをアドレス変換テーブル19に格納する。
また、テーブル制御部14は、抽出した物理アドレスの上位ビットである物理ブロックアドレスと対応付けられたエントリを管理情報テーブル20から抽出する。そして、テーブル制御部14は、抽出したエントリのページバリッドのうち、抽出した物理アドレスの下位ビットである物理ページ番号と対応するビットを「1」に更新する。また、テーブル制御部14は、タイマの値を取得し、取得した値をタイムスタンプとして、抽出したエントリに格納する。
また、テーブル制御部14は、「1」に更新したビットが先頭ビットであるか否かを判定する。すなわち、テーブル制御部14は、データの書込み先が新たな予備ブロックの先頭となる物理ページであるか否かを判定する。そして、テーブル制御部14は、「1」に更新したビットが先頭ビットであると判定した場合は、予備カウンタ16aが計数する値を1つデクリメントする。その後、テーブル制御部14は、テーブル更新要求に対する応答をリクエスト調停部13に出力する。
また、テーブル制御部14は、リクエスト調停部13がデータの更新を行う場合は、更新元物理アドレスと、更新先物理アドレスと、書込み要求に含まれる論理アドレスとを含むテーブル更新要求を受信する。かかる場合は、テーブル制御部14は、テーブル更新要求から更新元物理アドレスと、更新先物理アドレスと、論理アドレスとを抽出する。そして、テーブル制御部14は、アドレス変換テーブル19を参照し、抽出した論理アドレスと対応付けられた物理アドレスを抽出した更新先物理アドレスに更新する。
また、テーブル制御部14は、管理情報テーブル20から、更新元物理アドレスの上位ビットである物理ブロックアドレスと対応付けられたエントリを抽出する。そして、テーブル制御部14は、抽出したエントリのページバリッドのうち、抽出した更新元物理アドレスの下位ビットである物理ページ番号と対応するビットを「0」に更新する。
また、テーブル制御部14は、抽出したエントリのページバリッドのうち、抽出した更新元物理アドレスの下位ビットである物理ページ番号と対応するビットを「0」に更新した場合は、以下の処理を実行する。すなわち、テーブル制御部14は、抽出したエントリのページバリッドのうち、値が「0」となるビットの数が所定の閾値を超えたか否かを判定する。そして、テーブル制御部14は、抽出したエントリのページバリッドのうち、値が「0」となるビットの数が所定の閾値を超えた場合は、候補カウンタ16bの値を1つインクリメントする。
次に、テーブル制御部14は、管理情報テーブル20から、更新先物理アドレスの上位ビットである物理ブロックアドレスと対応付けられたエントリを抽出する。そして、テーブル制御部14は、抽出したエントリのページバリッドのうち、抽出した更新先物理アドレスの下位ビットである物理ページ番号と対応するビットを「1」に更新する。また、テーブル制御部14は、タイマの値を取得し、取得した値をタイムスタンプとして、抽出したエントリに格納する。
また、テーブル制御部14は、「1」に更新したビットが先頭ビットであるか否かを判定する。そして、テーブル制御部14は、「1」に更新したビットが先頭ビットであると判定した場合は、予備カウンタ16aが計数する値を1つデクリメントする。その後、テーブル制御部14は、テーブル更新要求に対する応答をリクエスト調停部13に出力する。
また、テーブル制御部14は、リクエスト調停部13がデータの移動を行う場合は、移動元物理アドレスと、移動先物理アドレスと、移動対象のデータを指定する論理アドレスとを含むテーブル更新要求を受信する。かかる場合は、テーブル制御部14は、テーブル更新要求から移動元物理アドレスと、移動先物理アドレスと、論理アドレスとを抽出する。そして、テーブル制御部14は、アドレス変換テーブル19を参照し、抽出した論理アドレスと対応付けられた物理アドレスを抽出した移動先物理アドレスに更新する。
また、テーブル制御部14は、管理情報テーブル20から、移動元物理アドレスの上位ビットである物理ブロックアドレスと対応付けられたエントリを抽出する。そして、テーブル制御部14は、抽出したエントリのページバリッドのうち、抽出した移動元物理アドレスの下位ビットである物理ページ番号と対応するビットを「0」に更新する。
次に、テーブル制御部14は、管理情報テーブル20から、移動先物理アドレスの上位ビットである物理ブロックアドレスと対応付けられたエントリを抽出する。そして、テーブル制御部14は、抽出したエントリのページバリッドのうち、抽出した移動先物理アドレスの下位ビットである物理ページ番号と対応するビットを「1」に更新する。また、テーブル制御部14は、タイマの値を取得し、取得した値をタイムスタンプとして、抽出したエントリに格納する。また、テーブル制御部14は、「1」に更新したビットが先頭ビットであるか否かを判定する。そして、テーブル制御部14は、「1」に更新したビットが先頭ビットであると判定した場合は、予備カウンタ16aが計数する値を1つデクリメントする。その後、テーブル制御部14は、テーブル更新要求に対する応答をリクエスト調停部13に出力する。
また、テーブル制御部14は、リクエスト調停部13がデータの消去を行う場合は、消去要求に格納された物理ブロックアドレスを含むテーブル更新要求をリクエスト調停部13から受信する。かかる場合は、テーブル制御部14は、テーブル更新要求から物理ブロックアドレスを抽出する。そして、テーブル制御部14は、管理情報テーブル20を参照し、抽出した物理ブロックアドレスと対応付けられたエントリの、図字を省略したブロック消去回数などの情報を更新する。
また、テーブル制御部14は、データの消去により管理情報テーブル20を更新した場合は、予備カウンタ16aが計数する値を1つインクリメントし、候補カウンタ16bが計数する値を1つデクリメントする。その後、テーブル制御部14は、テーブル更新要求に対する応答をリクエスト調停部13に出力する。
また、テーブル制御部14は、テーブル参照要求を受信した場合は、テーブル記憶部11からアドレス変換テーブル19と管理情報テーブル20とを取得する。そして、テーブル制御部14は、取得したアドレス変換テーブルと管理情報テーブル20をリクエスト調停部13に出力する。なお、テーブル制御部14は、例えば、情報処理装置1が実行するシステムから論理アドレスとデータとの対応付けを解消する旨の指示を受けると、アドレス変換テーブル19を参照し、対象となる論理アドレスと対応付けられた有効フラグを「0」に更新する。
デバイスアクセス制御部15は、リクエスト調停部13からの各種リクエストに従って、NANDデバイス7a〜10aに対するデバイスアクセスを実行する。例えば、デバイスアクセス制御部15は、リクエスト調停部13から、物理アドレスを含む読出し要求を受信する。かかる場合は、デバイスアクセス制御部15は、NANDデバイス7a〜10aが有するページのうち、読出し要求に格納されていた物理アドレスが示すページに格納されたデータの読出しを実行する。そして、デバイスアクセス制御部15は、読出したデータをリクエスト調停部13に出力する。
また、例えば、デバイスアクセス制御部15は、リクエスト調停部13から、物理アドレスと、書込み対象のデータとを含む書込み要求を受信する。かかる場合は、デバイスアクセス制御部15は、書込み要求に含まれる物理アドレスが示す物理ページに書込み対象のデータを格納する。その後、デバイスアクセス制御部15は、データの書込みを終了した旨の応答をリクエスト調停部13に出力する。
また、例えば、デバイスアクセス制御部15は、更新元物理アドレスと、更新先物理アドレスと、書込むデータとを含む更新要求をリクエスト調停部13から受信する。かかる場合は、デバイスアクセス制御部15は、更新元物理アドレスが示す物理ページのデータを読み出す。続いて、デバイスアクセス制御部15は、読出したデータを更新要求に含まれるデータに更新する。そして、デバイスアクセス制御部15は、更新したデータを更新先物理アドレスが示す物理ページに格納する。その後、デバイスアクセス制御部15は、データの書込みを終了した旨の応答をリクエスト調停部13に出力する。
また、デバイスアクセス制御部15は、移動元物理アドレスと、移動先物理アドレスとを含む移動要求をリクエスト調停部13から受信する。かかる場合は、デバイスアクセス制御部15は、移動元物理アドレスが示す物理ページからデータを読出し、読出したデータを移動先物理アドレスが示す物理ページに格納する。その後、デバイスアクセス制御部15は、データの移動を終了した旨の応答をリクエスト調停部13に出力する。
また、デバイスアクセス制御部15は、データの消去対象となる物理ブロックを示す物理ブロックアドレス含む消去要求をリクエスト調停部13から受信する。かかる場合は、デバイスアクセス制御部15は、消去要求に含まれる物理ブロックアドレスが示す物理ブロックに格納されたデータを消去し、データの消去が完了した旨の応答をリクエスト調停部13に出力する。
移動領域計測部16は、予備ブロックの数と移動候補ブロックの数とを計数する。そして、移動領域計測部16は、予備ブロックの数と移動候補ブロックの数との比較結果に応じて、ガベージコレクションのための巡回参照制御を開始するか否かを判定する。以下、移動領域計測部16の機能構成について説明する。
予備カウンタ16aは、予備ブロックの数を計数するカウンタである。例えば、予備カウンタ16aは、テーブル制御部14からインクリメントを示す信号を受信すると、計数中の値を1つインクリメントし、テーブル制御部14からデクリメントを示す信号を受信すると、計数中の値を1つデクリメントするカウンタである。また、予備カウンタ16aは、計数中の値を判定部16cに出力する。なお、予備カウンタ16aは、特許請求の範囲に記載の第2の計数部の一例である。
候補カウンタ16bは、移動候補ブロックの数を計数するカウンタである。例えば、候補カウンタ16bは、テーブル制御部14からインクリメントを示す信号を受信すると、計数中の値を1つインクリメントし、テーブル制御部14からデクリメントを示す信号を受信すると、計数中の値を1つデクリメントするカウンタである。また、候補カウンタ16bは、計数中の値を判定部16cに出力する。なお、候補カウンタ16bは、特許請求の範囲に記載の第1の計数部の一例である。
判定部16cは、予備カウンタ16aが計数する値と、候補カウンタ16bが計数する値とを比較し、比較結果に応じて、巡回参照制御を開始するか否かを判定する。そして、判定部16cは、巡回参照制御を開始すると判定した場合は、巡回参照制御部17に対し、巡回参照制御の実行を指示する。なお、判定部16cは、特許請求の範囲に記載の判定部の一例である。
例えば、判定部16cは、予備カウンタ16aが計数する値と、候補カウンタ16bが計数する値とが一致した場合は、巡回参照制御部17に対し、巡回参照制御の実行を指示する。なお、例えば、先取り的に巡回参照制御を実行する場合は、判定部16cは、予備カウンタ16aが計数する値から候補カウンタ16bが計数する値を減算し、減算した値が所定の閾値以下であるか否かを判定する。そして、判定部16cは、予備カウンタ16aが計数する値から候補カウンタ16が計数する値を減算し、減算した値が所定の閾値以下となった場合は、巡回参照制御部17に対し、巡回参照制御の実行を指示する。
巡回参照制御部17は、所定の時間が経過した場合やソフトウェアからの指示を受けた場合は、ウェアレベリングのための巡回参照制御を開始する。また、巡回参照制御部17は、判定部16cから巡回参照制御の実行を指示された場合は、ガベージコレクションのための巡回参照制御を開始する。以下、巡回参照制御部17が実行する巡回参照制御の処理内容について説明する。例えば、巡回参照制御部17は、アドレス変換テーブル19と管理情報テーブル20との参照要求をリクエスト調停部13に出力する。また、巡回参照制御部17は、タイマのカウント値を取得する。また、巡回参照制御部17は、リクエスト調停部13からアドレス変換テーブル19と、管理情報テーブル20とを受信する。
そして、巡回参照制御部17は、移動判定処理の対象となる論理アドレスを1つ選択し、選択した論理アドレスについて、以下の移動判定処理を実行する。まず、巡回参照制御部17は、アドレス変換テーブル19を参照し、選択した論理アドレスと対応付けられた有効フラグの値が「1」であるか否かを判定する。そして、巡回参照制御部17は、有効フラグの値が「0」である場合は、新たな移動判定処理の対象となる論理アドレス、例えば、次番の論理アドレスを新たに選択し、アドレス変換テーブル19を参照し、有効フラグの値が「1」であるか否かを判定する。
また、巡回参照制御部17は、有効フラグの値が「1」である場合は、選択した論理アドレスと対応付けられた物理アドレスをアドレス変換テーブル19から取得する。そして、巡回参照制御部17は、管理情報テーブル20を参照し、取得した物理アドレスの上位ビットである物理ブロックアドレスと対応付けられたページバリッドとタイムスタンプとを確認する。
そして、巡回参照制御部17は、ウェアレベリングのための巡回参照制御を行っている場合は、確認したタイムスタンプの値と、タイマのカウント値との差分が所定の閾値よりも大きいか否かを判定する。すなわち、巡回参照制御部17は、タイムスタンプの値が所定の閾値よりも古いか否かを判定する。そして、巡回参照制御部17は、確認したタイムスタンプの値が所定の閾値よりも古いと判定した場合は、取得した物理アドレスが示す物理ページを移動処理の対象とする。一方、巡回参照制御部17は、タイムスタンプの値がが所定の閾値よりも新しいと判定した場合は、移動判定処理の対象となる論理アドレスを新たに1つ選択する。
また、巡回参照制御部17は、ガベージコレクションのための巡回参照制御を行っている場合は、確認したページバリッドの各ビットのうち、値が「1」となるビットの数を計数する。すなわち、巡回参照制御部17は、取得した物理アドレスが示す物理ページと同じ物理ブロック内に格納された有効データの数を計数する。そして、巡回参照制御部17は、計数した数が所定の閾値以下となる場合は、取得した物理アドレスが示す物理ページを移動処理の対象とする。一方、巡回参照制御部17は、計数した数が所定の閾値よりも多い場合は、移動判定処理の対象となる論理アドレスを新たに1つ選択する。
また、巡回参照制御部17は、取得した物理アドレスが示す物理ページを移動処理の対象とした場合は、以下の処理を実行する。まず、巡回参照制御部17は、取得したページバリッドの各ビットのうち、値が「1」となるビットの数が「1」であるか否かを判定する。そして、巡回参照制御部17は、取得したページバリッドの各ビットのうち、値が「1」となるビットの数が「1」であると判定した場合、すなわち、データの移動により物理ブロックが空になると判定した場合は、以下の処理を実行する。すなわち、巡回参照制御部17は、取得した物理アドレスと、選択した論理アドレスと、ブロックが空になる旨を示すラストフラグとの組をデータ移動制御部18に出力する。その後、巡回参照制御部17は、新たな移動判定処理の対象となる論理アドレスを選択する。
一方、巡回参照制御部17は、取得したページバリッドの各ビットのうち、値が「1」となるビットの数が「1」ではないと判定した場合は、取得した物理アドレスと、選択した論理アドレスとの組をデータ移動制御部18に出力する。その後、巡回参照制御部17は、新たな移動判定処理の対象となる論理アドレスを選択する。そして、巡回参照制御部17は、全ての論理アドレスについて移動判定処理を実行した場合は、処理を終了する。
データ移動制御部18は、データの移動を行う。具体的には、データ移動制御部18は、巡回参照制御部17から、論理アドレスと物理アドレスとの組、または、論理アドレスと物理アドレスとラストフラグとの組を受信する。ここで、データ移動制御部18は、論理アドレスと物理アドレスとの組を受信した場合は、以下の処理を実行する。
すなわち、データ移動制御部18は、受信した組に含まれる物理アドレスを移動元物理アドレスとし、移動元物理アドレスと、受信した組に含まれる論理アドレスとを含む移動要求をリクエスト調停部13に出力する。そして、データ移動制御部18は、リクエスト調停部13からデータの移動が完了した旨の応答を受信した場合は、受信した組に含まれる物理アドレスが示す物理ページのデータ移動処理を終了する。
一方、データ移動制御部18は、論理アドレスと物理アドレスとラストフラグとの組を巡回参照制御部17から受信した場合は、以下の処理を実行する。まず、データ移動制御部18は、受信した組に含まれる物理アドレスを移動元物理アドレスとし、移動元物理アドレスと、受信した組に含まれる論理アドレスとを含む移動要求をリクエスト調停部13に出力する。
そして、データ移動制御部18は、データの移動が完了した旨の応答を受信した場合は、受信した組に含まれる物理アドレスの上位ビットである物理ブロックアドレスを含む消去要求をリクエスト調停部13に出力する。その後、データ移動制御部18は、リクエスト調停部13からデータの消去が完了した旨の応答を受信した場合は、受信した組に含まれる物理アドレスが示す物理ページのデータ移動処理を終了する。なお、巡回参照制御部17、および、データ移動制御部18は、特許請求の範囲に記載の移動部の一例である。
なお、例えば、リクエスタインターフェース部12、リクエスト調停部13、テーブル制御部14、デバイスアクセス制御部15、予備カウンタ16a、候補カウンタ16b、判定部16c、巡回参照制御部17、データ移動制御部18とは、電子回路である。ここで、電子回路の例として、ASIC(Application Specific Integrated Circuit)やFPGA(Field Programmable Gate Array)などの集積回路、またはCPU(Central Processing Unit)やMPU(Micro Processing Unit)などを適用する。
また、テーブル記憶部11とは、RAM(Random Access Memory)、フラッシュメモリ(flash memory)などの半導体メモリ素子などの記憶装置である。
次に、図9を用いて、NANDコントローラ6aが実行する処理の一例について説明する。図9は、実施例1に係るNANDコントローラが実行する処理の一例を説明する図である。なお、図9に示す例では、図9に記載したNANDデバイス7aの物理ページのうち、斜線が引かれた物理ページについては、有効ではないデータが格納された物理ページであるものとする。また、図9に示す例ではNANDコントローラ6aは、有効データの数が2つ以下の物理ブロックに格納されたデータを移動対象とする。また、図9に示す例では、NANDコントローラ6aは、予備ブロックの数と移動候補ブロックの数とが一致した際に、巡回参照制御を開始するものとする。
例えば、NANDコントローラ6aは、図9中(H)に示すように、論理アドレス「L7−1」が示すデータの書込み要求を受信する。かかる場合は、NANDコントローラ6aは、図9中(I)に示すように、論理アドレス「L7−1」が示すデータを読出して更新し、図7中(J)に示すように、物理アドレス「P9−1」が示す予備ページに格納する。また、NANDコントローラ6aは、図9中(K)に示すように、管理情報テーブル20を更新する。
また、NANDコントローラ6aは、図9中(L)に示すように、管理情報テーブル20の更新内容に応じて、移動領域計測制御を行う。具体的には、図9に示す例では、NANDコントローラ6aは、物理ブロックアドレス「P3」が示す物理ブロック内の有効データの数が2以下となったため、移動候補ブロックの数を1つインクリメントする。
ここで、論理アドレス「L7−1」が示すデータを更新した場合は、物理ブロックアドレス「P3」、「P6」が示す「2」つの物理ブロックが移動候補ブロックとなり、物理ブロックアドレス「P10」、「P11」が示す予備ブロックの数「2」と一致する。このため、NANDコントローラ6aは、図9中(M)に示すように、ガベージコレクションのための巡回参照制御の実行を開始する。
例えば、NANDコントローラ6aは、論理アドレス「L0−1」を選択し、選択した論理アドレスが示すデータを移動させるか否かを判定する。ここで、論理アドレス「L0−1」が示すデータは、移動対象ブロックである物理ブロック「#3」に格納されている。このため、NANDコントローラ6aは、論理アドレス「L0−1」が示すデータを移動させると判定し、図9中(N)に示すように、論理アドレス「L0−1」が示すデータのデータ移動制御を実行する。この結果、NANDコントローラ6aは、図9中(O)に示すように、論理アドレス「L0−1」が示すデータを読出し、図9中(P)に示すように、読出したデータを物理アドレス「P9−2」が示す予備ページに移動させる。
また、NANDコントローラ6aは、論理アドレスの順にデータを移動させるか否かを判定し、移動させると判定したデータを順次予備ページに移動させる。そして、NANDコントローラ6aは、論理アドレス「L6−0」を選択し、選択した論理アドレスが示すデータを移動させるか否かを判定する。ここで、論理アドレス「L6−0」が示すデータは、移動対象ブロックである物理ブロック「#3」に格納されている。
このため、NANDコントローラ6aは、論理アドレス「L6−0」が示すデータを移動させると判定し、図9中(Q)に示すように、論理アドレス「L6−0」が示すデータのデータ移動制御を実行する。この結果、NANDコントローラ6aは、図9中(R)に示すように、論理アドレス「L6−0」が示すデータを読出し、図9中(S)に示すように、読出したデータを物理アドレス「P10−2」が示す予備ページに移動させる。また、NANDコントローラ6aは、図9中(T)に示すように、データの移動に応じて管理情報テーブル20を更新し、管理情報テーブル20の更新に応じて移動領域計測制御を行う。そして、NANDコントローラ6aは、全論理アドレスについてデータを移動させるか否かを判定した場合は、巡回参照制御を完了する。
また、NANDコントローラ6aは、図9中(V)に示すように、有効データをすべて移動させた物理ブロックのデータを消去し、新たな予備ブロックとする。そして、NANDコントローラ6aは、データの消去に応じて、管理情報テーブル20を更新する。また、NANDコントローラ6aは、図9中(X)に示すように、管理情報テーブル20に応じて移動領域計測制御を実行する。詳細には、NANDコントローラ6aは、予備ブロックの数を2つ加算し、移動候補ブロックの数を2つ減算する。
次に、図10を用いて、NANDコントローラ6aが実行する処理の流れについて説明する。図10は、実施例1に係るNANDコントローラが実行する処理の流れを説明するフローチャートである。なお、図10には、データの書込み要求を受信した際に、NANDコントローラ6aが実行する処理の流れについて記載した。
まず、NANDコントローラ6aは、データの書込み要求を受信すると、アドレス変換テーブル19を参照し(ステップS101)、データの論理アドレスと対応付けられた有効フラグが「1」であるか否かを判定する(ステップS102)。そして、NANDコントローラ6aは、有効フラグが「1」である場合は(ステップS102肯定)、以下の処理を実行する。すなわち、NANDコントローラ6aは、対応する物理アドレスをアドレス変換テーブル19から取得し(ステップS103)、取得した物理アドレスが示す物理ページにリード要求を発行する(ステップS104)。
続いて、NANDコントローラ6aは、読出したデータを上書きデータで更新し(ステップS105)、管理情報テーブルを更新する(ステップS106)。詳細には、NANDコントローラ6aは、データが格納されていた物理ページと対応するページバリッドを「0」に更新し、データが格納されていた物理ページを無効化する。ここで、NANDコントローラ6aは、無効化した物理ページを含む物理ブロックが、移動候補ブロックになったか否かを判定する(ステップS107)。そして、NANDコントローラ6aは、無効化した物理ページを含む物理ブロックが、移動候補ブロックになったと判定した場合は、(ステップS107肯定)、候補カウンタ16bの計数値を1つインクリメントする(ステップS108)。
また、NANDコントローラ6aは、ステップS105にて更新したデータを予備ページに書込む(ステップS109)。そして、NANDコントローラ6aは、管理情報テーブル20を更新する(ステップS110)。具体的には、NANDコントローラ6aは、データを書込んだ予備ページと対応するページバリッドを「1」に更新する。
ここで、NANDコントローラ6aは、データを書込んだ予備ページが予備ブロック内の先頭ページであるか否かを判定する(ステップS111)。そして、NANDコントローラ6aは、データを書込んだ予備ページが予備ブロック内の先頭ページである場合は(ステップS111肯定)、予備カウンタ16aの計数値を1つデクリメントする(ステップ112)。その後、NANDコントローラ6aは、アドレス変換テーブル19を更新し(ステップS113)、処理を終了する。
一方、NANDコントローラ6aは、有効フラグが「0」である場合は(ステップS102否定)、ステップS109を実行する。また、NANDコントローラ6aは、無効化した物理ページを含む物理ブロックが、移動候補ブロックにならなかったと判定した場合は、(ステップS107否定)、ステップS108をスキップし、ステップS109を実行する。また、NANDコントローラ6aは、データを書込んだ予備ページが予備ブロック内の先頭ページではない場合は(ステップS111否定)、ステップS112をスキップし、ステップS113を実行する。
次に、図11を用いて、NANDコントローラ6aがガベージコレクションのための巡回参照制御を開始するか否かを判定する処理の流れについて説明する。図11は、実施例1に係るNANDコントローラが巡回参照制御を行うか判定する処理の流れを説明するフローチャートである。例えば、NANDコントローラ6aは、予備カウンタ16aの計数値、および、候補カウンタ16bの計数値が更新されるまで待機する(ステップS201)。そして、NANDコントローラ6aは、予備カウンタ16aの計数値と候補カウンタ16bの計数値とが一致するか否かを判定する(ステップS202)。
また、NANDコントローラ6aは、予備カウンタ16aの計数値と候補カウンタ16bの計数値とが一致すると判定した場合は(ステップS202肯定)、ガベージコレクションのための巡回参照制御を開始する(ステップS203)。その後、NANDコントローラ6aは、巡回参照制御が完了するまで、データの書込み要求や読出し要求等の実行を待機し(ステップS204)、処理を終了する。一方、NANDコントローラ6aは、予備カウンタ16aの計数値と候補カウンタ16bの計数値とが一致すると判定しなかった場合は(ステップS202否定)、ステップS201を実行する。
次に、図12を用いて、NANDコントローラ6aが物理ブロックのデータを消去する際に実行する処理の流れを説明する。図12は、実施例1に係るNANDコントローラがデータ消去時に実行する処理の流れを説明するフローチャートである。まず、NANDコントローラ6aは、データの更新や移動が行われた場合は、管理情報テーブル20を参照する(ステップS301)。そして、NANDコントローラ6aは、データの更新元、あるいは、データの移動元となる物理ブロックに有効なデータが格納された物理ページが存在しないか判定する(ステップS302)。
また、NANDコントローラ6aは、有効なデータが格納された物理ページが存在しないと判定した場合は(ステップS302肯定)、物理ブロックのデータを消去し(ステップS303)、管理情報テーブル20を更新する(ステップS304)。すなわち、NANDコントローラ6aは、データを消去した物理ブロックを予備ブロックとする。また、NANDコントローラ6aは、候補カウンタ16bの計数値を1つデクリメントし(ステップS305)、予備カウンタ16aの計数値を1つインクリメントして(ステップS306)、処理を終了する。一方、NANDコントローラ6aは、データの移動元となる物理ブロックに有効なデータが格納された物理ページが存在すると判定した場合は(ステップS302否定)、そのまま処理を終了する。
[NANDコントローラ6aの効果]
上述したように、NANDコントローラ6aは、複数の物理ページを含む物理ブロックのうち、書込まれたデータが無効とされた物理ページを含む移動候補ブロックの数を計数する。また、NANDコントローラ6aは、各物理ページにデータが書込まれていない予備ブロックの数を計数する。そして、NANDコントローラ6aは、移動候補ブロックの数と予備ブロックの数との比較結果に応じて、移動候補ブロックから予備ブロックへデータを移動させる巡回参照制御を開始するか否かを判定する。その後、NANDコントローラ6aは、巡回参照制御を開始すると判定した場合は、移動候補ブロックの各物理ページに書込まれたデータのうち、有効データのみを予備ブロックに移動させる。
このため、NANDコントローラ6aは、NANDデバイス7a〜10aに対するアクセス性能を向上させることができる。また、NANDコントローラ6aは、論理アドレスごとにデータの移動を判定し、物理ページ単位でデータの移動を行う場合でも、ガベージコレクション処理等の移動処理を確実に完了させることができる。
また、NANDコントローラ6aは、予備ブロックの数から移動候補ブロックの数を減算した値が所定の閾値以下となった場合は、巡回参照制御を開始すると判定する。このため、NANDコントローラ6aは、先取り的にデータの移動を実行する結果、予備ブロックの確保や平準化を確実に行うので、NANDデバイス7a〜10aの記憶容量を効率的に使用することができる。
また、NANDコントローラ6aは、更新前のデータが無効化される際に、更新前のデータが書込まれた物理ブロックに含まれる物理ページのうちデータが無効とされた物理ページの数が所定の閾値を超えた場合は、計測中の移動候補ブロックの数に1を加算する。このため、NANDコントローラ6aは、データの移動によって発生した移動候補ブロックの数を確実に計数することができる。
また、NANDコントローラ6aは、予備ブロックに含まれる物理ページのうち、物理ページ番号が先頭となる物理ページにデータが書込まれた場合は、計数中の予備ブロックの数から1を減算する。このため、NANDコントローラ6aは、予備ブロックの数を確実に計数することができる。
また、NANDコントローラ6aは、移動候補ブロックの各物理ページに書込まれたデータのうち、全ての有効データを予備ブロックの物理ページに移動させた場合は、移動候補ブロックの各物理ページに書込まれたデータを消去する。また、NANDコントローラ6aは、移動候補ブロックの各物理ページに書込まれたデータを消去した場合は、計測中の移動候補ブロックの数から1を減算し、計測中の予備ブロックの数に1を加算する。このため、NANDコントローラ6aは、ガベージコレクション処理による移動候補ブロックの数と予備ブロックの数との変動を計数値に反映させることができる。
また、NANDコントローラ6aは、巡回参照制御を開始した場合は、論理アドレスを選択し、選択した論理アドレスが示すデータが移動候補ブロックに含まれる物理ページに書込まれているか判定する。そして、NANDコントローラ6aは、選択した論理アドレスが示すデータが移動候補ブロックに含まれる物理ページに書込まれている場合は、選択した論理アドレスが示すデータを予備ブロックに含まれる物理ページに移動させる。
このように、NANDコントローラ6aは、物理ページ単位でデータの移動を実行するので、ガベージコレクション処理やウェアレベリング処理に要する時間を短縮できる。このため、NANDコントローラ6aは、NANDコントローラ7a〜10aに対するアクセス性能を向上させることができる。
また、NANDコントローラ6aは、論理アドレスを起点としてデータ移動制御を実行する。このため、NANDコントローラ6aは、物理アドレスを論理アドレスに逆変換する手段を有さずとも、アドレス変換テーブル19の更新を実行することができる。この結果、NANDコントローラ6aは、回路規模を減少させることができる。
上述したNANDコントローラ6aは、移動候補ブロックの数と予備ブロックの数とが等しくなった場合に、ガベージコレクションのための巡回参照制御を開始して予備ブロックを確保した。しかしながら、実施例はこれに限定されるものではない。例えば、巡回参照制御を実行中に、情報処理装置1が実行するシステムの書込み要求を実行する場合は、予備ブロックの枯渇が発生する場合がある。しかしながら、巡回参照制御を実行中に書込み要求の実行を停止すると、一時的にNANDコントローラ7a〜10aへのアクセスができなくなり、アクセス性能が劣化する。また、巡回参照制御を実行中に書込み要求がタイムアウトし、エラーが発生する場合がある。
そこで、実施例2に係るNANDコントローラ6cは、移動候補ブロックの数と予備ブロックの数とに応じて、NANDデバイス7a〜10aに対する書込み要求の実行頻度を制限するスロットリング制御を実行する。この結果、NANDコントローラ6cは、移動候補ブロックの数に対して予備ブロックの数が少なくなると、徐々にデータ書込みの速度が低下するので、急激な性能低下を防ぐことができる。
以下、NANDコントローラ6cの一例について説明する。まず、図13を用いて、NANDコントローラ6cが有する機能構成の一例について説明する。図13は、実施例2に係るNANDコントローラの機能構成を説明する図である。なお、図13に示すNANDコントローラ6cの機能構成のうち、図6に示すNANDコントローラ6aの機能構成と同様の機能構成については、同一の符号を付し、説明を省略する。
図13に示すように、NANDコントローラ6cは、リクエスタインターフェース部12a、移動領域計測部16dを有する。また、移動領域計測部16dは、判定部16eを有する。リクエスタインターフェース部12aは、図6に示すリクエスタインターフェース部12と同様の機能を発揮する。また、リクエスタインターフェース部12aは、判定部16eから指示される頻度で、書込み要求を発行する。
例えば、リクエスタインターフェース部12aは、I/Oハブ4を解して受信した書込み要求を、一旦バッファに格納する。そして、リクエスタインターフェース部12aは、判定部16eから指示された頻度で、バッファに格納した書込み要求を読出し、読出した書込み要求をリクエスト調停部13に発行する。また、リクエスタインターフェース部12aは、判定部16eから書込み要求の発行を停止するよう指示された場合は、書込み要求をバッファから読み出さずに待機する。
判定部16eは、図6に示す判定部16cと同様の機能を発揮する。すなわち、判定部16eは、予備カウンタ16aの計数値から候補カウンタ16bの計数値を減算した値を算出する。そして、判定部16eは、算出した値が所定の閾値以下であるか否かを判定し、算出した値が所定の閾値以下である場合は、巡回参照制御部17にガベージコレクションのための巡回参照制御の実行を指示する。
また、判定部16eは、巡回参照制御の実行を指示した後も、予備カウンタ16aの計数値から候補カウンタ16bの計数値を減算した値を算出する。そして、判定部16eは、算出した値に応じて、リクエスタインターフェース部12aに対し、書込み要求の発行頻度を抑制するよう指示する。詳細には、判定部16eは、算出した値が減少するほど、書込み要求の発行頻度も抑制されるよう指示する。
以下、図14を用いて、書込み要求の発行頻度を抑制する処理の一例について説明する。図14は、発行頻度を抑制する処理の一例を説明する図である。なお、図14には、予備ブロックの数から移動候補ブロックの数を減算した値である予備ブロックの余裕数と、書込み要求の発行頻度とを対応付けて記載した。なお、図14に示す例では、NANDデバイス7a〜10aは、例えば、10万個ほどの物理ブロックを有する例について記載した。
例えば、判定部16eは、巡回参照制御の実行を指示した後、予備ブロックの余裕数が「1001」以上である場合は、書込み要求の発行頻度を制限しない。一方、判定部16eは、巡回参照制御の実行を指示した後、予備ブロックの余裕数が「501」以上「1000」以下である場合は、「10ms(ミリセカンド)」ごとに「1」つの書込み要求を発行するようリクエスタインターフェース部12aに指示する。
また、判定部16eは、巡回参照制御の実行を指示した後、予備ブロックの余裕数が「201」以上「500」以下である場合は、「50ms(ミリセカンド)」ごとに「1」つの書込み要求を発行するようリクエスタインターフェース部12aに指示する。また、判定部16eは、巡回参照制御の実行を指示した後、予備ブロックの余裕数が「1」以上「200」以下である場合は、「100ms(ミリセカンド)」ごとに「1」つの書込み要求を発行するようリクエスタインターフェース部12aに指示する。また、判定部16eは、巡回参照制御の実行を指示した後、予備ブロックの余裕数が「0」となった場合は、書込み要求の発行を停止するようリクエスタインターフェース部12aに指示する。
このように、NANDコントローラ6cは、予備ブロックの余裕数に応じて、書込み要求の発行頻度を抑制する。この結果、NANDコントローラ6cは、NANDデバイス7a〜10aに対する書込みが突然停止してしまうような制御を防ぎ、急激な性能低下を防ぐことができる。このため、例えば、情報処理装置1は、NANDデバイス7a〜10aに対する書込み性能に応じてデータの書込み先を変更するようなシステムを実行した場合は、システム全体のデータ書込み性能を悪化させることなく、データ移動制御を実行できる。
なお、NANDコントローラ6cは、巡回参照制御開始時に書込み要求の発行頻度を突然抑制しないように、書込み要求の発行頻度を抑制する前段階で巡回参照制御を実行するのが望ましい。例えば、図14に示す例では、NANDコントローラ6cは、例えば、予備カウンタ16aの計数値から候補カウンタ16bの計数値を減算した値が「2000」以下となった際に、巡回参照制御の実行を指示すればよい。すなわち、NANDコントローラ6cは、巡回参照制御を開始してもなお、予備ブロックの余裕数が減少する際に、書込み要求の発行頻度を制限する。
次に、図15を用いて、NANDコントローラ6cが実行する処理の流れについて説明する。図15は、実施例2に係るNANDコントローラが実行する処理の流れを説明するフローチャートである。まず、NANDコントローラ6cは、予備カウンタ16aの計数値、および、候補カウンタ16bの計数値が更新されるまで待機する(ステップS401)。また、NANDコントローラ6cは、予備カウンタ16aの計数値から候補カウンタ16bの計数値を減算した値を計算する(ステップS402)。
そして、NANDコントローラ6cは、計算値が所定の閾値「M」以下となるか否かを判定する。ここで、NANDコントローラ6cは、計算値が所定の閾値「M」以下となる場合は、(ステップS403肯定)、ガベージコレクションのための巡回参照制御を開始する(ステップS404)。また、NANDコントローラ6cは、巡回参照制御の実行と平行して以下の処理を実行する。すなわち、NANDコントローラ6cは、予備カウンタ16aの計数値、および、候補カウンタ16bの計数値が更新されるまで待機する(ステップS405)。また、NANDコントローラ6cは、予備カウンタ16aの計数値から候補カウンタ16bの計数値を減算した値を計算する(ステップS406)。
そして、NANDコントローラ6cは、計算値が「0」であるか否かを判定し(ステップS407)、計算値が「0」である場合は(ステップS407肯定)、書込み要求の発行を停止する(ステップS408)。また、NANDコントローラ6cは、巡回参照制御が完了したか判定し(ステップS409)、巡回参照制御が完了した場合は(ステップS409肯定)、処理を終了する。また、NANDコントローラ6cは、巡回参照制御が完了していない場合は(ステップS409否定)、ステップS405を実行する。
一方、NANDコントローラ6cは、計算値が「0」ではない場合は(ステップS407否定)、計算値が所定の閾値「N」以下となるか否かを判定する(ステップS410)。ここで、閾値「N」は、閾値「M」以下の値を取るものとする。そして、NANDコントローラ6cは、計算値が所定の閾値「N」以下となる場合は、(ステップS410肯定)、書込み要求の発行頻度を計算値に応じて制限し(ステップS411)、ステップS409を実行する。
また、NANDコントローラ6cは、計算値が所定の閾値「N」より大きい場合は(ステップS410否定)、書込み要求の発行頻度の制限を解除し(ステップS412)、ステップS409を実行する。なお、NANDコントローラ6cは、ステップS402における計算値が所定の閾値「M」より大きい場合は(ステップS403否定)、ステップS401を実行する。
[NANDコントローラ6cの効果]
上述したように、NANDコントローラ6cは、予備ブロックの数と移動候補ブロックの数との比較結果に応じて、NANDデバイス7a〜10aに対する書込み要求の発行頻度を変更する。このため、NANDコントローラ6cは、NANDデバイス7a〜10aに対する書込みが突然停止してしまうような制御を防ぎ、急激な性能低下を防ぐことができる。
また、NANDコントローラ6cは、予備ブロックの数と移動候補ブロックの数とが一致する場合は、NANDデバイス7a〜10aに対する書込み要求の発行を停止する。このため、NANDコントローラ6cは、データの移動を確実に行うことができる。
また、NANDコントローラ6cは、予備ブロックの数から移動候補ブロックの数を減算した値が所定の閾値以下である場合は、NANDデバイス7a〜10aに対する書込み要求の発行頻度を所定の閾値よりも低くする。このため、NANDコントローラ6cは、予備ブロックの余裕数に応じて、NANDデバイス7a〜10aに対する書込み性能を徐々に抑止させることができる。
これまで本発明の実施例について説明したが実施例は、上述した実施例以外にも様々な異なる形態にて実施されてよいものである。そこで、以下では実施例3として本発明に含まれる他の実施例を説明する。
(1)データ移動の粒度について
上述したNANDコントローラ6a〜6cは、NANDデバイス7a〜10aが有する論理アドレスごとに、データを移動させるか否かを判定した。しかしながら、実施例はこれに限定されるものではない。すなわち、NANDコントローラ6a〜6cは、論理アドレスを起点としてデータの移動を行うか否かを判定するのであれば、任意の単位でデータの移動を行うか否かを判定することができる。例えば、NANDコントローラ6a〜6cは、複数の論理アドレスが示すデータをひとまとめにして、巡回参照制御や移動制御を行ってもよい。
(2)アドレス変換テーブルと管理情報テーブルとの読出しについて
上述した巡回参照制御部17は、アドレス変換テーブル19と管理情報テーブル20との全エントリの読出しを行った。しかし、実施例はこれに限定されるものではない。例えば、巡回参照制御部17は、論理アドレスを1つ生成し、リクエスト調停部13、テーブル制御部14を介して、生成した論理アドレスと対応付けられた物理アドレスを取得する。そして、巡回参照制御部17は、取得した物理アドレスから物理ブロックアドレスを抽出し、リクエスト調停部13、テーブル制御部14を介して、抽出した物理ブロックアドレスと対応付けられたタイムスタンプとページバリッドとを取得する。その後、巡回参照制御部17は、取得したタイムスタンプとページバリッドとを用いて、データの移動を判定する。
このように、巡回参照制御部17は、アドレス変換テーブル19や管理情報テーブル20に格納された情報を1エントリずつ参照してもよい。また、巡回参照制御部17は、リクエスト調停部13、テーブル制御部14を介さず、テーブル記憶部11に格納されたアドレス変換テーブル19と管理情報テーブル20とに直接アクセスしてもよい。
(3)NANDコントローラ6a〜6cの機能構成について
上述したNANDコントローラ6a〜6cの機能構成は、あくまで一例であり、NANDコントローラ6a〜6cとして同様の処理を実行できるのであれば、任意の構成を採用することができる。例えば、NANDコントローラ6aは、巡回参照制御部17とデータ移動制御部18との機能を有する移動制御部を有してもよい。また、NANDコントローラ6aは、移動領域計測部16と巡回参照制御部17との機能を有する移動制御部を有してもよい。
なお、上述した例では、NANDコントローラ6a〜6cがNANDデバイス7a〜10aに格納されたデータの移動を判定する処理について記載した。しかしながら、実施例はこれに限定されるものではない。すなわち、NANDコントローラ6a〜6cは、データの移動を行うのであれば、任意の技術が適用された記憶媒体、例えばメモリ等のメモリコントローラとして動作してもよい。
(4)リクエストの調停について
上述したNANDコントローラ6a〜6cは、リクエスタインターフェース部12から受信する読出し要求や書込み要求を優先して実行した。しかし、実施例はこれに限定されるものではなく、NANDコントローラ6a〜6cは、NANDデバイス7a〜10aの各セルの寿命が平準化するように、各リクエストの調停を行ってもよい。
(5)予備ブロックについて
上述したテーブル制御部14は、データが格納されていない予備ブロックをデータの移動先とした。しかしながら、実施例はこれに限定されるものではない。例えば、テーブル制御部14は、データが格納されていないブロックのうち、最も余命が長いブロックを識別する。そして、テーブル制御部14は、識別したブロックを示す物理ブロックアドレスをリクエスト調停部13に通知してもよい。かかる処理を実行した場合は、NANDコントローラ6a〜6cは、NANDデバイス7a〜10aが有する各ブロックのセルの劣化を平準化し、寿命を使いきることができる。
(6)移動対象となるデータについて
上述したNANDコントローラ6a〜6cは、移動判定の対象となるデータが格納された物理ブロックのタイムスタンプが所定の閾値よりも古い場合、または、物理ブロック内の有効データの数が所定の閾値よりも少ない場合は、データの移動を行った。しかしながら、実施例はこれに限定されるものではない。すなわち、NANDコントローラ6a〜6cは、任意の情報、または、任意の条件を用いて、データの移動を判定してよい。例えば、NANDコントローラ6a〜6cは、NANDデバイス7a〜10aの空き容量が少なく、かつ、物理ブロック内の有効データの数が所定の閾値よりも少ない場合は、データの移動を行ってもよい。
(7)閾値について
上述したNANDコントローラ6aは、データの更新により更新元のデータが無効化され、物理ブロックに含まれる有効データの数が所定の閾値よりも小さくなった場合は、計数中の移動候補ブロックの数を1つ加算した。つまり、NANDコントローラ6aは、有効データの数が所定の閾値よりも小さくなった物理ブロックを移動候補ブロックとした。ここで、NANDコントローラ6aは、かかる所定の閾値を1つの物理ブロック内に含まれる物理ページ数と同じ値に設定してもよい。
つまり、NANDコントローラ6aは、1つでもデータが無効化された物理ブロックを移動候補ブロックとする。この結果、NANDコントローラ6aは、データの移動が発生する恐れのある物理ブロックの数を計数することとなるので、巡回参照制御を先取り的に開始することができる。
また、NANDコントローラ6aは、実際にデータを移動させる物理ブロックに含まれる有効データの数と、移動候補ブロックに含まれる有効データの数とを一致させる必要はない。例えば、NANDコントローラ6aは、1つでも無効なデータが含まれる物理ブロックを移動候補ブロックとし、巡回参照制御時には、2つ以上の無効なデータが含まれる物理ブロックからデータの移動を行ってもよい。
なお、上述した各種閾値は、あくまで一例であり、情報処理装置1の構成に応じて、任意の閾値を設定することができる。また、上述した各種閾値は、情報処理装置1の外部から変更可能な閾値とすることも可能である。また、例えば、NANDコントローラ6aは、時間帯やシステムからの書込み要求の頻度に応じて、可変としてもよい。
(8)巡回参照制御時のガベージコレクションとウェアレベリングの区別について
上述したNANDコントローラ6a〜6cは、ガベージコレクションを目的とする巡回参照制御とウェアレベリングを目的とする巡回参照制御を区別し、それぞれの条件で物理ページを移動処理の対象とするかを判定した。しかしながら、実施例はこれに限定されるものではない。例えば、上述したNANDコントローラ6a〜6cは、所定の時間が経過した場合やソフトウェアからの指示を受けた場合にガベージコレクションとウェアレベリングを同時に実行する巡回参照制御を行い、判定部16cから巡回参照制御の実行を指示された場合にガベージコレクションのみを目的とする巡回参照制御を行ってもよい。また、ガベージコレクションとウェアレベリングを同時に実行する巡回参照制御を行っている最中に判定部16cから巡回参照制御の実行を指示された場合に、ガベージコレクションのみを目的とする巡回参照制御に切り替える制御を行ってもよい。
(9)プログラム
上記の実施例で説明したNANDコントローラ6a〜6cが発揮する機能は、予め用意された制御プログラムをNANDコントローラ内の演算処理装置が実行することで実現してもよい。そこで、以下では、図16を用いて、上記のNANDコントローラ6aと同様の機能を有する制御プログラムを実行するコンピュータの一例について説明する。
図16は、制御プログラムを実行するNANDコントローラの一例を説明する図である。図16に示すように、NANDコントローラ6dは、CPU40、デバイスアクセス制御部15を有する。また、CPU40は、メモリデバイス11aと接続される。なお、メモリデバイス11aは、NANDコントローラ6dに内蔵されるメモリであってもよい。
メモリデバイス11aには、予備カウンタ16a、候補カウンタ16b、アドレス変換テーブル19、管理情報テーブル20があらかじめ記憶される。ここで、CPU40が制御プログラム30を読出して展開して実行することにより、制御プログラム30は、以下の様に機能する。すなわち、制御プログラム30は、CPU40をテーブル制御部31、リクエスト調停部32、巡回参照制御部33、データ移動制御部34、移動領域計測部35として動作させる。ここで、テーブル制御部31、リクエスト調停部32、巡回参照制御部33、データ移動制御部34は、図6に示すテーブル制御部14、リクエスト調停部13、巡回参照制御部17、データ移動制御部18と同様の機能を発揮する。また、移動領域計測部35は、図6に示す移動領域計測部16と同様の機能を発揮する。
なお、NANDコントローラ6dは、CPUではなく、例えばMPUやFPGA等の演算装置を用いて制御プログラム30を実行してもよい。また、上記の制御プログラム30については、例えば、メモリデバイス11aや、NANDデバイス7a〜10aに記憶させてもよいし、他の方法でCPU40に実行させてもよい。例えば、フレキシブルディスク、いわゆるFD(Flexible Disk)、CD(Compact Disk)−ROM、DVD(Digital Versatile Disk)、光磁気ディスク、ICカードなどの「可搬用の物理媒体」に各プログラムを記憶させる。
そして、NANDコントローラ6dが各CPU3a、3bを介して、これらの可搬用の物理媒体から各プログラムを取得して実行するようにしてもよい。また、公衆回線、インターネット、LAN、WAN(Wide Area Network)などを介して他のコンピュータまたはサーバ装置などに記憶させた各プログラムを取得して実行するようにしてもよい。
1 情報処理装置
2a、2b メモリ
3a、3b、40 CPU
4 I/Oハブ
5a、5b SSD
6a〜6d NANDコントローラ
7a〜10a、7b〜10b NANDデバイス
11 テーブル記憶部
12、12a リクエスタインターフェース部
13、32 リクエスト調停部
14、31 テーブル制御部
15 デバイスアクセス制御部
16、16d、35 移動領域計測部
16a 予備カウンタ
16b 候補カウンタ
16c、16e 判定部
17、33 巡回参照制御部
18、34 データ移動制御部
19 アドレス変換テーブル
20 管理情報テーブル
30 制御プログラム

Claims (12)

  1. 複数の記憶領域を含む記憶装置と、
    複数の記憶領域を含むブロックのうち、書込まれたデータが無効とされた記憶領域を含む移動候補ブロックの数を計数する第1の計数部と、
    前記ブロックのうち、各記憶領域にデータが書込まれていない予備ブロックの数を計数する第2の計数部と、
    前記第1の計数部の計数値と前記第2の計数部の計数値との比較結果に応じて、前記移動候補ブロックから前記予備ブロックへデータを移動させる移動処理を開始するか否かを判定する判定部と、
    前記判定部が前記移動処理を開始すると判定した場合は、前記移動候補ブロックの各記憶領域に書込まれたデータのうち、有効なデータのみを前記予備ブロックに移動させる移動部と
    を有することを特徴とする情報処理装置。
  2. 前記判定部は、前記第2の計数部の計数値から前記第1の計数部の計数値を減算した値が所定の閾値以下となった場合は、前記移動処理を開始すると判定することを特徴とする請求項1に記載の情報処理装置。
  3. 前記第1の計数部は、データの更新に伴って更新前のデータが無効化された際に、前記更新前のデータが書込まれたブロックに含まれる記憶領域のうち書込まれたデータが無効とされた記憶領域の数が所定の閾値を超えた場合は、計数値に1を加算することを特徴とする請求項1または2に記載の情報処理装置。
  4. 前記第2の計数部は、前記予備ブロックに含まれる記憶領域のうち先頭となる記憶領域にデータが書込まれた場合は、計数値から1を減算することを特徴とする請求項1−3のいずれか1つに記載の情報処理装置。
  5. 前記移動部は、前記移動候補ブロックの各記憶領域に書込まれたデータのうち、全ての有効なデータを前記予備ブロックに移動させた場合は、前記移動候補ブロックの各記憶領域に書込まれたデータを消去し、
    前記第1の計数部は、前記移動部が前記移動候補ブロックの各記憶領域に書込まれたデータを消去した場合は、計数値から1を減算し、
    前記第2の計数部は、前記移動部が前記移動候補ブロックの各記憶領域に書込まれたデータを消去した場合は、計数値に1を加算する
    ことを特徴とする請求項1−4のいずれか1つに記載の情報処理装置。
  6. 前記第1の計数部の計数値と前記第2の計数部の計数値との比較結果に応じて、前記記憶装置に対してデータを書込む処理の実行頻度を変更する書込部を有することを特徴とする請求項1−5のいずれか1つに記載の情報処理装置。
  7. 前記書込部は、前記第1の計数部の計数値と前記第2の計数部の計数値とが一致する場合は、前記記憶装置に対してデータを書込む処理を停止することを特徴とする請求項6に記載の情報処理装置。
  8. 前記書込部は、前記第2の計数部の計数値から前記第1の計数部の計数値を減算した値が所定の閾値以下である場合は、前記記憶装置に対してデータを書込む処理の実行頻度を所定の頻度よりも低くすることを特徴とする請求項6または7に記載の情報処理装置。
  9. 前記移動部は、データを識別する論理アドレスを選択し、選択した論理アドレスが示すデータが前記移動候補ブロックに含まれる記憶領域に格納されているか否かを判定し、前記データが前記移動候補ブロックに含まれる記憶領域に格納されていると判定した場合は、当該データを前記予備ブロックに含まれる記憶領域に移動させることを特徴とする請求項1−8のいずれか1つに記載の情報処理装置。
  10. 記憶装置に含まれる複数の記憶領域のうち一部の記憶領域を含んだブロックのうち、書込まれたデータが無効とされた記憶領域を含む移動候補ブロックの数を計数する第1の計数部と、
    前記ブロックのうち、各記憶領域にデータが書込まれていない予備ブロックの数を計数する第2の計数部と、
    前記第1の計数部の計数値と前記第2の計数部の計数値との比較結果に応じて、前記移動候補ブロックから前記予備ブロックへデータを移動させる移動処理を開始するか否かを判定する判定部と、
    前記判定部が前記移動処理を開始すると判定した場合は、前記移動候補ブロックの各記憶領域に書込まれたデータのうち、有効なデータのみを前記予備ブロックに移動させる移動部と
    を有することを特徴とする制御回路。
  11. コンピュータに、
    記憶装置に含まれる複数の記憶領域のうち一部の記憶領域を含んだブロックのうち、書込まれたデータが無効とされた記憶領域を含む移動候補ブロックの数を計数し、
    前記ブロックのうち、各記憶領域にデータが書込まれていない予備ブロックの数を計数し、
    前記移動候補ブロックの数と前記予備ブロックの数との比較結果に応じて、前記移動候補ブロックから前記予備ブロックへデータを移動させる移動処理を開始するか否かを判定し、
    前記移動処理を開始すると判定した場合は、前記移動候補ブロックの各記憶領域に書込まれたデータのうち、有効なデータのみを前記予備ブロックに移動させる
    処理を実行させることを特徴とする制御プログラム。
  12. 情報処理装置が、
    記憶装置に含まれる複数の記憶領域のうち一部の記憶領域を含んだブロックのうち、書込まれたデータが無効とされた記憶領域を含む移動候補ブロックの数を計数し、
    前記ブロックのうち、各記憶領域にデータが書込まれていない予備ブロックの数を計数し、
    前記移動候補ブロックの数と前記予備ブロックの数との比較結果に応じて、前記移動候補ブロックから前記予備ブロックへデータを移動させる移動処理を開始するか否かを判定し、
    前記移動処理を開始すると判定した場合は、前記移動候補ブロックの各記憶領域に書込まれたデータのうち、有効なデータのみを前記予備ブロックに移動させる
    処理を実行することを特徴とする制御方法。
JP2013127040A 2013-06-17 2013-06-17 情報処理装置、制御回路、制御プログラム、および制御方法 Pending JP2015001909A (ja)

Priority Applications (3)

Application Number Priority Date Filing Date Title
JP2013127040A JP2015001909A (ja) 2013-06-17 2013-06-17 情報処理装置、制御回路、制御プログラム、および制御方法
US14/280,715 US20140372673A1 (en) 2013-06-17 2014-05-19 Information processing apparatus, control circuit, and control method
EP14169085.9A EP2816482A1 (en) 2013-06-17 2014-05-20 Information processing apparatus, control circuit, and control method

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2013127040A JP2015001909A (ja) 2013-06-17 2013-06-17 情報処理装置、制御回路、制御プログラム、および制御方法

Publications (1)

Publication Number Publication Date
JP2015001909A true JP2015001909A (ja) 2015-01-05

Family

ID=50732055

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2013127040A Pending JP2015001909A (ja) 2013-06-17 2013-06-17 情報処理装置、制御回路、制御プログラム、および制御方法

Country Status (3)

Country Link
US (1) US20140372673A1 (ja)
EP (1) EP2816482A1 (ja)
JP (1) JP2015001909A (ja)

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2018049522A (ja) * 2016-09-23 2018-03-29 東芝メモリ株式会社 メモリシステム及び制御方法
KR20180076425A (ko) * 2016-12-27 2018-07-06 에스케이하이닉스 주식회사 컨트롤러 및 컨트롤러의 동작 방법
JP2019106174A (ja) * 2017-12-14 2019-06-27 インテル・コーポレーション 記憶デバイスにおけるシステムタイムスタンプを用いたバックグラウンドデータ・リフレッシュ
JP2020154853A (ja) * 2019-03-20 2020-09-24 日立オートモティブシステムズ株式会社 電子制御装置

Families Citing this family (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9880743B1 (en) * 2016-03-31 2018-01-30 EMC IP Holding Company LLC Tracking compressed fragments for efficient free space management
US20180157557A1 (en) * 2016-12-02 2018-06-07 Intel Corporation Determining reboot time after system update
CN108509349B (zh) * 2017-02-27 2022-10-14 得一微电子股份有限公司 一种nand flash的数据源区块回收方法及固态硬盘
CN109376095B (zh) * 2018-12-04 2023-06-13 中国航空工业集团公司西安航空计算技术研究所 一种基于flash区域地址映射机制的垃圾回收方法
US11288007B2 (en) * 2019-05-16 2022-03-29 Western Digital Technologies, Inc. Virtual physical erase of a memory of a data storage device

Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20100115188A1 (en) * 2008-11-06 2010-05-06 Chun-Kun Lee Method for managing a memory apparatus, and associated memory apparatus thereof
US20110202578A1 (en) * 2010-02-16 2011-08-18 Kabushiki Kaisha Toshiba Semiconductor memory device
JP2011159044A (ja) * 2010-01-29 2011-08-18 Toshiba Corp 不揮発性メモリのコントローラ及び不揮発性メモリの制御方法
JP2012068765A (ja) * 2010-09-21 2012-04-05 Tdk Corp メモリコントローラ及びメモリコントローラを備えるフラッシュメモリシステム、並びにフラッシュメモリの制御方法
JP2012141946A (ja) * 2010-12-16 2012-07-26 Toshiba Corp 半導体記憶装置
US20120254513A1 (en) * 2011-04-04 2012-10-04 Hitachi, Ltd. Storage system and data control method therefor
JP2013030081A (ja) * 2011-07-29 2013-02-07 Toshiba Corp データ記憶装置、メモリ制御装置及びメモリ制御方法

Family Cites Families (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP3251968B2 (ja) 1992-01-20 2002-01-28 富士通株式会社 半導体記憶装置
US5915129A (en) * 1994-06-27 1999-06-22 Microsoft Corporation Method and system for storing uncompressed data in a memory cache that is destined for a compressed file system
US6621746B1 (en) * 2002-02-27 2003-09-16 Microsoft Corporation Monitoring entropic conditions of a flash memory device as an indicator for invoking erasure operations
JP2008146253A (ja) 2006-12-07 2008-06-26 Sony Corp 記憶装置およびコンピュータシステム、並びに記憶装置のデータ処理方法
US8554983B2 (en) * 2008-05-27 2013-10-08 Micron Technology, Inc. Devices and methods for operating a solid state drive
US8327066B2 (en) * 2008-09-30 2012-12-04 Samsung Electronics Co., Ltd. Method of managing a solid state drive, associated systems and implementations
JP4802284B2 (ja) * 2010-01-29 2011-10-26 株式会社東芝 半導体記憶装置及びその制御方法
US8438361B2 (en) * 2010-03-10 2013-05-07 Seagate Technology Llc Logical block storage in a storage device
US9411718B2 (en) * 2012-12-21 2016-08-09 Seagate Technology Llc Method to apply fine grain wear leveling and garbage collection

Patent Citations (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20100115188A1 (en) * 2008-11-06 2010-05-06 Chun-Kun Lee Method for managing a memory apparatus, and associated memory apparatus thereof
JP2011159044A (ja) * 2010-01-29 2011-08-18 Toshiba Corp 不揮発性メモリのコントローラ及び不揮発性メモリの制御方法
US20110202578A1 (en) * 2010-02-16 2011-08-18 Kabushiki Kaisha Toshiba Semiconductor memory device
JP2011192260A (ja) * 2010-02-16 2011-09-29 Toshiba Corp 半導体記憶装置
JP2012068765A (ja) * 2010-09-21 2012-04-05 Tdk Corp メモリコントローラ及びメモリコントローラを備えるフラッシュメモリシステム、並びにフラッシュメモリの制御方法
JP2012141946A (ja) * 2010-12-16 2012-07-26 Toshiba Corp 半導体記憶装置
US20120254513A1 (en) * 2011-04-04 2012-10-04 Hitachi, Ltd. Storage system and data control method therefor
JP2013030081A (ja) * 2011-07-29 2013-02-07 Toshiba Corp データ記憶装置、メモリ制御装置及びメモリ制御方法

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2018049522A (ja) * 2016-09-23 2018-03-29 東芝メモリ株式会社 メモリシステム及び制御方法
KR20180076425A (ko) * 2016-12-27 2018-07-06 에스케이하이닉스 주식회사 컨트롤러 및 컨트롤러의 동작 방법
KR102671760B1 (ko) 2016-12-27 2024-06-05 에스케이하이닉스 주식회사 컨트롤러 및 컨트롤러의 동작 방법
JP2019106174A (ja) * 2017-12-14 2019-06-27 インテル・コーポレーション 記憶デバイスにおけるシステムタイムスタンプを用いたバックグラウンドデータ・リフレッシュ
JP2020154853A (ja) * 2019-03-20 2020-09-24 日立オートモティブシステムズ株式会社 電子制御装置

Also Published As

Publication number Publication date
EP2816482A1 (en) 2014-12-24
US20140372673A1 (en) 2014-12-18

Similar Documents

Publication Publication Date Title
US11216185B2 (en) Memory system and method of controlling memory system
JP2015001909A (ja) 情報処理装置、制御回路、制御プログラム、および制御方法
JP5687648B2 (ja) 半導体記憶装置およびプログラム
US9342458B2 (en) Cache allocation in a computerized system
JP2015001908A (ja) 情報処理装置、制御回路、制御プログラム、および制御方法
US9645922B2 (en) Garbage collection in SSD drives
US8825946B2 (en) Memory system and data writing method
JP6167646B2 (ja) 情報処理装置、制御回路、制御プログラム、および制御方法
JP6102515B2 (ja) 情報処理装置、制御回路、制御プログラム、および制御方法
JP6179355B2 (ja) 情報処理装置、データ転送制御方法及びデータ転送制御プログラム
JP2015191294A (ja) メモリコントローラ、メモリシステム及びメモリ制御方法
JP5967307B2 (ja) 情報処理装置、制御回路、制御プログラム、及び制御方法
JP5967308B2 (ja) 情報処理装置、制御回路、制御プログラム、及び制御方法
JP5253471B2 (ja) メモリコントローラ
JP6132010B2 (ja) 制御装置、制御プログラム、および制御方法
JP2019045974A (ja) 情報処理装置、情報処理プログラム及び情報処理方法
JP2013200726A (ja) 半導体記憶装置
JP2014085794A (ja) 記憶装置およびメモリ制御方法

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20160310

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20161212

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20161220

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20170214

A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20170516