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

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

Info

Publication number
JP5967308B2
JP5967308B2 JP2015522392A JP2015522392A JP5967308B2 JP 5967308 B2 JP5967308 B2 JP 5967308B2 JP 2015522392 A JP2015522392 A JP 2015522392A JP 2015522392 A JP2015522392 A JP 2015522392A JP 5967308 B2 JP5967308 B2 JP 5967308B2
Authority
JP
Japan
Prior art keywords
address
physical
data
logical address
logical
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
JP2015522392A
Other languages
English (en)
Other versions
JPWO2014203316A1 (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 JP5967308B2 publication Critical patent/JP5967308B2/ja
Publication of JPWO2014203316A1 publication Critical patent/JPWO2014203316A1/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/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/72Details relating to flash memory management
    • G06F2212/7201Logical to physical mapping or translation of blocks or pages

Landscapes

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

Description

本発明は、情報処理装置、制御回路、制御プログラム、及び制御方法に関する。
従来、磁気ディスクよりも高速に動作する不揮発性メモリを用いた情報処理装置が知られている。このような情報処理システムの一例として、NANDフラッシュメモリデバイスをストレージ等の記憶装置として使用する情報処理装置が知られている。なお、以下の説明では、NANDフラッシュメモリデバイスをNANDデバイスと記載する。
ここで、NANDデバイスは、データの記憶領域である物理ページ単位でデータの書込み、読出し、データの更新に係る移動を行い、複数の物理ページを含む物理ブロック単位でデータの消去を行う。このため、NANDデバイスは、有効なデータと無効なデータとが混在した物理ブロックを有する場合がある。また、NANDデバイスは、データを消去する際に素子が劣化するので、頻繁に更新されるデータが書込まれた物理ページと、あまり更新されないデータが書込まれた物理ページとでは、素子が劣化する速度にばらつきが発生する。
このため、各物理ブロックに対するデータの書込み状況やデータの書込時刻に応じて、各物理ブロックに書込まれたデータの移動を実行し、データの整理や劣化の平準化を行うNANDコントローラが知られている。例えば、NANDコントローラは、物理ブロックごとに、各物理ページのデータが有効であるか否かを示す情報と、最後にデータが書込まれた時刻を示す情報とが格納された管理情報テーブルを有する。
そして、NANDコントローラは、管理情報テーブルを参照し、物理ブロックごとに、有効なデータの数やデータが書込まれてから経過した時間に応じて、データを移動させるか否かを判定する。その後、NANDコントローラは、データを移動させると判定した場合は、物理ブロックに書込まれた有効なデータを、予備ブロックの物理ページに移動し、選択した物理ブロックのデータを消去することで、新たな予備ブロックの確保や、劣化の平準化を行う。
また、NANDコントローラは、情報処理装置が実行するシステムがデータの指定に用いる論理アドレスを、データが格納された物理ページを示す物理アドレスに変換するアドレス変換テーブルを有する。そして、NANDコントローラは、データの移動を行った場合は、データの移動元、および、データの移動先を示す物理アドレスを用いて、アドレス変換テーブルの更新を行う。
例えば、従来技術として、以下のような技術がある。NANDコントローラは、物理アドレスを論理アドレスに逆変換するアドレス逆変換テーブルを用いて、データの移動元を示す物理アドレスを論理アドレスに逆変換する。そして、NANDコントローラは、アドレス変換テーブルに格納された物理アドレスのうち、逆変換された論理アドレスをインデックスとする物理アドレスを、データの移動先を示す物理アドレスに書き換える。
また、空き容量を確保するためのデータ移動の技術として、無効セクタ数が所定の閾値を超えているデータユニットの有効セクタのみをコピーして、コピー元のデータユニットを消去する従来技術がある。
特開2009−003784号公報 特開2005−275722号公報
しかしながら、上述した物理ブロックごとにデータを移動させるか否かを判定する技術では、データの移動元、および、データの移動先を示す物理アドレスを用いて、アドレス変換テーブルの更新を行う。かかる処理を行うため、例えば、NANDコントローラは、データの移動元を示す物理アドレスから論理アドレスに逆変換するアドレス逆変換テーブルを有するので、回路規模が増大するという問題がある。また、複数のデータを分散して書き込む従来技術を用いても、物理アドレスから論理アドレスへの変換については考慮されておらず、アドレス逆変換テーブルの使用を回避することは困難である。
開示の技術は、上記に鑑みてなされたものであって、NANDコントローラの回路規模を抑えつつアクセス性能を向上させる情報処理装置、制御回路、制御プログラム、及び制御方法を提供することを目的とする。
本願の開示する情報処理装置、制御回路、制御プログラム、及び制御方法は、一つの態様において、選択部は、前記記憶領域を示す論理アドレスのグループの中で、前記記憶領域を複数含む所定のブロックに含まれる記憶領域のうち有効なデータが格納された記憶領域を示す論理アドレスが含まれるグループを特定し、特定したグループに含まれる論理アドレスを順に選択していく。取得部は、前記選択部により選択された論理アドレスに対応付けられた物理アドレスを、論理アドレスと物理アドレスとの対応を表す変換テーブルから取得する。判定部は、所定の条件を用いて、前記取得部により取得された物理アドレスが示す記憶領域に格納されたデータを移動させるか否かを判定する。移動部は、前記判定部が前記データを移動させると判定した場合、前記取得部により取得された物理アドレスが示す記憶領域に格納されたデータを、他の記憶領域に移動させる。更新部は、前記変換テーブルに格納された物理アドレスのうち、前記選択部により選択された論理アドレスに対応付けられた物理アドレスを、前記他の記憶領域を示す物理アドレスに更新する。
本願の開示する情報処理装置、制御回路、制御プログラム、及び制御方法の一つの態様によれば、NANDコントローラの回路規模を抑えつつアクセス性能を向上させることができるという効果を奏する。
図1は、実施例1に係る情報処理装置の概略構成図である。 図2は、メモリアクセスの一例を説明するための図である。 図3は、実施例1に係るNANDコントローラのブロック図である。 図4は、実施例1に係るアドレス変換テーブルの一例の図である。 図5は、実施例1に係る管理情報テーブルの一例の図である。 図6は、実施例1に係るNANDコントローラが実行する処理の一例を説明するための図である。 図7は、実施例1に係るNANDコントローラが実行する処理のフローチャートである。 図8は、実施例1に係る管理情報テーブルにおけるフラグの設定処理のフローチャートである。 図9は、制御プログラムを実行するNANDコントローラの一例の図である。
以下に、本願の開示する情報処理装置、制御回路、制御プログラム、及び制御方法の実施例を図面に基づいて詳細に説明する。なお、以下の実施例により本願の開示する情報処理装置、制御回路、制御プログラム、及び制御方法が限定されるものではない。
図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を有する。なお、以下の説明では、SSD5b、NANDコントローラ6b、及び複数のNANDデバイス7b〜10bは、SSD5a、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コントローラ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に示す例では、理解を容易にするため、ブロック数を「8」とし、各ブロック内の物理ページ数が「4」のNANDデバイス7aについて記載した。また、図2に示す例では、NANDコントローラ6aが、論理ブロックアドレスと物理ブロックアドレスとを対応付けたアドレス変換テーブルを用いて、NANDデバイス7a〜10aが有する物理ページ単位でデータの書込みを行う処理について記載した。
例えば、NANDコントローラ6aは、図2中(a)に示すように、CPU3aが実行するファイルシステムから、論理ブロックアドレス「LB00」の論理ページ番号「3」、すなわち論理アドレス「L0003」に書き込み要求を発行する。すると、NANDコントローラ6aは、アドレス変換テーブルを用いて、論理アドレス「L0003」に対応付けられた物理アドレス「P0403」を取得し、図2中(b)に示すように、更新前のデータが格納されている物理ページを識別する。
続いて、NANDコントローラ6aは、図2中(c)に示すように、物理アドレス「P0403」が示す物理ページのデータを読出し、読み出したデータを書込み対象のデータに更新し、更新後のデータを予備ブロックの空き物理ページに格納する。詳細な例を挙げると、NANDコントローラ6aは、図2中(d)に示すように、物理アドレス「P0800」が示す物理ページに更新後のデータを格納する。その後、NANDコントローラ6aは、図2中(e)に示すように、論理アドレス「L0003」と対応付けられていた物理アドレス「P0403」を「P0800」に更新し、処理を終了する。
ここで、NANDデバイス7a〜10aに格納されたデータに対し、物理ページ単位で書込みや移動を行う場合は、1つの物理ブロック内に有効なデータと無効なデータとが混在する場合がある。例えば、図2に示す例では、NANDコントローラ6aは、論理アドレス「L0003」が示すデータを更新する際、物理ブロックアドレス「B04」が示す物理ブロック内のデータを無効化する。そして、NANDコントローラ6aは、更新後のデータを物理ブロックアドレス「B08」が示す物理ブロックに格納する。このため、物理ブロックアドレス「B04」が示す物理ブロックには、有効なデータと無効なデータとが混在する。
ここで、NANDデバイス7a〜10aは、無効なデータが格納された物理ページに対してデータの上書きを行うことができず、あらかじめデータを消去した予備ブロックにデータの書込みを行う。しかしながら、有効なデータと無効なデータとが混在する物理ブロックが増えると、新たにデータを書込む予備ブロックを確保できなくなる。また、NANDデバイス7a〜10aは、データを保持するための素子を有する。かかる素子は、データの消去を行う際に劣化が進行し、劣化が進むと、電荷を適切に保持することができなくなる。
そこで、従来のNANDコントローラは、有効なデータを整理して新たな予備ブロックを確保するデータ移動制御を実行する。
ここで、NANDコントローラ6aは、ガベージコレクション処理などのデータ移動制御を実行した場合は、データの移動に応じて、アドレス変換テーブルの更新を行う。しかしながら、NANDコントローラ6aは、管理情報テーブルのページバリッドなどを用いて、物理ブロック毎に、データを移動させるか否かを判定する。このため、NANDコントローラ6aは、データ移動制御を行った後、データの移動元物理アドレスを識別できるが、データの移動元物理アドレスに対応する論理アドレスを識別できない。
そこで、NANDコントローラ6aに以下の処理を行わせることが考えられる。まず、NANDコントローラ6aは、データの移動を行うブロックを特定する。そして、NANDコントローラ6aは、アドレス変換テーブルを参照し、論理アドレスを1つ選択する。次に、NANDコントローラ6aは、選択した論理アドレスと対応付けられた物理アドレスをアドレス変換テーブルから取得する。そして、NANDコントローラ6aは、管理情報テーブルを用いて、取得した物理アドレスが示す物理ページを含む物理ブロックがデータの移動を行うブロックか否かを判定する。その後、NANDコントローラ6aは、データの移動を行った場合は、アドレス変換テーブルに格納された物理アドレスのうち、選択した論理アドレスと対応付けられた物理アドレスを、移動先物理アドレスに更新する。NANDコントローラ6aは、以上の処理を、アドレス変換テーブルの最初の論理アドレスから順に繰り返し行っていくことで、データの移動を行うブロックの全てのページのデータ移動を完了することができる。しかし、アドレス変換テーブルの最初の論理アドレスから順番にデータの移動判定を行う場合、最大で全ての論理アドレスに対して処理を行うことになり、データの移動処理に多大な時間が掛かってしまう。
そこで、本実施例に係る情報処理装置は、論理アドレスをいくつかの論理アドレスブロックに分け、各論理アドレスブロック内に、データの移動の対象とする物理ブロックに含まれるページの物理アドレスに対応する論理アドレスがあるかを判定する。以下では、ある物理ブロックに含まれるページの物理アドレスに対応する論理アドレスを、単に、「物理ブロックに対応する論理アドレス」という場合がある。本実施例に係る情報処理装置は、移動対象の物理ブロックに対応する論理アドレスを含む論理アドレスブロックに含まれる各論理アドレスに対してデータの移動を行うか否かを判定する。これにより、本実施例に係る情報処理装置は、データ移動の判定の処理数を減らしてデータ移動処理に係る時間を短縮し、アクセス性能の低下を防ぐ。
以下、図3を用いて、NANDコントローラ6aについて説明する。図3は、実施例1に係るNANDコントローラのブロック図である。図3に示す例では、NANDコントローラ6aは、テーブル記憶部11、リクエスタインターフェース部12、リクエスト調停部13、及びテーブル制御部14を有する。また、NANDコントローラ6aは、デバイスアクセス制御部15、巡回参照制御部16、及びデータ移動制御部17を有する。また、テーブル記憶部11は、アドレス変換テーブル18及び管理情報テーブル19を記憶する。
まず、図4、図5を参照して、テーブル記憶部11が記憶するアドレス変換テーブル18と、管理情報テーブル19に格納された情報について説明する。図4は、実施例1に係るアドレス変換テーブルの一例の図である。図4に示すように、アドレス変換テーブル18には、論理アドレスと有効フラグと物理アドレスとが対応付けて格納されている。ここで、有効フラグとは、対応付けられた物理アドレスが示す物理ページに格納されたデータが有効なデータであるか否かを示すバリッドビットである。
例えば、図4に示す例では、アドレス変換テーブル18には、論理アドレス「L0000」と、有効フラグ「0」と、物理アドレス「P0011」とが対応付けて格納されている。すなわち、アドレス変換テーブル18は、物理アドレス「P0011」が示すブロックに論理アドレス「L0000」が指定する有効なデータが格納されていない旨を示す。
同様に、図4に示す例では、アドレス変換テーブル18には、論理アドレス「L0002」と、有効フラグ「1」と、物理アドレス「P0003」とが対応付けて格納されている。すなわち、アドレス変換テーブル18は、物理アドレス「P0003」が示すブロックに論理アドレス「L0002」が指定する有効なデータが格納されている旨を示す。
さらに、アドレス変換テーブル18における論理アドレスは、複数のグループに分けられている。以下、このグループを「論理アドレスブロック」と言う。本実施例では、図4に示すように、論理アドレスブロック#0は、論理アドレスL0000〜L003Fを含む。また、論理アドレスブロック#1は、論理アドレスL0040〜L007Fを含む。また、論理アドレスブロック#2は、論理アドレスL0080〜L00BFを含む。また、論理アドレスブロック#3は、論理アドレスL00C0〜L00FFを含む。図4では、論理アドレスブロック#0〜#3しか示していないが、実際には、アドレス変換テーブル18上の全ての論理アドレスがグループ化され論理アドレスブロックを形成している。そして、後述する巡回参照制御部16は、各論理アドレスブロックと論理アドレスとの対応を記憶している。
次に、図5を用いて、管理情報テーブル19に格納される情報について説明する。図5は、実施例1に係る管理情報テーブルの一例の図である。図5に示すように、管理情報テーブル19には、物理ブロックアドレス及び有効ページ数が対応付けて格納されている。ここで、有効ページ数とは、対応付けられた物理ブロックアドレスが示す物理ブロックに含まれる有効なデータを有するページの数である。例えば、管理情報テーブル19は、1つの物理ブロックに、n個の有効ページが含まれる場合は、有効ページ数はnとなる。
管理情報テーブル19には、物理ブロックアドレスに対応させて、対応する物理ブロックに含まれる有効ページを示す物理アドレスに対応する論理アドレスが各論理アドレスブロックに含まれるか否かを示すフラグが、論理アドレスブロック毎に付加されている。具体的には、論理アドレスブロックを先頭とする列である欄に「1」が記載されている場合、その欄の行の先頭の物理ブロックアドレスに対応する物理ブロックに含まれる有効ページを示す論理アドレスをその論理アドレスブロックが有していることを表している。また、論理アドレスブロックを先頭とする列である欄に「0」が記載されている場合、その欄の行の先頭の物理ブロックアドレスに対応する物理ブロックに含まれる有効ページを示す論理アドレスをその論理アドレスブロックが有していないことを表している。
例えば、図5に示す例では、管理情報テーブル19には、物理ブロックアドレス「B00」と有効ページ数「11」とが対応付けて格納される。すなわち、管理情報テーブル19は、物理ブロックアドレス「B00」が示す物理ブロックに含まれる物理ページのうち、11個のページが有効であることを示す。また、管理情報テーブル19は、物理ブロックアドレス「B00」の行において、論理アドレスブロックが「#0」、「#2」、「#3」、「#5」、及び「#m」に対応する欄のフラグとして「1」が設定されている。すなわち、論理アドレスブロック#0,#2,#3,#5,及び#mに、物理ブロックアドレス「B00」に対応する物理ブロックに含まれる有効ページを示す論理ブロックが含まれている。
さらに、図5に示す例では、管理情報テーブル19には、物理ブロックアドレス「B01」には、有効ページがなく、また、いずれの論理アドレスブロックにも有効ページを含むフラグは付加されていない。ここで、物理ブロックに有効ページがない場合、すなわち、その物理ブロックが使用されていない場合、その物理ブロックを表す行の全ての論理アドレスブロックに対応する欄にフラグとして「0」を設定する。
ここで、論理アドレスブロックは、実際にはどのようなブロックに分割することもできる。ただし、ある物理ブロックの有効ページが各論理アドレスブロックに含まれているか否かを判定するために、後述する巡回参照制御部16は、管理情報テーブル19のフラグを全て読み出す。そこで、例えば、論理アドレスブロックを細かく分けた場合、管理情報テーブル19の1つのエントリに含まれるフラグの数が増えてしまう。この場合、巡回参照制御部16は、フラグを全て読み出すために何度も管理情報テーブル19から読み出しを行うことになる。管理情報テーブル19は、サイズが大きいためDIMM(Dual Inline Memory Module)などに記憶されており、読み出しに時間が掛かる。そのため、管理情報テーブル19からの読み出しを複数回行った場合、読み出し処理に多くの時間が掛かってしまう。また、論理アドレスブロックを大きく分けた場合、1つの論理アドレスブロックに含まれる論理アドレスが増えてしまう。後述するデータの移動判定において、論理アドレスブロックのサイズが大きくなるとデータの移動判定における検索範囲が広くなってしまい、後述するデータの移動判定の処理が増えてしまう。
そこで、論理アドレスブロックは、エントリの読み出し処理の時間と、データの移動判定の処理の時間とを考慮して決定することが好ましい。例えば、NANDデバイス7a,8a,9a,10aに対する1回の読み出しで読み出せる数のアドレスを1つの論理アドレスブロックとすることが好ましい。
ここで、論理アドレスブロックの決定の一例についてNANDデバイス7aを例に説明する。例えば、NANDデバイス7aが1KByte/page,64page/Blockで1TByteの物理アドレス領域を持っている場合で説明する。また、NANDデバイス7aは、システムに見せる論理アドレス領域より大きな物理アドレス領域を持つが、簡略化のため、論理アドレス領域も物理アドレス領域と同じ1TByteとする。このようなNANDデバイス7aは、物理ブロックが16MBlockに分割されている。そこで、管理情報テーブル19におけるエントリも16MBlockとなる。このように、管理情報テーブル19のサイズが大きくなる。そこで、なるべく読み出しの時間を短縮するため、1エントリ分のサイズを、DIMMの1回の読み出し量に相当する64Byteとする。論理アドレスブロックのサイズは小さいほどデータの移動判定における検索範囲が細分化でき効率が良い。そこで、論理アドレス領域を512個に分割する。この場合、1論理アドレスのサイズは2Mpageとなる。
図3に戻り、リクエスタインターフェース部12は、CPU3a及び3bからNANDデバイス7a〜10aに対するリクエストのインターフェースである。例えば、リクエスタインターフェース部12は、論理アドレスを含む読出し要求をCPU3a又は3bからI/Oハブ4を介して受信する。その場合、リクエスタインターフェース部12は、読出し要求をリクエスト調停部13に出力する。また、リクエスタインターフェース部12は、NANDデバイス7a〜10aから読出したデータをリクエスト調停部13から受信すると、読出し要求の発行元となるCPU3a又は3bに対してデータを送信する。
また、リクエスタインターフェース部12は、NANDデバイス7a〜10aに対して書込むデータ及び書込み対象となるデータの論理アドレスとを含む書込み要求をCPU3a及び3bから受信する。この場合、リクエスタインターフェース部12は、受信した書込み要求をリクエスト調停部13に出力する。また、リクエスタインターフェース部12は、リクエスト調停部13から、データ書込みが完了した旨の応答を受信すると、受信した応答を、書込み要求の発行元となるCPU3a又は3bに対して、応答を送信する。
リクエスト調停部13は、リクエスタインターフェース部12、データ移動制御部17、巡回参照制御部16が発行する各種リクエストの調停を行う。詳細には、リクエスト調停部13は、読出し要求又は書込み要求をリクエスタインターフェース部12から受信する。また、リクエスト調停部13は、NANDデバイス7a〜10aが記憶するデータを、現在記憶するブロックから他のブロックに移動するよう要求する移動要求をデータ移動制御部17から受信する。また、リクエスト調停部13は、物理ブロック内のデータを消去するよう要求する消去要求をデータ移動制御部17から受信する。また、リクエスト調停部13は、管理情報テーブル19の参照を要求するテーブル参照要求を巡回参照制御部16から受信する。
そして、リクエスト調停部13は、リクエスタインターフェース部12、データ移動制御部17及び巡回参照制御部16から受信する読出し要求、書込み要求、移動要求、消去要求及びテーブル参照要求の調停を行う。例えば、リクエスト調停部13は、CPU3a及び3bからNANDデバイス7a〜10aに対するデータの読出しや書込みが阻害されないよう、リクエスタインターフェース部12が発行する読出し要求及び書込み要求を最優先で実行する。また、例えば、リクエスト調停部13は、移動要求を消去要求及びテーブル参照要求よりも優先して実行し、消去要求をテーブル参照要求よりも優先して実行する。なお、リクエスト調停部13が各要求を調停するルールについては、上述した処理に限定されるものではなく、任意のルールを適用してよい。
以下、リクエスト調停部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から受信すると、更新元物理アドレス、更新先物理アドレス、及び書込み要求に含まれる論理アドレスを含むテーブル更新要求をテーブル制御部14へ出力する。その後、リクエスト調停部13は、テーブル更新要求に対する応答をテーブル制御部14から受信すると、データの書込みが完了した旨の応答をリクエスタインターフェース部12へ出力する。
また、リクエスト調停部13は、移動させるデータが格納された物理ページの物理アドレスである移動元物理アドレス及び移動させるデータを指定するための論理アドレスを含む移動要求をデータ移動制御部17などから受信する。また、リクエスト調停部13は、テーブル制御部14への問い合わせなどを行い、データの移動先となる物理ページの物理アドレスを移動先物理アドレスとして取得する。
そして、リクエスト調停部13は、移動元物理アドレス及び移動先物理アドレスを含む移動要求をデバイスアクセス制御部15に発行する。また、リクエスト調停部13は、データの移動が完了した旨の応答をデバイスアクセス制御部15から受信する。そして、リクエスト調停部13は、データ移動制御部17から受信した移動対象のデータを指定する論理アドレス、移動先物理アドレス、及び移動元物理アドレスを含むテーブル更新要求をテーブル制御部14へ出力する。その後、リクエスト調停部13は、テーブル更新要求に対する応答をテーブル制御部14から受信した場合は、データの移動が完了した旨の応答をデータ移動制御部17へ出力する。
また、リクエスト調停部13は、データの消去対象となる物理ブロックを示す物理ブロックアドレスを含む消去要求をデータ移動制御部17などから受信する。リクエスト調停部13は、消去要求を受信すると、受信した消去要求をデバイスアクセス制御部15へ発行する。そして、リクエスト調停部13は、データの消去が完了した旨の応答をデバイスアクセス制御部15から受信すると、消去要求に格納された物理ブロックアドレスを含むテーブル更新要求をテーブル制御部14へ出力する。そして、リクエスト調停部13は、データの更新が終了した旨の応答をテーブル制御部14から受信した場合は、データの消去が完了した旨の応答をデータ移動制御部17へ出力する。
また、リクエスト調停部13は、テーブル参照要求を巡回参照制御部16から受信した場合は、アドレス変換テーブル18と管理情報テーブル19の参照要求をテーブル制御部14へ送信する。そして、リクエスト調停部13は、アドレス変換テーブル18及び管理情報テーブル19をテーブル制御部14から受信すると、受信したアドレス変換テーブル18及び管理情報テーブル19を巡回参照制御部16に出力する。
テーブル制御部14は、論理アドレスを物理アドレスに変換する。例えば、テーブル制御部14は、読出し要求に格納された論理アドレスをリクエスト調停部13から受信すると、受信した論理アドレスと対応付けられた物理アドレスをアドレス変換テーブル18から取得する。そして、テーブル制御部14は、取得した物理アドレスをリクエスト調停部13へ出力する。
また、テーブル制御部14は、書込み要求に格納された論理アドレスをリクエスト調停部13から受信すると、アドレス変換テーブル18を参照し、受信した論理アドレスに有効フラグ「1」が対応付けられているか判定する。そして、テーブル制御部14は、受信した論理アドレスに有効フラグ「0」が対応付けられている場合、すなわち、書込み対象のデータが新たなデータである場合は、以下の処理を実行する。
まず、テーブル制御部14は、管理情報テーブル19を参照し、データが格納されていない物理ブロック、すなわち、予備ブロックを識別する。例えば、テーブル制御部14は、管理情報テーブル19を参照し、対応付けられた有効ページ数がすべて「0」である物理ブロックを検索し、検出した物理ブロックを予備ブロックとする。そして、テーブル制御部14は、予備ブロックに含まれる物理ページの物理アドレスをリクエスト調停部13へ出力する。
なお、テーブル制御部14は、一度予備ブロックを識別すると、識別した予備ブロックに含まれる物理ページの全ての物理ページにデータが書込まれるまで、同一の予備ブロックに含まれる物理ページの物理アドレスを出力する。詳細には、テーブル制御部14は、予備ブロックに含まれる物理ページのうち、データが書込まれていない物理ページの物理アドレスを、物理ページ番号の順に出力する。そして、テーブル制御部14は、予備ブロックに含まれる全ての物理ページにデータが書込まれた場合は、管理情報テーブル19を参照して、新たな予備ブロックを識別する。
一方、テーブル制御部14は、受信した論理アドレスに有効フラグ「1」が対応付けられている場合、すなわち、書込みがデータの更新を目的とする場合は、以下の処理を実行する。まず、テーブル制御部14は、受信した論理アドレスと対応付けられた物理アドレスを更新元物理アドレスとしてリクエスト調停部13へ出力する。また、テーブル制御部14は、予備ブロックを識別し、識別した予備ブロックに含まれる物理ページのうち、データが格納されていない物理ページの物理アドレスを更新先物理アドレスとしてリクエスト調停部13へ出力する。
また、テーブル制御部14は、リクエスト調停部13が移動要求を受信した際には、移動先物理アドレスの問い合わせをリクエスト調停部13から受ける。この場合、テーブル制御部14は、予備ブロックを識別し、識別した予備ブロックに含まれる物理ページのうち、データが格納されていない物理ページの物理アドレスを移動先物理アドレスとしてリクエスト調停部13へ出力する。
また、テーブル制御部14は、データの書込み、移動、又は消去に応じて、アドレス変換テーブル18及び管理情報テーブル19の更新を行う。例えば、テーブル制御部14は、リクエスト調停部13が新たなデータの書込みを行う場合は、データの書込み先となる物理ページの物理アドレス及び書込み要求に含まれる論理アドレスを含むテーブル更新要求を受信する。
この場合、テーブル制御部14は、データの書込み先となる物理ページの物理アドレス及び論理アドレスをテーブル更新要求から抽出する。そして、テーブル制御部14は、アドレス変換テーブル18における抽出した論理アドレスと対応付けられた有効フラグを「1」に更新する。また、テーブル制御部14は、抽出した論理アドレスに対応付けて、抽出した物理アドレスをアドレス変換テーブル18に格納する。
さらに、テーブル制御部14は、管理情報テーブル19において、抽出した物理ブロックに対応する、抽出した論理アドレスを含む論理アドレスブロックの欄を「1」とする。
また、テーブル制御部14は、抽出した物理アドレスが示す物理ブロックアドレスに対応付けられたエントリを管理情報テーブル19から抽出する。そして、テーブル制御部14は、抽出したエントリの有効ページ数を1つ増やす。また、テーブル制御部14は、抽出したエントリにおける抽出した論理アドレスを含む論理アドレスブロックの欄を「1」とする。ここで、テーブル制御部14は、既に「1」が記載されている欄に対しては、フラグを付加する処理は行わない。その後、テーブル制御部14は、テーブル更新要求に対する応答をリクエスト調停部13に出力する。
また、テーブル制御部14は、リクエスト調停部13がデータの更新を行う場合は、更新元物理アドレス、更新先物理アドレス及び書込み要求に含まれる論理アドレスを含むテーブル更新要求をリクエスト調停部13から受信する。この場合、テーブル制御部14は、テーブル更新要求から更新元物理アドレス、更新先物理アドレス、及び論理アドレスを抽出する。そして、テーブル制御部14は、アドレス変換テーブル18における抽出した論理アドレスと対応付けられた物理アドレスを抽出した更新先物理アドレスに更新する。
また、テーブル制御部14は、更新元物理アドレスに対応する物理ブロックアドレスと対応付けられたエントリを管理情報テーブル19から抽出する。そして、テーブル制御部14は、抽出したエントリの有効ページ数を1つ減らす。
次に、テーブル制御部14は、更新先物理ブロックアドレスと対応付けられたエントリを管理情報テーブル19から抽出する。そして、テーブル制御部14は、抽出したエントリの有効ページ数を1つ増やす。また、テーブル制御部14は、抽出したエントリにおける抽出した論理アドレスを含む論理アドレスブロックの欄を「1」とする。その後、テーブル制御部14は、テーブル更新要求に対する応答をリクエスト調停部13に出力する。
また、テーブル制御部14は、リクエスト調停部13がデータの移動を行う場合は、移動元物理アドレス、移動先物理アドレス、及び移動対象のデータを指定する論理アドレスを含むテーブル更新要求を受信する。この場合、テーブル制御部14は、テーブル更新要求から移動元物理アドレス、移動先物理アドレス、及び論理アドレスを抽出する。そして、テーブル制御部14は、アドレス変換テーブル18を参照し、抽出した論理アドレスと対応付けられた物理アドレスを抽出した移動先物理アドレスに更新する。
また、テーブル制御部14は、移動元物理アドレスに対応する物理ブロックアドレスと対応付けられたエントリを管理情報テーブル19から抽出する。そして、テーブル制御部14は、抽出したエントリの有効ページ数を1つ減らす。
次に、テーブル制御部14は、移動先物理ブロックアドレスと対応付けられたエントリを管理情報テーブル19から抽出する。そして、テーブル制御部14は、抽出したエントリの有効ページ数を1つ増やす。また、テーブル制御部14は、抽出したエントリにおける抽出した論理アドレスを含む論理アドレスブロックの欄を「1」とする。その後、テーブル制御部14は、テーブル更新要求に対する応答をリクエスト調停部13に出力する。
また、テーブル制御部14は、リクエスト調停部13がデータの消去を行う場合は、消去要求に格納された物理ブロックアドレスを含むテーブル更新要求をリクエスト調停部13から受信する。そして、テーブル制御部14は、指定された物理ブロックアドレスに対応するエントリにおける全ての論理アドレスブロックに対応する欄に「0」を設定する。その後、テーブル制御部14は、テーブル更新要求に対する応答をリクエスト調停部13へ出力する。
また、テーブル制御部14は、テーブル参照要求を受信した場合は、テーブル記憶部11からアドレス変換テーブル18と管理情報テーブル19とを取得する。そして、テーブル制御部14は、取得した管理情報テーブル19をリクエスト調停部13に出力する。なお、テーブル制御部14は、例えば、情報処理装置1が実行するシステムから、論理アドレスとデータとの対応付けを解消する旨の指示を受けると、アドレス変換テーブル18における対象となる論理アドレスと対応付けられた有効フラグを「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は、所定の時間間隔、所定の時刻、又は情報処理装置1が実行するアプリケーションプログラムの指示などを契機として、巡回参照制御を実行する。
以下、巡回参照制御部16が実行する巡回参照制御の処理内容について説明する。巡回参照制御部16は、論理アドレス選択部161、物理アドレス取得部162、及び判定部163を有している。
論理アドレス選択部161は、アドレス変換テーブル18及び管理情報テーブル19の参照要求をリクエスト調停部13へ出力する。そして、論理アドレス選択部161は、リクエスト調停部13からアドレス変換テーブル18及び管理情報テーブル19を受信する。
そして、論理アドレス選択部161は、管理情報テーブル19から有効ページ数が閾値よりも小さい物理ブロックを1つ特定する。次に、論理アドレス選択部161は、特定した物理ブロックに含まれる有効ページに対応する論理アドレスを含む論理アドレスブロックを選択する。そして、論理アドレス選択部161は、選択した論理アドレスブロックの先頭の論理アドレスに検索ポインタを設定する。その後、論理アドレス選択部161は、選択した論理アドレスブロックの先頭の論理アドレスを物理アドレス取得部162へ出力する。
その後、論理アドレス選択部161は、判定部163から次の論理アドレスの選択の指示を受けると、検索ポインタを1つ増加させて、次に大きいアドレスを有する論理アドレスを移動判定処理の対象として新たに選択する。そして、論理アドレス選択部161は、選択した論理アドレスを物理アドレス取得部162へ出力する。すなわち、論理アドレス選択部161は、最小論理アドレスを検索開始アドレスとしてアドレスが大きくなる順に論理アドレスを1つずつ選択していく。
さらに、論理アドレス選択部161は、次の論理アドレスブロックへの移行の指示を判定部163から受けると、特定した物理ブロックに含まれる有効ページに対応する論理アドレスを含み、且つ、データの移動判定を行っていない論理アドレスブロックを選択する。そして、論理アドレス選択部161は、選択した論理アドレスブロックの中からの論理アドレスの選択を行う。
物理アドレス取得部162は、論理アドレスを論理アドレス選択部161から取得する。次に、物理アドレス取得部162は、取得した論理アドレスと対応付けられた物理アドレスをアドレス変換テーブル18から取得する。そして、物理アドレス取得部162は、取得した物理アドレスを判定部163へ出力する。
判定部163は、物理アドレスを物理アドレス取得部162から取得する。そして、判定部163は、取得した物理アドレスを有するページが、論理アドレス選択部161により特定された物理ブロックに含まれているか否かを判定する。
取得した物理アドレスが特定された物理ブロックの物理ブロックアドレスに含まれていない場合、判定部163は、次の論理アドレスの選択を論理アドレス選択部161へ指示する。
これに対して、取得した物理アドレスを有するページが特定した物理ブロックに含まれている場合、判定部163は、取得した物理アドレスに対応するアドレス変換テーブル18の有効フラグが「1」であるか否かを確認する。判定部163は、有効フラグが「0」の場合、次の論理アドレスの選択を論理アドレス選択部161へ指示する。
これに対して、判定部163は、有効フラグが「1」の場合、取得した物理アドレス及び選択した論理アドレスの組をデータ移動制御部17へ出力する。そして、判定部163は、データ移動が完了すると、論理アドレス選択部161により選択された論理アドレスブロック内の全ての論理アドレスについてデータの移動判定を行ったか否かを判定する。判定部163は、選択された論理アドレスブロック内の論理アドレスにおいてデータの移動判定が完了していない論理アドレスがある場合、次の論理アドレスの選択を論理アドレス選択部161へ指示する。
一方、選択された論理アドレスブロック内の全ての論理アドレスにおいてデータの移動判定を行った場合、判定部163は、取得した物理ブロックに未だ有効ページがあるか否かを判定する。例えば、判定部163は、データの移動を行った際に、管理情報テーブル19における取得した物理ブロックの有効ページ数から1をデクリメントしていき、有効ページ数が0になった場合に、有効ページがなくなったと判定する。
有効ページが未だある場合、判定部163は、次の論理アドレスブロックへの移行の指示を論理アドレス選択部161へ通知する。
一方、有効ページがなくなった、すなわち、データの移動により物理ブロックが空になったと判定した場合、判定部163は、取得した物理アドレス、選択した論理アドレス、及びブロックが空になる旨を示すラストフラグの組をデータ移動制御部17に出力する。
巡回参照制御部16は、選択した物理ブロックにおけるデータの移動及びブロックの消去を行い空き容量を作成した後、予め決められた閾値以上の空き容量が確保できたか否かを判定する。閾値以上の空き容量が確保できていない場合、巡回参照制御部16は、新たに物理ブロックを選択して以上の処理を繰り返す。予め決められた閾値以上の空き容量が確保できた場合、巡回参照制御部16は、ガベージコレクションの処理を終了する。
データ移動制御部17は、データの移動を行う。具体的には、データ移動制御部17は、巡回参照制御部16から、論理アドレス及び物理アドレスの組、又は、論理アドレス、物理アドレス、及びラストフラグとの組を受信する。
データ移動制御部17は、論理アドレス及び物理アドレスの組を受信した場合、受信した組に含まれる物理アドレスを移動元物理アドレスとする。そして、データ移動制御部17は、移動元物理アドレスと、受信した組に含まれる論理アドレスとを含む移動要求をリクエスト調停部13へ出力する。その後、データ移動制御部17は、データの移動が完了した旨の応答をリクエスト調停部13から受信すると、受信した組に含まれる物理アドレスが示す物理ページのデータ移動処理を終了する。
一方、データ移動制御部17は、論理アドレス、物理アドレス、及びラストフラグの組を巡回参照制御部16から受信した場合、受信した組に含まれる物理アドレスを移動元物理アドレスとする。そして、データ移動制御部17は、移動元物理アドレス及び受信した組に含まれる論理アドレスを含む移動要求をリクエスト調停部13へ出力する。その後、データ移動制御部17は、データの移動が完了した旨の応答を受信すると、受信した組に含まれる物理ブロックアドレスを含む消去要求をリクエスト調停部13へ出力する。そして、データ移動制御部17は、データの消去が完了した旨の応答をリクエスト調停部13から受信すると、受信した組に含まれる物理アドレスが示す物理ページのデータ移動処理を終了する。
例えば、データ移動制御部17は、巡回参照制御部16から、論理アドレス「L0001」と、物理アドレス「P0032」と、ラストフラグとの組を受信する。かかる場合は、データ移動制御部17は、移動元物理アドレス「P0032」と、論理アドレス「L0001」とを含む移動要求をリクエスト調停部13に出力する。そして、データ移動制御部17は、データの移動が完了した旨の応答を受信した場合は、物理アドレス「P0032」を含む物理ブロックアドレスの消去要求をリクエスト調停部13に出力する。この結果、NANDコントローラ6aは、物理アドレス「P0032」を含む物理ブロックアドレスが示す物理ブロックのデータを消去し、新たな予備ブロックとする。
なお、例えば、リクエスタインターフェース部12、リクエスト調停部13、テーブル制御部14、デバイスアクセス制御部15、巡回参照制御部16、データ移動制御部17とは、電子回路である。ここで、電子回路の例として、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)などの半導体メモリ素子などの記憶装置である。
次に、図6を参照して、本実施例に係るNANDコントローラ6aが実行する処理をまとめて説明する。図6は、実施例1に係るNANDコントローラが実行する処理の一例を説明するための図である。
例えば、NANDコントローラ6aは、図6中(A)に示すように、管理情報テーブル19を参照し、有効ページ数が閾値以下の物理ブロックを選択する。次に、NANDコントローラ6aは、選択した物理ブロックに含まれる有効ページを示す論理アドレスを含む論理アドレスブロックを管理情報テーブル19から取得する。
次に、NANDコントローラ6aは、図6中(B)に示すように、論理アドレスブロックの中から順番に論理アドレスを取得し、取得した論理アドレスと対応付けられた物理アドレスをアドレス変換テーブル18から取得する。そして、NANDコントローラ6aは、取得した物理アドレスから物理ブロックアドレスを特定する。そして、NANDコントローラ6aは、図6中(C)に示すように、管理情報テーブル19を参照し、特定した物理ブロックアドレスが選択した物理ブロックのアドレスに含まれているか否かを判定する。NANDコントローラ6aは、特定した物理ブロックアドレスが選択した物理ブロックのアドレスに含まれている場合、その物理ブロックに格納されているデータを移動させると判定する。
そして、NANDコントローラ6aは、物理ブロックのデータを移動させると判定した場合は、図6中(D)に示すように、データ移動制御を実行する。具体的には、NANDコントローラ6aは、アドレス変換テーブル18の有効フラグを用いて、有効なデータが格納された物理ページを特定し、特定した物理ページを示す物理アドレスを移動元物理アドレスとする。また、NANDコントローラ6aは、管理情報テーブル19から予備ブロックの物理アドレスを移動先物理アドレスとして取得する。そして、NANDコントローラ6aは、選択した論理アドレス、移動元物理アドレス、および、移動先物理アドレスを用いて、データ移動制御を実行する。
詳細には、NANDコントローラ6aは、図6中(E)に示すように、移動元物理アドレスと移動先物理アドレスとを用いて、データの移動に係るデバイスアクセス制御を実行する。この結果、NANDコントローラ6aは、図6中(F)に示すように、移動元物理アドレスが示す物理ページに格納されたデータを、移動先物理アドレスが示す物理ページに移動させる。そして、NANDコントローラ6aは、図6中(G)及び(H)に示すように、データの移動に係る応答を受信する。
すると、NANDコントローラ6aは、図6中(I)に示すように、データの移動に応じて、管理情報テーブル19の更新を行う。また、NANDコントローラ6aは、図6中(J)に示すように、アドレス変換テーブル18が記憶する物理アドレスのうち、選択した論理アドレスと対応付けられた物理アドレスを移動先物理アドレスに更新する。
すなわち、NANDコントローラ6aは、物理ブロック毎にデータを移動させるか判定するのではなく、論理アドレス毎にデータを移動させるか否かを判定する。このため、NANDコントローラ6aは、移動元物理アドレスを論理アドレスに変換するアドレス逆変換テーブルを有さずとも、アドレス変換テーブル18の更新を行うことができる。この結果、NANDコントローラ6aは、回路規模を縮小することができる。また、物理ブロックに含まれる有効ページに対応する論理アドレスを含む論理ブロックアドレスの中の論理アドレスに対してのみ、データの移動判定を行うので、NANDコントローラ6aは、データの移動判定の処理の時間を短縮できる。
次に、図7を参照して、NANDコントローラ6aが実行する処理の流れについて説明する。図7は、実施例1に係るNANDコントローラが実行する処理のフローチャートである。NANDコントローラ6aは、所定の時間が経過した場合や、ソフトウェアからの指示を受けた場合は、図7に示すデータ移動制御を実行する。
巡回参照制御部16の論理アドレス選択部161は、物理ブロックを一つ選択し、管理情報テーブル19における選択した物理ブロックの有効ページ数を検索する(ステップS101)。
そして、巡回参照制御部16の論理アドレス選択部161は、選択した物理ブロックの有効ページ数が閾値未満か否を判定する(ステップS102)。有効ページ数が閾値以上の場合(ステップS102:否定)、巡回参照制御部16の論理アドレス選択部161は、ステップS101へ戻る。
これに対して、有効ページ数が閾値未満の場合(ステップS102:肯定)、巡回参照制御部16は、データの移動判定の対象とする論理アドレスブロックの番号を「#0」にセットする(ステップS103)。
次に、巡回参照制御部16の論理アドレス選択部161は、管理情報テーブル19において、選択した物理ブロックに対応するデータの移動判定の対象とする論理アドレスブロックの欄が「1」であるか否かを判定する(ステップS104)。「1」でない場合(ステップS104:否定)、巡回参照制御部16の論理アドレス選択部161は、データの移動判定の対象とする論理アドレスブロックの番号を1つインクリメントし(ステップS113)、ステップS104へ戻る。
これに対して、「1」の場合(ステップS104:肯定)、巡回参照制御部16の論理アドレス選択部161は、データの移動判定の対象とする論理アドレスブロックの先頭の論理アドレスに検索ポインタをセットする(ステップS105)。
そして、巡回参照制御部16の物理アドレス取得部162は、検索ポインタが示す論理アドレスに対応する物理アドレスをアドレス変換テーブル18から取得して、取得した物理アドレスを移動判定対象の物理アドレスとする(ステップS106)。
次に、巡回参照制御部16の判定部163は、移動判定対象の物理アドレスを有するページが選択した物理ブロックに含まれているか否かを判定する(ステップS107)。選択した物理ブロックに含まれていない場合(ステップS107:否定)、巡回参照制御部16の論理アドレス選択部161は、検索ポインタを1つインクリメントして検索ポインタを更新し(ステップS111)、ステップS106へ戻る。
一方、選択した物理ブロックに含まれる場合(ステップS107:肯定)、巡回参照制御部16の判定部163は、移動判定対象の物理アドレスを有するページに有効データが格納されているか否かをアドレス変換テーブル18から判定する(ステップS108)。有効データが格納されていない場合(ステップS108:否定)、巡回参照制御部16の論理アドレス選択部161は、検索ポインタを1つインクリメントして検索ポインタを更新し(ステップS111)、ステップS106へ戻る。
これに対して、有効データが格納されている場合(ステップS108:肯定)、巡回参照制御部16の判定部163は、取得した物理アドレスを移動対象の物理アドレスとする。そして、巡回参照制御部16の判定部163は、移動対象の物理アドレス及びそれに対応する論理アドレスの組をデータ移動制御部17へ出力する。データ移動制御部17は、データの移動要求をリクエスト調停部13へ出力し、移動対象の物理アドレスからデータを移動させる。また、テーブル制御部14は、アドレス変換テーブル18の論理アドレスに関連付けられた物理アドレスを変更し、アドレス変換テーブル18を更新する。さらに、巡回参照制御部16の判定部163は、管理情報テーブル19における選択した物理ブロックの有効ページ数を1つ減らし、管理情報テーブル19を更新する(ステップS109)。
次に、巡回参照制御部16の判定部163は、データの移動判定の対象とする論理アドレスブロックに含まれる全ての論理アドレスについてデータの移動判定を行ったか否かを判定する(ステップS110)。データの移動判定を行っていない論理アドレスがある場合(ステップS110:否定)、巡回参照制御部16の論理アドレス選択部161は、検索ポインタを1つインクリメントして検索ポインタを更新し(ステップS111)、ステップS106へ戻る。
これに対して、全ての論理アドレスについてデータの移動判定を行った場合(ステップS110:肯定)、巡回参照制御部16の判定部163は、選択した物理ブロックの有効ページ数が0になったか否かを判定する(ステップS112)。有効ページ数が0でない場合(ステップS112:否定)、巡回参照制御部16の論理アドレス選択部161は、データの移動判定の対象とする論理アドレスブロックの番号を1つインクリメントし(ステップS113)、ステップS104へ戻る。
これに対して、有効ページ数が0の場合(ステップS112:肯定)、巡回参照制御部16の判定部163は、ラストフラグの組をデータ移動制御部17へ出力する。データ移動制御部17は、移動対象の物理アドレスを含む物理ブロックの消去要求をリクエスト調停部13へ送信し、その物理ブロックを消去させる。また、巡回参照制御部16の判定部163は、管理情報テーブル19における選択した物理ブロックに対応する論理アドレスブロック含まれるか否かのフラグを「0」にクリアして管理情報テーブル19を更新する(ステップS114)。
その後、巡回参照制御部16は、空き容量が閾値以下か否かを判定する(ステップS115)。空き容量が閾値以下の場合(ステップS115:肯定)、巡回参照制御部16は、ステップS101へ戻る。これに対して、空き容量が閾値より大きい場合(ステップS115:否定)、NANDコントローラ6aは、データの移動制御の処理を終了する。
次に、図8を参照して、本実施例に係る管理情報テーブル19における有効ページを含むか否かを示すフラグの設定処理について説明する。図8は、実施例1に係る管理情報テーブルにおけるフラグの設定処理のフローチャートである。
テーブル制御部14は、リクエスト調停部13が書き込み命令をリクエスタインターフェース部12から受信したか否かを判定する(ステップS201)。書き込み命令を受信していない場合(ステップS201:否定)、テーブル制御部14は、フラグの設定処理を終了する。
これに対して、書き込み命令を受信した場合(ステップS201:肯定)、テーブル制御部14は、書き込み命令でデータの格納先として指定された論理アドレスを含む論理アドレスブロックを特定する(ステップS202)。
次に、テーブル制御部14は、書き込み命令で指定された論理アドレスに対応する物理アドレスをアドレス変換テーブル18から取得する(ステップS203)。
そして、テーブル制御部14は、取得した物理アドレスに対応するページを含む物理ブロックを管理情報テーブル19から特定する(ステップS204)。
テーブル制御部14は、特定した物理ブロックに対応するエントリを管理情報テーブル19から取得する(ステップS205)。
その後、テーブル制御部14は、取得したエントリにおいて、特定した論理アドレスブロックのフラグが「0」か否かを判定する(ステップS206)。フラグが「1」の場合(ステップS206:否定)テーブル制御部14は、フラグの設定処理を終了する。
これに対して、フラグが「0」の場合(ステップS206:肯定)、テーブル制御部14は、取得したエントリにおける特定した論理アドレスブロックのフラグを「1」に設定する(ステップS207)。
以上に説明したように、本実施例に係る情報処理装置は、論理アドレスをグループ化し、ガベージコレクションを行う場合に、対象の物理ブロックに含まれる有効ページを含む論理アドレスブロックに含まれる論理アドレスに対してデータの移動判定を行う。これにより、物理アドレスから論理アドレスを検索する逆引きのテーブルを用いずにガベージコレクションが行え、NANDコントローラの回路規模を抑えることができる。また、有効ページを含まない論理アドレスブロックに含まれる論理アドレスに対するデータの移動判定の処理を省略できるので、ガベージコレクションの時間を短縮でき、アクセス性能を向上させることができる。
図9は、制御プログラムを実行するNANDコントローラの一例の図である。図9に示すように、NANDコントローラ6eは、CPU40、デバイスアクセス制御部15を有する。また、CPU40は、メモリデバイス11aと接続される。なお、メモリデバイス11aは、NANDコントローラ6eに内蔵されるメモリであってもよい。
メモリデバイス11aには、アドレス変換テーブル18、管理情報テーブル19があらかじめ記憶される。ここで、CPU40が制御プログラム30を読出して展開して実行することにより、制御プログラム30は、以下の様に機能する。すなわち、制御プログラム30は、CPU40をテーブル制御部31、リクエスト調停部32、巡回参照制御部33、データ移動制御部34として動作させる。ここで、テーブル制御部31、リクエスト調停部32、巡回参照制御部33、及びデータ移動制御部34は、図3に示すテーブル制御部14、リクエスト調停部13、巡回参照制御部16、データ移動制御部17と同様の機能を発揮する。
なお、NANDコントローラ6eは、CPUではなく、例えばMPUやFPGA等の演算装置を用いて制御プログラム30を実行しても良い。また、上記の制御プログラム30については、例えば、メモリデバイス11aや、NANDデバイス7a〜10aに記憶させてもよいし、他の方法でCPU40に実行させてもよい。例えば、フレキシブルディスク、いわゆるFD(Flexible Disk)、CD(Compact Disk)−ROM、DVD(Digital Versatile Disk)、光磁気ディスク、ICカードなどの「可搬用の物理媒体」に各プログラムを記憶させる。
そして、NANDコントローラ6eが各CPU40を介して、これらの可搬用の物理媒体から各プログラムを取得して実行するようにしてもよい。また、公衆回線、インターネット、LAN(Local Area Network)、WAN(Wide Area Network)などを介して他のコンピュータまたはサーバ装置などに記憶させた各プログラムを取得して実行するようにしてもよい。
1 情報処理装置
2a,2b メモリ
3a,3b,40 CPU
4 I/Oハブ
5a,5b SSD
6a,6b,6e NANDコントローラ
7a〜10a,7b〜10b NANDデバイス
11 テーブル記憶部
12 リクエスタインターフェース部
13,32 リクエスト調停部
14,31 テーブル制御部
15 デバイスアクセス制御部
16,33 巡回参照制御部
17,34 データ移動制御部
18 アドレス変換テーブル
19 管理情報テーブル
30 制御プログラム
161 論理アドレス選択部
162 物理アドレス取得部
163 判定部

