(57)【特許請求の範囲】
【請求項１】
ホスト装置からの要求に応じて、前記ホスト装置から供給されるデータが格納される第１記憶部に対する前記データの書き込みを行う書き込み処理、または、前記第１記憶部に格納された前記データの読み出しを行う読み出し処理を制御する制御部と、
前記書き込み処理または前記読み出し処理が行われる際に一時的に使用される第２記憶部と、を備え、
前記第２記憶部は、
前記書き込み処理の対象となる前記データの複製を記憶する領域を有する不揮発性の第３記憶部と、
前記書き込み処理または前記読み出し処理の作業領域を有し、前記第３記憶部よりも読み出し／書き込み速度が速い不揮発性の第４記憶部と、を含み、
前記第４記憶部および前記第３記憶部のそれぞれはメモリセルを有し、
前記第４記憶部の前記メモリセルがビットデータを保持可能な時間を示す第１記憶保持時間は、前記第３記憶部の前記メモリセルがビットデータを保持可能な時間を示す第２記憶保持時間よりも短い、
半導体記憶装置。
【請求項２】
前記第４記憶部は、前記書き込み処理または前記読み出し処理が行われた前記データを示す保存データを記憶する領域を更に有し、
前記第３記憶部は、前記第４記憶部に記憶された前記保存データのうちの少なくとも１つの前記保存データの複製を記憶する領域を更に有する、
請求項１の半導体記憶装置。
【請求項３】
前記読み出し処理により前記第１記憶部から読み出された前記データの誤り訂正処理を行う訂正部をさらに備え、
前記第４記憶部は、前記誤り訂正処理の作業領域を更に有する、
請求項１の半導体記憶装置。
【請求項４】
前記訂正部は、前記書き込み処理の対象となる前記データの符号化処理を行い、
前記制御部は、前記符号化処理により符号化された前記データを、前記第１記憶部に書き込む制御を行い、
前記第４記憶部は、前記符号化処理の作業領域を更に有する、
請求項３の半導体記憶装置。
【請求項５】
前記第４記憶部の前記メモリセルと前記第３記憶部の前記メモリセルは同種である、
請求項１の半導体記憶装置。
【請求項６】
前記第３記憶部と前記第４記憶部は、同一の基板上に設けられる、
請求項５の半導体記憶装置。
【請求項７】
前記ホスト装置からの要求の対象となる前記データに対応付けられ、前記ホスト装置により指定される論理アドレスと、前記第１記憶部のうち前記データが記憶される場所を示す物理アドレスとの対応関係を示す論物変換情報を更新する更新部をさらに備え、
前記更新部は、前記書き込み処理が完了するたびに、前記書き込み処理により前記第１記憶部に書き込まれた前記データの前記物理アドレスと、前記論理アドレスとを対応付けて前記論物変換情報に追加する、
請求項１の半導体記憶装置。
【請求項８】
前記制御部は、
前記ホスト装置からの、前記データに対応付けられるキーを含む検索要求に応じて、前記キーに対応する前記データを検索する検索処理を制御する検索制御部をさらに備え、
前記第４記憶部は、前記検索処理の作業領域を更に有する、
請求項１の半導体記憶装置。
【請求項９】
前記第４記憶部は、前記検索処理により検索された前記データを示す第２保存データを記憶する領域を更に有し、
前記第３記憶部は、前記第４記憶部に記憶された前記第２保存データの少なくとも１つの前記第２保存データの複製を記憶する領域を更に有する、
請求項８の半導体記憶装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明の実施形態は、半導体記憶装置に関する。
【背景技術】
【０００２】
一般的なホストシステム、例えばコンピュータシステムが備えるストレージ装置として磁気式のハードディスクドライブ（ＨＤＤ）や、ＮＡＮＤフラッシュメモリのような不揮発性半導体メモリを搭載する固体ドライブ（ＳＳＤ）や、埋め込みＮＡＮＤフラッシュメモリなどがある。ＳＳＤや埋め込みＮＡＮＤフラッシュメモリはストレージに分類されるが、規模が拡張されたメモリシステムともいえる。
【０００３】
このようなメモリシステムでは、例えばインタフェースと、第１のメモリブロックと、第２のメモリブロックと、コントローラから構成される。第１のメモリブロックはデータを格納し、第２のメモリブロックはデータの書き込み／読み出し時のバッファメモリである。第１のメモリブロックは、不揮発メモリであり、第２のメモリブロックよりも大容量であるが、アクセス速度が遅い。第２のメモリブロックは、第１のメモリブロックのアドレス変換テーブルを処理するための一時保存メモリであり、また、インタフェースの通信速度と、第１のメモリブロックの書き込み／読み出し速度との速度差を補うためにも使用される。
【０００４】
例えば、第１のメモリブロックは不揮発性のＮＡＮＤフラッシュメモリであり、第２のメモリブロックは揮発性のＤＲＡＭもしくはＳＲＡＭである。ＮＡＮＤフラッシュメモリでは、読み出しを行う場合、非選択のメモリセル（読み出し対象外のページの非選択メモリセル）のゲートにも電圧が印加される。このため、読み出しを繰り返すと、各メモリセルの記憶データが破壊され、ビットエラーが発生するリードディスターブが問題となる。このリードディスターブの対策として、ＥＣＣ（Error  Correction  Coding）を用いた誤り訂正が行われていた。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特開２００９−８７５０９号公報
【発明の概要】
【発明が解決しようとする課題】
【０００６】
従来、ＥＣＣ処理等のために用いられるバッファメモリとして機能する第２のメモリブロックは、揮発性のメモリで構成されているが、例えばデータの書き込み／読み出しの途中で、電源が遮断されると、第２メモリブロックに一時的に保持されていたデータも消失してしまうという問題がある。
【０００７】
実施形態の半導体記憶装置は、制御部と第２記憶部とを備える。制御部は、ホスト装置からの要求に応じて、ホスト装置から供給されるデータが格納される第１記憶部に対するデータの書き込みを行う書き込み処理、または、第１記憶部に格納されたデータの読み出しを行う読み出し処理を制御する。第２記憶部は、書き込み処理または読み出し処理が行われる際に一時的に使用され、第３記憶部と第４記憶部とを含む。第３記憶部は、書き込み処理の対象となるデータの複製を記憶する領域を有する不揮発性のメモリである。第４記憶部は、書き込み処理または読み出し処理の作業領域を有し、第３記憶部よりも読み出し／書き込み速度が速い不揮発性のメモリである。第４記憶部および第３記憶部のそれぞれはメモリセルを有し、第４記憶部のメモリセルがビットデータを保持可能な時間を示す第１記憶保持時間は、第３記憶部のメモリセルがビットデータを保持可能な時間を示す第２記憶保持時間よりも短い。
【課題を解決するための手段】
【０００８】
実施形態の半導体記憶装置は、制御部と第２記憶部とを備える。制御部は、ホスト装置からの要求に応じて、ホスト装置から供給されるデータが格納される第１記憶部に対するデータの書き込みを行う書き込み処理、または、第１記憶部に格納されたデータの読み出しを行う読み出し処理を制御する。第２記憶部は、書き込み処理または読み出し処理が行われる際に一時的に使用され、第３記憶部と第４記憶部とを含む。第３記憶部は、書き込み処理の対象となるデータの複製を記憶する領域を有する不揮発性のメモリである。第４記憶部は、書き込み処理または読み出し処理の作業領域を有し、第３記憶部よりも読み出し／書き込み速度が速い不揮発性のメモリである。
【図面の簡単な説明】
【０００９】
【図１】第１実施形態の半導体記憶装置のハードウェア構成例を示す図。
【図２】第１実施形態のメモリ制御部の機能構成例を示す図。
【図３】第１実施形態の書き込み処理の一例を示すフローチャート。
【図４】第１実施形態の読み出し処理の一例を示すフローチャート。
【図５】第２実施形態の半導体記憶装置のハードウェア構成例を示す図。
【図６】第２実施形態のメモリ制御部の機能構成例を示す図。
【図７】第２実施形態の検索処理の一例を示すフローチャート。
【発明を実施するための形態】
【００１０】
以下、添付図面を参照しながら、本発明に係る半導体記憶装置の実施形態を詳細に説明する。
【００１１】
（第１実施形態）
図１は、第１実施形態にかかる半導体記憶装置であるデバイス１００およびホスト装置２００のハードウェア構成の一例を示すブロック図である。図１に示すように、ホスト装置２００は、ＣＰＵ２０１と、メインメモリ２０２と、ＣＰＵ２０１およびメインメモリ２０２を接続するバス２１１と、を備えている。
【００１２】
デバイス１００は、ホストインタフェース１０１と、デバイス制御部１１０と、メモリ制御部１２０と、第１記憶部１３０と、を備えている。ホストインタフェース１０１、デバイス制御部１１０、およびメモリ制御部１２０は、バス１０２を介して接続される。デバイス１００内では、高速かつ効率的なバス線配置が取られることが望ましい。一方、例えばインタフェース規格と外部インタフェース規格の相違などで、２種類以上のバス線がデバイス１００内で用いられていてもよい。
【００１３】
ホスト装置２００は、例えばＡＭＢＡ（Advanced  Microcontroller  Bus  Architecture）、などのバス２１１を介してホストインタフェース１０１に接続される。ホストインタフェース１０１は、ＳＡＴＡ（Serial  Advanced  Technology  Attachment）、ＰＣＩ  Ｅｘｐｒｅｓｓ、ｅＭＭＣ（embedded  MMC）、ＵＦＳ（(Universal  Flash  Storage)）および、ＵＳＢ（Universal  Serial  Bus）などを適宜選択する。
【００１４】
ホストインタフェース１０１は、デバイス１００の上位装置であるホスト装置２００からの要求を示す要求情報を受け付けることができる。本実施形態における要求情報の例として、第１記憶部１３０に対するデータの書き込みを要求する書き込み要求、および、第１記憶部１３０に格納されたデータの読み出しを要求する読み出し要求などが挙げられる。この例では、書き込み要求は、書き込みの実行を命令する書き込みコマンドと、書き込みコマンドの対象となるデータと、プログラム上の仮想空間アドレスのうち当該データが割り当てられる場所を示す論理アドレスとを含んで構成される。また、読み出し要求は、読み出しの実行を命令する読み出しコマンドと、プログラム上の仮想空間アドレスのうち、読み出しコマンドの対象となるデータが割り当てられる場所を示す論理アドレスとを含んで構成される。上記論理アドレスは、ホスト装置２００によって指定される。
【００１５】
デバイス制御部１１０は、ホストインタフェース１０１で受け付けた要求情報を解釈して、メモリ制御部１２０へ伝達すべき情報を、メモリ制御部１２０へ送信する。本実施形態では、デバイス制御部１１０は、ホストインタフェース１０１で受け付けた要求情報を、そのままメモリ制御部１２０へ送信する。また、デバイス制御部１１０は、演算中のデータを記憶しておくＳＲＡＭなどのワークメモリを有していてもよい。なお、デバイス制御部１１０のワークメモリは、バス線を介してデバイス制御部１１０に接続される外部装置に設けられていてもよい。
【００１６】
メモリ制御部１２０は、デバイス制御部１１０から受信した要求情報に応じて、第１記憶部１３０に対するデータの書き込みを行う書き込み処理、または、第１記憶部１３０に格納されたデータの読み出しを行う読み出し処理を制御する。メモリ制御部１２０の詳細な機能については後述する。
【００１７】
第１記憶部１３０は、ホスト装置２００から供給されるデータを格納する装置である。また、本実施形態では、第１記憶部１３０は、ホスト装置２００からの要求の対象となるデータに対応付けられる論理アドレスと、第１記憶部１３０のうち当該データが格納される場所を示す物理アドレスとの対応関係を示す論物変換情報を記憶する。この例では、論物変換情報はテーブル形式のデータ構造である。以下の説明では、本実施形態における論物変換情報を、「論物変換テーブル」と呼ぶ（「Ｌ２Ｐテーブル」と呼ぶ場合もある）。
【００１８】
第１記憶部１３０は、例えば不揮発性半導体メモリのＮＡＮＤフラッシュメモリである。第１記憶部１３０は、記憶容量を増大させるため複数のチップで構成されていてもよい。第１記憶部１３０は、これに限定されるものではなく、記憶不揮発性を有する半導体メモリであればあらゆる記憶媒体を適用できる。例えば、第１記憶部１３０として、ＭＲＡＭ（Magnetoresistive  Random  Access  Memory）やＲｅＲＡＭ（Resistance  Random  Access  Memory）やＦｅＲＡＭ（Ferroelectric  Random  Access  Memory）やＰＣＲＡＭ（Phase-Change  Random  Access  Memory）などの不揮発性メモリを用いてもよい。ただし、これらのメモリ種を選択する上で重要なのは、後述する第１記憶部１３０以外の記憶部では、第１記憶部１３０よりもアクセス速度が高速であるという点である。
【００１９】
次に、メモリ制御部１２０の詳細な機能について説明する。図２は、メモリ制御部１２０の機能構成例を示すブロック図である。図２に示すように、メモリ制御部１２０は、受付部１２１と、アクセス制御部１４０と、第２記憶部１５０と、訂正部１２２と、更新部１２３と、管理部１２４とを備える。受付部１２１は、デバイス制御部１１０から送信される要求情報（書き込み要求または読み出し要求）を受け付ける。
【００２０】
アクセス制御部１４０は、受付部１２１で受け付けた要求情報（ホスト装置２００からの要求）に応じて、書き込み処理または読み出し処理を制御する。図２に示すように、アクセス制御部１４０は、書き込み制御部１４１と読み出し制御部１４３とを含む。書き込み制御部１４１は、受付部１２１で書き込み要求を受け付けた場合、受け付けた書き込み要求に応じた書き込み処理を制御する。読み出し制御部１４３は、受付部１２１で読み出し要求を受け付けた場合、受け付けた読み出し要求に応じた読み出し処理を制御する。
【００２１】
第２記憶部１５０は、書き込み処理または読み出し処理が行われる際に一時的に使用されるバッファメモリとして機能する。図２に示すように、第２記憶部１５０は、第３記憶部１５１と第４記憶部１５３とを含む。第３記憶部１５１は、不揮発性のメモリである。第３記憶部１５１は、書き込み処理の対象となるデータの複製を記憶する領域を有する。本実施形態では、第３記憶部１５１は、第１記憶部１３０よりも、書き換え／読み出し耐性が高いメモリで構成される。例えば第１記憶部１３０がＮＡＮＤフラッシュメモリで構成される場合、第３記憶部１５１は、ＭＲＡＭ、ＰＣＲＡＭ、ＲｅＲＡＭ、ＦｅＲＡＭなどで構成され得る。
【００２２】
第４記憶部１５３は、第３記憶部１５１よりもアクセス速度が速く、書き込み処理または読み出し処理の作業領域を有する不揮発性のメモリである。第４記憶部１５３は、メモリ制御部１２０が実行する各処理のワークメモリとなるので、できるだけプロセスコストが低く、かつ、大容量のメモリであることが望ましい。また、書き込み処理や読み出し処理などの処理の実行中に電源が遮断されても、処理中のデータが消失することを防ぐために（信頼性を担保するために）、第４記憶部１５３は、不揮発性のメモリで構成される。
【００２３】
本実施形態では、第３記憶部１５１と第４記憶部１５３は、同じ種類の不揮発性メモリで構成され、同一の基板上に設けられる。つまり、第３記憶部１５１と第４記憶部１５３は、１チップ化されるので、構成が簡素化される。一般的には、同じ種類の不揮発性メモリで異なる速度のメモリブロックを混載することはないが、本実施形態では、以下のようにして、同じ種類の不揮発性メモリで異なる速度のメモリブロックの混載を実現している。なお、実装においては、第３記憶部１５１と比較して、第４記憶部１５３はアクセス速度を優先するために記憶容量が小さくなる傾向にあるが、そうなった場合でも本実施形態を構成することは可能である。同じ種類の不揮発性メモリで構成された場合、メモリ内部のデータバス線が共有化されるために、内部でのデータ転送が高速に行われる。
【００２４】
不揮発性メモリが抵抗変化型のメモリの場合、読み出しに関しては、抵抗変化率が読み出し速度に対して支配的な影響を与えている。抵抗変化率が大きいほど読み出しセンスアンプでの信号増幅が高速化する。しかし、抵抗変化率が大きいほど、高抵抗状態と低抵抗状態との差が大きいため、書き込みにとっては不利となる。書き込みをどのように設計するかが、セル（メモリセル）と周辺回路設計の要点となる。そこで、抵抗変化型メモリに対するデータの書き込みの原理から、書き込みの高速化を検討する。不揮発性メモリの記憶保持時間（メモリセルがビットデータを保持可能な時間）はメモリセルの熱安定性に依存する。熱安定性はメモリセルへの書き込み速度とトレードオフの関係にある。このため、書き込み速度の遅いメモリセルほど熱安定性に優れ、反対に、書き込み速度の速いメモリセルほど熱安定性に劣ることになる。一般に、不揮発性メモリの開発では、このトレードオフ関係を同時に解決すべく、メモリセルの材料と構造の開発が推進されている。上記トレードオフ関係に従えば、熱安定性、すなわち記憶保持時間を犠牲にすれば、メモリセルへの書き込み速度の向上が期待できる。これによって読み出し設計側も抵抗変化の許容幅が増すことになり、高速動作が可能になる。
【００２５】
すなわち、本実施形態では、第４記憶部１５３のメモリセルの熱安定性を、第３記憶部１５１のメモリセルの熱安定性よりも低くすることで、第４記憶部１５３のメモリセルがビットデータを保持可能な時間を示す第１記憶保持時間を、第３記憶部１５１のメモリセルがビットデータを保持可能な時間を示す第２記憶保持時間よりも短くしている。以上のように、第４記憶部１５３と第３記憶部１５１は、同種のメモリセルを有し、第１記憶保持時間は、第２記憶保持時間よりも短い。これにより、同じ種類の不揮発性メモリで異なる速度のメモリブロックの混載を実現することができ、第４記憶部１５３は第３記憶部１５１よりもアクセス速度が速くなる。熱安定性の制御は、例えばＭＲＡＭであれば、磁性体の磁気異方性エネルギーを下げる方法がある。なぜなら、熱安定性係数は、体積と磁気異方性エネルギーと飽和磁化に依存するからである。熱安定性係数を４０から３０程度に低下させると、記憶保持時間は１０年から１時間以下に低下する。そのトレードオフとして、書き込み速度は１０ｎｓ以下に下げられる。例えば、ＲｅＲＡＭであれば、絶縁膜中に導電パスができやすい酸化物を用いるといった方法が考えられる。
【００２６】
なお、例えば第４記憶部１５３と第３記憶部１５１が、互いに異なる種類の不揮発性メモリで構成される形態であってもよい。要するに、第３記憶部１５１および第４記憶部１５３のそれぞれはメモリセル（同種のメモリセルでもよいし、異なる種類のメモリセルであってもよい）を有し、上述の第１記憶保持時間が、上述の第２記憶保持時間よりも短く、第４記憶部１５３は第３記憶部１５１よりもアクセス速度が速い形態であればよい。なお、本実施形態の「アクセス速度」とは、読み出し／書き込み速度を指す。読み出し／書き込み速度とは、例えば、記憶部が、制御部からの読み出し／書き込み要求を受け付けて、制御部に対して要求完了を示す信号あるいは要求されたデータを返すまでの時間であると捉えることもできる。例えば第３記憶部１５１の読み出し／書き込み速度とは、第３記憶部１５１が、書き込み制御部１４１／読み出し制御部１４３から読み出し／書き込み要求を受け付けて、書き込み制御部１４１／読み出し制御部１４３に対して要求完了を示す信号あるいは要求されたデータを返すまでの時間であると捉えることもできる。第４記憶部１５３の読み出し／書き込み速度についても同様である。
【００２７】
次に、訂正部１２２について説明する。訂正部１２２は、書き込み処理の対象となるデータの符号化処理を行う。また、訂正部１２２は、読み出し処理により第１記憶部１３０から読み出されたデータの誤り訂正処理を行う。本実施形態では、第４記憶部１５３は、訂正部１２２による符号化処理の作業領域を更に有する。また、第４記憶部１５３は、訂正部１２２による誤り訂正処理の作業領域を更に有する。つまり、第４記憶部１５３は、訂正部１２２による符号化処理および誤り訂正処理のワークメモリとして機能する。
【００２８】
更新部１２３は、上述の論物変換情報を更新する。本実施形態では、更新部１２３は、第１記憶部１３０に格納される論物変換テーブルを更新する。より具体的には、更新部１２３は、書き込み処理が完了するたびに、当該書き込み処理により第１記憶部１３０に書き込まれたデータの物理アドレスと、ホスト装置２００により指定された論理アドレス（当該データに対応する論理アドレス）とを対応付けて論物変換テーブルに追加する。
【００２９】
本実施形態では、書き込み処理または読み出し処理が行われるたびに、処理が行われたデータと論理アドレスとが対応付けられた保存データが、第４記憶部１５３に記憶されていく。つまり、第４記憶部１５３は、保存データを記憶する領域を更に有する。管理部１２４は、第４記憶部１５３の容量に従って、第４記憶部１５３に記憶された保存データを管理する。例えば保存データの累積容量が第４記憶部１５３の容量を超える場合、管理部１２４は、古い保存データから順番に第４記憶部１５３から削除していく。これを、ＦＩＦＯ（Ｆｉｒｓｔ−Ｉｎ−Ｆｉｒｓｔ−Ｏｕｔ）とも呼ぶ。また、例えば管理部１２４は、保存データのうち、利用頻度が高い保存データについては、削除せずに第４記憶部１５３に残すとともに、その複製（コピー）を第３記憶部１５１に記憶させることもできる。さらに、例えば管理部１２４は、保存データの累積容量が第４記憶部１５３の容量を超える場合、第４記憶部１５３に記憶された保存データのうち、未使用の時間が最も長い保存データを第３記憶部１５１に記憶させるという、いわゆるＬＲＵ（Ｌｅａｓｔ  Ｒｅｃｅｎｔｌｙ  Ｕｓｅｄ）アルゴリズムを用いることもできる。また、例えば第３記憶部１５１が十分な容量を有する場合、管理部１２４は、第４記憶部１５３に記憶された全ての保存データを、第３記憶部１５１に記憶させることもできる。つまり、第３記憶部１５１は、第４記憶部１５３に記憶された保存データのうちの少なくとも１つの保存データの複製を記憶する領域を更に有する。
【００３０】
本実施形態では、上述の受付部１２１、アクセス制御部１４０（書き込み制御部１４１および読み出し制御部１４３）、訂正部１２２、更新部１２３、および、管理部１２４の各々の機能は、専用のハードウェア回路で実現されるが、これに限らず、例えばＣＰＵ、ＲＯＭ、ＲＡＭ等を備えたコンピュータがメモリ制御部１２０に搭載され、上述の受付部１２１、アクセス制御部１４０（書き込み制御部１４１および読み出し制御部１４３）、訂正部１２２、更新部１２３、および、管理部１２４の各々の機能の少なくとも一部が、ＣＰＵがＲＯＭ等に格納されたプログラムをＲＡＭ上に展開して実行することにより実現される形態であってもよい。なお、ここでは、デバイス１００を、請求項の「半導体記憶装置」であると捉えているが、例えばメモリ制御部１２０を、請求項の「半導体記憶装置」であると捉えることもできる。
【００３１】
次に、デバイス制御部１１０から書き込み要求を受け付けた場合に、メモリ制御部１２０が実行する書き込み処理の具体的な内容を説明する。図３は、書き込み処理の一例を示すフローチャートである。図３に示すように、まず、受付部１２１は、デバイス制御部１１０からの書き込み要求を受け付ける（ステップＳ１）。次に、書き込み制御部１４１は、ステップＳ１で受け付けた書き込み要求に含まれるデータを第３記憶部１５１および第４記憶部１５３の各々へ転送する（ステップＳ２）。より具体的には、書き込み制御部１４１は、ステップＳ１で受け付けた書き込み要求に含まれるデータおよび論理アドレスを第４記憶部１５３へ転送する一方、当該書き込み要求に含まれるデータおよび論理アドレスを複製したデータ（「バックアップデータ」と呼ぶ）を、第３記憶部１５１へ転送する。次に、書き込み制御部１４１は、書き込み条件を充足したか否かを判断する（ステップＳ３）。例えば書き込み制御部１４１は、書き込み処理の対象となるデータのサイズが、書き込み単位のサイズ（例えばページサイズ）よりも小さい場合は、書き込み条件を充足していないと判断することもできる。なお、これに限らず、書き込み条件は任意に変更可能である。
【００３２】
上述のステップＳ３において、書き込み条件を充足していないと判断した場合（ステップＳ３の結果：ＮＯの場合）、書き込み制御部１４１は、受け付けた書き込み要求に含まれるデータを第３記憶部１５１に保持しているが、未だ第１記憶部１３０への書き込みは実行していないことを示す情報をデバイス制御部１１０へ返信し、次の書き込み要求を待つ。
【００３３】
一方、上述のステップＳ３において、書き込み条件を充足したと判断した場合（ステップＳ３の結果：ＹＥＳの場合）、処理は、ステップＳ４に移行する。ステップＳ４において、訂正部１２２は、第４記憶部１５３に保持された、書き込み処理の対象となるデータの符号化処理を行う。より具体的には、訂正部１２２は、書き込み処理の対象となるデータに対して、ビットの誤り訂正処理（ＥＣＣ処理）を行うための冗長データ（データビットの偶奇性を利用する場合、パリティーと呼ぶ）を付加する処理を行う。
【００３４】
上述のステップＳ４の後、書き込み制御部１４１は、訂正部１２２により符号化されたデータを、第１記憶部１３０の空き領域に書き込む制御を行う（ステップＳ５）。データの書き込み（符号化されたデータの書き込み）が完了すると、第１記憶部１３０は、データの書込みが終了したことを示す書き込み終了通知をメモリ制御部１２０へ送信する。書き込み終了通知を受信した場合、更新部１２３は、論物変換テーブルの更新を行う（ステップＳ６）。より具体的には、更新部１２３は、書き込み処理により第１記憶部１３０に書き込まれたデータの論理アドレスと、第１記憶部１３０のうち当該データが書き込まれた場所を示す物理アドレスとを対応付けて論物変換テーブルに追加する。
【００３５】
上述のステップＳ６の後、書き込み制御部１４１は、第３記憶部１５１に記憶されたバックアップデータを消去する（ステップＳ７）。なお、管理部１２４は、上述のステップＳ１で受け付けた書き込み要求に含まれるデータと論理アドレスとを対応付けた保存データを、第４記憶部１５３に記憶させる。管理部１２４は、第４記憶部１５３の容量に従って、第４記憶部１５３に記憶される保存データを管理する。
【００３６】
以上に説明したように、本実施形態では、不揮発性を犠牲にしてアクセス速度を高めた第４記憶部１５３を、書き込み処理の作業領域（ワークメモリ）として使用するとともに、アクセス速度を犠牲にして不揮発性を高めた第３記憶部１５１を、書き込み処理の対象となるデータの複製を保持するバックアップ用メモリとして使用する。これにより、書き込み処理の途中で電源が遮断されても、書き込み処理の対象となるデータが消失してしまうことを確実に防止しつつ、書き込み性能の低下を抑制できる。
【００３７】
いま、対比例として、アクセス速度を犠牲にして不揮発性を高めたメモリを、書き込み処理の作業領域として使用する形態を想定する。この対比例では、書き込み処理の途中で電源が遮断されても、書き込み処理の対象となるデータが消失してしまうことは確実に防止できるものの、アクセス速度を犠牲にして不揮発性を高めたメモリをワークメモリとして使用するために、十分な処理速度を実現することができず、書き込み性能が低下してしまうという問題がある。
【００３８】
これに対して、本実施形態では、不揮発性を犠牲にしてアクセス速度を高めた第４記憶部１５３を、書き込み処理のワークメモリとして使用しているので、対比例に比べて十分に高い処理速度を実現することができ、書き込み性能の低下を抑制することができる。ただし、第４記憶部１５３は不揮発性が十分ではないので、本実施形態では、第４記憶部１５３とは別に、アクセス速度を犠牲にして不揮発性を高めた第３記憶部１５１を設け、当該第３記憶部１５１を、書き込み処理の対象となるデータの複製を保持するバックアップ用メモリとして使用することにより、電源遮断時にデータが消失してしまうことを確実に防止できる。つまり、本実施形態によれば、書き込み処理の途中で電源が遮断されても、書き込み処理の対象となるデータが消失してしまうことを確実に防止しつつ、書き込み性能の低下を抑制できるという対比例では得ることができない有利な効果を奏する。
【００３９】
次に、デバイス制御部１１０から読み出し要求を受け付けた場合に、メモリ制御部１２０が実行する読み出し処理の具体的な内容を説明する。図４は、読み出し処理の一例を示すフローチャートである。まず、受付部１２１は、デバイス制御部１１０からの読み出し要求を受け付ける（ステップＳ１１）。次に、読み出し制御部１４３は、ステップＳ１１で受け付けた読み出し要求に含まれる論理アドレスと一致する保存データが、第４記憶部１５３に存在するか否かを検索する（ステップＳ１２）。読み出し要求に含まれる論理アドレスと一致する保存データが第４記憶部１５３に存在する場合（ステップＳ１３の結果：ＹＥＳの場合）、読み出し制御部１４３は、読み出し要求に含まれる論理アドレスと一致する保存データに含まれるデータを取り出して、デバイス制御部１１０へ転送する（ステップＳ１４）。
【００４０】
一方、読み出し要求に含まれる論理アドレスと一致する保存データが第４記憶部１５３に存在しない場合（ステップＳ１３の結果：ＮＯの場合）、読み出し制御部１４３は、その論理アドレスに対応するデータ（論理アドレスで指定されるデータ）を、第１記憶部１３０から読み出す制御を行う（ステップＳ１５）。読み出し自体は、一般的な手順に従うものである。本実施形態では、読み出し制御部１４３は、第１記憶部１３０に記憶された論物変換テーブルを参照して、論理アドレスに対応する物理アドレスを特定し（論物変換処理を行い）、特定した物理アドレスに格納されたデータの読み出しを命令するコマンドを第１記憶部１３０へ送信する。そして、読み出し制御部１４３は、当該コマンドに従って読み出されたデータを第１記憶部１３０から受け取る。第１記憶部１３０から受け取ったデータは、第４記憶部１５３に転送されて格納される。
【００４１】
第１記憶部１３０から読み出されたデータが第４記憶部１５３に格納されると同時に、訂正部１２２は、当該第１記憶部１３０から読み出されたデータに対する誤り訂正処理（ＥＣＣ処理）を行う（ステップＳ１６）。本実施形態では、第４記憶部１５３は、訂正部１２２によるＥＣＣ処理の作業領域（ワークメモリ）として機能する。より具体的には、ＥＣＣ処理の中間データが第４記憶部１５３に格納され、訂正部１２２は、エラー訂正計算を行うたびに、第４記憶部１５３内の中間データを更新することで、読み出されたデータのエラー訂正処理を進めていく。また、本実施形態では、訂正部１２２によるＥＣＣ処理には、データの復号処理も含まれ、エラー訂正後のデータは、復号処理により復号される。訂正部１２２が扱うＥＣＣ方式としては、例えばＢＣＨ、リードソロモン、ＬＤＰＣ、ターボ符号などが挙げられるが、これらに限定されるものではない。要するに、元のデータに、誤り訂正処理のための冗長データが組織符号または非組織符号として組み込まれたデータに対して、誤り訂正処理を行うものであればよい。組織符号は、元のデータにパリティーが付加された単純な構造であるのに対し、非組織符号は、元のデータ全体の中にパリティーが埋め込まれたような複雑な構造である。ＥＣＣは訂正能力と符号語の複雑さが相関しており、高い訂正能力を得るためには訂正処理の際に演算量が多くなっていく。このため訂正処理中の演算結果を示す演算情報が多くなるが、第４記憶部１５３を、訂正処理のワークメモリとすることで、訂正処理中に演算情報が失われることを防止しつつ、処理速度の遅延を低減できる。
【００４２】
上述のＥＣＣ処理が完了すると、訂正部１２２は、ＥＣＣ処理が完了したことを読み出し制御部１４３へ通知する。読み出し制御部１４３は、ＥＣＣ処理が行われた後のデータ（誤り訂正が行われて復号されたデータ）を、読み出し完了の通知とともにデバイス制御部１１０へ転送する（ステップＳ１７）。本実施形態では、読み出し制御部１４３は、読み出し完了の通知をデバイス制御部１１０へ送信するとともに、ＥＣＣ処理が行われた後のデータを、デバイス制御部１１０が管理するバッファへ送信する。なお、管理部１２４は、上述のステップ１１で受け付けた読み出し要求に含まれる論理アドレスと、ステップＳ１６でのＥＣＣ処理後のデータとを対応付けた保存データを、第４記憶部１５３に記憶させる。管理部１２４は、第４記憶部１５３の容量に従って、第４記憶部１５３に記憶される保存データを管理する。
【００４３】
以上のように、本実施形態では、読み出し処理の作業領域となる第４記憶部１５３は、アクセス速度を高めた不揮発性メモリで構成されるので、電源が遮断されても読み出し中のデータが消失することを防止しつつ、処理速度の遅延を抑制できる。また、本実施形態では、保存データの履歴が第４記憶部１５３に保持されるので、ホスト装置２００からの読み出し要求に含まれる論理アドレスと一致する保存データが第４記憶部１５３に存在する場合は、第１記憶部１３０にアクセスすることなく、データを読み出すことができる。また、第４記憶部１５３に記憶された保存データの複製（コピー）を、第４記憶部１５３よりも不揮発性の高い第３記憶部１５１に記憶させることもできる。これにより、電源が遮断されても、保存データが消失してしまうことを確実に防止できる。また、例えば第３記憶部１５１の容量に制限がある場合は、第４記憶部１５３に記憶された保存データのうち、利用頻度が高い保存データを第３記憶部１５１に記憶させる形態とすることもできる。要するに、不揮発性のキャッシュとして機能する第４記憶部１５３は、書き込み処理または読み出し処理が行われたデータを示す保存データを記憶し、キャッシュデータ（保存データ）のバックアップ用メモリとして機能する第３記憶部１５１は、第４記憶部１５３に記憶された保存データのうちの少なくとも１つの保存データを記憶する形態であればよい。
【００４４】
（第１実施形態の変形例１）
上述の第１実施形態では、論物変換テーブルは、第１記憶部１３０に格納されているが、これに限らず、論物変換テーブルの格納先は任意である。例えば論物変換テーブルが、第２記憶部１５０に格納されてもよい。この場合、例えば論物変換テーブルが全て第３記憶部１５１に記憶される形態であってもよい。この形態では、例えば読み出し要求に含まれる論理アドレスに対応する物理アドレスを特定する場合（論物変換を行う場合）、第４記憶部１５３にアクセスする必要はない。
【００４５】
また、例えば論物変換テーブルの大部分が第４記憶部１５３に格納される一方、第３記憶部１５１には、論物変換テーブルの更新履歴として、前回の更新時における論物変換テーブルとの差分を示す差分テーブルが格納される形態であってもよい。この形態では、例えばホスト装置２００からの読み出し要求に含まれる論理アドレスに対応する物理アドレスを特定するために論物変換テーブルを読み出す場合、読み出し制御部１４３は、最初に第３記憶部１５１にアクセスして差分テーブルの情報（更新情報）を読み出す。次に、読み出し制御部１４３は、第４記憶部１５３にアクセスして論物変換テーブルの本体の情報（本体情報）を読み出し、更新情報と本体情報とから、論物変換テーブル全体の情報を取得することもできる。
【００４６】
論物変換テーブルが第２記憶部１５０に格納され、メモリ制御部１２０が論物変換を行う形態では、以上のようにして、読み出し制御部１４３が論物変換テーブルを取得し、読み出し要求に含まれる論理アドレスに対応する物理アドレスを特定することができる（論物変換を行うことができる）。
【００４７】
（第１実施形態の変形例２）
以上の形態では、メモリ制御部１２０が論物変換を行い、論物変換テーブルの更新を行っているが、これに限らず、例えばデバイス制御部１１０が論物変換を行い、論物変換テーブルの更新を行う形態であってもよい。以下、この形態において、デバイス制御部１１０が、ホスト装置２００からの読み出し要求を受け付けた場合を想定して説明する。この場合、デバイス制御部１１０は、論物変換テーブルを参照して、読み出し要求に含まれる論理アドレスに対応する物理アドレスを特定する。そして、デバイス制御部１１０は、メモリ制御部１２０へ伝達すべき伝達情報として、特定した物理アドレスと、その物理アドレスが示す場所に格納されたデータの読み出しを命令するコマンドとを、メモリ制御部１２０へ送信する。なお、論物変換テーブルの格納先は任意であり、例えばデバイス制御部１１０が論物変換テーブルを保持する形態であってもよい。
【００４８】
この形態においても、第４記憶部１５３は、書き込み処理または読み出し処理が行われたデータと論理アドレスとが対応付けられた保存データを記憶する領域を更に有することができる。デバイス制御部１１０からの伝達情報を受付部１２１で受け付けた場合、読み出し制御部１４３は、論物変換テーブルの逆引きテーブル（物理アドレスから、当該物理アドレスに対応する論理アドレスを特定可能なテーブル）であるＰ２Ｌテーブルを参照して、デバイス制御部１１０からの伝達情報に含まれる物理アドレスに対応する論理アドレスを特定し、特定した論理アドレスに一致する保存データが第４記憶部１５３に存在するか否かを検索する。Ｐ２Ｌテーブルの格納先は任意であり、例えば第２記憶部１５０に格納されてもよいし、第１記憶部１３０に記憶されてもよいし、デバイス制御部１１０が有するバッファに格納されてもよい。処理の高速化を図るという観点からすれば、Ｐ２Ｌテーブルはメモリ制御部１２０（例えば第２記憶部１５０）に保持されることが好ましい。特定した論理アドレスに一致する保存データが第４記憶部１５３に存在する場合、読み出し制御部１４３は、その保存データに含まれるデータを取り出して、デバイス制御部１１０へ転送する。一方、特定した論理アドレスと一致する保存データが第４記憶部１５３に存在しない場合、読み出し制御部１４３は、デバイス制御部１１０からの伝達情報に含まれる物理アドレスを用いて第１記憶部１３０にアクセスし、当該物理アドレスが示す場所に格納されたデータを読み出す制御を行う。また、読み出し制御部１４３は、Ｐ２Ｌテーブルを参照して、デバイス制御部１１０からの伝達情報に含まれる物理アドレスに対応する論理アドレスを特定する。第１記憶部１３０から読み出されたデータは、訂正部１２２によるＥＣＣ処理が行われた後、Ｐ２Ｌテーブルを参照して特定された論理アドレスと対応付けられ、保存データとして第４記憶部１５３に記憶される。
【００４９】
また、例えば第４記憶部１５３は、書き込み処理または読み出し処理が行われたデータと物理アドレスとが対応付けられた情報を、保存データとして記憶する領域を更に有することもできる。この場合、読み出し制御部１４３は、デバイス制御部１１０からの伝達情報に含まれる物理アドレスに一致する保存データが第４記憶部１５３に存在するか否かを検索する。伝達情報に含まれる物理アドレスに一致する保存データが第４記憶部１５３に存在する場合、読み出し制御部１４３は、その保存データに含まれるデータを取り出して、デバイス制御部１１０へ転送する。一方、伝達情報に含まれる物理アドレスと一致する保存データが第４記憶部１５３に存在しない場合、読み出し制御部１４３は、その物理アドレスを用いて第１記憶部１３０にアクセスし、当該物理アドレスが示す場所に格納されたデータを読み出す制御を行う。読み出されたデータは、訂正部１２２によるＥＣＣ処理が行われた後、伝達情報に含まれる物理アドレスと対応付けられ、保存データとして第４記憶部１５３に記憶される。
【００５０】
（第２実施形態）
次に、第２実施形態について説明する。上述の第１実施形態と共通する部分については、同一の符号を付して適宜に説明を省略する。第２実施形態の半導体記憶装置は、第１実施形態で説明した書き込み／読み出しの機能に加えて、検索機能を有する。検索機能強化のために、デバイス制御部は、ホスト装置から供給されるデータに対して、付加的な情報、例えばメタデータであるタグ（「キー」の一例）を付け加えて書き込みを行うことを前提とする。以下、第２実施形態の半導体記憶装置の説明の前に、検索方式と方法を説明する。
【００５１】
半導体記憶装置に保存されている、あるテキストに関連付けられた別のテキスト、バイナリファイルにおける特定のビットパターン、動画ファイルにおける特定パターン、および、音声ファイルにおける特徴的な音声パターンなどのデータを効率的に取り出すためには、データを指定したデータ読出し機能を持たせることが望ましい。このため、データに関連付けられたメタデータを付属させて保存しておき、所望のデータを得るためにメタデータを参照する方法が用いられる。メタデータの管理方法の１つとして、１対１または１対多にデータが対応するＫＶＳ（ｋｅｙ−ｖａｌｕｅ  ｓｔｏｒｅ（キーバリューストア））が存在する。ＫＶＳでは、検索要求としてキー（ｋｅｙ）が与えられると、それに対応付けられるバリュー（ｖａｌｕｅ）が出力される。
【００５２】
第２実施形態の半導体記憶装置は、ＫＶＳデータ（キーバリュー情報）を、アドレス変換テーブルによって効率的かつ高速に処理する。このアドレス変換テーブルを、Ｋ２Ｐテーブルと呼び、キーから得た固定長アドレス（キーアドレス）と物理アドレスの変換テーブルである。以下、ＫＶＳデータを取り出す処理の具体例を説明する。一般的にＫＶＳとは、キー（ｋｅｙ）と値（ｖａｌｕｅ）の組を書き込み、キーを指定することで値を読み出せるデータベース管理方式を意味する。一般的にはネットワーク越しに使われる例が多い。データの格納先は、いずれかのローカルのメモリまたはストレージシステムであることは間違いない。
【００５３】
通常、データは、保存されているメモリの先頭アドレスとデータ長を指定することで読み出される。データアドレスは、ホストシステムのＯＳやファイルシステムによって、例えば５１２バイトのセクタ単位で管理される。または、ファイルシステムを限定する必要がなければ、例えばＮＡＮＤフラッシュメモリの読み出し／書き込みページサイズに合わせて、４ＫＢや８ＫＢ単位で管理されてもよい。
【００５４】
最も単純な検索手順は、以下の（１）〜（３）のようになる。
（１）キーをＨａｓｈ関数などにより固定長データへ変換し、その固定長データを使用可能なメモリのアドレスに変換して固定長アドレスを得る。変換した固定長アドレスをキーアドレスとする。
（２）ＮＡＮＤフラッシュメモリ内に保存されているＫ２Ｐテーブルを参照し、物理アドレスを得る。
（３）物理アドレスのデータを読み、メモリシステム外へ出力する。
このような実データアドレスとＫＶＳデータの関係、および、キーとバリューの関係は、要素と集合の関係となっている。すなわち、通常のファイルでは、例えば「ａ−ｆｉｌｅ．ｔｘｔ」というファイル名のファイルが集合であり、そのファイルの中身に「Ｔｈｉｓ  ｉｓ  a  ｂｏｏｋ」というテキストデータがあれば、そのそれぞれの単語が要素である。
【００５５】
一方、キーバリューではメタデータアドレス空間に置かれた場合、集合と要素の関係が逆転して整理し直されている。すなわち、「転置」の関係に変換して保存することができる。例えば「ｂｏｏｋ」という集合の中には、「ａ−ｆｉｌｅ．ｔｘｔ」、「ｂ−ｆｉｌｅ．ｔｘｔ」というファイル名が要素として保存されることになる。キーバリューでは、この整理しなおされた集合名（「ｂｏｏｋ」）を検索し、その要素（「ａ−ｆｉｌｅ．ｔｘｔ」、「ｂ−ｆｉｌｅ．ｔｘｔ」）を求めていることになる。これは一般に全文検索で実行されている転置ファイル作成、および、検索手順そのものであって、キーバリューの実用上の一例といえる。
【００５６】
以上のようなＫ２ＰによるＫＶＳ方式の検索ストレージを製造するには、検索要求を受けて蓄えるための不揮発バッファメモリを備えることが望ましい。また、上記のようにＫ２ＰテーブルはＮＡＮＤフラッシュメモリから読み出され、バッファメモリに展開されるので、そのバッファメモリは不揮発である方が急な電源遮断に備えるためには望ましい。実用上の検索要求は単一であることは稀であり、複数の検索結果がデバイス内で処理される。このため検索演算、すなわちＡＮＤ、ＯＲ、ＮＯＴ等の集合演算を効率的に行うための高速な不揮発バッファメモリを備えることが望ましい。検索要求は、不揮発バッファ内でデータ処理が終わるまで確実に保存されていなければならないので、長期信頼性を有する不揮発メモリが望ましいが、一方で、データ処理中のデータは、バッファメモリは処理中に急な電源遮断で失われなければ良いため、データ保持時間が通常よりも短くても実用には問題ない。例えば、長期信頼性とは１０年保証のことであり、データ保持時間が短い場合というのは、数日から数週間の間のデータ保持のことを指す。極端に言えば、ユースケースによっては、すぐに電源が再起動するのであれば、数時間の不揮発性だけ備えれば良い場合がある。
【００５７】
以下、第２実施形態の半導体記憶装置の具体的な内容を説明する。図５は、第２実施形態にかかる半導体記憶装置であるデバイス１０００およびホスト装置２０００のハードウェア構成の一例を示すブロック図である。ホストインタフェース１０１は、指定されたキーが対応付けられたデータの検索を要求する検索要求をホスト装置２０００から受け付ける。この例では、検索要求は、検索の実行を命令する検索コマンドと、キーとを含んで構成される。
【００５８】
デバイス制御部１１０は、ホストインタフェース１０１で受け付けた検索要求を解釈して、メモリ制御部１２０へ伝達すべき情報を決定し、メモリ制御部１２０へ送信する。本実施形態では、デバイス制御部１１０は、ホストインタフェース１０１で受け付けた検索要求に含まれるキーを、Ｈａｓｈ関数などにより固定長データへ変換し、その固定長データを使用可能なメモリのアドレスに変換してキーアドレスを得る。そして、メモリ制御部１２０へ伝達すべき情報（この例では「検索情報」と呼ぶ）として、キーアドレスと検索コマンドとをメモリ制御部１２０へ送信する。また、デバイス制御部１１０は、ホスト装置２０００から、複数の検索要求とともに、検索結果を絞り込むための集合演算条件（ＡＮＤ，ＯＲ等の演算条件）を受け付けた場合は、その受け付けた集合演算条件を、メモリ制御部１２０へ送信する。なお、本実施形態では、デバイス制御部１１０が、検索要求に含まれるキーを、キーアドレスへ変換しているが、これに限らず、例えばメモリ制御部１２０が、キーアドレスへの変換を行う形態であってもよい。
【００５９】
メモリ制御部１２０は、デバイス制御部１１０から受信した検索情報および集合演算条件に応じて、ホスト装置２０００からの検索要求に含まれるキーに対応するデータを検索する検索処理を制御する。図６は、第２実施形態のメモリ制御部１２０の機能構成例を示すブロック図である。受付部１２１は、デバイス制御部１１０から送信される検索情報を受け付ける。前述したように、検索情報は、検索コマンドと、キーアドレスとを含む情報である。また、受付部１２１は、デバイス制御部１１０から送信される集合演算条件（ＡＮＤ，ＯＲ等）を受け付けることもできる。
【００６０】
アクセス制御部１４０は、書き込み制御部１４１と読み出し制御部１４３に加えて、検索制御部１４５をさらに備える。検索制御部１４５は、受付部１２１で受け付けた検索情報および集合演算条件に応じた検索処理を制御する。
【００６１】
第４記憶部１５３は、検索処理の作業領域（ワークメモリ）を更に有する。また、第４記憶部１５３は、検索処理により検索されたデータを示す第２保存データを記憶する領域を更に有する。より具体的には、第２保存データは、検索処理により検索されたデータと、キーアドレスとが対応付けられたものであり、第４記憶部１５３は、１以上の第２保存データを記憶する領域を更に有する。管理部１２４は、第４記憶部１５３内の第２保存データを、第４記憶部１５３の容量に従って管理する。例えば第２保存データの累積容量が第４記憶部１５３の容量を超える場合、管理部１２４は、古い第２保存データから順番に第４記憶部１５３から削除していくこともできる。また、例えば管理部１２４は、第２保存データのうち、利用頻度が高い第２保存データについては、削除せずに第４記憶部１５３に残すとともに、その複製（コピー）を第３記憶部１５１に記憶させることもできる。さらに、例えば管理部１２４は、第２保存データの累積容量が第４記憶部１５３の容量を超える場合、第４記憶部１５３に記憶された第２保存データのうち、未使用の時間が最も長い第２保存データを第３記憶部１５１に記憶させるという、いわゆるＬＲＵ（Ｌｅａｓｔ  Ｒｅｃｅｎｔｌｙ  Ｕｓｅｄ）アルゴリズムを用いることもできる。また、例えば第３記憶部１５１が十分な容量を有する場合、管理部１２４は、第４記憶部１５３に記憶された全ての第２保存データを、第３記憶部１５１に記憶させることもできる。
【００６２】
第３記憶部１５１は、第４記憶部１５３に記憶された第２保存データのうちの少なくとも１つの第２保存データを記憶する領域を更に有する。また、実運用では、第３記憶部１５１は、検索制御部１４５のプログラムコードや、ブート情報、システムパラメータなどの情報を格納する。
【００６３】
一致判定部１２５は、受付部１２１で受け付けた検索情報に含まれるキーアドレスと一致する第２保存データが、第４記憶部１５３に存在するか否かを判定する。集合演算部１２６は、受付部１２１で受け付けた集合演算条件に従った集合演算を行う。
【００６４】
なお、本実施形態では、上述のＫ２Ｐテーブルは、第１記憶部１３０に格納されるが、これに限らず、Ｋ２Ｐテーブルの格納先は任意である。例えばＫ２Ｐテーブルは、第３記憶部１５１および第４記憶部１５３に格納されてもよいし、デバイス制御部１１０が有するバッファに格納されてもよい。
【００６５】
次に、メモリ制御部１２０が実行する検索処理の具体的な内容を説明する。図７は、検索処理の一例を示すフローチャートである。まず、受付部１２１は、デバイス制御部１１０からの検索情報を受け付ける（ステップＳ２１）。次に、検索制御部１４５は、ステップＳ２１で受け付けた検索情報に含まれるキーアドレスと一致する第２保存データが、第４記憶部１５３に存在するか否かを検索する（ステップＳ２２）。検索情報に含まれるキーアドレスと一致する第２保存データが第４記憶部１５３に存在する場合（ステップＳ２３の結果：ＹＥＳの場合）、検索制御部１４５は、検索情報に含まれるキーアドレスと一致する第２保存データに含まれるデータを取り出す（ステップＳ２４）。仮に、受付部１２１で集合演算条件を受け付けていない場合（つまり、単発の検索要求の場合）、検索制御部１４５は、ステップＳ２４で取り出したデータをデバイス制御部１１０へ転送して処理を終了する。ただし、この例では、ステップＳ２１で、複数の検索要求とともに、検索結果を絞り込むための集合演算条件を受け付けていることを前提とするので、処理は、後述のステップＳ２７へ移行する。
【００６６】
一方、検索情報に含まれるキーアドレスと一致する第２保存データが第４記憶部１５３に存在しない場合（ステップＳ２３の結果：ＮＯの場合）、検索制御部１４５は、そのキーアドレスに対応するデータを、第１記憶部１３０から読み出す制御を行う（ステップＳ２５）。検索は、一般的な手順に従うものである。本実施形態では、検索制御部１４５は、第１記憶部１３０に記憶されたＫ２Ｐテーブルを参照して、検索情報に含まれるキーアドレスに対応する物理アドレスを特定し、特定した物理アドレスに格納されたデータの読み出しを命令するコマンドを第１記憶部１３０へ送信する。そして、検索制御部１４５は、当該コマンドに従って読み出されたデータを第１記憶部１３０から受け取る。第１記憶部１３０から受け取ったデータは、第４記憶部１５３に転送されて格納される。
【００６７】
第１記憶部１３０から読み出されたデータが第４記憶部１５３に格納されると同時に、訂正部１２２は、当該第１記憶部１３０から読み出されたデータに対する誤り訂正処理（ＥＣＣ処理）を行う（ステップＳ２６）。訂正部１２２によるＥＣＣ処理が行われたデータは第４記憶部１５３に保持される。以上のようにして、受付部１２１で検索情報を受け付けるたびに、その受け付けた検索情報に含まれるキーアドレスに対応するデータが検索されて第４記憶部１５３に保持される。本実施形態では、受付部１２１で受け付けた検索情報に含まれるキーアドレスと、データ（検索されたデータ）とが対応付けられ、第２保存データとして第４記憶部１５３に保持される。そして、集合演算部１２６は、複数の検索条件の各々に含まれるキーアドレスに対応するデータの集合に対して、受付部１２１で受け付けた集合演算条件に従った集合演算を行う（ステップＳ２７）。
【００６８】
例えば、指定されたキーが「ｂｏｏｋ」であり、当該「ｂｏｏｋ」に対応するデータとして、「ｂｏｏｋ」という集合の中の要素（「ａ−ｆｉｌｅ．ｔｘｔ」、「ｂ−ｆｉｌｅ．ｔｘｔ」）が見つかった場合、これだけを検索結果として、デバイス制御部１１０へ伝えても良いが、実用的には、「ｂｏｏｋ」以外の検索もしておき、複数の検索結果に対して、ＡＮＤ、ＯＲ、ＮＯＴなどの集合演算を行うのが一般的である。例えば、「Ｔｈｉｓ」というキーに対応するデータを検索し、「Ｔｈｉｓ」という集合の中の要素（「ａ−ｆｉｌｅ．ｔｘｔ」、「ｃ−ｆｉｌｅ．ｔｘｔ」、「ｄ−ｆｉｌｅ．ｔｘｔ」）が見つかったとする。ここで、集合「ｂｏｏｋ」と集合「Ｔｈｉｓ」とのＡＮＤを取ると、検索結果として「ａ−ｆｉｌｅ．ｔｘｔ」が得られる。実際、「ａ−ｆｉｌｅ．ｔｘｔ」を読み出すと、その中身は「Ｔｈｉｓ  ｉｓ  a  ｂｏｏｋ」であるので、目的の検索が達成されていることが確認できる。ＯＲ、ＮＯＴも同様に、一般的な集合演算のことを指す。
【００６９】
このような集合演算を、デバイス１０００の外部（例えばホスト装置２０００）で行う場合、大量の検索結果をすべてホスト装置２０００へ送る可能性もあり、ホスト装置２０００とデバイス１０００との間の通信のトラフィックを混雑させるとともに、ホスト装置２０００内の主記憶メモリ（ＤＲＡＭ等）の容量を消費することになる。したがって、以上のような集合演算は、極力デバイス１０００内で行うことが望ましい。さらに言えば、以上のような集合演算は、メモリ制御部１２０内の第４記憶部１５３を作業領域として行われることが望ましい。以上のような集合演算は、第１記憶部１３０に格納されているデータ総量が増えるにつれて、その演算時間が単純に増えていくことが知られており、集合演算のための中間処理データを記憶するバッファとしては、次々に大量のデータをさばくための高速性が求められるからである。さらに、集合演算時間は、通常の読み出し時間とは異なり、データ量をｎとすると、計算時間Ｏ＝ｎ２の関係となる。つまり読み出し時間に比べて、桁違いに大きな処理時間を要するため、この間、記憶されるデータの不揮発性が保証されることがシステム可用性の観点から求められるのである。
【００７０】
本実施形態では、上述の検索処理の作業領域となる第４記憶部１５３は、アクセス速度を高めた不揮発性メモリで構成されるので、電源が遮断されても検索処理の途中のデータが消失することを防止しつつ、処理速度の遅延を抑制できる。また、本実施形態では、第２保存データの履歴が第４記憶部１５３に保持されるので、ホスト装置２０００からの検索要求に含まれるキーに対応するキーアドレスと一致する第２保存データが第４記憶部１５３に存在する場合は、第１記憶部１３０にアクセスすることなく、データを読み出すことができる。また、第４記憶部１５３に記憶された第２保存データの複製（コピー）を、第４記憶部１５３よりも不揮発性の高い第３記憶部１５１に記憶させることもできる。これにより、電源が遮断されても、第２保存データが消失してしまうことを確実に防止できる。また、例えば第３記憶部１５１の容量に制限がある場合は、第４記憶部１５３に記憶された第２保存データのうち、利用頻度が高い第２保存データを第３記憶部１５１に記憶させる形態とすることもできる。要するに、不揮発性のキャッシュとして機能する第４記憶部１５３は、検索処理により検索されたデータを示す第２保存データを記憶し、キャッシュデータ（第２保存データ）のバックアップ用メモリとして機能する第３記憶部１５１は、第４記憶部１５３に記憶された第２保存データのうちの少なくとも１つの第２保存データを記憶する形態であればよい。
【００７１】
上述のステップＳ２７の後、検索制御部１４５は、集合演算により得られた検索結果をデバイス制御部１１０へ転送する（ステップＳ２８）。
【００７２】
以上、本発明の実施形態を説明したが、上述の各実施形態は、例として提示したものであり、発明の範囲を限定することは意図していない。これら新規な実施形態は、その他の様々な形態で実施されることが可能であり、発明の要旨を逸脱しない範囲で、種々の省略、置き換え、変更を行うことができる。なお、上述の各実施形態および変形例は任意に組み合わせることもできる。
【符号の説明】
【００７３】
１００  デバイス
１０１  ホストインタフェース
１０２  バス
１１０  デバイス制御部
１２０  メモリ制御部
１２１  受付部
１２２  訂正部
１２３  更新部
１２４  管理部
１２５  一致判定部
１２６  集合演算部
１３０  第１記憶部
１４０  アクセス制御部
１４１  書き込み制御部
１４３  読み出し制御部
１４５  検索制御部
１５０  第２記憶部
１５１  第３記憶部
１５３  第４記憶部
２００  ホスト装置
２０２  メインメモリ
２１１  バス
１０００  デバイス
２０００  ホスト装置
【図１】
0005631938.tif 000002
【図２】
0005631938.tif 000003
【図３】
0005631938.tif 000004
【図４】
0005631938.tif 000005
【図５】
0005631938.tif 000006
【図６】
0005631938.tif 000007
【図７】
0005631938.tif 000008