JP6132010B2 - 制御装置、制御プログラム、および制御方法 - Google Patents

制御装置、制御プログラム、および制御方法 Download PDF

Info

Publication number
JP6132010B2
JP6132010B2 JP2015506463A JP2015506463A JP6132010B2 JP 6132010 B2 JP6132010 B2 JP 6132010B2 JP 2015506463 A JP2015506463 A JP 2015506463A JP 2015506463 A JP2015506463 A JP 2015506463A JP 6132010 B2 JP6132010 B2 JP 6132010B2
Authority
JP
Japan
Prior art keywords
logical
address
physical
data
block
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
JP2015506463A
Other languages
English (en)
Other versions
JPWO2014147768A1 (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
Publication of JPWO2014147768A1 publication Critical patent/JPWO2014147768A1/ja
Application granted granted Critical
Publication of JP6132010B2 publication Critical patent/JP6132010B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • G06F12/023Free address space management
    • G06F12/0238Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory
    • G06F12/0246Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory in block erasable memory, e.g. flash memory
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • G06F12/0292User address space allocation, e.g. contiguous or non contiguous base addressing using tables or multilevel address translation means
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1016Performance improvement
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/72Details relating to flash memory management
    • G06F2212/7201Logical to physical mapping or translation of blocks or pages
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/72Details relating to flash memory management
    • G06F2212/7205Cleaning, compaction, garbage collection, erase control

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Memory System (AREA)
  • Memory System Of A Hierarchy Structure (AREA)

Description

本発明は、制御装置、制御プログラム、および制御方法に関する。
従来、磁気ディスクよりも高速に動作する不揮発性メモリを用いた情報処理システムが知られている。このような情報処理システムの一例として、複数のNANDフラッシュメモリデバイスをストレージとして使用する情報処理システムが知られている。なお、以下の説明では、NANDフラッシュメモリデバイスをNANDデバイスと記載する。
例えば、NANDデバイスからデータを読み出すコントローラは、情報処理システムがデータの指定に用いる論理アドレスと、読み出し対象となるデータが格納されたNANDデバイスの領域を示す物理アドレスとを対応付けたアドレス変換テーブルを有する。また、コントローラは、データの読み出し要求と読み出し対象の論理アドレスとを受信すると、受信した論理アドレスと対応付けられた物理アドレスをアドレス変換テーブルから取得する。そして、コントローラは、取得した物理アドレスが示す領域にアクセスして、NANDデバイスからデータの読み出しを行う。
ここで、アドレス変換テーブルのサイズは、NANDデバイスの総容量に比例するので、大容量のストレージについて、アドレス変換テーブルの全てをコントローラに記憶させるのは、現実的ではない。このため、アドレス変換テーブルをNANDデバイス上に格納し、コントローラがアドレス変換テーブルの一部を保持する技術が知られている。
例えば、コントローラは、アドレス変換テーブルの一部と、アドレス変換テーブルが格納された物理アドレスを示す変換テーブルタグとを保持する。そして、コントローラは、読み出し要求と論理アドレスとを受信すると、保持するアドレス変換テーブルに受信した論理アドレスが含まれるか否かを判定する。そして、コントローラは、保持するアドレス変換テーブルに受信した論理アドレスが含まれている場合は、論理アドレスに対応付けられた物理アドレスを用いて、NANDデバイスからデータの読み出しを行う。
一方、コントローラは、保持するアドレス変換テーブルに受信した論理アドレスが含まれていない場合は、変換テーブルタグを用いて、受信した論理アドレスを含むアドレス変換テーブルが記憶された物理アドレスを識別する。また、コントローラは、識別した物理アドレスを用いて、NANDデバイスからアドレス変換テーブルの一部を読み出す。そして、コントローラは、読み出したアドレス変換テーブルから、論理アドレスに対応付けられた物理アドレスを取得し、取得した物理アドレスを用いて、NANDデバイスからデータの読み出しを行う。
特開2012−174086号公報 特許第3251968号公報 特許第4643315号公報
しかしながら、上述したアドレス変換テーブルの一部をコントローラが保持する技術では、保持するアドレス変換テーブルに読み出し対象の論理アドレスが含まれていないと、アドレス変換テーブルをNANDデバイスから読み出す。その後、読み出したアドレス変換テーブルに従って、NANDデバイスからデータの読み出しを行うので、NANDデバイスからデータを読み出す際のレイテンシが増加するという問題がある。
また、NANDデバイスの容量が増大すると、アドレス変換テーブル全体の大きさも増大する。この結果、コントローラが保持するアドレス変換テーブルに読み出し対象の論理アドレスが含まれる確率が低くなるので、レイテンシが増加してしまう。
1つの側面では、本願は、不揮発性メモリに対するアクセスにおいて、アドレス変換に要する時間の短縮を目的とする。
1つの側面では、記憶装置からデータを読み出す制御装置である。また、制御装置は、論理ブロック番号と論理ページ番号とを組み合わせた論理番号に、物理ブロック番号と物理ページ番号とを組み合わせた物理番号を対応付けた変換テーブルを記憶する。また、制御装置は、複数の論理ブロック番号を含むグループごとに、データの読み出し要求の数と、データの書き込み要求の数とを計数する。また、制御装置は、計数した読み出し要求の数から書き込み要求の数を減算した数が最も多いグループに含まれる論理ブロック番号を1つ選択し、選択した論理ブロック番号を含む論理番号に対応付けられた物理番号を変換テーブルから識別する。また、制御装置は、識別した物理番号が示す記憶領域のデータを、1つのブロックに含まれる記憶領域であって、データの論理番号に含まれる論理ページ番号と同一の物理ページ番号が示す記憶領域に移動させる。また、制御装置は、データを移動させたブロックの物理ブロック番号と、選択部が選択した論理ブロック番号とを対応付けた早引きテーブルを記憶する。そして、制御装置は、読み出し対象のデータが格納された領域を示す論理番号を受信すると、受信した論理番号に含まれる論理ブロック番号に対応付けられた物理ブロック番号を早引きテーブルから取得する。その後、制御装置は、取得した物理ブロック番号が示すブロックに格納されたデータのうち、受信した論理番号に含まれる論理ページ番号と同一の物理ページ番号が示す領域に格納されたデータを読み出す。
1つの側面では、不揮発性メモリに対するアクセスにおいて、アドレス変換に要する時間を短縮できる。
図1は、実施例1に係る情報処理装置を説明する図である。 図2は、従来の書き込み処理を説明するための第1の図である。 図3は、従来の書き込み処理を説明するための第2の図である。 図4は、整列処理の流れを説明する図である。 図5は、読み出し処理の流れを説明する図である。 図6は、実施例1に係るNANDコントローラの機能構成を説明する図である。 図7は、変換テーブルタグを説明する図である。 図8は、NANDコントローラが保持するアドレス変換テーブルの一例を説明する図である。 図9は、早引きテーブルの一例を説明する図である。 図10は、アドレス変換テーブルの全体を説明する図である。 図11は、アドレス変換テーブルを用いたアドレス変換の流れを説明する図である。 図12は、早引きテーブルを用いたアドレス変換の流れを説明する図である。 図13は、データの読み出し処理の流れを説明するためのフローチャートである。 図14は、データの書き込み処理の流れを説明するためのフローチャートである。 図15は、整列処理の流れを説明するためのフローチャートである。 図16は、整列処理の第1のバリエーションを説明するためのフローチャートである。 図17は、整列処理の第2のバリエーションを説明するためのフローチャートである。 図18は、読み出し要求と書き込み要求との発生頻度に応じて整列処理を実行するNANDコントローラの機能構成を説明する図である。 図19は、整列処理の第3のバリエーションを説明するためのフローチャートである。 図20は、変換テーブルタグと早引きテーブルとを共通化したNANDコントローラの機能構成を説明する図である。 図21は、変換テーブルタグと早引きテーブルとを共通化した際のアドレス変換処理の流れを説明する図である。 図22は、早引きテーブルの一部を保持するNANDコントローラの機能構成を説明する図である。 図23は、早引きテーブルタグを用いて実行するアドレス変換処理の流れを説明する図である。 図24は、制御プログラムを実行する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、および複数の記憶デバイス7a〜10aを有する。
また、SSD5bは、NANDコントローラ6b、および複数の記憶デバイス7b〜10bを有する。なお、以下の説明では、NANDコントローラ6b、および複数の記憶デバイス7b〜10bは、NANDコントローラ6a、および複数の記憶デバイス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に対し、データの読み出し要求や書き込み要求を発行し、各記憶デバイス7a〜10aからデータの読み出しや書き込みを行う。例えば、CPU3aは、SSD5aに対し、データを指定する論理アドレスが格納された読み出し要求を発行する。また、CPU3aは、データの書き込み先を指定する論理アドレスと、書き込み対象となるデータとが格納された書き込み要求を発行する。
記憶デバイス7aは、各種データを記憶する不揮発性メモリである。詳細には、記憶デバイス7aは、データの記憶領域であるページを複数有し、ページ単位でデータの書き込みを行う。また、記憶デバイス7aは、複数のページを有するブロックを複数有し、ブロック単位でデータの消去を行う。
NANDコントローラ6aは、各記憶デバイス7a〜10aに対してアクセスし、データの読み出しや書き込みを行う。例えば、NANDコントローラ6aは、各CPU3a、3bがデータが記憶された記憶領域を指定する際に用いる論理アドレスと、データが格納された記憶デバイス7a〜10aの記憶領域を示す物理アドレスとを対応付けたアドレス変換テーブルを有する。
そして、NANDコントローラ6aは、読み出し要求とともに論理アドレスを受信すると、アドレス変換テーブルを用いて、論理アドレスと対応付けられた物理アドレスを識別し、識別した物理アドレスが示す記憶領域からデータの読み出しを行う。その後、NANDコントローラ6aは、I/Oハブ4を介して、読み出したデータをCPU3aに送信する。
なお、以下の説明では、理解を容易にするため、各ページの先頭アドレスとなる論理アドレスを単に論理アドレスと記載し、各ページの先頭アドレスとなる物理アドレスを単に物理アドレスと記載する。また、情報処理装置1が実行するシステムは、各ページの先頭アドレスとなる論理アドレスに対する読み出し要求や書き込み要求を発行するものとする。
また、NANDコントローラ6aは、記憶デバイス7a〜10aが、複数のブロックを有し、各ブロックに2個のページが含まれている場合は、以下の処理を行う。まず、NANDコントローラ6aは、論理アドレスの下位qビットを論理的な1つのブロック内において、ページを識別するための論理ページ番号とし、残りの論理アドレスの上位pビットを論理的な1つのブロックを示す論理ブロックアドレスとする。
また、NANDコントローラ6aは、物理アドレスの上位pビットを物理的な1つのブロックを示す物理ブロックアドレスとし、物理アドレスの下位qビットを物理的な1つのブロック内において、各ページを識別するための物理ページ番号とする。つまり、NANDコントローラ6aは、論理アドレスを、論理ブロックを示す論理ブロックアドレスと、論理ページを論理ブロックごとに示す論理ページ番号とに分割する。また、NANDコントローラ6aは、物理アドレスを、物理ブロックを示す物理ブロックアドレスと、物理ページを物理ブロックごとに示す物理ブロック番号とに分割する。
ここで、アドレス変換テーブルを用いて論理アドレスを物理アドレスに変換する技術では、記憶デバイスの容量が増大すると、アドレス変換テーブルのエントリ数も増大してしまい、NANDコントローラの回路規模が増大してしまう。例えば、図2は、従来の書き込み処理を説明するための第1の図である。なお、図2に示す例では、理解を容易にするため、ブロック数を「8」とし、各ブロック内のページ数が「4」の記憶デバイスについて記載した。また、図2に示す例では、論理ブロックアドレスと物理ブロックアドレスとを対応付けたアドレス変換テーブルを有するNANDコントローラが実行する処理について記載した。
例えば、ファイルシステムは、図2中(A)に示すように、論理ブロックアドレス「L4」に含まれる論理ページのうち、論理ページ番号「1」が示す論理ページに対する書き込み要求を発行する。すなわち、ファイルシステムは、論理アドレス「L4−1」に対する書き込み要求を発行する。すると、NANDコントローラは、図2中(B)に示すように、論理ブロックアドレス「L4」に対応付けられた物理ブロックアドレス「P7」を取得し、図2中(C)に示すように、書き込み対象となるページを含むブロックを識別する。
続いて、NANDコントローラは、図2中(D)に示すように、物理ブロックアドレス「P7」が示す物理ブロックの全データを予備ブロックにコピーする。この際、NANDコントローラは、書き込み要求の対象となる論理ページ番号「1」と同じ物理ページ番号「1」のデータを書き込み対象となるデータで更新する。その後、NANDコントローラは、図2中(E)に示すように、論理ブロックアドレス「L4」と対応付けられていた物理ブロックアドレス「P7」を予備ブロックの物理ブロックアドレス「P8」に更新する。そして、NANDコントローラは、物理ブロックアドレス「P7」が示すブロックのデータを消去する。
また、別の従来例として、アドレス変換テーブルをページごとに管理する場合がある。例えば、図3は、従来の書き込み処理を説明するための第2の図である。なお、図3に示す例では、理解を容易にするため、図2と同様に、ブロック数を「8」とし、各ブロック内のページ数を「4」の記憶デバイスについて記載した。また、図3に示す例では、論理アドレスと物理アドレスとを対応付けたアドレス変換テーブルを有するNANDコントローラが実行する処理について記載した。
例えば、図3中(F)に示すように、ファイルシステムは、論理ブロックアドレス「L0」の論理ページ番号「3」、すなわち論理アドレス「L0−3」に書き込み要求を発行する。すると、NANDコントローラは、図3中(G)に示すように、論理アドレス「L0−3」に対応付けられた物理アドレス「P4−3」を取得し、図3中(H)に示すように、更新前のデータが格納されているページを識別する。続いて、NANDコントローラは、図3中(I)に示すように、物理アドレス「P4−3」が示すページのデータを更新して予備ブロックにコピーする。その後、NANDコントローラは、図3中(J)に示すように、論理アドレス「L0−3」と対応付けられていた物理アドレス「P4−3」を「P8−0」に更新し、処理を終了する。
しかしながら、従来のNANDシステムでは、アドレス変換テーブルをブロックごとに記憶する場合であっても、ページ単位で記憶する場合であっても、アドレス変換テーブルの大きさは、NANDデバイスの総容量に比例して増大してしまう。
そこで、NANDコントローラ6aは、アドレス変換テーブルを記憶デバイス7a〜10aに格納しており、アドレス変換テーブルの一部を保持する。例えば、アドレス変換テーブルには、各論理アドレスと対応付けられたエントリに、論理アドレスが示す記憶領域を物理的に示す物理アドレスが格納されている。また、NANDコントローラ6aは、論理アドレスの上位iビットが共通する論理アドレスを物理アドレスに変換するアドレス変換テーブルが格納された物理アドレスと、論理アドレスの上位iビットとを対応付けた変換テーブルタグを保持する。
そして、NANDコントローラ6aは、読み出し対象、または書き込み対象となる論理アドレスの上位iビットと対応付けられた物理アドレスを変換テーブルタグから取得し、取得した物理アドレスが示す記憶領域から、アドレス変換テーブルの一部を読み出す。ここで、1つの物理アドレスが示す記憶領域には、論理アドレスの下位jビットと対応付けられた複数のエントリに変換先の物理アドレスが格納されたアドレス変換テーブルが格納されている。このため、NANDコントローラ6aは、読み出したアドレス変換テーブルのうち、読み出し対象、または書き込み対象となる論理アドレスの下位jビットと対応付けられたエントリの物理アドレスを読み出すことができる。なお、以下の説明では、論理アドレスの上位iビットを単に上位アドレスと記載し、下位jビットを下位アドレスと記載する。
ここで、アドレス変換テーブルの一部をNANDコントローラが保持する技術では、処理対象の論理アドレスが保持するアドレス変換テーブルに含まれていない場合は、処理対象の論理アドレスを含むアドレス変換テーブルをNANDコントローラから取得する。そして、NANDコントローラから取得したアドレス変換テーブルを用いて論理アドレスを物理アドレスに変換し、変換後の物理アドレスを用いてメモリアクセスを行う。この結果、アドレス変換テーブルの一部をNANDコントローラが保持する技術では、アドレス変換に時間がかかり、メモリアクセスのレイテンシが増大してしまう。
そこで、NANDコントローラ6aは、所定の条件がそろうと、以下の整列処理を実行する。すなわち、NANDコントローラ6aは、論理ブロックアドレスが共通する複数の論理アドレスを選択し、アドレス変換テーブルを用いて、選択した論理アドレスと対応付けられた物理アドレスを識別する。
そして、NANDコントローラ6aは、識別した物理アドレスに格納されているデータを、論理ページ番号の順で、予備のブロックに含まれる先頭のページから各ページへと移動させる。すなわち、NANDコントローラ6aは、各データの論理ページ番号と、移動先の物理ページ番号が同じ値になるように、各データを整列移動させる。そして、NANDコントローラ6aは、整列移動させたデータの論理ブロックアドレスと、データを移動させたブロックの物理ブロックアドレスとを対応付けて記憶する。
また、NANDコントローラ6aは、読み出し要求とともに論理アドレスを受信すると、受信した論理アドレスの上位ビット、すなわち読み出し対象となるデータの論理ブロックアドレスと対応付けて記憶する物理ブロックアドレスを取得する。ここで、整列移動させたブロック内では、各データの論理ページ番号と物理ページ番号とが同一の値となっている。そこで、NANDコントローラ6aは、取得した物理ブロックアドレスに受信した論理アドレスの論理ページ番号を付加することで、読み出し対象となるデータが格納された物理アドレスを取得する。その後、NANDコントローラ6は、取得した物理アドレスを用いて、読み出し対象となるデータを取得する。
このように、NANDコントローラ6aは、論理ブロックアドレスが共通する論理アドレスによって指定されるページの各データを、1つの物理ブロックに移動させる。この際、NANDコントローラ6aは、各データの論理ページ番号と同一の物理ページ番号が示すページに各データを移動させる。そして、NANDコントローラ6aは、各データの移動先となる物理ブロックを示す物理ブロックアドレスと、移動させたデータの論理ブロックアドレスとを対応付けた早引きテーブル13を記憶する。
その後、NANDコントローラ6aは、読み出し対象の論理アドレスを受信すると、論理アドレスに含まれる論理ブロックアドレスと対応付けられた物理ブロックアドレスを早引きテーブル13から取得する。そして、NANDコントローラ6aは、取得した物理ブロックアドレスに、受信した論理アドレスの論理ページ番号を付加することで、読み出し対象となるデータが格納された記憶領域を示す物理アドレスを取得する。
この結果、NANDコントローラ6aは、アドレス変換テーブルキャッシュ12に、読み出し対象となる論理アドレスと対応する物理アドレスが格納されていない場合にも、アドレス変換テーブル20の読み出し処理を行わなずともアドレス変換を実現できる。このため、NANDコントローラ6aは、アドレス変換処理のレイテンシを短縮することができる。
ここで、図4、図5を用いてNANDコントローラ6aが実行する処理の一例について説明する。まず、図4を用いて、NANDコントローラ6aが実行する整列処理について説明する。図4は、整列処理の流れを説明する図である。なお、図4に示す例では、理解を容易にするため、図2と同様に、ブロック数を「8」とし、各ブロック内のページ数を「4」の記憶デバイス7a〜10aについて記載した。
例えば、NANDコントローラ6aは、早引きテーブルを確認し、図4中(K)に示すように、論理ブロックアドレス「L0」に物理ブロックアドレスが対応付けられておらず、未登録、もしくは有効な物理ブロックアドレスが対応付けられていないと判定する。このような場合には、NANDコントローラ6aは、図4中(L)に示すように、論理ブロックアドレス「L0」を含む論理アドレス「L0−0」〜「L0−3」を選択する。また、NANDコントローラ6aは、アドレス変換テーブルを用いて、論理アドレス「L0−0」〜「L0−3」を物理アドレス「P0−0」、「P7−0」、「P2−2」、「P4−3」に変換する。そして、図4中(M)に示すように、各物理アドレスが示すページを識別する。
次に、NANDコントローラ6aは、識別した各ページのデータを予備ブロックに移動させる。この際、NANDコントローラ6aは、図4中(N)に示すように、各データを指定する際に用いる論理アドレスの論理ページ番号と、データの移動先となるページの物理ページ番号とが同一となるように、各データを移動させる。
詳細には、NANDコントローラ6aは、物理アドレス「P4−0」に格納されていた論理アドレス「L0−0」のデータを物理アドレス「P8−0」に移動させる。また、NANDコントローラ6aは、物理アドレス「P7−0」に格納されていた論理アドレス「L0−1」のデータを物理アドレス「P8−1」に移動させる。また、NANDコントローラ6aは、物理アドレス「P2−2」に格納されていた論理アドレス「L0−2」のデータを物理アドレス「P8−2」に移動させる。また、NANDコントローラ6aは、物理アドレス「P4−3」に格納されていた論理アドレス「L0−3」のデータを物理アドレス「P8−3」に移動させる。
そして、NANDコントローラ6aは、図4中(O)に示すように、アドレス変換テーブルを更新するとともに、図4中(P)に示すように、早引きテーブルに、論理ブロックアドレス「L0」と物理ブロックアドレス「P8」とを対応付けて記憶する。
次に、図5を用いてNANDコントローラ6aがデータの読み出し時に早引きテーブルを用いて実行する処理の一例について説明する。図5は、読み出し処理の流れを説明する図である。なお、図5に示す例では、理解を容易にするため、図2と同様に、ブロック数を「8」とし、各ブロック内のページ数を「4」の記憶デバイス7a〜10aについて記載した。
例えば、図5に示す例では、図5中(Q)に示すように、ファイルシステムが論理アドレス「L0−3」への読み出し要求を発行する。このような場合には、NANDコントローラ6aは、図5中(R)に示すように、論理アドレス「L0−3」の論理ブロックアドレス「L0」と対応付けられた物理ブロックアドレス「P8」を早引きテーブルから取得する。ここで、物理ブロックアドレス「P8」が示すブロック中では、各データが、各データの論理ページ番号と同一の物理ページ番号に格納されている。
このため、NANDコントローラ6aは、図5中(S)に示すように、物理ブロックアドレス「P8」のブロックに含まれるページのうち、論理アドレス「L0−3」の論理ページ番号「3」と同じ物理ページ番号「3」が示すページからデータの読み出しを行う。この結果、NANDコントローラ6aは、保持するアドレス変換テーブルに、論理アドレス「L0−3」が含まれていない場合にも、記憶デバイス7a〜10aからアドレス変換テーブルを読み出すことなく、アドレス変換を行うことができる。
次に、図6を用いて、NANDコントローラ6aの機能構成について説明する。図6は、実施例1に係るNANDコントローラの機能構成を説明する図である。図6に示す例では、NANDコントローラ6aは、変換テーブルタグ11、アドレス変換テーブルキャッシュ12、早引きテーブル13、リクエスタインタフェース部14、リクエスト調停部15を有する。また、NANDコントローラ6aは、アドレス変換制御部16、デバイスアクセス制御部17、データ整列制御部18、ガベージコレクション制御部19を有する。また、記憶デバイス7a〜10aは、アドレス変換テーブル20とユーザデータ21とを記憶する。
変換テーブルタグ11は、上位アドレスと、上位アドレスを含む論理アドレスを物理アドレスに変換するためのアドレス変換テーブルが格納された物理アドレスとを対応付けたテーブルである。例えば、図7は、変換テーブルタグを説明する図である。図7に示す例では、変換テーブルタグ11は、論理アドレスの上位アドレス「0」〜「2−1」とそれぞれ対応付けられた複数のエントリを有する。
また、変換テーブルタグ11の各エントリには、対応付けられた上位アドレスを含む論理アドレスを物理アドレスに変換するためのアドレス変換テーブルが格納された物理アドレス(テーブルPA:Physical Address)「a」〜「m」が格納されている。なお、物理アドレス「a」〜「m」の値は、NANDコントローラ6aが保持するアドレス変換テーブルの一部を変更する度に、異なる値に変化することとなる。
図6に戻って、アドレス変換テーブルキャッシュ12は、記憶デバイス7a〜10a上に格納されたアドレス変換テーブル20の一部である。例えば、図8は、NANDコントローラが保持するアドレス変換テーブルの一例を説明する図である。図8に示す例では、アドレス変換テーブルキャッシュ12は、下位アドレス「0」〜「2−1」と対応付けられたエントリを有する。また、アドレス変換テーブルキャッシュ12は、各エントリにバリッドビット(Valid)とデータが格納された物理アドレスであるデータPA「BA」〜「BN」を対応付けて格納している。
ここで、バリッドビットは、対応付けられた物理アドレスが有効な物理アドレスであるか否かを示すビットである。例えば、図8に示す例では、下位アドレス「2」と対応付けられたエントリの物理アドレス「BC」は、有効な物理アドレスであるが、下位アドレス「1」と対応付けられたエントリの物理アドレス「BB」は、有効な物理アドレスではない。
なお、NANDコントローラ6aは、アドレス変換テーブル20のうち、変換テーブルタグによって示された物理アドレスで指定される範囲をアドレス変換テーブルキャッシュ12として保持する。例えば、図8、10に示す例では、NANDコントローラ6aは、物理アドレスが「b」となる物理ページに格納されたアドレス変換テーブルキャッシュ12を保持する。
図6に戻って、早引きテーブル13は、論理ブロックアドレスと物理ブロックアドレスとを対応付けて記憶する。例えば、図9は、早引きテーブルの一例を説明する図である。例えば、図9に示す例では、早引きテーブルは、論理ブロックアドレス「0」〜「2−1」と対応付けたエントリを有する。また、早引きテーブル13は、各エントリに登録フラグと、物理ブロックアドレスとを対応付けて格納している。ここで、登録フラグとは、対応付けられた物理ブロックアドレスが示すブロックにデータを整列移動させたか否かを示すフラグであり、データを整列移動させた場合は、「1」となり、データを整列移動させていない場合は、「0」となる。
図6に戻って、アドレス変換テーブル20は、物理アドレスを論理アドレスに変換する際に用いるアドレス変換テーブルである。例えば、図10は、アドレス変換テーブルの全体を説明する図である。例えば、図10に示すように、アドレス変換テーブル20は、記憶デバイス7a〜10aが有する記憶領域のうち、物理アドレス「a」〜「m」の範囲に格納されたテーブルである。また、アドレス変換テーブル20は、1つのページ内に、論理ページ番号「0」〜「2−1」と対応付けられたエントリを有し、各エントリ内に、バリッドビットと各論理ページ番号が示すデータが格納された物理アドレスが格納されている。
例えば、物理アドレス「a」が示すページに格納されたアドレス変換テーブルには、上位アドレスが「0」で下位アドレスが「0」〜「2−1」である論理アドレスに対応する物理アドレス「AA」〜「AN」が格納されている。また、物理アドレス「b」が示すページに格納されたアドレス変換テーブルには、上位アドレスが「1」で下位アドレスが「0」〜「2−1」である論理アドレスに対応する物理アドレス「BA」〜「BN」が格納されている。また、物理アドレス「m」が示すページに格納されたアドレス変換テーブルには、上位アドレスが「2−1」で下位アドレスが「0」〜「2−1」である論理アドレスに対応する物理アドレス「MA」〜「MN」が格納されている。ここで、アドレス変換テーブルに格納された物理アドレス「a」〜「m」と論理アドレスの上位アドレス「0」〜「2−1」との対応は、変換テーブルタグ11によって管理されている。
図6に戻り、リクエスタインタフェース部14は、I/Oハブを介して、読み出し要求、または書き込み要求を受信する。リクエスタインタフェース部14は、読み出し要求を受信すると、受信した読み出し要求をリクエスト調停部15に出力する。また、リクエスタインタフェース部14は、デバイスアクセス制御部17から読み出し要求の対象となるデータを受信すると、受信したデータを読み出し要求の発行元となるCPU3a、3bに出力する。
また、リクエスタインタフェース部14は、書き込み要求を受信すると、以下の書き込み処理を実行する。例えば、リクエスタインタフェース部14は、受信した書き込み要求に格納された論理アドレスを含む読み出し要求をリクエスト調停部15に出力する。そして、リクエスタインタフェース部14は、読み出し対象のデータを受信すると、受信したデータを書き込み対象のデータで更新する。そして、リクエスタインタフェース部14は、受信した書き込み要求に格納された論理アドレスと、更新後のデータとを含む書き込み要求をリクエスト調停部15に出力する。
リクエスト調停部15は、リクエスタインタフェース部14、データ整列制御部18、およびガベージコレクション制御部19からの読み出し要求および書き込み要求を調停し、調停結果に応じた順序で実行する。例えば、リクエスト調停部15は、読み出し要求を受信すると、読み出し対象となる論理アドレスをアドレス変換制御部16に出力する。そして、リクエスト調停部15は、アドレス変換制御部16から、読み出し対象となる物理アドレスを受信すると、受信した物理アドレスに対する読み出し要求をデバイスアクセス制御部17に発行する。
また、リクエスト調停部15は、書き込み要求を受信すると、アドレス変換制御部16に問い合わせる等して、各ページにデータが格納されていない予備ブロックの物理アドレスを取得する。その後、リクエスト調停部15は、取得した物理アドレスに対して、更新したデータの書き込みを要求する書き込み要求をデバイスアクセス制御部17に出力する。また、リクエスト調停部15は、書き込み要求に格納されていた論理アドレスとデータを格納した物理アドレスとをアドレス変換制御部16に出力する。
アドレス変換制御部16は、論理アドレスを物理アドレスに変換する。例えば、アドレス変換制御部16は、論理アドレスを受信すると、早引きテーブル13を参照し、受信した論理アドレスの論理ブロックアドレスと対応付けられたエントリを識別する。また、アドレス変換制御部16は、識別したエントリの登録フラグが「1」であるか否かを判定する。
そして、アドレス変換制御部16は、識別したエントリの登録フラグが「1」である場合は、識別したエントリに格納された物理ブロックアドレスを取得する。また、アドレス変換制御部16は、取得した物理ブロックアドレスに対し、受信した論理アドレスの下位qビット、すなわち論理ページ番号を付加することで、物理アドレスを生成する。
一方、アドレス変換制御部16は、識別したエントリの登録フラグが「0」である場合、すなわち、受信した論理アドレスが整列移動されていない場合は、アドレス変換テーブルを用いたアドレス変換処理を実行する。例えば、アドレス変換制御部16は、変換テーブルタグ11の各エントリのうち、受信した論理アドレスの上位アドレスと対応付けられたエントリに格納されている物理アドレスを取得する。
そして、アドレス変換制御部16は、取得した物理アドレスをデバイスアクセス制御部17に出力することで、アドレス変換テーブル20の一部を取得する。すると、アドレス変換制御部16は、受信したアドレス変換テーブル20の一部をアドレス変換テーブルキャッシュ12とする。そして、アドレス変換制御部16は、アドレス変換テーブルキャッシュ12の各エントリのうち、受信した論理アドレスの下位アドレスと対応付けられたエントリに格納されている物理アドレスを取得する。その後、アドレス変換制御部16は、取得した物理アドレスをリクエスト調停部15に出力する。
また、アドレス変換制御部16は、リクエスト調停部15から、書き込み要求に格納されていた論理アドレスとデータを格納した物理アドレスとを受信する。すると、アドレス変換制御部16は、受信した論理アドレスの上位アドレスを用いてアドレス変換テーブル20の一部をアドレス変換テーブルキャッシュ12として取得する。そして、アドレス変換制御部16は、取得したアドレス変換テーブルキャッシュ12のうち、論理アドレスの下位アドレスと対応付けられたエントリの物理アドレスを、リクエスト調停部15から受信した物理アドレスで書き換える。
その後、アドレス変換制御部16は、アドレス変換テーブルキャッシュ12をデバイスアクセス制御部17に出力し、記憶デバイス7a〜10aが記憶するアドレス変換テーブル20の書き換えを指示する。ここで、アドレス変換テーブルキャッシュ12を記憶デバイス7a〜10aに書き戻す際は、キャッシュ元のページに書き戻されるわけではない。このため、アドレス変換制御部16は、アドレス変換テーブルキャッシュ12を書き戻した物理アドレスと、書き戻したアドレス変換テーブルキャッシュ12に対応する論理アドレスの上位ビットとを対応付けるよう変換テーブルタグ11を更新する。
また、アドレス変換制御部16は、早引きテーブル13の各エントリのうち、受信した論理アドレスの論理ブロックアドレスと対応付けられたエントリの登録フラグを「0」にする。つまり、アドレス変換制御部16は、データの書き込みにより、整列されたデータが他の物理ブロックに移動した場合には、早引きテーブル13の各エントリのうち、対応するエントリを無効にする。
次に、図11、12を用いて、アドレス変換制御部16が実行するアドレス変換の一例を説明する。まず、図11を用いて、アドレス変換制御部16がアドレス変換テーブルを用いて実行するアドレス変換の流れについて説明する。図11は、アドレス変換テーブルを用いたアドレス変換の流れを説明する図である。
まず、アドレス変換制御部16は、論理アドレスを受信すると、図11中(S)に示すように、変換テーブルタグ11の各エントリのうち、受信した論理アドレスの上位アドレスと対応付けられたエントリの物理アドレスを取得する。すると、アドレス変換制御部16は、物理アドレス「b」を取得するので、図11中(T)に示すように、物理アドレス「b」に格納されたアドレス変換テーブルをアドレス変換テーブルキャッシュ12として取得する。
次に、アドレス変換制御部16は、図11中(U)に示すように、アドレス変換テーブルキャッシュ12の各エントリのうち、受信した論理アドレスの下位アドレスと対応付けられたエントリに格納された物理アドレス「BC」を取得する。そして、アドレス変換制御部16は、図11中(V)に示すように、取得した物理アドレス「BC」を変換結果としてリクエスト調停部15に出力する。
次に、図12を用いて、アドレス変換制御部16が早引きテーブル13を用いて実行するアドレス変換について説明する。図12は、早引きテーブルを用いたアドレス変換の流れを説明する図である。例えば、アドレス変換制御部16は、図12中(W)に示すように、早引きテーブル13の各エントリのうち、受信した論理アドレスの上位pビットである論理ブロックアドレスと対応付けられたエントリを識別する。ここで、識別したエントリの登録フラグが「1」であるので、アドレス変換制御部16は、識別したエントリに格納されている物理ブロックアドレス「B」を取得する。
また、アドレス変換制御部16は、図12中(X)に示すように、受信した論理アドレスの下位qビットである論理ページ番号を物理ページ番号として、早引きテーブル13から取得した物理ブロックアドレス「B」の下位に付加する。この結果、アドレス変換制御部16は、受信した論理アドレスを物理アドレスに変換するアドレス変換テーブルを保持していない場合にも、記憶デバイス7a〜10aからアドレス変換テーブルを読み出すことなく、アドレス変換を行うことができる。
図6に戻って、デバイスアクセス制御部17は、記憶デバイス7a〜10aに対するデータの書き込み、読み出し処理を実行する。例えば、デバイスアクセス制御部17は、リクエスト調停部15、またはアドレス変換制御部16からデータの書き込み要求を受信する。このような場合には、デバイスアクセス制御部17は、受信した書き込み要求に格納されている物理アドレスが示すページに対して、書き込み要求に格納されているデータの書き込みを行う。そして、デバイスアクセス制御部17は、書き込み要求の発行元に対して、書き込み完了通知を送信する。
また、デバイスアクセス制御部17は、リクエスト調停部15、またはアドレス変換制御部16からデータの読み出し要求を受信すると、受信した読み出し要求に格納されている物理アドレスが示すページからデータの読み出しを行う。そして、デバイスアクセス制御部17は、読み出したデータを読み出し要求の発行元に送信する。
データ整列制御部18は、所定のタイミングでデータの整列処理を実行する。例えば、データ整列制御部18は、各論理ブロックアドレス「0」〜「2−1」について、以下の処理を実行する。まず、データ整列制御部18は、直接、もしくはリクエスト調停部15、およびアドレス変換制御部16を介して、早引きテーブル13の各エントリのうち、整列処理の対象となる論理ブロックアドレスと対応付けられたエントリの登録フラグを確認する。そして、データ整列制御部18は、登録フラグが「1」である場合は、次の論理ブロックアドレスと対応付けられたエントリの登録フラグを確認する。
そして、データ整列制御部18は、整列処理の対象となる論理ブロックアドレスと対応付けられたエントリの登録フラグが「0」である場合は、以下の処理を実行する。まず、データ整列制御部18は、データの整列先となる予備物理ブロックを確保する。例えば、データ整列制御部18は、ガベージコレクション制御部19にガベージコレクションを実行させ、予備物理ブロックを確保する。そして、データ整列制御部18は、各論理ページ番号「0」〜「2−1」が示すページのデータを、予備物理ブロックの各物理ページ番号「0」〜「2−1」が示すページに移動させる。
詳細な例を説明する。例えば、データ整列制御部18は、ある論理ブロックアドレス「x」について整列処理を行うため、物理ブロックアドレス「X」の予備物理ブロックを確保する。すると、データ整列制御部18は、論理ブロックアドレス「x」、論理ページ番号「0」が示すページのデータを読み出すよう読み出し要求を発行する。そして、データ整列制御部18は、読み出したデータを物理ブロックアドレス「X」、論理ページ番号「0」が示すページに書き込むよう書き込み要求を発行する。
次に、データ整列制御部18は、論理ブロックアドレス「x」、論理ページ番号「1」が示すページのデータを読み出すよう読み出し要求を発行する。そして、データ整列制御部18は、読み出したデータを物理ブロックアドレス「X」、論理ページ番号「1」が示すページに書き込むよう書き込み要求を発行する。このような処理を論理ページ番号「2−1」まで繰り返し実行することで、データ整列制御部18は、論理ブロックアドレスが「x」となるデータについての整列を行う。
また、データ整列制御部18は、1つの論理ブロックアドレスについて整列処理が終了すると、早引きテーブル13の更新を行うよう、リクエスト調停部15を介して、デバイスアクセス制御部17に指示する。詳細には、データ整列制御部18は、整列処理を行った論理ブロックアドレスと対応付けられたエントリに、データの移動先となる物理ブロックを示す物理ブロックを格納するよう指示する。この結果、デバイスアクセス制御部17は、整列処理を行った論理ブロックアドレスと対応付けられたエントリに、データの移動先となる物理ブロックアドレスを格納し、登録フラグを「1」に変更する。
また、データ整列制御部18は、1つの論理ブロックアドレスについて整列処理が終了すると、次の論理ブロックアドレスと対応付けられた早引きテーブル13のエントリの登録フラグが「0」であるか否かを判別する。このような処理を全ての論理ブロックアドレスについて実行することで、データ整列制御部18は、全てのデータを整列させることができる。
ガベージコレクション制御部19は、一部のページに有効なデータが格納されている物理ブロックを予備ブロックとするガベージコレクションを実行する。例えば、ガベージコレクション制御部19は、アドレス変換テーブル20の読み出し等を行い、一部のページに有効なデータが格納されている物理ブロックを消去対象ブロックとして識別する。そして、ガベージコレクション制御部19は、消去対象ブロック内の有効なデータが格納されているページを指定して読み出し要求を発行し、データの読み出しを行う。
次に、ガベージコレクション制御部19は、消去対象ブロック以外の物理ブロックのうち、有効なデータが格納されていないページを指定して、読み出したデータの書き込みを行う。そして、ガベージコレクション制御部19は、消去対象ブロックのデータの消去を指示する消去要求をリクエスト調停部15に出力する。このような場合にはリクエスト調停部15はデバイスアクセス制御部17に消去要求を転送する。すると、デバイスアクセス制御部17は、消去対象となるブロックのデータを消去する。
例えば、リクエスタインタフェース部14、リクエスト調停部15、アドレス変換制御部16、デバイスアクセス制御部17、データ整列制御部18、ガベージコレクション制御部19とは、電子回路である。ここで、電子回路の例として、ASIC(Application Specific Integrated Circuit)やFPGA(Field Programmable Gate Array)などの集積回路、またはCPU(Central Processing Unit)やMPU(Micro Processing Unit)などを適用する。
また、変換テーブルタグ11、アドレス変換テーブルキャッシュ12、早引きテーブル13とは、RAM(Random Access Memory)、フラッシュメモリ(flash memory)などの半導体メモリ素子などの記憶装置に格納された情報である。
次に、図13を用いて、NANDコントローラ6aがデータの読み出しを行う際に実行する処理の流れについて説明する。図13は、データの読み出し処理の流れを説明するためのフローチャートである。例えば、NANDコントローラ6aは、各CPU3a、3bが実行するプログラム等により実現されるシステムから論理アドレスを含む読み出し要求を受信する(ステップS101)。すると、NANDコントローラ6aは、早引きテーブル13の各エントリのうち、受信した論理アドレスの上位ビットである論理ブロックアドレスと対応付けられたエントリを検索する(ステップS102)。そして、NANDコントローラ6aは、検索したエントリの登録フラグが「1」であるか否かを判定する(ステップS103)。
ここで、NANDコントローラ6aは、検索したエントリの登録フラグが「1」ではない場合は(ステップS103否定)、変換テーブルタグ11の各エントリのうち受信した論理アドレスの上位アドレスと対応付けられたエントリを検索する(ステップS104)。また、NANDコントローラ6aは、検索したエントリに格納されている物理アドレスを用いて、アドレス変換テーブル20の一部をアドレス変換テーブルキャッシュ12として取得する。そして、NANDコントローラ6aは、取得したアドレス変換テーブルキャッシュ12の各エントリのうち、受信した論理アドレスの下位アドレスと対応付けられたエントリを検索する(ステップS105)。
ここで、NANDコントローラ6aは、検索したエントリのバリッドビットが「1」であるか否かを判定する(ステップS106)。そして、NANDコントローラ6aは、検索したエントリのバリッドビットが「1」ではない場合は(ステップS106否定)、アドレス例外エラー通知をシステムに通知し(ステップS107)、処理を異常終了する。一方、NANDコントローラ6aは、検索したエントリのバリッドビットが「1」である場合は(ステップS106肯定)、受信した論理アドレスを検索したエントリに格納された物理アドレスにアドレス変換する(ステップS108)。
そして、NANDコントローラ6aは、取得した物理アドレスを含む読み出し要求(Read)を発行し(ステップS109)。読み出したデータをシステムに返送し(ステップS110)、処理を終了する。一方、NANDコントローラ6aは、検索したエントリの登録フラグが「1」である場合は(ステップS103肯定)、ステップS104〜S106の処理をスキップする。そして、NANDコントローラ6aは、検索したエントリに格納されている物理ブロックアドレスと受信した論理アドレスの論理ページ番号とを組み合わせた物理アドレスに論理アドレスを変換する(ステップS108)。
次に、図14を用いて、NANDコントローラ6aがデータの書き込みを行う際に実行する処理の流れについて説明する。図14は、データの書き込み処理の流れを説明するためのフローチャートである。例えば、NANDコントローラ6aは、システムから論理アドレスを含む書き込み要求を受信する(ステップS200)。すると、NANDコントローラ6aは、早引きテーブル13の各エントリのうち、受信した論理アドレスの上位ビットである論理ブロックアドレスと対応付けられたエントリを検索する(ステップS201)。そして、NANDコントローラ6aは、検索したエントリの登録フラグが「1」であるか否かを判定する(ステップS202)。
ここで、NANDコントローラ6aは、検索したエントリの登録フラグが「1」ではない場合は(ステップS202否定)、変換テーブルタグ11の各エントリのうち受信した論理アドレスの上位アドレスと対応付けられたエントリを検索する(ステップS203)。また、NANDコントローラ6aは、検索したエントリに格納されている物理アドレスを用いて、アドレス変換テーブル20の一部をアドレス変換テーブルキャッシュ12として取得する。そして、NANDコントローラ6aは、取得したアドレス変換テーブルキャッシュ12の各エントリのうち、受信した論理アドレスの下位アドレスと対応付けられたエントリを検索する(ステップS204)。
ここで、NANDコントローラ6aは、検索したエントリのバリッドビットが「1」であるか否かを判定する(ステップS205)。そして、NANDコントローラ6aは、バリッドビットが「1」である場合は(ステップS205肯定)、受信した論理アドレスを検索したエントリに格納された物理アドレスにアドレス変換する(ステップS206)。一方、NANDコントローラ6aは、検索したエントリの登録フラグが「1」である場合は(ステップS202肯定)、ステップS203〜S205の処理をスキップする。そして、NANDコントローラ6aは、検索したエントリに格納されている物理ブロックアドレスと受信した論理アドレスの論理ページ番号とを組み合わせた物理アドレスに論理アドレスを変換する(ステップS206)。
続いて、NANDコントローラ6aは、取得した物理アドレスが示す物理ページに読み出し要求を発行し(ステップS207)、読み出したデータを書き込みデータで更新する(ステップS208)。そして、NANDコントローラ6aは、新たな物理ページに対して、更新したデータの書き込み要求(Write)を発行する(ステップS209)。
また、NANDコントローラ6aは、アドレス変換テーブルキャッシュ12のうち、システムから受信した書き込み要求の論理アドレスに対応付けられた物理アドレスを、新たにデータを書き込んだ物理ページを示す物理アドレスに更新する。そして、NANDコントローラ6aは、アドレス変換テーブルキャッシュ12を記憶デバイス7a〜10aに書き戻し、アドレス変換テーブル20を更新する(ステップS210)。
また、NANDコントローラ6aは、変換テーブルタグ11を更新する(ステップS211)。詳細には、NANDコントローラ6aは、アドレスシステムから受信した論理アドレスの上位ビットと対応付けられたエントリの物理アドレスを、アドレス変換テーブルキャッシュ12を書き戻した物理アドレスに更新する。次に、NANDコントローラ6aは、早引きテーブル13の各エントリのうち、受信した論理アドレスの論理ブロックアドレスと対応付けられたエントリの登録フラグを「0」にすることで無効化する(ステップS212)。その後、NANDコントローラ6aは、完了通知をシステムに返送し(ステップS213)、処理を終了する。
なお、NANDコントローラ6aは、検索したエントリのバリッドビットが「0」である場合は、検索したエントリに格納されている物理アドレスが示す物理ページにデータが格納されていないので、ステップS206〜S208の処理をスキップする。
次に、図15を用いて、NANDコントローラ6aが実行する整列処理の流れについて説明する。図15は、整列処理の流れを説明するためのフローチャートである。例えば、NANDコントローラ6aは、所定の時間間隔、もしくはシステムからの実行指示を契機として、図15に示す整列処理を実行する。
まず、NANDコントローラ6aは、早引きテーブル13の各エントリのうち、論理ブロックアドレス「0」と対応付けられたエントリを検索する(ステップS301)。そして、NANDコントローラ6aは、検索したエントリの登録フラグが「0」であるか否かを判定する(ステップS302)。
ここで、NANDコントローラ6aは、登録フラグが「0」である場合は(ステップS302肯定)、続くステップS303〜S307の整列処理を実行する。まず、NANDコントローラ6aは、整列用の予備物理ブロックを確保する(ステップS303)。次に、NANDコントローラ6aは、論理ブロックアドレスが「0」で論理ページ番号が「0」のページに対して、読み出し要求を発行する(ステップS304)。続いてNANDコントローラ6aは、読み出したデータを、予備物理ブロックの物理ページのうち、論理ページ番号「0」と同じ物理ページ番号が示す物理ページに書き込む(ステップS305)。
また、NANDコントローラ6aは、論理ブロックアドレスが「0」の全ての論理ページ番号について、データを整列させたか否かを判定する(ステップS306)。そして、NANDコントローラ6aは、論理ブロックアドレスが「0」の全ての論理ページ番号についてデータを整列させていない場合は(ステップS306否定)、他の論理ページ番号(例えば論理ページ番号「1」)について、ステップS304の処理を行う。
また、NANDコントローラ6aは、論理ブロックアドレスが「0」の全ての論理ページ番号について、データを整列させた場合は(ステップS306肯定)、早引きテーブル13を更新する(ステップS307)。詳細には、NANDコントローラ6aは、早引きテーブル13の各エントリのうち、論理ブロックアドレス「0」と対応付けられたエントリに予備物理ブロックの物理ブロックアドレスを格納し、登録フラグを「1」にする。
その後、NANDコントローラ6aは、整列処理を全ての論理ブロックアドレスについて実行したか否かを判定する(ステップS308)。そして、NANDコントローラ6aは、整列処理を全ての論理ブロックアドレスについて実行していない場合は(ステップS308否定)、次の論理ブロックアドレス(例えば論理ブロックアドレス「1」)について、ステップS301の処理を実行する。また、NANDコントローラ6aは、検索したエントリの登録フラグが「0」ではない場合は(ステップS302否定)、すでに整列処理が行われているので、整列処理をスキップし、ステップS308の処理を実行する。
[NANDコントローラ6aの効果]
上述したように、NANDコントローラ6aは、論理ブロックアドレスと論理ページ番号とを含む論理アドレスに、物理ブロックアドレスと物理ページ番号とを対応付けたアドレス変換テーブルキャッシュ12を記憶する。また、NANDコントローラ6aは、1つの論理ブロック番号を選択し、選択した論理ブロック番号を含む論理アドレスと対応付けられた物理アドレスをアドレス変換テーブルキャッシュ12から取得する。そして、NANDコントローラ6aは、取得した物理アドレスが示す物理ページのデータを、1つの物理ブロックに含まれる物理ページであって、各データの論理アドレスに含まれる論理ページ番号と同一の物理ページ番号が示す物理ページに移動させる。その後、NANDコントローラ6aは、データを移動させた物理ブロックの物理ブロックアドレスと、選択した論理ブロック番号とを対応付けて早引きテーブル13に格納する。
また、NANDコントローラ6aは、読み出し対象のデータが格納された論理ページを示す論理アドレスを受信すると、論理アドレスに含まれる論理ブロックアドレスと対応付けられた物理ブロックアドレスを早引きテーブル13から取得する。そして、NANDコントローラ6aは、早引きテーブル13から取得した物理ブロックアドレスが示す物理ブロックに含まれた各物理ページのうち、受信した論理アドレスに含まれる論理ページ番号と同一の物理ページ番号が示す物理ページからデータを読み出す。
このため、NANDコントローラ6aは、読み出し対象のデータが格納された論理ページを示す論理アドレスを物理アドレスに変換するアドレス変換テーブル20を保持していない場合にも、アドレス変換に要する時間を短縮することができる。この結果、NANDコントローラ6aは、記憶デバイス7a〜10aに対するアクセスのレイテンシを改善することができる。
また、例えば、アドレス変換テーブルの一部を保持する技術では、アドレス変換テーブルのサイズが大きくなると、保持する割合が相対的に小さくなるので、論理アドレスがキャッシュヒットする確率が悪化し、アドレス変換に要する時間が増大してしまう。また、アドレス変換テーブルのサイズが増大すると、変換テーブルタグの大きさも増大するので、変換テーブルタグの一部をキャッシュすることで、回路規模の増大を防ぐ手法が考えられる。しかしながら、このような手法では、記憶デバイスからデータの読み出しや書き込みを行う際に、複数回のアクセスが行われることとなる。この結果、記憶デバイスにアクセスする際のレイテンシが増大してしまう。
しかし、NANDコントローラ6aは、アドレス変換テーブル20の大きさによらず、整列処理を行った論理アドレスについては、必ずアドレス変換を行うことができる。この結果、NANDコントローラ6aは、記憶デバイス7a〜10aに対する読み出し性能、および書き込み性能を向上させることができる。
また、早引きテーブル13は、記憶デバイス7a〜10aが有する物理ブロックの数と同数のエントリで実現可能である。この結果、早引きテーブル13のサイズは、アドレス変換テーブル20に記憶デバイス7a〜10aが有する物理ページの数と同数のエントリを設定する場合よりも、非常に小さくなる。このため、NANDコントローラ6aは、回路規模を増大させることなく、記憶デバイス7a〜10aに対する読み出し性能、および書き込み性能を向上させることができる。
また、NANDコントローラ6aは、論理アドレスの上位ビットを論理ブロックアドレスとし、論理アドレスの下位ビットを論理ページ番号とする。また、NANDコントローラ6aは、物理アドレスの上位ビットを物理ブロックアドレスとし、物理アドレスの下位ビットを物理ページ番号とする。このため、NANDコントローラ6aは、任意の数の論理ページを早引きテーブルの構成単位とすることができる。また、NANDコントローラ6aは、複雑な処理を行うことなく、容易にアドレス変換を行うことができる。
また、NANDコントローラ6aは、使用されていない物理ページを含む物理ブロックに格納されたデータを他のブロックに複製し、使用されていない物理ページを含む物理ブロック内のデータを消去するガベージコレクション制御部19を有する。そして、NANDコントローラ6aは、ガベージコレクション制御部19がデータを消去した物理ブロックを予備ブロックとして利用するので、記憶デバイス7a〜10aの空き容量が少ない場合にも、効率的にデータの整列処理を行うことができる。
上述したNANDコントローラ6aは、データ整列処理を実行する際に、早引きテーブル13の全エントリを対象としていた。しかし、実施例はこれに限定されるものではない。例えば、NANDコントローラ6aは、1回の整列処理で、全論理ブロックアドレスのうち、一部の論理ブロックアドレスのみについて整列制御を行っても良い。
例えば、NANDコントローラ6aは、早引きテーブル13の各エントリについて整列処理を実行し、所定の時間が経過した場合には、整列処理を行った最後の論理ブロックアドレスを記憶する。そして、NANDコントローラ6aは、次回の整列処理を行う際に、記憶した論理ブロックアドレスの次の論理ブロックアドレスから整列処理を再開してもよい。
以下、図16を用いて、NANDコントローラ6aが実行する処理の流れについて説明する。図16は、整列処理の第1のバリエーションを説明するためのフローチャートである。なお、図16に示す処理のうち、ステップS403〜ステップS409は、図15に示すステップS301〜S307と同様の処理を実行するものとして、説明を省略する。
例えば、NANDコントローラ6aは、前回の整列処理において最後に整列処理を行った論理ブロックアドレスである終了アドレスをロードする(ステップS401)。次に、NANDコントローラ6aは、ロードした終了アドレスに1を加算した値を整列処理の開始アドレスとする(ステップS402)。そして、NANDコントローラ6aは、開始アドレスからステップS403の処理を実行する。
また、NANDコントローラ6aは、ステップS409の処理を実行すると、整列処理を開始してから一定時間が経過したか否かを判定する(ステップS410)。そして、NANDコントローラ6aは、一定時間が経過している場合は(ステップS410肯定)、整列処理を実行した最後の論理ブロックアドレスを終了アドレスとして保存し(ステップS411)、処理を終了する。一方、NANDコントローラ6aは、整列処理を開始してから一定時間が経過していない場合は(ステップS410否定)、次の論理ブロックアドレスについて、ステップS403の処理を実行する。
また、NANDコントローラ6aは、早引きテーブル13の各エントリを複数のグループに分割し、各グループにグループ番号(グループNo)を付与する。そして、NANDコントローラ6aは、1回の整列処理で1つのグループについてのみ整列処理を行っても良い。
例えば、図17は、整列処理の第2のバリエーションを説明するためのフローチャートである。なお、図17に示す処理のうち、ステップS503〜ステップS509は、図15に示すステップS301〜S307と同様の処理を実行するものとして、説明を省略する。
例えば、NANDコントローラ6aは、前回の整列処理において最後に整列処理を行ったグループ番号をロードする(ステップS501)。次に、NANDコントローラ6aは、ロードしたグループ番号の次のグループ番号を整列処理の対象とする(ステップS502)。そして、NANDコントローラ6aは、整列処理の対象とするグループ番号が付与された最初のエントリについて、ステップS503の処理を実行する。
また、NANDコントローラ6aは、ステップS509の処理を実行すると、早引きテーブル13の各エントリのうち、整列処理の対象となるグループ番号が付与された全てのエントリについて整列処理を行ったか否か判定する(ステップS510)。そして、NANDコントローラ6aは、整列処理の対象となるグループ番号が付与された全てのエントリについて整列処理を行った場合は(ステップS510肯定)、整列処理を実行したグループ番号を保存し(ステップS511)、処理を終了する。一方、NANDコントローラ6aは、整列処理の対象となるグループ番号が付与された全てのエントリについて整列処理を行っていない場合は(ステップS510否定)、次の論理ブロックアドレスについて、ステップS503の処理を実行する。
NANDコントローラ6aは、論理ブロックアドレスの一部ずつについて整列処理を実行した場合は、1回の整列処理に要する処理時間を短縮することができる。この結果、NANDコントローラ6aは、整列処理のスケジューリングを柔軟にすることができる。
また、NANDコントローラ6aは、読み出し要求、または書き込み要求の発生頻度を論理ブロックアドレスごとに計数し、読み出し要求の発生頻度が多く、書き込み要求の発生頻度が少ない論理ブロックアドレスについて、整列処理を実行しても良い。以下、読み出し要求の発生頻度が多く、書き込み要求の発生頻度が少ない論理ブロックアドレスのグループについて、整列処理を実行するNANDコントローラ6cについて説明する。
図18は、読み出し要求と書き込み要求との発生頻度に応じて整列処理を実行するNANDコントローラの機能構成を説明する図である。なお、図18に示すNANDコントローラ6cの機能構成のうち、図6に示すNANDコントローラ6aと同様の機能構成については、同一の符号を付し、説明を省略する。
例えば、NANDコントローラ6cは、データ整列制御部18a、リクエストカウンタ22を有する。リクエストカウンタ22は、リクエスタインタフェース部14がI/Oハブ4を介して受信した読み出し要求、および書き込み要求の内容を取得する。そして、リクエストカウンタ22は、複数の論理ブロックアドレスを含むグループごとに、リクエスタインタフェース部14が受信した読み出し要求の数、および書き込み要求の数を計数する。
また、リクエストカウンタ22は、データ整列制御部18aから整列処理の実行通知を受信すると、グループごとに、計数した読み出し要求の数から書き込み要求の数を減算した値を算出する。そして、リクエストカウンタ22は、算出した値が最も大きいグループに含まれる論理ブロックアドレスをデータ整列制御部18aに通知する。すなわち、リクエストカウンタ22は、読み出し要求の数が大きく、書き込み要求の数が少ないグループに含まれる論理ブロックアドレスをデータ整列制御部18aに通知する。
データ整列制御部18aは、所定の時間間隔、もしくはシステムからの整列処理実行要求に応じて、整列処理を実行する場合は、整列処理の実行通知をリクエストカウンタ22に通知する。そして、データ整列制御部18aは、リクエストカウンタ22から論理ブロックアドレスを受信すると、データ整列制御部18と同様に、受信した論理ブロックアドレスについて整列処理を実行する。
例えば、データ整列制御部18a、リクエストカウンタ22とは、電子回路である。ここで、電子回路の例として、ASIC(Application Specific Integrated Circuit)やFPGA(Field Programmable Gate Array)などの集積回路、またはCPU(Central Processing Unit)やMPU(Micro Processing Unit)などを適用する。
次に、図19を用いて、NANDコントローラ6cが実行する整列処理の流れを説明する。図19は、整列処理の第3のバリエーションを説明するためのフローチャートである。なお、図19に示す処理のうち、ステップS603〜ステップS609は、図15に示すステップS301〜S307と同様の処理を実行するものとして、説明を省略する。
例えば、NANDコントローラ6cは、各グループの読み出し要求の数から書き込み要求の数を減算する(ステップS601)。次に、NANDコントローラ6cは、減算結果の値が最も大きいグループを今回の整列処理の対象に設定する(ステップS602)。そして、NANDコントローラ6cは、整列処理の対象となったグループに含まれる論理アドレスについて、ステップS603の処理を実行する。また、NANDコントローラ6cは、ステップS609の処理を実行すると、グループ内の全ての論理ブロックアドレスについて整列処理を実行したか否かを判定する(ステップS610)。
そして、NANDコントローラ6cは、グループ内の全ての論理ブロックアドレスについて整列処理を行った場合は(ステップS610肯定)、処理を終了する。一方、NANDコントローラ6cは、グループ内全ての論理ブロックアドレスについて整列処理を行っていない場合は(ステップS610否定)、グループ内の次の論理ブロックアドレスについて、ステップS603の処理を実行する。
[NANDコントローラ6cの効果]
上述したように、NANDコントローラ6cは、論理ブロックアドレスごとに、読み出し要求の数と書き込み要求の数とを計数する。そして、NANDコントローラ6cは、読み出し要求の数から書き込み要求の数を減算した数が最も多い論理ブロックアドレスについて、整列処理を実行する。このため、NANDコントローラ6cは、効果的な整列処理を実行することができる。
すなわち、読み出し要求の数が多く、書き込み要求の数が少ない論理ブロックアドレスの各論理ページを物理ブロック上で整列させた場合は、無効になる確率が少なく、早引きテーブル13を用いたアドレス変換が多く実行されると考えられる。このため、NANDコントローラ6cは、読み出し要求の数が多く、書き込み要求の数が少ない論理ブロックアドレスを優先的に整列させるので、効率的な整列処理を実行することができる。
実施例1、2では、論理ブロック、および物理ブロックを早引きテーブル13に登録したデータ単位としたが、実施例はこれに限定されるものではない。すなわち、NANDコントローラ6a〜6cは、任意のデータ単位で、論理アドレス、および物理アドレスを分割し、早引きテーブル13に登録してもよい。
例えば、NANDコントローラ6a〜6cは、論理アドレスの上位iビットと、物理アドレスの上位iビットとを対応付けて早引きテーブル13としてもよい。また、このような分割を行う場合は、変換テーブルタグ11と早引きテーブル13とを共通化してもよい。
以下、図20を用いて、変換テーブルタグ11と早引きテーブル13とを共通化したNANDコントローラ6dについて説明する。図20は、変換テーブルタグと早引きテーブルとを共通化したNANDコントローラの機能構成を説明する図である。なお、図20に示すNANDコントローラ6dの機能構成のうち、図6に示すNANDコントローラ6aと同様の機能構成については、同一の符号を付し、説明を省略する。
例えば、NANDコントローラ6dは、早引きテーブル13a、およびアドレス変換制御部16aを有する。早引きテーブル13aは、論理アドレスのうち上位iビットと対応付けられた複数のエントリを有する。そして、早引きテーブル13aは、早引きテーブル13と同様に、各エントリに登録フラグと、物理アドレスの上位iビットとを対応付けて記憶する。また、早引きテーブル13aは、変換テーブルタグ11と同様に、各エントリに、各エントリと対応付けられた上位アドレスを含む論理アドレスを物理アドレスに変換するためのアドレス変換テーブルが格納された物理アドレスをさらに格納する。
アドレス変換制御部16aは、アドレス変換制御部16と同様の処理を行う。この際、アドレス変換制御部16aは、早引きテーブル13aを変換テーブルタグ11、および早引きテーブル13として利用する。以下、図21を用いて、アドレス変換制御部16aが実行するアドレス変換処理の流れを説明する。
図21は、変換テーブルタグと早引きテーブルとを共通化した際のアドレス変換処理の流れを説明する図である。図21に示すように早引きテーブル13aの各エントリには、論理アドレスの上位iビットである上位アドレス「0」〜「2−1」が対応付けられている。また、早引きテーブル13aの各エントリには、物理アドレスの上位iビットである「A」〜「M」が格納されている。また、早引きテーブル13aの各エントリには、対応する上位アドレスを含む論理アドレスを物理アドレスに変換するためのアドレス変換テーブルが格納された物理アドレス「a」〜「m」が格納されている。
例えば、アドレス変換制御部16aは、論理アドレスを受信すると、図21中(a)に示すように、早引きテーブル13aの各エントリのうち、受信した論理アドレスの上位アドレスと対応付けられたエントリを識別する。例えば、アドレス変換制御部16aは、図21に示す例では、上位アドレス「1」と対応付けられたエントリを識別する。
そして、アドレス変換制御部16aは、識別したエントリの登録フラグが「0」である場合は、以下の処理を実行する。まず、アドレス変換制御部16aは、識別したエントリに格納された物理アドレス「b」を取得し、図21中(b)に示すように、物理アドレス「b」に格納されているアドレス変換テーブル20の一部を取得する。そして、アドレス変換制御部16aは、図21中(c)に示すように、取得したアドレス変換テーブル20の一部をアドレス変換テーブルキャッシュ12とする。
また、アドレス変換制御部16aは、図21中(d)に示すように、アドレス変換テーブルキャッシュ12の各エントリのうち、受信した論理アドレスの下位アドレスと対応付けられたエントリを識別する。そして、アドレス変換制御部16aは、識別したエントリに格納されている物理アドレス「BC」を変換後の物理アドレスとして、リクエスト調停部15に出力する。
なお、アドレス変換制御部16aは、例えば、受信した論理アドレスの上位アドレスが「2−1」であった場合は、早引きテーブル13aの各エントリのうち、上位アドレス「2−1」と対応付けられたエントリを識別する。そして、アドレス変換制御部16aは、識別したエントリの登録フラグが「1」であるので、識別したエントリに格納されている物理アドレスの上位iビット「M」を取得する。そして、アドレス変換制御部16aは、取得した「M」を上位iビットとし、受信した論理アドレスの下位アドレスを下位jビットとする物理アドレスを変換後の物理アドレスとして、リクエスト調停部15に出力する。
例えば、アドレス変換制御部16aは、電子回路である。ここで、電子回路の例として、ASICやFPGAなどの集積回路、またはCPUやMPUなどを適用する。また、早引きテーブル13aとは、半導体メモリ等の記憶装置に記憶される情報である。
[NANDコントローラ6dの効果]
このように、NANDコントローラ6dは、アドレス変換テーブルキャッシュ12を記憶する。また、NANDコントローラ6dは、論理アドレスの上位ビットと、登録フラグと、データの整理先となる物理記憶領域を示す物理アドレスの上位ビットとを対応付けたエントリを有する早引きテーブル13aを有する。また、NANDコントローラ6dは、早引きテーブル13aに、同一エントリの論理アドレスの上位ビットを含む論理アドレスを物理アドレスに変換する変換テーブルが格納された物理アドレスを各エントリに格納する。
そして、NANDコントローラ6dは、読み出し対象の論理アドレスから上位ビットを取得し、取得した上位ビットと対応付けられた登録フラグが「0」である場合は、取得した上位ビットと対応付けられた物理アドレスを用いて、アドレス変換テーブルを取得する。また、NANDコントローラ6dは、取得した上位ビットと対応付けられた登録フラグが「1」である場合は、取得した上位ビットと対応付けられた物理アドレスの上位ビットを取得する。そして、NANDコントローラ6dは、取得した上位ビットに読み出し対象の論理アドレスの下位ビットを付加した物理アドレスが示すページからデータの読み出しを行う。
このように、NANDコントローラ6dは、変換テーブルタグ11と早引きテーブル13aとを1つのテーブルに統合する。この結果、NANDコントローラ6dは、テーブルの検索や更新に要するレイテンシを削減し、記憶デバイス7a〜10aに対するアクセス性能を向上させることができる。また、NANDコントローラ6dは、変換テーブルタグ11と早引きテーブル13aとを記憶するための記憶容量を削減するので、回路規模を縮小することができる。
実施例1〜3では、早引きテーブルをNANDコントローラ6a〜6d上に設置する例について記載したが、実施例はこれに限定されるものではない。そこで、以下の実施例4では、早引きテーブル13aを記憶デバイス7a〜10a上に設置し、早引きテーブル13aの一部を早引きテーブルキャッシュ13bとして保持するNANDコントローラ6eについて説明する。
図22は、早引きテーブルの一部を保持するNANDコントローラの機能構成を説明する図である。なお、図22に示すNANDコントローラ6eの機能構成のうち、図6に示すNANDコントローラ6aと同様の機能構成については、同一の符号を付し、説明を省略する。例えば、NANDコントローラ6eは、早引きテーブルタグ11a、アドレス変換制御部16b、および早引きテーブルキャッシュ13bを有する。また記憶デバイス7a〜10aは、早引きテーブル13aを記憶する。
早引きテーブルタグ11aは、論理アドレスの上位アドレスのうちの上位kビットであるインデックスと、対応するインデックスを含んだ上位アドレスを含む各論理アドレスの早引きテーブルを記憶する物理アドレスとを対応付けて記憶する。また、早引きテーブルキャッシュ13bは、記憶デバイス7a〜10aが記憶する早引きテーブル13aの一部である。
以下、図23を用いて、アドレス変換制御部16bが実行する処理の流れについて説明する。図23は、早引きテーブルタグを用いて実行するアドレス変換処理の流れを説明する図である。例えばアドレス変換制御部16bは、読み出し要求の対象となる論理アドレスを受信すると、図23中(f)に示すように、受信した論理アドレスの上位kビットであるインデックスを用いて早引きテーブルタグ11aを検索する。そして、アドレス変換制御部16bは、受信した論理アドレスに含まれる上位アドレスの早引きを行うための早引きテーブルが格納された物理アドレス「z」を早引きテーブルタグ11aから取得する。
次に、アドレス変換制御部16bは、図23中(g)に示すように、取得した物理アドレス「z」が示すページに格納されている早引きテーブル13aの一部を取得し、図23中(h)に示すように、早引きテーブルキャッシュ13bとする。次に、アドレス変換制御部16bは、図23中(i)に示すように、早引きテーブルキャッシュ13bの各エントリのうち、読み出し要求の対象となる論理アドレスの上位アドレスと対応付けられたエントリを識別する。
ここで、アドレス変換制御部16bは、識別したエントリの登録フラグが「0」であるので、識別したエントリに格納された物理アドレス「f」を取得する。また、アドレス変換制御部16bは、図23中(j)に示すように、物理アドレス「f」に格納されているアドレス変換テーブル20の一部を取得する。そして、アドレス変換制御部16bは、図23中(k)に示すように、取得したアドレス変換テーブル20の一部をアドレス変換テーブルキャッシュ12とする。
また、アドレス変換制御部16bは、図23中(l)に示すように、アドレス変換テーブルキャッシュ12の各エントリのうち、受信した論理アドレスの下位アドレスと対応付けられたエントリを識別する。そして、アドレス変換制御部16bは、図23中(m)に示すように、識別したエントリに格納されている物理アドレス「BC」を変換後の物理アドレスとして、リクエスト調停部15に出力する。
例えば、アドレス変換制御部16bは、電子回路である。ここで、電子回路の例として、ASICやFPGAなどの集積回路、またはCPUやMPUなどを適用する。また、早引きテーブルタグ11a、早引きテーブルキャッシュ13bとは、半導体メモリ等の記憶装置に記憶される情報である。
[NANDコントローラ6eの効果]
このように、NANDコントローラ6eは、インデックスと、インデックスを含む上位アドレスを含む論理アドレスについての早引きテーブルを記憶するページを示す物理アドレスとを対応付けた早引きテーブルタグ11aを有する。また、NANDコントローラ6eは、早引きテーブル13aの一部を早引きテーブルキャッシュ13bとして記憶する。
そして、NANDコントローラ6eは、読み出し対象の論理アドレスのインデックスと対応付けられた物理アドレスを早引きテーブルタグ11aから取得する。その後、NANDコントローラ6eは、取得した物理アドレスを用いて、早引きテーブル13aの一部を早引きテーブルキャッシュ13bとして保持する。また、NANDコントローラ6eは、保持した早引きテーブルキャッシュ13bから、読み出し対象の論理アドレスの上位ビットと対応付けられた物理アドレスの上位ビットを取得する。
このように、NANDコントローラ6eは、早引きテーブル13aを記憶デバイス7a〜10a上に保持し、早引きテーブル13aの一部を保持する。このため、NANDコントローラ6eは、記憶デバイス7a〜10aの容量が増大し、アドレス変換テーブルの容量が増大する結果、早引きテーブル13aの容量が増大した場合であっても、早引きテーブルを用いたアドレス変換を行える。
また、早引きテーブル13aの大きさは、アドレス変換テーブル20のサイズの例えば100分の1から1000分の1程度に収めることができる。この結果、NANDコントローラ6eは、早引きテーブル13aの一部を早引きテーブルキャッシュ13bとして保持した場合であっても早引きテーブルのキャッシュヒット率をあまり下げない。このため、NANDコントローラ6eは、アドレス変換に要する時間が増大するのを防ぐことができる。
これまで本発明の実施例について説明したが実施例は、上述した実施例以外にも様々な異なる形態にて実施されてよいものである。そこで、以下では実施例5として本発明に含まれる他の実施例を説明する。
(1)整列処理の単位について
上述したNANDコントローラ6aは、記憶デバイス7a〜10aの物理ブロックにあわせた論理ブロックごとにデータの整列処理を行った。しかし、実施例はこれに限定されるものではない。すなわち、NANDコントローラ6aは、論理ブロックの大きさを記憶デバイス7a〜10aの物理ブロックにあわせる必要はなく、任意の大きさの論理ブロックについて、データの整列処理を実行することができる。
例えば、NANDコントローラ6aは、数ページ程度の物理ブロックよりも小さな連続する論理ページを整列処理の単位としてもよい。また、NANDコントローラ6aは、複数の物理ブロックほどの大きさを持つ論理ブロック単位でデータの整列処理を実行することもできる。すなわち、NANDコントローラ6aは、論理アドレスを論理ブロックアドレスと論理ページアドレスとに分割する際に、任意のビット数で分割を行うことができる。
(2)記憶デバイスの寿命について
上述したNANDコントローラ6a〜6eは、整列処理を実行するにあたり、データの移動にともなうデータの書き込み処理を実行する。ここで、記憶デバイス7a〜10aの寿命を考慮した場合は、書き込み処理の回数を削減するため、過剰な整列を行わないようにするのが望ましい。特に、ファイルシステムが実際には使用していないデータに対する整列処理を行わないようにするのが望ましい。
そこで、NANDコントローラ6a〜6eは、Trimと呼ばれるデータ無効通知コマンドを考慮した整列処理を行っても良い。例えば、NANDコントローラ6a〜6eは、Trimの対象となったページを管理対象から除外することで、実際には使用していないデータに対する整列処理を回避するようにしてもよい。
(3)早引きテーブルとアドレス変換テーブルとについて
上述したNANDコントローラ6aは、論理アドレスを受信すると、早引きテーブル13を確認し、論理アドレスに含まれる論理ブロックアドレスに対応するエントリの登録フラグが「1」である場合には、早引きテーブル13を用いたアドレス変換を行った。また、NANDコントローラ6aは、対応するエントリの登録フラグが「0」である場合は、アドレス変換テーブルを用いたアドレス変換処理を実行した。
しかし、実施例はこれに限定されるものではない。例えば、NANDコントローラ6aは、早引きテーブル13を用いたアドレス変換処理とアドレス変換テーブルを用いたアドレス変換処理とを平行して実行し、いずれかの処理においてアドレス変換が完了した場合には、他方の処理を中止してもよい。
(4)プログラム
上記の実施例で説明した各種の処理は、予め用意された制御プログラムをNANDコントローラ内の演算処理装置が実行することで実現してもよい。そこで、以下では、図24を用いて、上記のNANDコントローラ6aと同様の機能を有する制御プログラムを実行するコンピュータの一例について説明する。
図24は、制御プログラムを実行するNANDコントローラの一例について説明する図である。図24に示すように、NANDコントローラ6fは、CPU(Central Processing Unit)30、デバイスアクセス制御部35を有する。また、CPU30は、メモリデバイス6gと接続される。
メモリデバイス6gには、変換テーブルタグ11、アドレス変換テーブルキャッシュ12、早引きテーブル13、制御プログラム36があらかじめ記憶される。また、記憶デバイス7a〜10aには、アドレス変換テーブル20、およびユーザデータ21があらかじめ格納されている。
ここで、CPU30がメモリデバイス6gから制御プログラム36を読み出して展開して実行することにより、制御プログラム36は、以下の様に機能する。すなわち、制御プログラム36は、アドレス変換制御プロセス31、リクエスト調停プロセス32、データ整列制御プロセス33、ガベージコレクション制御プロセス34として機能する。ここで、アドレス変換制御プロセス31、リクエスト調停プロセス32、データ整列制御プロセス33は、図6に示すアドレス変換制御部16、リクエスト調停部15、データ整列制御部18と同様の機能を発揮する。また、ガベージコレクション制御プロセス34は、図6に示すガベージコレクション制御部19と同様の機能を発揮する。
なお、上記の制御プログラム36については、必ずしも最初からメモリデバイス6gに記憶させておく必要はない。例えば、フレキシブルディスク、いわゆるFD(Flexible Disk)、CD(Compact Disk)−ROM、DVD(Digital Versatile Disk)、光磁気ディスク、ICカードなどの「可搬用の物理媒体」に各プログラムを記憶させる。
そして、NANDコントローラ6fが各CPU3a、3bを解して、これらの可搬用の物理媒体から各プログラムを取得して実行するようにしてもよい。また、公衆回線、インターネット、LAN、WAN(Wide Area Network)などを介して他のコンピュータまたはサーバ装置などに記憶させた各プログラムを取得して実行するようにしてもよい。
1 情報処理装置
2a、2b メモリ
3a、3b CPU
4 I/Oハブ
5a、5b SSD
6a〜6f NANDコントローラ
6g メモリデバイス
7a〜10a、7b〜10b 記憶デバイス
11 変換テーブルタグ
11a 早引きテーブルタグ
12 アドレス変換テーブルキャッシュ
13、13a 早引きテーブル
13b 早引きテーブルキャッシュ
14 リクエスタインタフェース部
15 リクエスト調停部
16、16a、16b アドレス変換制御部
17 デバイスアクセス制御部
18、18a データ整列制御部
19 ガベージコレクション制御部
20 アドレス変換テーブル
21 ユーザデータ
30 CPU
31 アドレス変換制御プロセス
32 リクエスト調停プロセス
33 データ整列制御プロセス
34 ガベージコレクション制御プロセス

Claims (7)

  1. 記憶領域を複数有するブロックを論理的に示す論理ブロック番号と前記ブロックが含む記憶領域を論理的に示す論理ページ番号とを組み合わせた論理番号に、前記ブロックを物理的に示す物理ブロック番号と前記記憶領域を物理的に示す物理ページ番号とを組み合わせた物理番号を対応付けた変換テーブルを記憶する第1の記憶部と、
    複数の論理ブロック番号を含むグループごとに、データの読み出し要求の数と、前記データの書き込み要求の数とを計数する計数部と
    前記計数部が計数した前記読み出し要求の数から前記書き込み要求の数を減算した数が最も多いグループに含まれる1つの論理ブロック番号を選択する選択部と、
    前記選択部が選択した論理ブロック番号を含む論理番号に対応付けられた物理番号を前記第1の記憶部が記憶する変換テーブルから識別する識別部と、
    前記識別部が識別した物理番号が示す記憶領域のデータを、1つのブロックに含まれる記憶領域であって、当該データの論理番号に含まれる論理ページ番号と同一の物理ページ番号が示す記憶領域に移動させる移動部と、
    前記移動部が前記データを移動させたブロックの物理ブロック番号と、前記選択部が選択した論理ブロック番号とを対応付けた早引きテーブルを記憶する第2の記憶部と、
    読み出し対象のデータが格納された領域を示す論理番号を受信すると、受信した論理番号に含まれる論理ブロック番号に対応付けられた物理ブロック番号を前記第2の記憶部が記憶する早引きテーブルから取得する取得部と、
    前記取得部が取得した物理ブロック番号が示すブロックに格納されたデータのうち、前記受信した論理番号に含まれる論理ページ番号と同一の物理ページ番号が示す領域に格納されたデータを読み出す読み出し部と
    を有することを特徴とする制御装置。
  2. 前記記憶領域を論理的に示す論理アドレスの上位ビットを前記論理ブロック番号とし、前記論理アドレスの下位ビットを前記論理ページ番号とし、前記記憶領域を物理的に示す物理アドレスの上位ビットを前記物理ブロック番号とし、前記物理アドレスの下位ビットを前記物理ページ番号とすることを特徴とする請求項1に記載の制御装置。
  3. 使用されていない記憶領域を含むブロックに格納されたデータを他のブロックに複製して、前記ブロック内のデータを消去する消去部を有し、
    前記移動部は、前記消去部がデータを消去したブロックに対し、前記データを移動させることを特徴とする請求項1または2に記載の制御装置。
  4. 前記第1の記憶部は、記憶装置が記憶する前記変換テーブルの一部を記憶し、
    前記第2の記憶部は、前記移動部が前記データを移動させたブロックの物理ブロック番号と、当該ブロックに前記移動部がデータを移動させたか否かを示すフラグと、前記選択部が選択した論理ブロック番号とを対応付けた早引きテーブル、および、当該論理ブロック番号を含む論理番号を物理番号に変換する変換テーブルが記憶された領域を示す物理番号とを対応付けた変換テーブルタグを記憶し
    前記移動部は、前記データを移動させると、当該データを移動させたブロックの物理ブロック番号と対応付けて前記データを移動させた旨を示すフラグを前記早引きテーブルに格納し、
    前記取得部は、読み出し対象の論理番号に含まれる論理ブロック番号に、前記データを移動させた旨を示すフラグが対応付けられている場合は、当該論理ブロック番号と対応付けられた物理ブロック番号を取得し、該論理ブロック番号に、前記データを移動させた旨を示すフラグが対応付けられていない場合は、当該論理ブロック番号に対応付けられた物理番号が示す記憶領域に格納された変換テーブルを前記第1の記憶部に格納し、
    前記読み出し部は、前記読み出し対象の論理番号に含まれる論理ブロック番号に、前記データを移動させた旨を示すフラグが対応付けられていない場合は、前記第1の記憶部に格納された変換テーブルを用いて、読み出し対象の論理番号に対応付けられた物理番号を取得し、当該取得した物理番号が示す記憶領域からデータの読み出しを行うことを特徴とする請求項1または2に記載の制御装置。
  5. 前記早引きテーブルが記憶された記憶領域を示す物理アドレスと、当該物理アドレスが示す記憶領域に格納された早引きテーブルに格納されている論理アドレスの上位ビットであるインデックスとを対応付けて記憶する第3の記憶部を有し、
    前記第2の記憶部は、記憶装置が記憶する前記早引きテーブルの一部を記憶し、
    前記取得部が、読み出し対象の論理アドレスの上位ビットのインデックスと対応付けられた物理アドレスを前記第3の記憶部から取得し、当該取得した物理アドレスが示す記憶領域から読み出した早引きテーブルを前記第2の記憶部に格納し、当該第2の記憶部に格納した早引きテーブルから、前記読み出し対象の論理アドレスの上位ビットと対応付けられた物理アドレスの上位ビットを取得することを特徴とする請求項2に記載の制御装置。
  6. 記憶装置からデータを読み出す制御装置が有するコンピュータに、
    記憶領域を複数有するブロックを論理的に示す論理ブロック番号を複数含むグループごとに、データの読み出し要求の数と、前記データの書き込み要求の数とを計数し
    計数した前記読み出し要求の数から前記書き込み要求の数を減算した数が最も多いグループに含まれる論理ブロック番号を1つ選択し、
    論理ブロック番号と前記ブロックが含む記憶領域を論理的に示す論理ページ番号とを組み合わせた論理番号に、前記ブロックを物理的に示す物理ブロック番号と前記記憶領域を物理的に示す物理ページ番号とを組み合わせた物理番号を対応付けた変換テーブルを記憶する第1の記憶部から、前記選択した論理ブロック番号を含む論理番号に対応付けられた物理番号を識別し、
    前記識別した物理番号が示す記憶領域のデータを、1つのブロックに含まれる記憶領域であって、当該データの論理番号に含まれる論理ページ番号と同一の物理ページ番号が示す記憶領域に移動させ、
    前記データを移動させたブロックの物理ブロック番号と、前記選択した論理ブロック番号とを対応付けて第2の記憶部に記憶させ、
    読み出し対象のデータが格納された領域を示す論理番号を受信すると、受信した論理番号に含まれる論理ブロック番号に対応付けられた物理ブロック番号を前記第2の記憶部から取得し、
    前記取得した物理ブロック番号が示すブロックに格納されたデータのうち、前記受信した論理番号に含まれる論理ページ番号と同一の物理ページ番号が示す領域に格納されたデータを読み出す
    処理を実行させることを特徴とする制御プログラム。
  7. 記憶装置からデータを読み出す制御装置が、
    記憶領域を複数有するブロックを論理的に示す論理ブロック番号を複数含むグループごとに、データの読み出し要求の数と、前記データの書き込み要求の数とを計数し
    計数した前記読み出し要求の数から前記書き込み要求の数を減算した数が最も多いグループに含まれる論理ブロック番号を1つ選択し、
    論理ブロック番号と前記ブロックが含む記憶領域を論理的に示す論理ページ番号とを組み合わせた論理番号に、前記ブロックを物理的に示す物理ブロック番号と前記記憶領域を物理的に示す物理ページ番号とを組み合わせた物理番号を対応付けた変換テーブルを記憶する第1の記憶部から、前記選択した論理ブロック番号を含む論理番号に対応付けられた物理番号を識別し、
    前記識別した物理番号が示す記憶領域のデータを、1つのブロックに含まれる記憶領域であって、当該データの論理番号に含まれる論理ページ番号と同一の物理ページ番号が示す記憶領域に移動させ、
    前記データを移動させたブロックの物理ブロック番号と、前記選択した論理ブロック番号とを対応付けて第2の記憶部に記憶させ、
    読み出し対象のデータが格納された領域を示す論理番号を受信すると、受信した論理番号に含まれる論理ブロック番号に対応付けられた物理ブロック番号を前記第2の記憶部から取得し、
    前記取得した物理ブロック番号が示すブロックに格納されたデータのうち、前記受信した論理番号に含まれる論理ページ番号と同一の物理ページ番号が示す領域に格納されたデータを読み出す
    処理を実行することを特徴とする制御方法。
JP2015506463A 2013-03-19 2013-03-19 制御装置、制御プログラム、および制御方法 Active JP6132010B2 (ja)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/JP2013/057909 WO2014147768A1 (ja) 2013-03-19 2013-03-19 制御装置、制御プログラム、および制御方法

Publications (2)

Publication Number Publication Date
JPWO2014147768A1 JPWO2014147768A1 (ja) 2017-02-16
JP6132010B2 true JP6132010B2 (ja) 2017-05-24

Family

ID=51579500

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2015506463A Active JP6132010B2 (ja) 2013-03-19 2013-03-19 制御装置、制御プログラム、および制御方法

Country Status (2)

Country Link
JP (1) JP6132010B2 (ja)
WO (1) WO2014147768A1 (ja)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10552316B2 (en) 2018-06-29 2020-02-04 Micron Technology, Inc. Controlling NAND operation latency

Family Cites Families (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2009301491A (ja) * 2008-06-17 2009-12-24 Tdk Corp メモリコントローラ、メモリコントローラを備えるフラッシュメモリシステム、並びにフラッシュメモリの制御方法
JP5295286B2 (ja) * 2011-02-23 2013-09-18 株式会社日立製作所 記憶装置およびそれを搭載した計算機

Also Published As

Publication number Publication date
WO2014147768A1 (ja) 2014-09-25
JPWO2014147768A1 (ja) 2017-02-16

Similar Documents

Publication Publication Date Title
CN110781096B (zh) 用于通过预测需求时间来执行垃圾收集的设备和方法
CN102498522B (zh) 用于减小固态器件中的写入放大的容器标记方案
CN108345545B (zh) 在逻辑地址与物理地址之间执行散列式转译的存储装置
JP2020046963A (ja) メモリシステムおよび制御方法
CN106527963B (zh) 存储器系统及主机装置
JP2015001908A (ja) 情報処理装置、制御回路、制御プログラム、および制御方法
US20110231598A1 (en) Memory system and controller
CN108804350A (zh) 一种内存访问方法及计算机系统
US11372779B2 (en) Memory controller and memory page management method
US11048623B2 (en) Memory controller including mapping tables to efficiently process an iteration command and a method of operating the same
JP2015001909A (ja) 情報処理装置、制御回路、制御プログラム、および制御方法
JP6167646B2 (ja) 情報処理装置、制御回路、制御プログラム、および制御方法
JP5967307B2 (ja) 情報処理装置、制御回路、制御プログラム、及び制御方法
US20180276115A1 (en) Memory system
WO2016101145A1 (zh) 一种控制器、识别数据块稳定性的方法和存储系统
JP2014229216A (ja) 情報処理装置、制御回路、制御プログラム、および制御方法
JP6179355B2 (ja) 情報処理装置、データ転送制御方法及びデータ転送制御プログラム
US11662932B2 (en) Tiered storage system with defragmentation based on weighted flash fragmentation factor
JP6132010B2 (ja) 制御装置、制御プログラム、および制御方法
JP5967308B2 (ja) 情報処理装置、制御回路、制御プログラム、及び制御方法
JP2013109404A (ja) 情報処理装置
US10725675B2 (en) Management apparatus, information processing apparatus, management method, and computer program product
JP5253471B2 (ja) メモリコントローラ
CN118860298B (zh) 缓存数据的管理方法和装置、存储介质及程序产品
JP6028866B2 (ja) 情報処理装置、制御回路、制御プログラム、および制御方法

Legal Events

Date Code Title Description
A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20161213

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20170131

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20170403

R150 Certificate of patent or registration of utility model

Ref document number: 6132010

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

S111 Request for change of ownership or part of ownership

Free format text: JAPANESE INTERMEDIATE CODE: R313111

R350 Written notification of registration of transfer

Free format text: JAPANESE INTERMEDIATE CODE: R350

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250