Claims (7)

  1. 複数の記憶領域を有する記憶装置と、
    前記記憶領域を示す論理アドレスのグループの中で、前記記憶領域を複数含む所定のブロックに含まれる記憶領域のうち有効なデータが格納された記憶領域を示す論理アドレスが含まれるグループを特定し、特定したグループに含まれる論理アドレスを順に選択していく選択部と、
    前記選択部により選択された論理アドレスに対応付けられた物理アドレスを、論理アドレスと物理アドレスとの対応を表す変換テーブルから取得する取得部と、
    所定の条件を用いて、前記取得部により取得された物理アドレスが示す記憶領域に格納されたデータを移動させるか否かを判定する判定部と、
    前記判定部が前記データを移動させると判定した場合、前記取得部により取得された物理アドレスが示す記憶領域に格納されたデータを、他の記憶領域に移動させる移動部と、
    前記変換テーブルに格納された物理アドレスのうち、前記選択部により選択された論理アドレスに対応付けられた物理アドレスを、前記他の記憶領域を示す物理アドレスに更新する更新部と
    を有することを特徴とする情報処理装置。
  2. 前記選択部は、有効なデータを格納している記憶領域が閾値以下のブロックを前記所定のブロックとして選択し、前記グループの中で、前記所定のブロックに含まれる記憶領域のうち有効なデータが格納された記憶領域を示す論理アドレスが含まれるグループを特定し、特定したグループに含まれる論理アドレスを順に選択していくことを特徴とする請求項1に記載の情報処理装置。
  3. 各前記グループに対して、複数のブロックのそれぞれに含まれる記憶領域のうち有効なデータが格納された記憶領域を示す論理アドレスを含むか否かを表すフラグを、前記ブロック毎に立てるフラグ設定部をさらに備え、
    前記選択部は、前記フラグ設定部によって設定されたフラグを基に、前記所定のブロックに含まれる記憶領域のうち有効なデータが格納された記憶領域を示す論理アドレスが含まれるグループを特定する
    ことを特徴とする請求項1に記載の情報処理装置。
  4. 前記グループは、各前記記憶領域を示す論理アドレスの集合を、前記選択部が一度に読み込める前記フラグの数で分割して生成されていることを特徴とする請求項1に記載の情報処理装置。
  5. 記憶領域を示す論理アドレスのグループの中で、前記記憶領域を複数含む所定のブロックに含まれる記憶領域のうち有効なデータが格納された記憶領域を示す論理アドレスが含まれるグループを特定し、特定したグループに含まれる論理アドレスを順に選択していく選択部と、
    前記選択部により選択された論理アドレスに対応付けられた物理アドレスを、論理アドレスと物理アドレスとの対応を表す変換テーブルから取得する取得部と、
    所定の条件を用いて、前記取得部により取得された物理アドレスが示す記憶領域に格納されたデータを移動させるか否かを判定する判定部と、
    前記判定部が前記データを移動させると判定した場合、前記取得部により取得された物理アドレスが示す記憶領域に格納されたデータを、他の記憶領域に移動させる移動部と、
    前記変換テーブルに格納された物理アドレスのうち、前記選択部により選択された論理アドレスに対応付けられた物理アドレスを、前記他の記憶領域を示す物理アドレスに更新する更新部と
    を有することを特徴とする制御回路。
  6. 各記憶領域を示す論理アドレスのグループの中で、前記記憶領域を複数含む所定のブロックに含まれる記憶領域のうち有効なデータが格納された記憶領域を示す論理アドレスが含まれるグループを特定し、
    特定したグループに含まれる論理アドレスを順に選択していき、
    選択した論理アドレスに対応付けられた物理アドレスを、論理アドレスと物理アドレスとの対応を表す変換テーブルから取得し、
    所定の条件を用いて、取得した物理アドレスが示す記憶領域に格納されたデータを移動させるか否かを判定し、
    前記データを移動させると判定した場合は、前記取得部が取得した物理アドレスが示す記憶領域に格納されたデータを、他の記憶領域に移動し、
    前記変換テーブルに格納された物理アドレスのうち、選択した論理アドレスに対応付けられた物理アドレスを、前記他の記憶領域を示す物理アドレスに更新する
    処理をコンピュータに実行させることを特徴とする制御プログラム。
  7. 各記憶領域を示す論理アドレスのグループの中で、前記記憶領域を複数含む所定のブロックに含まれる記憶領域のうち有効なデータが格納された記憶領域を示す論理アドレスが含まれるグループを特定し、
    特定したグループに含まれる論理アドレスを順に選択していき、
    選択した論理アドレスに対応付けられた物理アドレスを、論理アドレスと物理アドレスとの対応を表す変換テーブルから取得し、
    所定の条件を用いて、取得した物理アドレスが示す記憶領域に格納されたデータを移動させるか否かを判定し、
    前記データを移動させると判定した場合は、前記取得部が取得した物理アドレスが示す記憶領域に格納されたデータを、他の記憶領域に移動し、
    前記変換テーブルに格納された物理アドレスのうち、選択した論理アドレスに対応付けられた物理アドレスを、前記他の記憶領域を示す物理アドレスに更新する
    ことを特徴とする制御方法。
