(57)【要約】【課題】不揮発性半導体メモリに記憶されているデータを、高速アクセス可能な記憶装置にアクセス発生前に記憶し、効率的なアクセスを実行する。【解決手段】実施形態に係るメモリ管理装置３は、履歴管理部１６、アドレス変換テーブル１３、アドレス管理部１７、先読みデータ管理部１８を含む。履歴管理部１６は、メインメモリ４として使用される不揮発性半導体メモリ６１〜６ｋに記憶されているデータに対するアクセス履歴を管理する。アドレス変換テーブル１３は、データについての論理アドレスと物理アドレスの変換テーブルを含む。アドレス管理部１７は、アドレス変換テーブル１３の第１の論理アドレスに対するアクセスの後にアクセスされる第２の論理アドレスをアクセス履歴に基づき決定し、第２の論理アドレスに対応する第２の物理アドレスを第１の論理アドレスに対応付けてアドレス変換テーブル１３に登録する。先読みデータ管理部１８は、第２の物理アドレスに対応するデータをバッファ１１に格納する。【選択図】      図１
2012064158.tif 000002
【特許請求の範囲】
【請求項１】
メインメモリとして使用される不揮発性半導体メモリに記憶されているデータに対するアクセス履歴を管理する履歴管理部と、
前記データについての論理アドレスと物理アドレスの変換テーブルを含むアドレス変換テーブルと、
前記アドレス変換テーブルの第１の論理アドレスに対するアクセスの後にアクセスされる第２の論理アドレスを前記アクセス履歴に基づき決定し、前記第２の論理アドレスに対応する第２の物理アドレスを前記第１の論理アドレスに対応付けて前記アドレス変換テーブルに登録するアドレス管理部と、
前記第２の物理アドレスに対応するデータをバッファに格納する先読みデータ管理部と、
を具備するメモリ管理装置。
【請求項２】
第１の論理アドレスに対するアクセスの後の所定範囲内に前記第２の物理アドレスに対するアクセスが発生した回数であるヒット回数と、前記第１の論理アドレスに対するアクセスの後の所定範囲内に前記第２の物理アドレスに対するアクセスが発生しなかった回数であるミス回数とのうちの少なくとも一方を前記アドレス変換テーブルに前記第１の論理アドレスに対応付けて登録し、前記アドレス管理部は、前記ヒット回数と前記ミス回数とのうちの少なくとも一方に基づいて、前記第１の論理アドレスに対応付けられた前記第２の物理アドレスを更新することを特徴とする請求項１記載のメモリ管理装置。
【請求項３】
前記アドレス変換テーブルは、前記第１の論理アドレスと前記第２の物理アドレスのアクセスパターン情報を登録し、前記アドレス管理部は、前記アクセスパターン情報に基づいて、前記第２の物理アドレスに対応するデータを前記バッファに格納するタイミングを決定することを特徴とする請求項１又は請求項２記載のメモリ管理装置。
【請求項４】
前記不揮発性半導体メモリは、ＮＡＮＤ型フラッシュメモリであり、
前記論理アドレスは、ＮＡＮＤ論理アドレスであり、
前記物理アドレスは、ＮＡＮＤ物理アドレスであり、
前記先読みアドレスは、絶対アドレス又は前記ＮＡＮＤ物理アドレスから相対位置を示す相対アドレスである
ことを特徴とする請求項１乃至請求項３のいずれか１項に記載のメモリ管理装置。
【請求項５】
前記不揮発性半導体メモリは、複数のチャネル及び複数のバンクで区分けされた複数の領域を備え、
前記第１の論理アドレスに対して複数の前記第２の物理アドレスがある場合に、複数の前記第２の物理アドレスに対応するデータを、異なるチャネルに属する領域又は異なるバンクに属する領域の同一物理アドレスに格納する
ことを特徴とする請求項１乃至請求項４のいずれか１項に記載のメモリ管理装置。
【請求項６】
前記第１の論理アドレスに対応するデータと前記第２の物理アドレスに対応するデータとを、同一の前記チャネル及び同一の前記バンクに属し、連続する物理アドレスに格納することを特徴とする請求項５記載のメモリ管理装置。
【請求項７】
メインメモリとして使用される不揮発性半導体メモリに記憶されているデータに対するアクセス履歴を管理する履歴管理部と、
前記データについての論理アドレスと物理アドレスの変換テーブルを含むアドレス変換テーブルと、
前記アドレス変換テーブルの第１の論理アドレスに対するアクセスの後にアクセスされる第２の論理アドレスを前記アクセス履歴に基づき決定し、前記第２の論理アドレスを前記第１の論理アドレスに対応付けて前記アドレス変換テーブルに登録するアドレス管理部と、
前記第２の論理アドレスに対応するデータをバッファに格納する先読みデータ管理部と、
を具備するメモリ管理装置。
【請求項８】
履歴管理部が、メインメモリとして使用される不揮発性半導体メモリに記憶されているデータに対するアクセス履歴を管理すること、
アドレス管理部が、論理アドレスと物理アドレスとを対応付けているアドレス変換テーブルの第１の論理アドレスに対するアクセスの後にアクセスされる第２の論理アドレスを前記アクセス履歴に基づき決定し、前記第２の論理アドレスに対応する第２の物理アドレスを前記第１の論理アドレスに対応付けて前記アドレス変換テーブルに登録すること、
先読みデータ管理部が、前記第２の物理アドレスに対応するデータをバッファに格納すること
を具備するメモリ管理方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明の実施形態は、不揮発性半導体メモリに対するアクセスを管理するメモリ管理装置及びメモリ管理方法に関する。
【背景技術】
【０００２】
従来において、不揮発性半導体メモリよりも高速にアクセス可能な一時記憶装置を備え、不揮発性半導体メモリに記憶されているデータをこの一時記憶装置に記憶することでアクセスを高速化する技術が用いられている。
【０００３】
このような従来のアクセス高速化技術では、不揮発性半導体メモリに記憶されている連続するデータのうち次にアクセスされるデータが先回りして一時記憶装置に記憶される。そして、連続するデータに対するアクセスは、一時記憶装置に対して実行される。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開平０５−０１９９７３号公報
【特許文献２】特開昭５９−０８５５６４号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
本発明の実施形態は、不揮発性半導体メモリに記憶されているデータを高速にアクセス可能にするメモリ管理装置及びメモリ管理方法を提供することを目的とする。
【課題を解決するための手段】
【０００６】
実施形態によれば、メモリ管理装置は、履歴管理部、アドレス変換テーブル、アドレス管理部、先読みデータ管理部を含む。履歴管理部は、メインメモリとして使用される不揮発性半導体メモリに記憶されているデータに対するアクセス履歴を管理する。アドレス変換テーブルは、データについての論理アドレスと物理アドレスの変換テーブルを含む。アドレス管理部は、アドレス変換テーブルの第１の論理アドレスに対するアクセスの後にアクセスされる第２の論理アドレスを前記アクセス履歴に基づき決定し、第２の論理アドレスに対応する第２の物理アドレスを第１の論理アドレスに対応付けてアドレス変換テーブルに登録する。先読みデータ管理部は、第２の物理アドレスに対応するデータをバッファに格納する。
【図面の簡単な説明】
【０００７】
【図１】第１の実施形態に係るメモリ管理装置の構成の一例を示すブロック図。
【図２】第１の実施形態に係るアドレス変換テーブル、履歴テーブル、先読みテーブルの構成の一例を示す図。
【図３】第１の実施形態に係るメモリ管理装置の処理部のアクセス動作の前半部の一例を示すフローチャート。
【図４】第１の実施形態に係るメモリ管理装置の処理部のアクセス動作の後半部の一例を示すフローチャート。
【図５】第２の実施形態に係るアドレス変換テーブルの一例を示す図。
【図６】第３の実施形態に係る不揮発性半導体メモリの構成の一例を示す図。
【図７】第３の実施形態に係るアドレス変換テーブルと履歴テーブルとアドレス割り当て結果との関係の一例を示す図。
【図８】第４の実施形態に係るアドレス変換テーブル、履歴テーブル、先読みテーブルの構成の一例を示す図。
【図９】第４の実施形態に係るメモリ管理装置の処理部のアクセス動作の前半部の一例を示すフローチャート。
【図１０】第４の実施形態に係るメモリ管理装置の処理部のアクセス動作の後半部の一例を示すフローチャート。
【図１１】第５の実施形態に係る先読みテーブルとアドレス変換テーブルとソフトウェアとの関係の一例を示すブロック図。
【発明を実施するための形態】
【０００８】
以下、図面を参照しながら本発明の各実施の形態について説明する。なお、以下の説明において、略または実質的に同一の機能および構成要素については、同一符号を付し、必要に応じて説明を行う。
【０００９】
（第１の実施形態）
図１は、本実施形態に係るメモリ管理装置の構成の一例を示すブロック図である。
【００１０】
情報処理装置１は、プロセッサ２、メモリ管理装置３、記憶装置４を具備する。プロセッサ２とメモリ管理装置３とは、例えばＳｏＣ（System-on-a-Chip）で構成されてもよい。
【００１１】
メモリ管理装置３は、プロセッサ２からアクセス対象データのアドレスを受信し、アクセス結果をプロセッサ２に返す。本実施形態において、アクセスとは、読み出しと書き込みとのうちの少なくとも一方に関わる動作を意味するものとする。
【００１２】
例えば、メモリ管理装置３は、プロセッサ２から読み出し対象データの論理アドレスを受信すると、論理アドレスを物理アドレスに変換し、物理アドレスに対応する読み出し対象データを記憶装置４から読み出し、読み出し対象データをプロセッサ２に返す。
【００１３】
また、例えば、メモリ管理装置３は、プロセッサ２から書き込み対象データと、この書き込み対象データの論理アドレスを受信すると、論理アドレスを物理アドレスに変換し、物理アドレスに対応する記憶装置４の位置に、書き込み対象データを書き込む。そして、メモリ管理装置３は、書き込みの成否を示す情報をプロセッサ２に返す。
【００１４】
記憶装置４は、情報処理装置１のメインメモリとして使用され、揮発性半導体メモリ５と不揮発性半導体メモリ６１〜６ｋとを具備する。本実施形態では、不揮発性半導体メモリ６１〜６ｋに、十分なメモリ量が確保される。不揮発性半導体メモリ６１〜６ｋのメモリ容量は、揮発性半導体メモリ５よりも大きい。そして、揮発性半導体メモリ５には、例えば、最近アクセスされたデータ又は使用頻度の高いデータなどのような、アクセスされる可能性の高いデータが不揮発性半導体メモリ６１〜６ｋからキャッシュされる。プロセッサ２が揮発性半導体メモリ５にアクセスする場合に、揮発性半導体メモリ５にアクセス対象データが存在しない場合、不揮発性半導体メモリ６１〜６ｋと揮発性半導体メモリ５との間でデータ転送が実行される。このように、揮発性半導体メモリ５と不揮発性半導体メモリ６１〜６ｋとを組み合わせて使用することで、揮発性半導体メモリ５のメモリ容量より大きいメモリ空間がメインメモリとして使用可能となる。
【００１５】
本実施形態において揮発性半導体メモリ５は、例えば、ＤＲＡＭ（Dynamic Random Access Memory）であるとする。しかしながら、揮発性半導体メモリ５としては、ＤＲＡＭに代えて、ＦＰＭ−ＤＲＡＭ（Fast Page Mode）、ＥＤＯ−ＤＲＡＭ（Extended Data Out DRAM）、ＳＤＲＡＭ（Synchronous DRAM）などのような、コンピュータにおいてメインメモリとして利用されるメモリを用いるとしてもよい。また、ＤＲＡＭ程度の高速ランダムアクセスが可能であり、アクセス可能上限回数に実質的な制限がないのであれば、揮発性半導体メモリ５に代えて、ＭＲＡＭ（Magnetoresistive Random Access Memory）、ＦｅＲＡＭ（Ferroelectric Random Access Memory）などの不揮発性ランダムアクセスメモリが用いられるとしてもよい。
【００１６】
本実施形態において不揮発性半導体メモリ６１〜６ｋは、例えば、ＮＡＮＤ型フラッシュメモリであるとする。しかしながら、不揮発性半導体メモリ６１〜６ｋは、例えばＮＯＲ型フラッシュメモリなど、他の不揮発性半導体メモリが用いられるとしてもよい。
【００１７】
揮発性半導体メモリ５は、不揮発性半導体メモリ６１〜６ｋよりも小容量（例えば１２８MByte〜４GByteなど)であるが高速にアクセス可能である。
【００１８】
不揮発性半導体メモリ６１〜６ｋは、揮発性半導体メモリ５よりも大容量(例えば３２GByte〜５１２GByteなど)であるがアクセス時間が長い。本実施形態のように、不揮発性半導体メモリ６１〜６ｋがＮＡＮＤ型フラッシュメモリの場合、書き込みと読み出しとはページ単位で実行される。消去は複数ページを含むブロック単位で行われる。
【００１９】
プロセッサ２は、各種プログラムを実行する。本実施形態におけるプロセッサ２には、ＣＰＵ（Central Processing Unit）が用いられるが、ＭＰＵ（Micro Processor Unit）、ＧＰＵ（Graphic Processor Unit）などのような他の処理ユニットが用いられてもよい。プロセッサ２のＭＭＵ（Memory Management Unit）２ａは、ＣＰＵ論理アドレスをＮＡＮＤ論理アドレス（ＣＰＵ物理アドレス）に変換する。プロセッサ２からメモリ管理装置３へは、アクセス先を特定するアドレスとして、ＮＡＮＤ論理アドレスが送信される。
【００２０】
例えば、プロセッサ２とメモリ管理装置３とは、非同期に動作可能であり、プロセッサ２で処理実行中に、メモリ管理装置３が不揮発性半導体メモリ６１〜６ｋに対してウェアレベリング、ガーベージコレクション、コンパクションを実行することができる。
【００２１】
メモリ管理装置３は、第１のコントローラ７、第２のコントローラ８、アドレス情報記憶部９、履歴記憶部１０、先読み（プレフェッチ）記憶部１１、処理部１２を具備する。
【００２２】
第１のコントローラ７は、例えば、ＤＲＡＭ用のコントローラであり、キャッシュメモリとして使用される揮発性半導体メモリ５に対するアクセスを制御する。
【００２３】
第２のコントローラ８は、例えば、ＮＡＮＤ用のコントローラであり、不揮発性半導体メモリ６１〜６ｋに対するアクセスを制御する。
【００２４】
アドレス情報記憶部９、履歴記憶部１０、先読み記憶部１１は、揮発性半導体メモリ５と同様の特徴を持っており、不揮発性半導体メモリ６１〜６ｋよりも高速アクセス可能であり、アクセス可能上限回数が不揮発性半導体メモリ６１〜６ｋよりも多い。なお、アドレス情報記憶部９、履歴記憶部１０、先読み記憶部１１は、揮発性半導体メモリ５によって実現されてもよい。アドレス情報記憶部９、履歴記憶部１０、先読み記憶部１１、揮発性半導体メモリ５は、自由に組み合わせ可能である。
【００２５】
アドレス情報記憶部９は、アドレス変換テーブル１３を備える。アドレス変換テーブル１３は、エントリごとに、ＣＰＵで管理される不揮発性半導体メモリ６１〜６ｋのＮＡＮＤ論理アドレスと、処理部１２によって管理されるＮＡＮＤ物理アドレスと、このエントリのＮＡＮＤ論理アドレス又はＮＡＮＤ物理アドレスに対するアクセスが発生した場合に先読みされるデータ（先読みデータ）に対応するアドレス（先読みアドレス）と、を関連付けて記憶する。アドレス変換テーブル１３の詳細については、後述する。
【００２６】
履歴記憶部１０は、不揮発性半導体メモリ６１〜６ｋに記憶されているデータに対するアクセス履歴を含む履歴テーブル１４を備える。履歴テーブル１４の詳細については、後述する。
【００２７】
先読み記憶部１１は、ＮＡＮＤ物理アドレスに対するアクセスが発生した場合に、このアクセス後の所定範囲（例えば、アクセス回数、アクセス時間など）内にアクセスされる可能性が高いデータを予め格納する先読みテーブル１５を備える。先読みテーブル１５は、エントリごとに、ＮＡＮＤ物理アドレスと、このＮＡＮＤ物理アドレスに対するアクセスの後の所定範囲内にアクセスされる可能性の高いデータ（先読みデータ）とを管理する。先読みテーブル１５の詳細については、後述する。
【００２８】
処理部１２は、記憶装置４に対する各種の高度なアクセス制御を実行する。例えば、処理部１２は、第２のコントローラ８を介して、不揮発性半導体メモリ６１〜６ｋに対するウェアレベリング、ガーベージコレクション、コンパクションを実行する。
【００２９】
処理部１２は、アドレス変換テーブル１３に基づいて、プロセッサ２から受信したＮＡＮＤ論理アドレスを、ＮＡＮＤ物理アドレスに変換し、ＮＡＮＤ物理アドレスに基づいて、記憶装置４又は先読み記憶部１１に対するアクセスを実行する。
【００３０】
処理部１２は、データの過去のアクセス時間、アクセス頻度、アクセス回数のうちの少なくとも一つに基づいて、アクセスされる可能性の高いデータを、第１のコントローラ７経由で揮発性半導体メモリ５に記憶するキャッシュ制御を実行する。
【００３１】
処理部１２は、必要に応じて、揮発性半導体メモリ５に記憶されているデータ及び先読み記憶部１１に記憶されているデータを、不揮発性半導体メモリ６１〜６ｋに書き戻し、データの内容のコヒーレンシ（coherency）を保持する。
【００３２】
さらに、処理部１２は、履歴管理部１６、先読みアドレス管理部１７、先読みデータ管理部１８、アクセス部１９を具備する。
【００３３】
履歴管理部１６は、不揮発性半導体メモリ６１〜６ｋに対するアクセス履歴を履歴テーブル１４に登録する。履歴管理部１６の詳細については、後述する。
【００３４】
先読みアドレス管理部１７は、履歴テーブル１４に基づいて、アドレス変換テーブル１３におけるＮＡＮＤ論理アドレスとＮＡＮＤ物理アドレスとのうちの少なくとも一方に対して、先読みアドレスを関連付けて登録する。先読みアドレスとは、ＮＡＮＤ論理アドレス又はＮＡＮＤ物理アドレスがアクセスされる場合に、そのアクセスの後にアクセスされる可能性の高いアドレスである。先読みアドレス管理部１７の詳細については、後述する。
【００３５】
先読みデータ管理部１８は、ＮＡＮＤ物理アドレスに対するアクセスの後にアクセスされる可能性の高い先読みデータを予め先読みテーブル１５に格納する。先読みデータ管理部１８の詳細については、後述する。
【００３６】
アクセス部１９は、アクセス対象データが先読みテーブル１５に格納されている場合には、先読みテーブル１５に格納されているアクセス対象データをアクセスする。
【００３７】
アクセス部１９は、アクセス対象データが先読みテーブル１５に格納されていない場合には、第１のコントローラ７又は第２のコントローラ８経由で、揮発性半導体メモリ５又は不揮発性半導体メモリ６１〜６ｋに記憶されているアクセス対象データをアクセスする。
【００３８】
処理部１２は、ハードウェアにより上記の制御を実行してもよく、例えばファームウェアなどのソフトウェアにより上記の制御を実行してもよい。
【００３９】
図２は、本実施形態に係るアドレス変換テーブル１３、履歴テーブル１４、先読みテーブル１５の構成の一例を示す図である。
【００４０】
履歴テーブル１４は、過去にアクセスされたアドレスを、アクセス順序を識別可能な形式で管理する。履歴テーブル１４では、エントリの配列順序がアクセス順序に対応している。有効／無効情報は、エントリが有効であるか否かを示す。
【００４１】
図２の履歴テーブル１４は、ＮＡＮＤ論理アドレス（Ａ−１），（Ａ），（Ａ＋１）の順序で、アクセスが発生したことを示している。
【００４２】
本実施形態においては、履歴テーブル１４に、ＮＡＮＤ論理アドレスが登録される場合を例として説明するが、例えばＮＡＮＤ物理アドレスなどが登録されるとしてもよい。
【００４３】
アドレス変換テーブル１３は、エントリごとに、ＮＡＮＤ論理アドレス、ＮＡＮＤ物理アドレス、有効／無効情報、先読みアドレスを管理する。
【００４４】
アドレス変換テーブル１３の各エントリは、不揮発性半導体メモリ６１〜６ｋに記憶されている各データのＮＡＮＤ論理アドレスとＮＡＮＤ物理アドレスとを関連付ける。アドレス変換テーブル１３の有効／無効情報は、エントリが有効であるか否かを示す。
【００４５】
アドレス変換テーブル１３の各エントリの先読みアドレスは、各エントリのＮＡＮＤ論理アドレス又はＮＡＮＤ物理アドレスに対するアクセス後の所定範囲内に、アクセスされる可能性の高いアドレスである。すなわち、先読みアドレスは、あるデータがアクセスされた場合に、このアクセスより後にアクセスされる可能性が高く、先読みされるデータ（先読みデータ）を示すアドレスである。本実施形態では、先読みアドレスとして、ＮＡＮＤ物理アドレスが用いられる場合を例として説明するが、例えばＮＡＮＤ論理アドレスなどが用いられてもよい。
【００４６】
図２のアドレス変換テーブル１３において、ＮＡＮＤ論理アドレス（Ａ）は、ＮＡＮＤ物理アドレス（Ｂ）に変換される。さらに、先読みアドレス（Ｂ＋１）は、ＮＡＮＤ論理アドレス（Ａ）及びＮＡＮＤ物理アドレス（Ｂ）に対応するデータ（Ｄ）がアクセスされた場合に先読みされる先読みデータ（Ｄ＋１）を示すアドレスである。図２のアドレス変換テーブル１３においては、ＮＡＮＤ論理アドレス（Ａ）及びＮＡＮＤ物理アドレス（Ｂ）に対して、先読みアドレス（Ｂ＋１）が関連付けられている。先読みテーブル１５の各エントリでは、ＮＡＮＤ論理アドレス及びＮＡＮＤ物理アドレスと、エントリの有効又は無効を示す有効／無効情報と、ＮＡＮＤ物理アドレスに対するアクセス後の所定範囲内にアクセスされる可能性の高い先読みデータとが関連付けられている。先読みテーブル１５では、ＮＡＮＤ物理アドレスと先読みデータとが関連付けられているが、ＮＡＮＤ論理アドレスと先読みデータとが関連付けられてもよい。
【００４７】
図２の先読みテーブル１５では、先読みデータ（Ｄ＋１）がＮＡＮＤ物理アドレス（Ｂ）と関連付けられ格納されている。また、先読みデータ（Ｄ）がＮＡＮＤ物理アドレス（Ｂ−１）と関連付けられ格納されている。
【００４８】
なお、本実施形態において、先読みテーブル１５では、ＮＡＮＤ物理アドレス（Ｂ）と、このＮＡＮＤ物理アドレス（Ｂ）の後にアクセスされる可能性の高い先読みデータ（Ｄ＋１）とが関連付けられている。しかしながら、これに代えて、先読みテーブル１５では、先読みアドレス（Ｂ＋１）と、この先読みアドレス（Ｂ＋１）に対応するデータ（Ｄ＋１）とが関連付けて格納されるとしてもよい。
【００４９】
以下に、図２に示す各テーブル１３〜１５を用いて、図１の履歴管理部１６、先読みアドレス管理部１７、先読みデータ管理部１８、アクセス部１９の動作について具体的に説明する。
【００５０】
履歴管理部１６は、アクセス順序を識別可能な形式で、アクセスされたＮＡＮＤ論理アドレス（Ａ−１），（Ａ），（Ａ＋１）を履歴テーブル１４に登録する。
【００５１】
先読みアドレス管理部１７は、履歴テーブル１４に基づいて、アドレス変換テーブル１３に対して先読みアドレスを登録する。
【００５２】
まず、先読みアドレス管理部１７は、アドレス変換テーブル１３を用いて、履歴テーブル１４のＮＡＮＤ論理アドレス（Ａ−１），（Ａ），（Ａ＋１）を、それぞれＮＡＮＤ物理アドレス（Ｂ−１），（Ｂ），（Ｂ＋１）に変換する。
【００５３】
次に、先読みアドレス管理部１７は、ＮＡＮＤ物理アドレス（Ｂ）がＮＡＮＤ物理アドレス（Ｂ−１）の後の所定範囲内にアクセスされたことを認識する。先読みアドレス管理部１７は、アドレス変換テーブル１３の有効なエントリにおけるＮＡＮＤ物理アドレス（Ｂ−１)に対して、ＮＡＮＤ物理アドレス（Ｂ−１)の後にアクセスされているＮＡＮＤ物理アドレス（Ｂ）を、先読みアドレス（Ｂ）として関連付けて登録する。
【００５４】
先読みデータ管理部１８は、ＮＡＮＤ物理アドレス（Ｂ）に対するアクセスが発生した場合に、アドレス変換テーブル１３を参照し、ＮＡＮＤ物理アドレス（Ｂ）に対応する先読みアドレス（Ｂ＋１）の示す先読みデータ（Ｄ＋１）を、不揮発性半導体メモリ６１〜６ｋから読み出す。そして、先読みデータ管理部１８は、先読みデータ（Ｄ＋１）をＮＡＮＤ物理アドレス（Ｂ）と関連付けて、先読みテーブル１５に格納する。
【００５５】
アクセス部１９は、アドレス変換テーブル１３と先読みテーブル１５とを参照し、アクセス対象データが先読みテーブル１５に格納されている場合に、この先読みテーブル１５に対するアクセスを実行する。
【００５６】
アクセス部１９は、アクセス対象データが先読みテーブル１５に格納されていない場合、揮発性半導体メモリ５又は不揮発性半導体メモリ６１〜６ｋに対するアクセスを実行する。
【００５７】
図３は、本実施形態に係るメモリ管理装置３の処理部１３のアクセス動作の前半部の一例を示すフローチャートである。
【００５８】
図４は、本実施形態に係るメモリ管理装置３の処理部１３のアクセス動作の後半部の一例を示すフローチャートである。
【００５９】
処理部１３は、プロセッサ２から、アクセス先のＮＡＮＤ論理アドレス（ＣＰＵ物理アドレス）（Ａ）を受信する（ステップＳ１）。
【００６０】
処理部１３は、アドレス変換テーブル１３を参照し、受信されたＮＡＮＤ論理アドレス（Ａ）をＮＡＮＤ物理アドレス（Ｂ）に変換する（ステップＳ２）。
【００６１】
処理部１３のアクセス部１９は、ＮＡＮＤ物理アドレス（Ｂ）に対応するデータ（Ｄ）が先読みテーブル１５に格納されているか判断する（ステップＳ３）。
【００６２】
データ（Ｄ）が先読みテーブル１５に格納されている場合、処理部１３のアクセス部１９は、先読みテーブル１５に格納されているデータ（Ｄ）をアクセスする（ステップＳ４）。その後、処理はステップＳ８に移動する。
【００６３】
データ（Ｄ）が先読みテーブル１５に格納されていない場合、処理部１３は、ＮＡＮＤ物理アドレス（Ｂ）に対応するデータ（Ｄ）が、揮発性半導体メモリ５に記憶されているか否か判断する（ステップＳ５）。
【００６４】
ＮＡＮＤ物理アドレス（Ｂ）に対応するデータ（Ｄ）が揮発性半導体メモリ５に記憶されている場合、処理部１３は、揮発性半導体メモリ５に対して、第１のコントローラ７経由で、ＮＡＮＤ物理アドレス（Ｂ）に対応するデータ（Ｄ）をアクセスする（ステップＳ６）。その後、処理はステップＳ８に移動する。
【００６５】
ＮＡＮＤ物理アドレス（Ｂ）に対応するデータ（Ｄ）が揮発性半導体メモリ５に記憶されていない場合、処理部１３のアクセス部１９は、不揮発性半導体メモリ６１〜６ｋに記憶されているデータ（Ｄ）をアクセスする（ステップＳ７）。
【００６６】
処理部１３の先読みアドレス管理部１７は、履歴テーブル１４から、ＮＡＮＤ論理アドレス（Ａ）の直前にアクセスされたＮＡＮＤ論理アドレス（Ａ−１）を求め、アドレス変換テーブル１３に基づいて、直前のＮＡＮＤ論理アドレス（Ａ−１）をＮＡＮＤ物理アドレス（Ｂ−１）に変換する（ステップＳ８）。
【００６７】
先読みアドレス管理部１７は、アドレス変換テーブル１３のエントリの中から、ＮＡＮＤ物理アドレス（Ｂ−１）に対応するエントリを求める（ステップＳ９）。
【００６８】
先読みアドレス管理部１８は、求められた直前のＮＡＮＤ物理アドレス（Ｂ−１）に対応するエントリの先読みアドレスに、ＮＡＮＤ物理アドレス（Ｂ）を登録する（ステップＳ１０）。
【００６９】
先読みデータ管理部１８は、アドレス変換テーブル１３のＮＡＮＤ物理アドレス（Ｂ）に対応するエントリに登録されている先読みアドレス（Ｂ＋１）が有効であるか否か判断する（ステップＳ１１）。
【００７０】
先読みアドレス（Ｂ＋１）が有効でない場合、処理はステップＳ１３に移動する。
【００７１】
先読みアドレス（Ｂ＋１）が有効な場合、先読みデータ管理部１８は、不揮発性半導体メモリ６１〜６ｋから、先読みアドレス（Ｂ＋１）に対応するデータ（Ｄ＋１）を先読みし、データ（Ｄ＋１）を先読みテーブル１５に格納する（ステップＳ１２）。
【００７２】
履歴管理部１６は、ＮＡＮＤ論理アドレス（Ａ）を履歴テーブル１４に登録する（ステップＳ１３）。
【００７３】
以上説明した本実施形態においては、アドレス変換テーブル１３におけるアドレスに対して、このアドレスに対するアクセスの後にアクセスされる可能性の高い先読みアドレスが登録される。これにより、あるデータがアクセスされた場合に、このアクセス後にアクセスされる可能性の高いデータを不揮発性半導体メモリ６１〜６ｋから事前に読み出し、高速にアクセス可能な先読み記憶部１１に準備しておくことができる。本実施形態においては、たとえ連続するデータではないデータであっても、アクセス履歴に基づいて不揮発性半導体メモリ６１〜６ｋに対するアクセスを効率化させることができ、アクセス速度を高速化でき、アクセス性能を向上させることができる。
【００７４】
本実施形態においては、不揮発性半導体メモリ６１〜６ｋに対するアクセス回数を減少させることができ、不揮発性半導体メモリ６１〜６ｋの長寿命化を実現させることができる。
【００７５】
本実施形態においては、先読みアドレスに、ＮＡＮＤ物理アドレスが使用される。これにより、不揮発性半導体メモリ６１〜６ｋに書き込まれるデータの再配置の自由度を向上させることができ、不揮発性半導体メモリ６１〜６ｋに対するアクセスの信頼性を向上させることができる。
【００７６】
なお、本実施形態において、先読みアドレスとしては、先読みデータの絶対アドレスが用いられる。
【００７７】
例えば、アドレス変換テーブル１３において、変換前のＮＡＮＤ論理アドレス（Ａ）と変換後のＮＡＮＤ物理アドレス（Ｂ）とが関係付けられているエントリがあると仮定する。このエントリにおいて、先読みアドレスに、変換前のＮＡＮＤ論理アドレス（Ａ）又は変換後のＮＡＮＤ物理アドレス（Ｂ）と同じＮＡＮＤ論理アドレス（Ａ）又はＮＡＮＤ物理アドレス（Ｂ）が登録されている場合には、先読みは実行されないとする。
【００７８】
また、アドレス変換テーブル１３の項目に、先読みアドレスが有効か否かを示す先読み有効／無効情報を加え、この先読み有効／無効情報が有効であることを示す場合にのみ、先読みを実行するとしてもよい。
【００７９】
（第２の実施形態）
本実施形態では、上記第１の実施形態に対する第１から第５までの変形例について説明する。
【００８０】
＜第１の変形例＞
第１の変形例において、アドレス変換テーブル１３は、相対アドレスを用いて、先読みアドレスを特定するとしてもよい。
【００８１】
例えば、アドレス変換テーブル１３において、変換前のＮＡＮＤ論理アドレス（Ａ）と変換後のＮＡＮＤ物理アドレス（Ｂ）とが関係付けられており、先読みアドレスに、ＮＡＮＤ物理アドレス（Ｂ）からの相対位置を示す相対アドレス（Ｎ）が登録されているエントリがあると仮定する。このエントリにおいて、ＮＡＮＤ物理アドレス（Ｂ）に対するアクセス後にアクセスされる可能性の高い先読みアドレスは、ＮＡＮＤ物理アドレス（Ｂ＋Ｎ）となる。例えば、先読みアドレスが０の場合には、先読みは実行されない。
【００８２】
この第１の変形例において、不揮発性半導体メモリ６１〜６ｋの全アドレスが２n個とすると、先読みアドレスの情報量をｎより少なくすることができ、アドレス変換テーブル１３のデータ容量を少なくすることができる。
【００８３】
この第１の変形例において、不揮発性半導体メモリ６１〜６ｋにおけるアクセス可能範囲外に対しては、先読みが行わないように設定される。
【００８４】
＜第２の変形例＞
第２の変形例において、アドレス変換テーブル１３は、各エントリにおいて、複数の先読みアドレスを登録しているとしてもよい。
【００８５】
この第２の変形例において、先読みアドレス管理部１７は、アドレス変換テーブル１３のエントリに、複数の先読みアドレスを登録する。
【００８６】
そして、先読みデータ管理部１８は、アドレス変換テーブル１３を参照し、アクセスされたＮＡＮＤ物理アドレスに対して、複数の先読みアドレスが関連付けられている場合に、各先読みアドレスに対応するデータを先読みテーブル１５に格納する処理を繰り返す。これにより、先読みテーブル１５のヒット率を向上させることができる。
【００８７】
＜第３の変形例＞
図５は、本変形例に係るアドレス変換テーブル１３の一例を示す図である。
【００８８】
第３の変形例において、アドレス変換テーブル１３は、アクセス間隔を登録するためのフィールドを含む。
【００８９】
アクセス間隔としては、例えば、アクセス時間又はアクセス回数が用いられる。
【００９０】
まず、アクセス間隔として、アクセス時間を用いる場合について説明する。
【００９１】
例えば、ＮＡＮＤ論理アドレス（Ａ）をアクセスしてから、その後にＮＡＮＤ論理アドレス（Ａ＋１）をアクセスするまでのアクセス時間がｔであるアクセスパターンが、履歴テーブル１４から得られたとする。
【００９２】
この場合、アドレス変換テーブル１３では、ＮＡＮＤ論理アドレス（Ａ）、ＮＡＮＤ物理アドレス（Ｂ）、先読みアドレスであるＮＡＮＤ物理アドレス（Ｂ＋１）、アクセス時間ｔが関連付けられる。
【００９３】
先読みデータ管理部１８は、ＮＡＮＤ論理アドレス（Ａ）をアクセスした後、ｔ×ａ＋ｂ時間経過した後に、先読みアドレス（Ｂ＋１）に対応するデータ（Ｄ＋１）を、先読みテーブル１５に格納する。なお、ａ，ｂは、アクセス時間ｔに基づいて先読みを実行するタイミングを算出するための定数である。ｔ×ａ＋ｂ時間は、ｔ時間よりも短いとする。
【００９４】
これにより、先読みデータ管理部１８は、先読みデータ（Ｄ＋１）を、アクセス時間ｔが経過する前の任意のタイミングで、先読みテーブル１５に格納することができる。
【００９５】
次に、アクセス間隔として、アクセス回数を用いる場合について説明する。
【００９６】
例えば、ＮＡＮＤ論理アドレス（Ａ）に対するアクセスがｚ回発生した後にＮＡＮＤ論理アドレス（Ａ＋１）に対するアクセスが発生するアクセスパターンが、履歴テーブル１４から得られたとする。
【００９７】
この場合、アドレス変換テーブル１３では、ＮＡＮＤ論理アドレス（Ａ）、ＮＡＮＤ物理アドレス（Ｂ）、先読みアドレス（Ｂ＋１）、アクセス回数ｚが関連付けられる。
【００９８】
先読みデータ管理部１８は、ＮＡＮＤ論理アドレス（Ａ）が、ｚ×ｖ＋ｗ回受信された後に、先読みアドレス（Ｂ＋１）に対応するデータ（Ｄ＋１）を、先読みテーブル１５に格納する。なお、ｖ，ｗは、アクセス回数ｚに基づいて先読みを実行するタイミングを算出するための定数である。ｚ×ｖ＋ｗは、ｚよりも小さい値とする。
【００９９】
これにより、先読みデータ管理部１８は、先読みデータ（Ｄ＋１）を、アクセス回数ｚの実行前の任意のタイミングで、先読みテーブル１５に格納することができる。
【０１００】
以上説明した第３の変形例においては、アクセス時間又はアクセス回数などのようなアクセス間隔に基づいて、先読みを実行するタイミングを制御することができ、先読み動作の効率化を実現することができる。
【０１０１】
＜第４の変形例＞
第４の変形例として、先読みアドレス管理部１７は、アクセス対象データが先読みテーブル１５に格納されていない場合（先読みミスの場合）、アクセス変換テーブル１３の該当エントリにおける先読みアドレスを、更新する。
【０１０２】
例えば、アドレス変換テーブル１３の該当エントリに、ＮＡＮＤ論理アドレス（Ａ）、ＮＡＮＤ物理アドレス（Ｂ）、先読みアドレスであるＮＡＮＤ物理アドレス（Ｂ＋１）が登録されていると仮定する。そして、該当エントリのＮＡＮＤ物理アドレス（Ｂ）の後のアクセス先が、該当エントリの先読みアドレス（Ｂ＋１）と異なるＮＡＮＤ物理アドレス（Ｂ＋１０）であり、このＮＡＮＤ物理アドレス（Ｂ＋１０）に対応するデータ（Ｄ＋１０）が先読みテーブル１５に格納されていないとする。
【０１０３】
この場合、先読みアドレス管理部１７は、アドレス変換テーブル１３のエントリの先読みアドレスを、（Ｂ＋１）から（Ｂ＋１０）に更新する。
【０１０４】
先読みデータ管理部１７は、データ（Ｄ＋１０）を先読みテーブル１５に格納する。
【０１０５】
この第４の変形例においては、最新のアクセス履歴に基づいて先読みアドレス及び先読みデータが更新されるため、先読みデータのヒット率を向上させることができる。
【０１０６】
＜第５の変形例＞
第５の変形例として、先読みアドレス管理部１７は、アクセス変換テーブル１３のエントリごとに、先読みアドレスに関するヒット回数とミス回数とをカウントし、結果を登録する。ヒット回数とは、あるアドレスに対するアクセスの後の所定範囲内に、このアドレスに対応する先読みアドレスに対するアクセスが発生した回数とする。これに対し、ミス回数とは、あるアドレスに対するアクセスの後の所定範囲内に、このアドレスに対応する先読みアドレスに対するアクセスが発生しなかった回数とする。
【０１０７】
そして、先読みアドレス管理部１７は、ミス回数がヒット回数よりも多くなったエントリに対して、そのエントリの先読みアドレスを更新し、そのエントリのヒット回数とミス回数とを初期化（クリア）する。
【０１０８】
なお、先読みアドレス管理部１７は、アクセス変換テーブル１３のエントリごとに、アクセス回数とミス回数、又は、アクセス回数とヒット回数をカウントし、結果を登録してもよい。
【０１０９】
この場合、先読みアドレス管理部１７は、アクセス回数とミス回数、又は、アクセス回数とヒット回数に基づいて、エントリの先読みアドレスを更新するか否か判断する。例えば、先読みアドレス管理部１７は、エントリのミス回数／アクセス回数が、ある閾値を超えた場合に、そのエントリの先読みアドレスを更新し、そのエントリのアクセス回数とミス回数とを初期化する。また、例えば、先読みアドレス管理部１７は、エントリのヒット回数／アクセス回数が、ある閾値より小さい場合に、そのエントリの先読みアドレスを更新し、そのエントリのアクセス回数とヒット回数とを初期化する。
【０１１０】
この第５の変形例においては、様々な条件に応じて、アクセス変換テーブル１３に対する先読みアドレスの更新制御を行うことができ、先読みデータのヒット率を向上させることができる。
【０１１１】
（第３の実施形態）
本実施形態では、先読みデータに対する先読みアドレスの効率的な割り当てについて説明する。
【０１１２】
図６は、本実施形態に係る不揮発性半導体メモリ６１〜６ｋの構成の一例を示す図である。
【０１１３】
この図６の不揮発性半導体メモリ６１〜６ｋは、複数のブロック領域を含むブロックユニットがマトリクス状に配置されている。
【０１１４】
マトリクス状に配置されているブロックユニットのうち同一の行に属するブロックユニットは、同一のバンクに属する。
【０１１５】
マトリクス状に配置されているブロックユニットのうち同一の列に属するブロックユニットは、同一のチャネルに属する。
【０１１６】
このように、不揮発性半導体メモリ６１〜６ｋがＮＡＮＤ型フラッシュメモリの場合、複数のブロック領域は、バンク０〜ｍのいずれかに所属するとともに、チャネル０〜ｎのいずれかに所属する。各ブロック領域は、複数のページ領域を含む。したがって、複数のページ領域は、複数のチャネルと複数のバンクを用いて区分けされている。各ページ領域には、バンク番号とチャネル番号とが付される。
【０１１７】
この不揮発性半導体メモリ６１〜６ｋにおいて、異なるチャネルに対しては、同時にアクセス可能である。
【０１１８】
また、不揮発性半導体メモリ６１〜６ｋにおいて、異なるバンクに対しては、同時にアクセス可能である。
【０１１９】
不揮発性半導体メモリ６１〜６ｋにおいて、連続するページ領域に対しては、連続していないページ領域に対するアクセスよりも高速にアクセスすることが可能である。
【０１２０】
異なるチャネルに対する同時アクセス、異なるバンクに対する同時アクセス、連続するページ領域に対するアクセスの速度を比較すると、異なるチャネルに対する同時アクセスが最も高速であり、異なるバンクに対する同時アクセスが２番目に高速であり、連続するページ領域に対するアクセスが３番目に高速である。
【０１２１】
本実施形態に係る先読みアドレス管理部１７は、アドレス変換テーブル１３を参照して、空きのデータ領域を認識し、上記の関係に基づいて、先読みデータの配置を行う。
【０１２２】
先読みアドレス管理部１７は、あるデータのアドレスと、このあるデータに対する複数の先読みアドレスとに対して、チャネルとバンクとのうちの少なくとも一方が異なるように、ＮＡＮＤ物理アドレスを割り当てる。
【０１２３】
または、先読みアドレス管理部１７は、例えば、あるデータのアドレスと、そのデータに対する先読みアドレスとが連続するように、あるデータ及び先読みデータに対してＮＡＮＤ物理アドレスを割り当てる。
【０１２４】
先読みアドレス管理部１７によるアドレスの割り当ては、例えば、ウェアレベリング又はガーベージコレクションの実行時などのように、不揮発性半導体メモリ６１〜６ｋに対するＮＡＮＤ物理アドレスの再配置が必要な場合に、実行される。
【０１２５】
以下に、履歴テーブル１４に基づくアドレスの割り当てについて、詳しく説明する。
【０１２６】
図７は、本実施形態に係るアドレス変換テーブル１３と履歴テーブル１４とアドレス割り当て結果との関係の一例を示す図である。
【０１２７】
アドレス変換テーブル１３のＮＡＮＤ物理アドレスは、チャネル番号、バンク番号、ブロック番号及びページ番号を含むＮＡＮＤチップアドレス、オフセットを含む。
【０１２８】
本実施形態において、履歴テーブル１４は、メモリ管理装置３に受信されたＮＡＮＤ論理アドレス（ＣＰＵ物理アドレス）を登録しているとする。
【０１２９】
例えば、この履歴テーブル１４に、ＮＡＮＤ論理アドレス（Ａ）の次に、ＮＡＮＤ論理アドレス（Ａ＋１）がアクセスされたことが登録されているとする。
【０１３０】
例えば、この履歴テーブル１４に、ＮＡＮＤ論理アドレス（Ａ）の次に、ＮＡＮＤ論理アドレス（Ａ＋５）がアクセスされたことが登録されているとする。
【０１３１】
例えば、この履歴テーブル１４に、ＮＡＮＤ論理アドレス（Ａ）の次に、ＮＡＮＤ論理アドレス（Ａ＋２）がアクセスされたことが登録されているとする。
【０１３２】
例えば、この履歴テーブル１４に、ＮＡＮＤ論理アドレス（Ａ）の次に、ＮＡＮＤ論理アドレス（Ａ＋１）がアクセスされ、さらにその次に、ＮＡＮＤ論理アドレス（Ａ＋３）がアクセスされたことが登録されているとする。
【０１３３】
例えば、履歴テーブル１４に、ＮＡＮＤ論理アドレス（Ａ）の次に、ＮＡＮＤ論理アドレス（Ａ＋４）がアクセスされたことが登録されているとする。
【０１３４】
このようなアクセスパターンが履歴テーブル１４に登録されている場合、先読みアドレス管理部１７は、ＮＡＮＤ論理アドレス（Ａ＋１），（Ａ＋２），（Ａ＋３），（Ａ＋５）のそれぞれに対して、チャネルとバンクとのうちの少なくとも一方が異なり、かつ、チャネル及びバンクの内で使用されるＮＡＮＤチップアドレスが同じになるように、ＮＡＮＤ物理アドレスを割り当てる。
【０１３５】
また、先読みアドレス管理部１７は、ＮＡＮＤ物理アドレス（Ａ）と先読みアドレス（Ａ＋４）とに対して、同一のチャネル及び同一のバンク内で連続するＮＡＮＤ物理アドレスを割り当てる。
【０１３６】
図７では、アドレス変換テーブル１３の各エントリに、ｎ×ｍビットのチャネルフィールドが設けられている。チャネルフィールドでは、先読みデータが配置されるチャネル及びバンクを識別可能とすることによって、先読みアドレスが特定される。すなわち、本実施形態では、ＮＡＮＤ物理アドレスと先読みアドレスとの間で、ＮＡＮＤチップアドレスが共有される。
【０１３７】
図７のアドレス変換テーブル１３では、変更前のＮＡＮＤ論理アドレス（Ａ）と変更後のＮＡＮＤ物理アドレス（Ｂ）とに対して、先読みアドレスの割り当てられたチャネル及びバンクに対応するフラグが「１」で表され、先読みアドレスの割り当てられていないチャネル及びバンクに対応するフラグが「０」で表される。
【０１３８】
先読みアドレス管理部１７は、アドレス変換テーブル１３において、先読みアドレスの割り当てられたチャネル及びバンクに対応するビットに「１」を設定する。
【０１３９】
先読みデータ管理部１８は、ＮＡＮＤ物理アドレス（Ｂ）のデータがアクセスされた場合に、フラグが「１」となっているチャネル及びバンク内で、ＮＡＮＤ物理アドレス（Ｂ）と同じＮＡＮＤチップアドレスで指定されるデータを、同時に読み出し、読み出された先読みデータを先読みテーブル１５に格納する。
【０１４０】
また、図７のアドレス変換テーブル１３では、ＮＡＮＤ物理アドレス（Ｂ）のデータがアクセスされた場合の先読みデータが、ＮＡＮＤ物理アドレス（Ｂ）に連続するデータ領域に記憶されている場合、アドレス変換テーブル１３のＮＡＮＤ物理アドレス（Ｂ）のエントリにおける連続割り当てフラグに、「１」が設定される。
【０１４１】
先読みデータ管理部１８は、ＮＡＮＤ物理アドレス（Ｂ）に対するアクセスが発生し、連続割り当てフラグが「１」となっている場合、このＮＡＮＤ物理アドレス（Ｂ）の次のデータ領域に記憶されている先読みデータを、先読みテーブル１５に格納する。
【０１４２】
以上説明した本実施形態においては、例えば、ウェアレベリング、ガーベージコレクションの実行時に、履歴テーブル１４及びアドレス変換テーブル１３に基づいて、ＮＡＮＤ物理アドレスを最適に割り当てることができる。
【０１４３】
本実施形態においては、先読みデータを複数のチャネル及びバンクから同時に読み出すことができる。
【０１４４】
本実施形態においては、データと先読みデータとが連続するデータ領域に記憶されるため、高速に先読みデータを読み出すことができる。
【０１４５】
本実施形態においては、アドレス変換テーブル１３の１つのエントリに複数の先読みアドレスを登録することができ、先読みデータの数を増加させることができる。
【０１４６】
本実施形態においては、ＮＡＮＤ物理アドレスと先読みアドレスとの間で、ＮＡＮＤチップアドレスを共有させることにより、アドレス変換テーブル１３に必要とされるデータ容量を削減することができる。
【０１４７】
なお、本実施形態において、アドレス変換テーブル１３の先読みアドレスとして相対アドレスが用いられており、先読みアドレスが相対アドレスを用いて参照可能な範囲の外であり、先読みが行われない場合、先読みアドレス管理部１７は、履歴テーブル１４をアクセスし、連続してアクセスされているＮＡＮＤ論理アドレス（Ａ−１），（Ａ）を抽出し、相対アドレスで参照可能な範囲に、ＮＡＮＤ論理アドレス（Ａ−１）のデータ及びＮＡＮＤ論理アドレス（Ａ）のデータを再配置し、アドレス変換テーブル１３を更新する。
【０１４８】
これにより、相対アドレスで参照可能な範囲外に先読みデータが存在する場合であっても、相対アドレスで参照可能な範囲内に先読みデータを再配置し、先読みを行うことができる。
【０１４９】
（第４の実施形態）
本実施形態においては、アドレス変換テーブル１３に登録される先読みアドレスとして、ＮＡＮＤ論理アドレスが使用され、先読みテーブル１５に、ＮＡＮＤ論理アドレスと先読みデータとが格納される場合について説明する。
【０１５０】
図８は、本実施形態に係るアドレス変換テーブル１３、履歴テーブル１４、先読みテーブル１５の構成の一例を示す図である。
【０１５１】
この図８のアドレス変換テーブル１３では、変換前のＮＡＮＤ論理アドレスと変換後のＮＡＮＤ物理アドレスとの組み合わせに対して、ＮＡＮＤ論理アドレスである先読みアドレスが関連付けられる。
【０１５２】
また、図８の先読みテーブル１５の各エントリでは、ＮＡＮＤ論理アドレスと、エントリの有効又は無効を示す有効／無効情報と、先読みデータとが関連付けられる。
【０１５３】
図９は、本実施形態に係るメモリ管理装置３の処理部１３のアクセス動作の前半部の一例を示すフローチャートである。
【０１５４】
図１０は、本実施形態に係るメモリ管理装置３の処理部１３のアクセス動作の後半部の一例を示すフローチャートである。
【０１５５】
処理部１３は、プロセッサ２から、アクセス先のＮＡＮＤ論理アドレス（Ａ）を受信する（ステップＴ１）。
【０１５６】
処理部１３は、アドレス変換テーブル１３を参照し、受信されたＮＡＮＤ論理アドレス（Ａ）をＮＡＮＤ物理アドレス（Ｂ）に変換する（ステップＴ２）。
【０１５７】
処理部１３のアクセス部１９は、ＮＡＮＤ物理アドレス（Ｂ）に対応するデータ（Ｄ）が先読みテーブル１５に格納されているか判断する（ステップＴ３）。
【０１５８】
データ（Ｄ）が先読みテーブル１５に格納されている場合、処理部１３のアクセス部１９は、先読みテーブル１５に格納されているデータ（Ｄ）をアクセスする（ステップＴ４）。その後、処理はステップＴ８に移動する。
【０１５９】
データ（Ｄ）が先読みテーブル１５に格納されていない場合、処理部１３は、ＮＡＮＤ物理アドレス（Ｂ）に対応するデータ（Ｄ）が、揮発性半導体メモリ５に記憶されているか否か判断する（ステップＴ５）。
【０１６０】
ＮＡＮＤ物理アドレス（Ｂ）に対応するデータ（Ｄ）が揮発性半導体メモリ５に記憶されている場合、処理部１３は、揮発性半導体メモリ５に対して、第１のコントローラ７経由で、ＮＡＮＤ物理アドレス（Ｂ）に対応するデータ（Ｄ）をアクセスする（ステップＴ６）。その後、処理はステップＴ８に移動する。
【０１６１】
ＮＡＮＤ物理アドレス（Ｂ）に対応するデータ（Ｄ）が揮発性半導体メモリ５に記憶されていない場合、処理部１３のアクセス部１９は、不揮発性半導体メモリ６１〜６ｋに記憶されているデータ（Ｄ）をアクセスする（ステップＴ７）。
【０１６２】
処理部１３の先読みアドレス管理部１７は、履歴テーブル１４から、ＮＡＮＤ論理アドレス（Ａ）の直前にアクセスされたＮＡＮＤ論理アドレス（Ａ−１）を求める（ステップＴ８）。
【０１６３】
先読みアドレス管理部１７は、アドレス変換テーブル１３のエントリの中から、直前のＮＡＮＤ論理アドレス（Ａ−１）に対応するエントリ求める（ステップＴ９）。
【０１６４】
先読みアドレス管理部１８は、求められた直前のＮＡＮＤ論理アドレス（Ａ−１）に対応するエントリの先読みアドレスに、ＮＡＮＤ論理アドレス（Ａ）を登録する（ステップＴ１０）。
【０１６５】
先読みデータ管理部１８は、アドレス変換テーブル１３のＮＡＮＤ論理アドレス（Ａ）に対応するエントリに登録されている先読みアドレス（Ａ＋１）が有効であるか否か判断する（ステップＴ１１）。
【０１６６】
先読みアドレス（Ａ＋１）が有効でない場合、処理はステップＴ１４に移動する。
【０１６７】
先読みアドレス（Ａ＋１）が有効な場合、先読みデータ管理部１８は、アドレス変換テーブル１３に基づいて、先読みアドレス（Ａ＋１）をＮＡＮＤ物理アドレス（Ｂ＋１）に変換する（ステップＴ１２）。
【０１６８】
そして、先読みデータ管理部１８は、不揮発性半導体メモリ６１〜６ｋから、ＮＡＮＤ物理アドレス（Ｂ＋１）に対応するデータ（Ｄ＋１）を先読みし、データ（Ｄ＋１）を先読みテーブル１５に格納する（ステップＴ１３）。
【０１６９】
履歴管理部１６は、ＮＡＮＤ論理アドレス（Ａ）を履歴テーブル１４に登録する（ステップＴ１４）。
【０１７０】
以上説明した本実施形態においては、先読みアドレスとしてＮＡＮＤ論理アドレスが使用される。この場合、データに対するＮＡＮＤ物理アドレスが変更又は削除されたとしても、先読み動作の効率を悪化させることなく、連続的に先読みを実行させることができる。
【０１７１】
（第５の実施形態）
本実施形態においては、ソフトウェアによる先読み制御について説明する。
【０１７２】
図１１は、本実施形態に係る先読みテーブル１５とアドレス変換テーブル１３とソフトウェアとの関係の一例を示すブロック図である。
【０１７３】
本実施形態において、アドレス変換テーブル１３は、先読みアドレスの変更を禁止するか否かを示すロックビットを持つ。ロックビットが「１」のエントリについては、先読みアドレスの変更が禁止される。ロックビットが「０」のエントリについては、先読みアドレスの変更が許可される。
【０１７４】
本実施形態において先読みテーブル１５は、エントリの変更を禁止するか否かを示すロックビットを持つ。ロックビットが「１」のエントリについては、変更が禁止される。ロックビットが「０」のエントリについては、変更が許可される。
【０１７５】
本実施形態のソフトウェア２０としては、例えば、プロセッサ２によって実行されるオペレーティングシステム、プロセッサ２によって実行されるアプリケーションソフトウェア、処理部１２によって実行されるファームウェアがある。
【０１７６】
ソフトウェア２０は、アドレス変換テーブル１３及び先読みテーブル１５に対する設定を変更する。
【０１７７】
さらに、ソフトウェア２０は、アドレス変換テーブル１３に対するロックビットの設定、及び先読みテーブル１５に対するロックビットの設定を行い、エントリ単位で登録又は格納内容をロックすることができる。
【０１７８】
この図１１のアドレス変換テーブル１３において、先読みアドレス（Ｂ）は、ロックビット「１」に関連付けられているため、更新されない。
【０１７９】
例えば、不揮発性半導体メモリ６１〜６ｋの特定のデータ領域に、オペレーティングシステムによって頻繁にアクセスされるデータが記憶されているとする。この場合、ソフトウェア２０は、頻繁にアクセスされるデータを、先読みテーブル１５に格納する。
【０１８０】
また、例えば、先読みテーブル１５では、先読みテーブル１５の容量が所定の値を超えた場合に、古い先読みデータが削除されるとする。しかしながら、頻繁にアクセスされるデータが先読みテーブル１５から削除されないように、ソフトウェア２０は、この頻繁にアクセスされるデータに対応するロックビットを「１」に設定し、このデータの消去を禁止する。
【０１８１】
この図１１の先読みテーブル１５において、先読みデータ（Ｄ＋６）は、ロックビット「１」に関連付けられているため、更新されない。
【０１８２】
以上説明した本実施形態においては、ソフトウェア２０によって先読みテーブル１５及びアドレス変換テーブル１３を静的に設定することができる。
【０１８３】
また、本実施形態においては、ソフトウェア２９により、先読みテーブル１５及びアドレス変換テーブル１３の更新を、自動で実行させるモードとするか、ロックさせるモードとするか、選択することができる。
【０１８４】
本発明のいくつかの実施形態を説明したが、これらの実施形態は、例として提示したものであり、発明の範囲を限定することは意図していない。これら新規な実施形態は、その他の様々な形態で実施されることが可能であり、発明の要旨を逸脱しない範囲で、種々の省略、置き換え、変更を行うことができる。これら実施形態やその変形は、発明の範囲や要旨に含まれるとともに、特許請求の範囲に記載された発明とその均等の範囲に含まれる。
【符号の説明】
【０１８５】
１…情報処理装置、２…プロセッサ、２ａ…ＭＭＵ、３…メモリ管理装置、４…記憶装置、５…揮発性半導体メモリ、６１〜６ｋ…不揮発性半導体メモリ、７…第１のコントローラ、８…第２のコントローラ、９…アドレス情報記憶部、１０…履歴記憶部、１１…先読み記憶部、１２…処理部、１３…アドレス変換テーブル、１４…履歴テーブル、１５…先読みテーブル、１６…履歴管理部、１７…先読みアドレス管理部、１８…先読みデータ管理部、１９…アクセス部、２０…ソフトウェア
【図１】
2012064158.tif 000003
【図２】
2012064158.tif 000004
【図３】
2012064158.tif 000005
【図４】
2012064158.tif 000006
【図５】
2012064158.tif 000007
【図６】
2012064158.tif 000008
【図７】
2012064158.tif 000009
【図８】
2012064158.tif 000010
【図９】
2012064158.tif 000011
【図１０】
2012064158.tif 000012
【図１１】
2012064158.tif 000013