JP2015522392A 2013-06-17 2013-06-17 情報処理装置、制御回路、制御プログラム、及び制御方法 Active JP5967308B2 (ja)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/JP2013/066625 WO2014203316A1 (ja) 2013-06-17 2013-06-17 情報処理装置、制御回路、制御プログラム、及び制御方法

Publications (2)

Publication Number Publication Date
JP5967308B2 true JP5967308B2 (ja) 2016-08-10
JPWO2014203316A1 JPWO2014203316A1 (ja) 2017-02-23

Family

ID=52104086

Family Applications (1)

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

Country Status (2)

Country Link
JP (1) JP5967308B2 (ja)
WO (1) WO2014203316A1 (ja)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN110895513A (zh) * 2018-09-12 2020-03-20 华为技术有限公司 一种系统垃圾回收方法和固态硬盘中的垃圾回收方法
KR20200033459A (ko) * 2018-09-20 2020-03-30 에스케이하이닉스 주식회사 메모리 시스템 및 그것의 동작방법

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2011192260A (ja) * 2010-02-16 2011-09-29 Toshiba Corp 半導体記憶装置
JP2012068765A (ja) * 2010-09-21 2012-04-05 Tdk Corp メモリコントローラ及びメモリコントローラを備えるフラッシュメモリシステム、並びにフラッシュメモリの制御方法
JP2012068863A (ja) * 2010-09-22 2012-04-05 Toshiba Corp 半導体記憶制御装置

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2011192260A (ja) * 2010-02-16 2011-09-29 Toshiba Corp 半導体記憶装置
JP2012068765A (ja) * 2010-09-21 2012-04-05 Tdk Corp メモリコントローラ及びメモリコントローラを備えるフラッシュメモリシステム、並びにフラッシュメモリの制御方法
JP2012068863A (ja) * 2010-09-22 2012-04-05 Toshiba Corp 半導体記憶制御装置

Also Published As

Publication number Publication date
WO2014203316A1 (ja) 2014-12-24
JPWO2014203316A1 (ja) 2017-02-23

Similar Documents

Publication Publication Date Title
US9928167B2 (en) Information processing system and nonvolatile storage unit
US8417878B2 (en) Selection of units for garbage collection in flash memory
KR101176702B1 (ko) 판독 실패 관리 방법 및 시스템
KR102042643B1 (ko) 비휘발성 메모리(nvm)에서 다중 네임스페이스 관리
US9367444B2 (en) Non-volatile memory device, control method for information processing device, and information processing device
US11270734B2 (en) Method for accessing shingled magnetic recording SMR disk, and server
RU2642349C1 (ru) Способ для сохранения данных посредством устройства хранения данных и устройство хранения данных
JP2015001908A (ja) 情報処理装置、制御回路、制御プログラム、および制御方法
TW201933101A (zh) 資料儲存裝置
JP6034183B2 (ja) 半導体記憶装置
JP2009276853A (ja) フラッシュメモリ装置
US11048623B2 (en) Memory controller including mapping tables to efficiently process an iteration command and a method of operating the same
US10120606B2 (en) Data storage devices including storage controller circuits to select data streams based on application tags and computing systems including the same
KR20170038853A (ko) 호스트-관리 비휘발성 메모리
TW202001573A (zh) 記憶系統
JP6167646B2 (ja) 情報処理装置、制御回路、制御プログラム、および制御方法
JP2015001909A (ja) 情報処理装置、制御回路、制御プログラム、および制御方法
CN108228088B (zh) 用于管理存储系统的方法和设备
JP6179355B2 (ja) 情報処理装置、データ転送制御方法及びデータ転送制御プログラム
JP5967307B2 (ja) 情報処理装置、制御回路、制御プログラム、及び制御方法
JP5967308B2 (ja) 情報処理装置、制御回路、制御プログラム、及び制御方法
JP2009259145A (ja) メモリコントローラ、メモリコントローラを備えるフラッシュメモリシステム、並びにフラッシュメモリの制御方法
KR20150139383A (ko) 반도체 장치
JP6132010B2 (ja) 制御装置、制御プログラム、および制御方法
JP2020170477A (ja) 記憶装置、その制御方法、及びプログラム

Legal Events

Date Code Title Description
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: 20160607

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20160620

R150 Certificate of patent or registration of utility model

Ref document number: 5967308

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150