メモリ管理装置及びメモリ管理方法
【課題】不揮発性半導体メモリに記憶されているデータを、高速アクセス可能な記憶装置にアクセス発生前に記憶し、効率的なアクセスを実行する。
【解決手段】実施形態に係るメモリ管理装置3は、履歴管理部16、アドレス変換テーブル13、アドレス管理部17、先読みデータ管理部18を含む。履歴管理部16は、メインメモリ4として使用される不揮発性半導体メモリ61〜6kに記憶されているデータに対するアクセス履歴を管理する。アドレス変換テーブル13は、データについての論理アドレスと物理アドレスの変換テーブルを含む。アドレス管理部17は、アドレス変換テーブル13の第1の論理アドレスに対するアクセスの後にアクセスされる第2の論理アドレスをアクセス履歴に基づき決定し、第2の論理アドレスに対応する第2の物理アドレスを第1の論理アドレスに対応付けてアドレス変換テーブル13に登録する。先読みデータ管理部18は、第2の物理アドレスに対応するデータをバッファ11に格納する。
【解決手段】実施形態に係るメモリ管理装置3は、履歴管理部16、アドレス変換テーブル13、アドレス管理部17、先読みデータ管理部18を含む。履歴管理部16は、メインメモリ4として使用される不揮発性半導体メモリ61〜6kに記憶されているデータに対するアクセス履歴を管理する。アドレス変換テーブル13は、データについての論理アドレスと物理アドレスの変換テーブルを含む。アドレス管理部17は、アドレス変換テーブル13の第1の論理アドレスに対するアクセスの後にアクセスされる第2の論理アドレスをアクセス履歴に基づき決定し、第2の論理アドレスに対応する第2の物理アドレスを第1の論理アドレスに対応付けてアドレス変換テーブル13に登録する。先読みデータ管理部18は、第2の物理アドレスに対応するデータをバッファ11に格納する。
【発明の詳細な説明】
【技術分野】
【0001】
本発明の実施形態は、不揮発性半導体メモリに対するアクセスを管理するメモリ管理装置及びメモリ管理方法に関する。
【背景技術】
【0002】
従来において、不揮発性半導体メモリよりも高速にアクセス可能な一時記憶装置を備え、不揮発性半導体メモリに記憶されているデータをこの一時記憶装置に記憶することでアクセスを高速化する技術が用いられている。
【0003】
このような従来のアクセス高速化技術では、不揮発性半導体メモリに記憶されている連続するデータのうち次にアクセスされるデータが先回りして一時記憶装置に記憶される。そして、連続するデータに対するアクセスは、一時記憶装置に対して実行される。
【先行技術文献】
【特許文献】
【0004】
【特許文献1】特開平05−019973号公報
【特許文献2】特開昭59−085564号公報
【発明の概要】
【発明が解決しようとする課題】
【0005】
本発明の実施形態は、不揮発性半導体メモリに記憶されているデータを高速にアクセス可能にするメモリ管理装置及びメモリ管理方法を提供することを目的とする。
【課題を解決するための手段】
【0006】
実施形態によれば、メモリ管理装置は、履歴管理部、アドレス変換テーブル、アドレス管理部、先読みデータ管理部を含む。履歴管理部は、メインメモリとして使用される不揮発性半導体メモリに記憶されているデータに対するアクセス履歴を管理する。アドレス変換テーブルは、データについての論理アドレスと物理アドレスの変換テーブルを含む。アドレス管理部は、アドレス変換テーブルの第1の論理アドレスに対するアクセスの後にアクセスされる第2の論理アドレスを前記アクセス履歴に基づき決定し、第2の論理アドレスに対応する第2の物理アドレスを第1の論理アドレスに対応付けてアドレス変換テーブルに登録する。先読みデータ管理部は、第2の物理アドレスに対応するデータをバッファに格納する。
【図面の簡単な説明】
【0007】
【図1】第1の実施形態に係るメモリ管理装置の構成の一例を示すブロック図。
【図2】第1の実施形態に係るアドレス変換テーブル、履歴テーブル、先読みテーブルの構成の一例を示す図。
【図3】第1の実施形態に係るメモリ管理装置の処理部のアクセス動作の前半部の一例を示すフローチャート。
【図4】第1の実施形態に係るメモリ管理装置の処理部のアクセス動作の後半部の一例を示すフローチャート。
【図5】第2の実施形態に係るアドレス変換テーブルの一例を示す図。
【図6】第3の実施形態に係る不揮発性半導体メモリの構成の一例を示す図。
【図7】第3の実施形態に係るアドレス変換テーブルと履歴テーブルとアドレス割り当て結果との関係の一例を示す図。
【図8】第4の実施形態に係るアドレス変換テーブル、履歴テーブル、先読みテーブルの構成の一例を示す図。
【図9】第4の実施形態に係るメモリ管理装置の処理部のアクセス動作の前半部の一例を示すフローチャート。
【図10】第4の実施形態に係るメモリ管理装置の処理部のアクセス動作の後半部の一例を示すフローチャート。
【図11】第5の実施形態に係る先読みテーブルとアドレス変換テーブルとソフトウェアとの関係の一例を示すブロック図。
【発明を実施するための形態】
【0008】
以下、図面を参照しながら本発明の各実施の形態について説明する。なお、以下の説明において、略または実質的に同一の機能および構成要素については、同一符号を付し、必要に応じて説明を行う。
【0009】
(第1の実施形態)
図1は、本実施形態に係るメモリ管理装置の構成の一例を示すブロック図である。
【0010】
情報処理装置1は、プロセッサ2、メモリ管理装置3、記憶装置4を具備する。プロセッサ2とメモリ管理装置3とは、例えばSoC(System-on-a-Chip)で構成されてもよい。
【0011】
メモリ管理装置3は、プロセッサ2からアクセス対象データのアドレスを受信し、アクセス結果をプロセッサ2に返す。本実施形態において、アクセスとは、読み出しと書き込みとのうちの少なくとも一方に関わる動作を意味するものとする。
【0012】
例えば、メモリ管理装置3は、プロセッサ2から読み出し対象データの論理アドレスを受信すると、論理アドレスを物理アドレスに変換し、物理アドレスに対応する読み出し対象データを記憶装置4から読み出し、読み出し対象データをプロセッサ2に返す。
【0013】
また、例えば、メモリ管理装置3は、プロセッサ2から書き込み対象データと、この書き込み対象データの論理アドレスを受信すると、論理アドレスを物理アドレスに変換し、物理アドレスに対応する記憶装置4の位置に、書き込み対象データを書き込む。そして、メモリ管理装置3は、書き込みの成否を示す情報をプロセッサ2に返す。
【0014】
記憶装置4は、情報処理装置1のメインメモリとして使用され、揮発性半導体メモリ5と不揮発性半導体メモリ61〜6kとを具備する。本実施形態では、不揮発性半導体メモリ61〜6kに、十分なメモリ量が確保される。不揮発性半導体メモリ61〜6kのメモリ容量は、揮発性半導体メモリ5よりも大きい。そして、揮発性半導体メモリ5には、例えば、最近アクセスされたデータ又は使用頻度の高いデータなどのような、アクセスされる可能性の高いデータが不揮発性半導体メモリ61〜6kからキャッシュされる。プロセッサ2が揮発性半導体メモリ5にアクセスする場合に、揮発性半導体メモリ5にアクセス対象データが存在しない場合、不揮発性半導体メモリ61〜6kと揮発性半導体メモリ5との間でデータ転送が実行される。このように、揮発性半導体メモリ5と不揮発性半導体メモリ61〜6kとを組み合わせて使用することで、揮発性半導体メモリ5のメモリ容量より大きいメモリ空間がメインメモリとして使用可能となる。
【0015】
本実施形態において揮発性半導体メモリ5は、例えば、DRAM(Dynamic Random Access Memory)であるとする。しかしながら、揮発性半導体メモリ5としては、DRAMに代えて、FPM−DRAM(Fast Page Mode)、EDO−DRAM(Extended Data Out DRAM)、SDRAM(Synchronous DRAM)などのような、コンピュータにおいてメインメモリとして利用されるメモリを用いるとしてもよい。また、DRAM程度の高速ランダムアクセスが可能であり、アクセス可能上限回数に実質的な制限がないのであれば、揮発性半導体メモリ5に代えて、MRAM(Magnetoresistive Random Access Memory)、FeRAM(Ferroelectric Random Access Memory)などの不揮発性ランダムアクセスメモリが用いられるとしてもよい。
【0016】
本実施形態において不揮発性半導体メモリ61〜6kは、例えば、NAND型フラッシュメモリであるとする。しかしながら、不揮発性半導体メモリ61〜6kは、例えばNOR型フラッシュメモリなど、他の不揮発性半導体メモリが用いられるとしてもよい。
【0017】
揮発性半導体メモリ5は、不揮発性半導体メモリ61〜6kよりも小容量(例えば128MByte〜4GByteなど)であるが高速にアクセス可能である。
【0018】
不揮発性半導体メモリ61〜6kは、揮発性半導体メモリ5よりも大容量(例えば32GByte〜512GByteなど)であるがアクセス時間が長い。本実施形態のように、不揮発性半導体メモリ61〜6kがNAND型フラッシュメモリの場合、書き込みと読み出しとはページ単位で実行される。消去は複数ページを含むブロック単位で行われる。
【0019】
プロセッサ2は、各種プログラムを実行する。本実施形態におけるプロセッサ2には、CPU(Central Processing Unit)が用いられるが、MPU(Micro Processor Unit)、GPU(Graphic Processor Unit)などのような他の処理ユニットが用いられてもよい。プロセッサ2のMMU(Memory Management Unit)2aは、CPU論理アドレスをNAND論理アドレス(CPU物理アドレス)に変換する。プロセッサ2からメモリ管理装置3へは、アクセス先を特定するアドレスとして、NAND論理アドレスが送信される。
【0020】
例えば、プロセッサ2とメモリ管理装置3とは、非同期に動作可能であり、プロセッサ2で処理実行中に、メモリ管理装置3が不揮発性半導体メモリ61〜6kに対してウェアレベリング、ガーベージコレクション、コンパクションを実行することができる。
【0021】
メモリ管理装置3は、第1のコントローラ7、第2のコントローラ8、アドレス情報記憶部9、履歴記憶部10、先読み(プレフェッチ)記憶部11、処理部12を具備する。
【0022】
第1のコントローラ7は、例えば、DRAM用のコントローラであり、キャッシュメモリとして使用される揮発性半導体メモリ5に対するアクセスを制御する。
【0023】
第2のコントローラ8は、例えば、NAND用のコントローラであり、不揮発性半導体メモリ61〜6kに対するアクセスを制御する。
【0024】
アドレス情報記憶部9、履歴記憶部10、先読み記憶部11は、揮発性半導体メモリ5と同様の特徴を持っており、不揮発性半導体メモリ61〜6kよりも高速アクセス可能であり、アクセス可能上限回数が不揮発性半導体メモリ61〜6kよりも多い。なお、アドレス情報記憶部9、履歴記憶部10、先読み記憶部11は、揮発性半導体メモリ5によって実現されてもよい。アドレス情報記憶部9、履歴記憶部10、先読み記憶部11、揮発性半導体メモリ5は、自由に組み合わせ可能である。
【0025】
アドレス情報記憶部9は、アドレス変換テーブル13を備える。アドレス変換テーブル13は、エントリごとに、CPUで管理される不揮発性半導体メモリ61〜6kのNAND論理アドレスと、処理部12によって管理されるNAND物理アドレスと、このエントリのNAND論理アドレス又はNAND物理アドレスに対するアクセスが発生した場合に先読みされるデータ(先読みデータ)に対応するアドレス(先読みアドレス)と、を関連付けて記憶する。アドレス変換テーブル13の詳細については、後述する。
【0026】
履歴記憶部10は、不揮発性半導体メモリ61〜6kに記憶されているデータに対するアクセス履歴を含む履歴テーブル14を備える。履歴テーブル14の詳細については、後述する。
【0027】
先読み記憶部11は、NAND物理アドレスに対するアクセスが発生した場合に、このアクセス後の所定範囲(例えば、アクセス回数、アクセス時間など)内にアクセスされる可能性が高いデータを予め格納する先読みテーブル15を備える。先読みテーブル15は、エントリごとに、NAND物理アドレスと、このNAND物理アドレスに対するアクセスの後の所定範囲内にアクセスされる可能性の高いデータ(先読みデータ)とを管理する。先読みテーブル15の詳細については、後述する。
【0028】
処理部12は、記憶装置4に対する各種の高度なアクセス制御を実行する。例えば、処理部12は、第2のコントローラ8を介して、不揮発性半導体メモリ61〜6kに対するウェアレベリング、ガーベージコレクション、コンパクションを実行する。
【0029】
処理部12は、アドレス変換テーブル13に基づいて、プロセッサ2から受信したNAND論理アドレスを、NAND物理アドレスに変換し、NAND物理アドレスに基づいて、記憶装置4又は先読み記憶部11に対するアクセスを実行する。
【0030】
処理部12は、データの過去のアクセス時間、アクセス頻度、アクセス回数のうちの少なくとも一つに基づいて、アクセスされる可能性の高いデータを、第1のコントローラ7経由で揮発性半導体メモリ5に記憶するキャッシュ制御を実行する。
【0031】
処理部12は、必要に応じて、揮発性半導体メモリ5に記憶されているデータ及び先読み記憶部11に記憶されているデータを、不揮発性半導体メモリ61〜6kに書き戻し、データの内容のコヒーレンシ(coherency)を保持する。
【0032】
さらに、処理部12は、履歴管理部16、先読みアドレス管理部17、先読みデータ管理部18、アクセス部19を具備する。
【0033】
履歴管理部16は、不揮発性半導体メモリ61〜6kに対するアクセス履歴を履歴テーブル14に登録する。履歴管理部16の詳細については、後述する。
【0034】
先読みアドレス管理部17は、履歴テーブル14に基づいて、アドレス変換テーブル13におけるNAND論理アドレスとNAND物理アドレスとのうちの少なくとも一方に対して、先読みアドレスを関連付けて登録する。先読みアドレスとは、NAND論理アドレス又はNAND物理アドレスがアクセスされる場合に、そのアクセスの後にアクセスされる可能性の高いアドレスである。先読みアドレス管理部17の詳細については、後述する。
【0035】
先読みデータ管理部18は、NAND物理アドレスに対するアクセスの後にアクセスされる可能性の高い先読みデータを予め先読みテーブル15に格納する。先読みデータ管理部18の詳細については、後述する。
【0036】
アクセス部19は、アクセス対象データが先読みテーブル15に格納されている場合には、先読みテーブル15に格納されているアクセス対象データをアクセスする。
【0037】
アクセス部19は、アクセス対象データが先読みテーブル15に格納されていない場合には、第1のコントローラ7又は第2のコントローラ8経由で、揮発性半導体メモリ5又は不揮発性半導体メモリ61〜6kに記憶されているアクセス対象データをアクセスする。
【0038】
処理部12は、ハードウェアにより上記の制御を実行してもよく、例えばファームウェアなどのソフトウェアにより上記の制御を実行してもよい。
【0039】
図2は、本実施形態に係るアドレス変換テーブル13、履歴テーブル14、先読みテーブル15の構成の一例を示す図である。
【0040】
履歴テーブル14は、過去にアクセスされたアドレスを、アクセス順序を識別可能な形式で管理する。履歴テーブル14では、エントリの配列順序がアクセス順序に対応している。有効/無効情報は、エントリが有効であるか否かを示す。
【0041】
図2の履歴テーブル14は、NAND論理アドレス(A−1),(A),(A+1)の順序で、アクセスが発生したことを示している。
【0042】
本実施形態においては、履歴テーブル14に、NAND論理アドレスが登録される場合を例として説明するが、例えばNAND物理アドレスなどが登録されるとしてもよい。
【0043】
アドレス変換テーブル13は、エントリごとに、NAND論理アドレス、NAND物理アドレス、有効/無効情報、先読みアドレスを管理する。
【0044】
アドレス変換テーブル13の各エントリは、不揮発性半導体メモリ61〜6kに記憶されている各データのNAND論理アドレスとNAND物理アドレスとを関連付ける。アドレス変換テーブル13の有効/無効情報は、エントリが有効であるか否かを示す。
【0045】
アドレス変換テーブル13の各エントリの先読みアドレスは、各エントリのNAND論理アドレス又はNAND物理アドレスに対するアクセス後の所定範囲内に、アクセスされる可能性の高いアドレスである。すなわち、先読みアドレスは、あるデータがアクセスされた場合に、このアクセスより後にアクセスされる可能性が高く、先読みされるデータ(先読みデータ)を示すアドレスである。本実施形態では、先読みアドレスとして、NAND物理アドレスが用いられる場合を例として説明するが、例えばNAND論理アドレスなどが用いられてもよい。
【0046】
図2のアドレス変換テーブル13において、NAND論理アドレス(A)は、NAND物理アドレス(B)に変換される。さらに、先読みアドレス(B+1)は、NAND論理アドレス(A)及びNAND物理アドレス(B)に対応するデータ(D)がアクセスされた場合に先読みされる先読みデータ(D+1)を示すアドレスである。図2のアドレス変換テーブル13においては、NAND論理アドレス(A)及びNAND物理アドレス(B)に対して、先読みアドレス(B+1)が関連付けられている。先読みテーブル15の各エントリでは、NAND論理アドレス及びNAND物理アドレスと、エントリの有効又は無効を示す有効/無効情報と、NAND物理アドレスに対するアクセス後の所定範囲内にアクセスされる可能性の高い先読みデータとが関連付けられている。先読みテーブル15では、NAND物理アドレスと先読みデータとが関連付けられているが、NAND論理アドレスと先読みデータとが関連付けられてもよい。
【0047】
図2の先読みテーブル15では、先読みデータ(D+1)がNAND物理アドレス(B)と関連付けられ格納されている。また、先読みデータ(D)がNAND物理アドレス(B−1)と関連付けられ格納されている。
【0048】
なお、本実施形態において、先読みテーブル15では、NAND物理アドレス(B)と、このNAND物理アドレス(B)の後にアクセスされる可能性の高い先読みデータ(D+1)とが関連付けられている。しかしながら、これに代えて、先読みテーブル15では、先読みアドレス(B+1)と、この先読みアドレス(B+1)に対応するデータ(D+1)とが関連付けて格納されるとしてもよい。
【0049】
以下に、図2に示す各テーブル13〜15を用いて、図1の履歴管理部16、先読みアドレス管理部17、先読みデータ管理部18、アクセス部19の動作について具体的に説明する。
【0050】
履歴管理部16は、アクセス順序を識別可能な形式で、アクセスされたNAND論理アドレス(A−1),(A),(A+1)を履歴テーブル14に登録する。
【0051】
先読みアドレス管理部17は、履歴テーブル14に基づいて、アドレス変換テーブル13に対して先読みアドレスを登録する。
【0052】
まず、先読みアドレス管理部17は、アドレス変換テーブル13を用いて、履歴テーブル14のNAND論理アドレス(A−1),(A),(A+1)を、それぞれNAND物理アドレス(B−1),(B),(B+1)に変換する。
【0053】
次に、先読みアドレス管理部17は、NAND物理アドレス(B)がNAND物理アドレス(B−1)の後の所定範囲内にアクセスされたことを認識する。先読みアドレス管理部17は、アドレス変換テーブル13の有効なエントリにおけるNAND物理アドレス(B−1)に対して、NAND物理アドレス(B−1)の後にアクセスされているNAND物理アドレス(B)を、先読みアドレス(B)として関連付けて登録する。
【0054】
先読みデータ管理部18は、NAND物理アドレス(B)に対するアクセスが発生した場合に、アドレス変換テーブル13を参照し、NAND物理アドレス(B)に対応する先読みアドレス(B+1)の示す先読みデータ(D+1)を、不揮発性半導体メモリ61〜6kから読み出す。そして、先読みデータ管理部18は、先読みデータ(D+1)をNAND物理アドレス(B)と関連付けて、先読みテーブル15に格納する。
【0055】
アクセス部19は、アドレス変換テーブル13と先読みテーブル15とを参照し、アクセス対象データが先読みテーブル15に格納されている場合に、この先読みテーブル15に対するアクセスを実行する。
【0056】
アクセス部19は、アクセス対象データが先読みテーブル15に格納されていない場合、揮発性半導体メモリ5又は不揮発性半導体メモリ61〜6kに対するアクセスを実行する。
【0057】
図3は、本実施形態に係るメモリ管理装置3の処理部13のアクセス動作の前半部の一例を示すフローチャートである。
【0058】
図4は、本実施形態に係るメモリ管理装置3の処理部13のアクセス動作の後半部の一例を示すフローチャートである。
【0059】
処理部13は、プロセッサ2から、アクセス先のNAND論理アドレス(CPU物理アドレス)(A)を受信する(ステップS1)。
【0060】
処理部13は、アドレス変換テーブル13を参照し、受信されたNAND論理アドレス(A)をNAND物理アドレス(B)に変換する(ステップS2)。
【0061】
処理部13のアクセス部19は、NAND物理アドレス(B)に対応するデータ(D)が先読みテーブル15に格納されているか判断する(ステップS3)。
【0062】
データ(D)が先読みテーブル15に格納されている場合、処理部13のアクセス部19は、先読みテーブル15に格納されているデータ(D)をアクセスする(ステップS4)。その後、処理はステップS8に移動する。
【0063】
データ(D)が先読みテーブル15に格納されていない場合、処理部13は、NAND物理アドレス(B)に対応するデータ(D)が、揮発性半導体メモリ5に記憶されているか否か判断する(ステップS5)。
【0064】
NAND物理アドレス(B)に対応するデータ(D)が揮発性半導体メモリ5に記憶されている場合、処理部13は、揮発性半導体メモリ5に対して、第1のコントローラ7経由で、NAND物理アドレス(B)に対応するデータ(D)をアクセスする(ステップS6)。その後、処理はステップS8に移動する。
【0065】
NAND物理アドレス(B)に対応するデータ(D)が揮発性半導体メモリ5に記憶されていない場合、処理部13のアクセス部19は、不揮発性半導体メモリ61〜6kに記憶されているデータ(D)をアクセスする(ステップS7)。
【0066】
処理部13の先読みアドレス管理部17は、履歴テーブル14から、NAND論理アドレス(A)の直前にアクセスされたNAND論理アドレス(A−1)を求め、アドレス変換テーブル13に基づいて、直前のNAND論理アドレス(A−1)をNAND物理アドレス(B−1)に変換する(ステップS8)。
【0067】
先読みアドレス管理部17は、アドレス変換テーブル13のエントリの中から、NAND物理アドレス(B−1)に対応するエントリを求める(ステップS9)。
【0068】
先読みアドレス管理部18は、求められた直前のNAND物理アドレス(B−1)に対応するエントリの先読みアドレスに、NAND物理アドレス(B)を登録する(ステップS10)。
【0069】
先読みデータ管理部18は、アドレス変換テーブル13のNAND物理アドレス(B)に対応するエントリに登録されている先読みアドレス(B+1)が有効であるか否か判断する(ステップS11)。
【0070】
先読みアドレス(B+1)が有効でない場合、処理はステップS13に移動する。
【0071】
先読みアドレス(B+1)が有効な場合、先読みデータ管理部18は、不揮発性半導体メモリ61〜6kから、先読みアドレス(B+1)に対応するデータ(D+1)を先読みし、データ(D+1)を先読みテーブル15に格納する(ステップS12)。
【0072】
履歴管理部16は、NAND論理アドレス(A)を履歴テーブル14に登録する(ステップS13)。
【0073】
以上説明した本実施形態においては、アドレス変換テーブル13におけるアドレスに対して、このアドレスに対するアクセスの後にアクセスされる可能性の高い先読みアドレスが登録される。これにより、あるデータがアクセスされた場合に、このアクセス後にアクセスされる可能性の高いデータを不揮発性半導体メモリ61〜6kから事前に読み出し、高速にアクセス可能な先読み記憶部11に準備しておくことができる。本実施形態においては、たとえ連続するデータではないデータであっても、アクセス履歴に基づいて不揮発性半導体メモリ61〜6kに対するアクセスを効率化させることができ、アクセス速度を高速化でき、アクセス性能を向上させることができる。
【0074】
本実施形態においては、不揮発性半導体メモリ61〜6kに対するアクセス回数を減少させることができ、不揮発性半導体メモリ61〜6kの長寿命化を実現させることができる。
【0075】
本実施形態においては、先読みアドレスに、NAND物理アドレスが使用される。これにより、不揮発性半導体メモリ61〜6kに書き込まれるデータの再配置の自由度を向上させることができ、不揮発性半導体メモリ61〜6kに対するアクセスの信頼性を向上させることができる。
【0076】
なお、本実施形態において、先読みアドレスとしては、先読みデータの絶対アドレスが用いられる。
【0077】
例えば、アドレス変換テーブル13において、変換前のNAND論理アドレス(A)と変換後のNAND物理アドレス(B)とが関係付けられているエントリがあると仮定する。このエントリにおいて、先読みアドレスに、変換前のNAND論理アドレス(A)又は変換後のNAND物理アドレス(B)と同じNAND論理アドレス(A)又はNAND物理アドレス(B)が登録されている場合には、先読みは実行されないとする。
【0078】
また、アドレス変換テーブル13の項目に、先読みアドレスが有効か否かを示す先読み有効/無効情報を加え、この先読み有効/無効情報が有効であることを示す場合にのみ、先読みを実行するとしてもよい。
【0079】
(第2の実施形態)
本実施形態では、上記第1の実施形態に対する第1から第5までの変形例について説明する。
【0080】
<第1の変形例>
第1の変形例において、アドレス変換テーブル13は、相対アドレスを用いて、先読みアドレスを特定するとしてもよい。
【0081】
例えば、アドレス変換テーブル13において、変換前のNAND論理アドレス(A)と変換後のNAND物理アドレス(B)とが関係付けられており、先読みアドレスに、NAND物理アドレス(B)からの相対位置を示す相対アドレス(N)が登録されているエントリがあると仮定する。このエントリにおいて、NAND物理アドレス(B)に対するアクセス後にアクセスされる可能性の高い先読みアドレスは、NAND物理アドレス(B+N)となる。例えば、先読みアドレスが0の場合には、先読みは実行されない。
【0082】
この第1の変形例において、不揮発性半導体メモリ61〜6kの全アドレスが2n個とすると、先読みアドレスの情報量をnより少なくすることができ、アドレス変換テーブル13のデータ容量を少なくすることができる。
【0083】
この第1の変形例において、不揮発性半導体メモリ61〜6kにおけるアクセス可能範囲外に対しては、先読みが行わないように設定される。
【0084】
<第2の変形例>
第2の変形例において、アドレス変換テーブル13は、各エントリにおいて、複数の先読みアドレスを登録しているとしてもよい。
【0085】
この第2の変形例において、先読みアドレス管理部17は、アドレス変換テーブル13のエントリに、複数の先読みアドレスを登録する。
【0086】
そして、先読みデータ管理部18は、アドレス変換テーブル13を参照し、アクセスされたNAND物理アドレスに対して、複数の先読みアドレスが関連付けられている場合に、各先読みアドレスに対応するデータを先読みテーブル15に格納する処理を繰り返す。これにより、先読みテーブル15のヒット率を向上させることができる。
【0087】
<第3の変形例>
図5は、本変形例に係るアドレス変換テーブル13の一例を示す図である。
【0088】
第3の変形例において、アドレス変換テーブル13は、アクセス間隔を登録するためのフィールドを含む。
【0089】
アクセス間隔としては、例えば、アクセス時間又はアクセス回数が用いられる。
【0090】
まず、アクセス間隔として、アクセス時間を用いる場合について説明する。
【0091】
例えば、NAND論理アドレス(A)をアクセスしてから、その後にNAND論理アドレス(A+1)をアクセスするまでのアクセス時間がtであるアクセスパターンが、履歴テーブル14から得られたとする。
【0092】
この場合、アドレス変換テーブル13では、NAND論理アドレス(A)、NAND物理アドレス(B)、先読みアドレスであるNAND物理アドレス(B+1)、アクセス時間tが関連付けられる。
【0093】
先読みデータ管理部18は、NAND論理アドレス(A)をアクセスした後、t×a+b時間経過した後に、先読みアドレス(B+1)に対応するデータ(D+1)を、先読みテーブル15に格納する。なお、a,bは、アクセス時間tに基づいて先読みを実行するタイミングを算出するための定数である。t×a+b時間は、t時間よりも短いとする。
【0094】
これにより、先読みデータ管理部18は、先読みデータ(D+1)を、アクセス時間tが経過する前の任意のタイミングで、先読みテーブル15に格納することができる。
【0095】
次に、アクセス間隔として、アクセス回数を用いる場合について説明する。
【0096】
例えば、NAND論理アドレス(A)に対するアクセスがz回発生した後にNAND論理アドレス(A+1)に対するアクセスが発生するアクセスパターンが、履歴テーブル14から得られたとする。
【0097】
この場合、アドレス変換テーブル13では、NAND論理アドレス(A)、NAND物理アドレス(B)、先読みアドレス(B+1)、アクセス回数zが関連付けられる。
【0098】
先読みデータ管理部18は、NAND論理アドレス(A)が、z×v+w回受信された後に、先読みアドレス(B+1)に対応するデータ(D+1)を、先読みテーブル15に格納する。なお、v,wは、アクセス回数zに基づいて先読みを実行するタイミングを算出するための定数である。z×v+wは、zよりも小さい値とする。
【0099】
これにより、先読みデータ管理部18は、先読みデータ(D+1)を、アクセス回数zの実行前の任意のタイミングで、先読みテーブル15に格納することができる。
【0100】
以上説明した第3の変形例においては、アクセス時間又はアクセス回数などのようなアクセス間隔に基づいて、先読みを実行するタイミングを制御することができ、先読み動作の効率化を実現することができる。
【0101】
<第4の変形例>
第4の変形例として、先読みアドレス管理部17は、アクセス対象データが先読みテーブル15に格納されていない場合(先読みミスの場合)、アクセス変換テーブル13の該当エントリにおける先読みアドレスを、更新する。
【0102】
例えば、アドレス変換テーブル13の該当エントリに、NAND論理アドレス(A)、NAND物理アドレス(B)、先読みアドレスであるNAND物理アドレス(B+1)が登録されていると仮定する。そして、該当エントリのNAND物理アドレス(B)の後のアクセス先が、該当エントリの先読みアドレス(B+1)と異なるNAND物理アドレス(B+10)であり、このNAND物理アドレス(B+10)に対応するデータ(D+10)が先読みテーブル15に格納されていないとする。
【0103】
この場合、先読みアドレス管理部17は、アドレス変換テーブル13のエントリの先読みアドレスを、(B+1)から(B+10)に更新する。
【0104】
先読みデータ管理部17は、データ(D+10)を先読みテーブル15に格納する。
【0105】
この第4の変形例においては、最新のアクセス履歴に基づいて先読みアドレス及び先読みデータが更新されるため、先読みデータのヒット率を向上させることができる。
【0106】
<第5の変形例>
第5の変形例として、先読みアドレス管理部17は、アクセス変換テーブル13のエントリごとに、先読みアドレスに関するヒット回数とミス回数とをカウントし、結果を登録する。ヒット回数とは、あるアドレスに対するアクセスの後の所定範囲内に、このアドレスに対応する先読みアドレスに対するアクセスが発生した回数とする。これに対し、ミス回数とは、あるアドレスに対するアクセスの後の所定範囲内に、このアドレスに対応する先読みアドレスに対するアクセスが発生しなかった回数とする。
【0107】
そして、先読みアドレス管理部17は、ミス回数がヒット回数よりも多くなったエントリに対して、そのエントリの先読みアドレスを更新し、そのエントリのヒット回数とミス回数とを初期化(クリア)する。
【0108】
なお、先読みアドレス管理部17は、アクセス変換テーブル13のエントリごとに、アクセス回数とミス回数、又は、アクセス回数とヒット回数をカウントし、結果を登録してもよい。
【0109】
この場合、先読みアドレス管理部17は、アクセス回数とミス回数、又は、アクセス回数とヒット回数に基づいて、エントリの先読みアドレスを更新するか否か判断する。例えば、先読みアドレス管理部17は、エントリのミス回数/アクセス回数が、ある閾値を超えた場合に、そのエントリの先読みアドレスを更新し、そのエントリのアクセス回数とミス回数とを初期化する。また、例えば、先読みアドレス管理部17は、エントリのヒット回数/アクセス回数が、ある閾値より小さい場合に、そのエントリの先読みアドレスを更新し、そのエントリのアクセス回数とヒット回数とを初期化する。
【0110】
この第5の変形例においては、様々な条件に応じて、アクセス変換テーブル13に対する先読みアドレスの更新制御を行うことができ、先読みデータのヒット率を向上させることができる。
【0111】
(第3の実施形態)
本実施形態では、先読みデータに対する先読みアドレスの効率的な割り当てについて説明する。
【0112】
図6は、本実施形態に係る不揮発性半導体メモリ61〜6kの構成の一例を示す図である。
【0113】
この図6の不揮発性半導体メモリ61〜6kは、複数のブロック領域を含むブロックユニットがマトリクス状に配置されている。
【0114】
マトリクス状に配置されているブロックユニットのうち同一の行に属するブロックユニットは、同一のバンクに属する。
【0115】
マトリクス状に配置されているブロックユニットのうち同一の列に属するブロックユニットは、同一のチャネルに属する。
【0116】
このように、不揮発性半導体メモリ61〜6kがNAND型フラッシュメモリの場合、複数のブロック領域は、バンク0〜mのいずれかに所属するとともに、チャネル0〜nのいずれかに所属する。各ブロック領域は、複数のページ領域を含む。したがって、複数のページ領域は、複数のチャネルと複数のバンクを用いて区分けされている。各ページ領域には、バンク番号とチャネル番号とが付される。
【0117】
この不揮発性半導体メモリ61〜6kにおいて、異なるチャネルに対しては、同時にアクセス可能である。
【0118】
また、不揮発性半導体メモリ61〜6kにおいて、異なるバンクに対しては、同時にアクセス可能である。
【0119】
不揮発性半導体メモリ61〜6kにおいて、連続するページ領域に対しては、連続していないページ領域に対するアクセスよりも高速にアクセスすることが可能である。
【0120】
異なるチャネルに対する同時アクセス、異なるバンクに対する同時アクセス、連続するページ領域に対するアクセスの速度を比較すると、異なるチャネルに対する同時アクセスが最も高速であり、異なるバンクに対する同時アクセスが2番目に高速であり、連続するページ領域に対するアクセスが3番目に高速である。
【0121】
本実施形態に係る先読みアドレス管理部17は、アドレス変換テーブル13を参照して、空きのデータ領域を認識し、上記の関係に基づいて、先読みデータの配置を行う。
【0122】
先読みアドレス管理部17は、あるデータのアドレスと、このあるデータに対する複数の先読みアドレスとに対して、チャネルとバンクとのうちの少なくとも一方が異なるように、NAND物理アドレスを割り当てる。
【0123】
または、先読みアドレス管理部17は、例えば、あるデータのアドレスと、そのデータに対する先読みアドレスとが連続するように、あるデータ及び先読みデータに対してNAND物理アドレスを割り当てる。
【0124】
先読みアドレス管理部17によるアドレスの割り当ては、例えば、ウェアレベリング又はガーベージコレクションの実行時などのように、不揮発性半導体メモリ61〜6kに対するNAND物理アドレスの再配置が必要な場合に、実行される。
【0125】
以下に、履歴テーブル14に基づくアドレスの割り当てについて、詳しく説明する。
【0126】
図7は、本実施形態に係るアドレス変換テーブル13と履歴テーブル14とアドレス割り当て結果との関係の一例を示す図である。
【0127】
アドレス変換テーブル13のNAND物理アドレスは、チャネル番号、バンク番号、ブロック番号及びページ番号を含むNANDチップアドレス、オフセットを含む。
【0128】
本実施形態において、履歴テーブル14は、メモリ管理装置3に受信されたNAND論理アドレス(CPU物理アドレス)を登録しているとする。
【0129】
例えば、この履歴テーブル14に、NAND論理アドレス(A)の次に、NAND論理アドレス(A+1)がアクセスされたことが登録されているとする。
【0130】
例えば、この履歴テーブル14に、NAND論理アドレス(A)の次に、NAND論理アドレス(A+5)がアクセスされたことが登録されているとする。
【0131】
例えば、この履歴テーブル14に、NAND論理アドレス(A)の次に、NAND論理アドレス(A+2)がアクセスされたことが登録されているとする。
【0132】
例えば、この履歴テーブル14に、NAND論理アドレス(A)の次に、NAND論理アドレス(A+1)がアクセスされ、さらにその次に、NAND論理アドレス(A+3)がアクセスされたことが登録されているとする。
【0133】
例えば、履歴テーブル14に、NAND論理アドレス(A)の次に、NAND論理アドレス(A+4)がアクセスされたことが登録されているとする。
【0134】
このようなアクセスパターンが履歴テーブル14に登録されている場合、先読みアドレス管理部17は、NAND論理アドレス(A+1),(A+2),(A+3),(A+5)のそれぞれに対して、チャネルとバンクとのうちの少なくとも一方が異なり、かつ、チャネル及びバンクの内で使用されるNANDチップアドレスが同じになるように、NAND物理アドレスを割り当てる。
【0135】
また、先読みアドレス管理部17は、NAND物理アドレス(A)と先読みアドレス(A+4)とに対して、同一のチャネル及び同一のバンク内で連続するNAND物理アドレスを割り当てる。
【0136】
図7では、アドレス変換テーブル13の各エントリに、n×mビットのチャネルフィールドが設けられている。チャネルフィールドでは、先読みデータが配置されるチャネル及びバンクを識別可能とすることによって、先読みアドレスが特定される。すなわち、本実施形態では、NAND物理アドレスと先読みアドレスとの間で、NANDチップアドレスが共有される。
【0137】
図7のアドレス変換テーブル13では、変更前のNAND論理アドレス(A)と変更後のNAND物理アドレス(B)とに対して、先読みアドレスの割り当てられたチャネル及びバンクに対応するフラグが「1」で表され、先読みアドレスの割り当てられていないチャネル及びバンクに対応するフラグが「0」で表される。
【0138】
先読みアドレス管理部17は、アドレス変換テーブル13において、先読みアドレスの割り当てられたチャネル及びバンクに対応するビットに「1」を設定する。
【0139】
先読みデータ管理部18は、NAND物理アドレス(B)のデータがアクセスされた場合に、フラグが「1」となっているチャネル及びバンク内で、NAND物理アドレス(B)と同じNANDチップアドレスで指定されるデータを、同時に読み出し、読み出された先読みデータを先読みテーブル15に格納する。
【0140】
また、図7のアドレス変換テーブル13では、NAND物理アドレス(B)のデータがアクセスされた場合の先読みデータが、NAND物理アドレス(B)に連続するデータ領域に記憶されている場合、アドレス変換テーブル13のNAND物理アドレス(B)のエントリにおける連続割り当てフラグに、「1」が設定される。
【0141】
先読みデータ管理部18は、NAND物理アドレス(B)に対するアクセスが発生し、連続割り当てフラグが「1」となっている場合、このNAND物理アドレス(B)の次のデータ領域に記憶されている先読みデータを、先読みテーブル15に格納する。
【0142】
以上説明した本実施形態においては、例えば、ウェアレベリング、ガーベージコレクションの実行時に、履歴テーブル14及びアドレス変換テーブル13に基づいて、NAND物理アドレスを最適に割り当てることができる。
【0143】
本実施形態においては、先読みデータを複数のチャネル及びバンクから同時に読み出すことができる。
【0144】
本実施形態においては、データと先読みデータとが連続するデータ領域に記憶されるため、高速に先読みデータを読み出すことができる。
【0145】
本実施形態においては、アドレス変換テーブル13の1つのエントリに複数の先読みアドレスを登録することができ、先読みデータの数を増加させることができる。
【0146】
本実施形態においては、NAND物理アドレスと先読みアドレスとの間で、NANDチップアドレスを共有させることにより、アドレス変換テーブル13に必要とされるデータ容量を削減することができる。
【0147】
なお、本実施形態において、アドレス変換テーブル13の先読みアドレスとして相対アドレスが用いられており、先読みアドレスが相対アドレスを用いて参照可能な範囲の外であり、先読みが行われない場合、先読みアドレス管理部17は、履歴テーブル14をアクセスし、連続してアクセスされているNAND論理アドレス(A−1),(A)を抽出し、相対アドレスで参照可能な範囲に、NAND論理アドレス(A−1)のデータ及びNAND論理アドレス(A)のデータを再配置し、アドレス変換テーブル13を更新する。
【0148】
これにより、相対アドレスで参照可能な範囲外に先読みデータが存在する場合であっても、相対アドレスで参照可能な範囲内に先読みデータを再配置し、先読みを行うことができる。
【0149】
(第4の実施形態)
本実施形態においては、アドレス変換テーブル13に登録される先読みアドレスとして、NAND論理アドレスが使用され、先読みテーブル15に、NAND論理アドレスと先読みデータとが格納される場合について説明する。
【0150】
図8は、本実施形態に係るアドレス変換テーブル13、履歴テーブル14、先読みテーブル15の構成の一例を示す図である。
【0151】
この図8のアドレス変換テーブル13では、変換前のNAND論理アドレスと変換後のNAND物理アドレスとの組み合わせに対して、NAND論理アドレスである先読みアドレスが関連付けられる。
【0152】
また、図8の先読みテーブル15の各エントリでは、NAND論理アドレスと、エントリの有効又は無効を示す有効/無効情報と、先読みデータとが関連付けられる。
【0153】
図9は、本実施形態に係るメモリ管理装置3の処理部13のアクセス動作の前半部の一例を示すフローチャートである。
【0154】
図10は、本実施形態に係るメモリ管理装置3の処理部13のアクセス動作の後半部の一例を示すフローチャートである。
【0155】
処理部13は、プロセッサ2から、アクセス先のNAND論理アドレス(A)を受信する(ステップT1)。
【0156】
処理部13は、アドレス変換テーブル13を参照し、受信されたNAND論理アドレス(A)をNAND物理アドレス(B)に変換する(ステップT2)。
【0157】
処理部13のアクセス部19は、NAND物理アドレス(B)に対応するデータ(D)が先読みテーブル15に格納されているか判断する(ステップT3)。
【0158】
データ(D)が先読みテーブル15に格納されている場合、処理部13のアクセス部19は、先読みテーブル15に格納されているデータ(D)をアクセスする(ステップT4)。その後、処理はステップT8に移動する。
【0159】
データ(D)が先読みテーブル15に格納されていない場合、処理部13は、NAND物理アドレス(B)に対応するデータ(D)が、揮発性半導体メモリ5に記憶されているか否か判断する(ステップT5)。
【0160】
NAND物理アドレス(B)に対応するデータ(D)が揮発性半導体メモリ5に記憶されている場合、処理部13は、揮発性半導体メモリ5に対して、第1のコントローラ7経由で、NAND物理アドレス(B)に対応するデータ(D)をアクセスする(ステップT6)。その後、処理はステップT8に移動する。
【0161】
NAND物理アドレス(B)に対応するデータ(D)が揮発性半導体メモリ5に記憶されていない場合、処理部13のアクセス部19は、不揮発性半導体メモリ61〜6kに記憶されているデータ(D)をアクセスする(ステップT7)。
【0162】
処理部13の先読みアドレス管理部17は、履歴テーブル14から、NAND論理アドレス(A)の直前にアクセスされたNAND論理アドレス(A−1)を求める(ステップT8)。
【0163】
先読みアドレス管理部17は、アドレス変換テーブル13のエントリの中から、直前のNAND論理アドレス(A−1)に対応するエントリ求める(ステップT9)。
【0164】
先読みアドレス管理部18は、求められた直前のNAND論理アドレス(A−1)に対応するエントリの先読みアドレスに、NAND論理アドレス(A)を登録する(ステップT10)。
【0165】
先読みデータ管理部18は、アドレス変換テーブル13のNAND論理アドレス(A)に対応するエントリに登録されている先読みアドレス(A+1)が有効であるか否か判断する(ステップT11)。
【0166】
先読みアドレス(A+1)が有効でない場合、処理はステップT14に移動する。
【0167】
先読みアドレス(A+1)が有効な場合、先読みデータ管理部18は、アドレス変換テーブル13に基づいて、先読みアドレス(A+1)をNAND物理アドレス(B+1)に変換する(ステップT12)。
【0168】
そして、先読みデータ管理部18は、不揮発性半導体メモリ61〜6kから、NAND物理アドレス(B+1)に対応するデータ(D+1)を先読みし、データ(D+1)を先読みテーブル15に格納する(ステップT13)。
【0169】
履歴管理部16は、NAND論理アドレス(A)を履歴テーブル14に登録する(ステップT14)。
【0170】
以上説明した本実施形態においては、先読みアドレスとしてNAND論理アドレスが使用される。この場合、データに対するNAND物理アドレスが変更又は削除されたとしても、先読み動作の効率を悪化させることなく、連続的に先読みを実行させることができる。
【0171】
(第5の実施形態)
本実施形態においては、ソフトウェアによる先読み制御について説明する。
【0172】
図11は、本実施形態に係る先読みテーブル15とアドレス変換テーブル13とソフトウェアとの関係の一例を示すブロック図である。
【0173】
本実施形態において、アドレス変換テーブル13は、先読みアドレスの変更を禁止するか否かを示すロックビットを持つ。ロックビットが「1」のエントリについては、先読みアドレスの変更が禁止される。ロックビットが「0」のエントリについては、先読みアドレスの変更が許可される。
【0174】
本実施形態において先読みテーブル15は、エントリの変更を禁止するか否かを示すロックビットを持つ。ロックビットが「1」のエントリについては、変更が禁止される。ロックビットが「0」のエントリについては、変更が許可される。
【0175】
本実施形態のソフトウェア20としては、例えば、プロセッサ2によって実行されるオペレーティングシステム、プロセッサ2によって実行されるアプリケーションソフトウェア、処理部12によって実行されるファームウェアがある。
【0176】
ソフトウェア20は、アドレス変換テーブル13及び先読みテーブル15に対する設定を変更する。
【0177】
さらに、ソフトウェア20は、アドレス変換テーブル13に対するロックビットの設定、及び先読みテーブル15に対するロックビットの設定を行い、エントリ単位で登録又は格納内容をロックすることができる。
【0178】
この図11のアドレス変換テーブル13において、先読みアドレス(B)は、ロックビット「1」に関連付けられているため、更新されない。
【0179】
例えば、不揮発性半導体メモリ61〜6kの特定のデータ領域に、オペレーティングシステムによって頻繁にアクセスされるデータが記憶されているとする。この場合、ソフトウェア20は、頻繁にアクセスされるデータを、先読みテーブル15に格納する。
【0180】
また、例えば、先読みテーブル15では、先読みテーブル15の容量が所定の値を超えた場合に、古い先読みデータが削除されるとする。しかしながら、頻繁にアクセスされるデータが先読みテーブル15から削除されないように、ソフトウェア20は、この頻繁にアクセスされるデータに対応するロックビットを「1」に設定し、このデータの消去を禁止する。
【0181】
この図11の先読みテーブル15において、先読みデータ(D+6)は、ロックビット「1」に関連付けられているため、更新されない。
【0182】
以上説明した本実施形態においては、ソフトウェア20によって先読みテーブル15及びアドレス変換テーブル13を静的に設定することができる。
【0183】
また、本実施形態においては、ソフトウェア29により、先読みテーブル15及びアドレス変換テーブル13の更新を、自動で実行させるモードとするか、ロックさせるモードとするか、選択することができる。
【0184】
本発明のいくつかの実施形態を説明したが、これらの実施形態は、例として提示したものであり、発明の範囲を限定することは意図していない。これら新規な実施形態は、その他の様々な形態で実施されることが可能であり、発明の要旨を逸脱しない範囲で、種々の省略、置き換え、変更を行うことができる。これら実施形態やその変形は、発明の範囲や要旨に含まれるとともに、特許請求の範囲に記載された発明とその均等の範囲に含まれる。
【符号の説明】
【0185】
1…情報処理装置、2…プロセッサ、2a…MMU、3…メモリ管理装置、4…記憶装置、5…揮発性半導体メモリ、61〜6k…不揮発性半導体メモリ、7…第1のコントローラ、8…第2のコントローラ、9…アドレス情報記憶部、10…履歴記憶部、11…先読み記憶部、12…処理部、13…アドレス変換テーブル、14…履歴テーブル、15…先読みテーブル、16…履歴管理部、17…先読みアドレス管理部、18…先読みデータ管理部、19…アクセス部、20…ソフトウェア
【技術分野】
【0001】
本発明の実施形態は、不揮発性半導体メモリに対するアクセスを管理するメモリ管理装置及びメモリ管理方法に関する。
【背景技術】
【0002】
従来において、不揮発性半導体メモリよりも高速にアクセス可能な一時記憶装置を備え、不揮発性半導体メモリに記憶されているデータをこの一時記憶装置に記憶することでアクセスを高速化する技術が用いられている。
【0003】
このような従来のアクセス高速化技術では、不揮発性半導体メモリに記憶されている連続するデータのうち次にアクセスされるデータが先回りして一時記憶装置に記憶される。そして、連続するデータに対するアクセスは、一時記憶装置に対して実行される。
【先行技術文献】
【特許文献】
【0004】
【特許文献1】特開平05−019973号公報
【特許文献2】特開昭59−085564号公報
【発明の概要】
【発明が解決しようとする課題】
【0005】
本発明の実施形態は、不揮発性半導体メモリに記憶されているデータを高速にアクセス可能にするメモリ管理装置及びメモリ管理方法を提供することを目的とする。
【課題を解決するための手段】
【0006】
実施形態によれば、メモリ管理装置は、履歴管理部、アドレス変換テーブル、アドレス管理部、先読みデータ管理部を含む。履歴管理部は、メインメモリとして使用される不揮発性半導体メモリに記憶されているデータに対するアクセス履歴を管理する。アドレス変換テーブルは、データについての論理アドレスと物理アドレスの変換テーブルを含む。アドレス管理部は、アドレス変換テーブルの第1の論理アドレスに対するアクセスの後にアクセスされる第2の論理アドレスを前記アクセス履歴に基づき決定し、第2の論理アドレスに対応する第2の物理アドレスを第1の論理アドレスに対応付けてアドレス変換テーブルに登録する。先読みデータ管理部は、第2の物理アドレスに対応するデータをバッファに格納する。
【図面の簡単な説明】
【0007】
【図1】第1の実施形態に係るメモリ管理装置の構成の一例を示すブロック図。
【図2】第1の実施形態に係るアドレス変換テーブル、履歴テーブル、先読みテーブルの構成の一例を示す図。
【図3】第1の実施形態に係るメモリ管理装置の処理部のアクセス動作の前半部の一例を示すフローチャート。
【図4】第1の実施形態に係るメモリ管理装置の処理部のアクセス動作の後半部の一例を示すフローチャート。
【図5】第2の実施形態に係るアドレス変換テーブルの一例を示す図。
【図6】第3の実施形態に係る不揮発性半導体メモリの構成の一例を示す図。
【図7】第3の実施形態に係るアドレス変換テーブルと履歴テーブルとアドレス割り当て結果との関係の一例を示す図。
【図8】第4の実施形態に係るアドレス変換テーブル、履歴テーブル、先読みテーブルの構成の一例を示す図。
【図9】第4の実施形態に係るメモリ管理装置の処理部のアクセス動作の前半部の一例を示すフローチャート。
【図10】第4の実施形態に係るメモリ管理装置の処理部のアクセス動作の後半部の一例を示すフローチャート。
【図11】第5の実施形態に係る先読みテーブルとアドレス変換テーブルとソフトウェアとの関係の一例を示すブロック図。
【発明を実施するための形態】
【0008】
以下、図面を参照しながら本発明の各実施の形態について説明する。なお、以下の説明において、略または実質的に同一の機能および構成要素については、同一符号を付し、必要に応じて説明を行う。
【0009】
(第1の実施形態)
図1は、本実施形態に係るメモリ管理装置の構成の一例を示すブロック図である。
【0010】
情報処理装置1は、プロセッサ2、メモリ管理装置3、記憶装置4を具備する。プロセッサ2とメモリ管理装置3とは、例えばSoC(System-on-a-Chip)で構成されてもよい。
【0011】
メモリ管理装置3は、プロセッサ2からアクセス対象データのアドレスを受信し、アクセス結果をプロセッサ2に返す。本実施形態において、アクセスとは、読み出しと書き込みとのうちの少なくとも一方に関わる動作を意味するものとする。
【0012】
例えば、メモリ管理装置3は、プロセッサ2から読み出し対象データの論理アドレスを受信すると、論理アドレスを物理アドレスに変換し、物理アドレスに対応する読み出し対象データを記憶装置4から読み出し、読み出し対象データをプロセッサ2に返す。
【0013】
また、例えば、メモリ管理装置3は、プロセッサ2から書き込み対象データと、この書き込み対象データの論理アドレスを受信すると、論理アドレスを物理アドレスに変換し、物理アドレスに対応する記憶装置4の位置に、書き込み対象データを書き込む。そして、メモリ管理装置3は、書き込みの成否を示す情報をプロセッサ2に返す。
【0014】
記憶装置4は、情報処理装置1のメインメモリとして使用され、揮発性半導体メモリ5と不揮発性半導体メモリ61〜6kとを具備する。本実施形態では、不揮発性半導体メモリ61〜6kに、十分なメモリ量が確保される。不揮発性半導体メモリ61〜6kのメモリ容量は、揮発性半導体メモリ5よりも大きい。そして、揮発性半導体メモリ5には、例えば、最近アクセスされたデータ又は使用頻度の高いデータなどのような、アクセスされる可能性の高いデータが不揮発性半導体メモリ61〜6kからキャッシュされる。プロセッサ2が揮発性半導体メモリ5にアクセスする場合に、揮発性半導体メモリ5にアクセス対象データが存在しない場合、不揮発性半導体メモリ61〜6kと揮発性半導体メモリ5との間でデータ転送が実行される。このように、揮発性半導体メモリ5と不揮発性半導体メモリ61〜6kとを組み合わせて使用することで、揮発性半導体メモリ5のメモリ容量より大きいメモリ空間がメインメモリとして使用可能となる。
【0015】
本実施形態において揮発性半導体メモリ5は、例えば、DRAM(Dynamic Random Access Memory)であるとする。しかしながら、揮発性半導体メモリ5としては、DRAMに代えて、FPM−DRAM(Fast Page Mode)、EDO−DRAM(Extended Data Out DRAM)、SDRAM(Synchronous DRAM)などのような、コンピュータにおいてメインメモリとして利用されるメモリを用いるとしてもよい。また、DRAM程度の高速ランダムアクセスが可能であり、アクセス可能上限回数に実質的な制限がないのであれば、揮発性半導体メモリ5に代えて、MRAM(Magnetoresistive Random Access Memory)、FeRAM(Ferroelectric Random Access Memory)などの不揮発性ランダムアクセスメモリが用いられるとしてもよい。
【0016】
本実施形態において不揮発性半導体メモリ61〜6kは、例えば、NAND型フラッシュメモリであるとする。しかしながら、不揮発性半導体メモリ61〜6kは、例えばNOR型フラッシュメモリなど、他の不揮発性半導体メモリが用いられるとしてもよい。
【0017】
揮発性半導体メモリ5は、不揮発性半導体メモリ61〜6kよりも小容量(例えば128MByte〜4GByteなど)であるが高速にアクセス可能である。
【0018】
不揮発性半導体メモリ61〜6kは、揮発性半導体メモリ5よりも大容量(例えば32GByte〜512GByteなど)であるがアクセス時間が長い。本実施形態のように、不揮発性半導体メモリ61〜6kがNAND型フラッシュメモリの場合、書き込みと読み出しとはページ単位で実行される。消去は複数ページを含むブロック単位で行われる。
【0019】
プロセッサ2は、各種プログラムを実行する。本実施形態におけるプロセッサ2には、CPU(Central Processing Unit)が用いられるが、MPU(Micro Processor Unit)、GPU(Graphic Processor Unit)などのような他の処理ユニットが用いられてもよい。プロセッサ2のMMU(Memory Management Unit)2aは、CPU論理アドレスをNAND論理アドレス(CPU物理アドレス)に変換する。プロセッサ2からメモリ管理装置3へは、アクセス先を特定するアドレスとして、NAND論理アドレスが送信される。
【0020】
例えば、プロセッサ2とメモリ管理装置3とは、非同期に動作可能であり、プロセッサ2で処理実行中に、メモリ管理装置3が不揮発性半導体メモリ61〜6kに対してウェアレベリング、ガーベージコレクション、コンパクションを実行することができる。
【0021】
メモリ管理装置3は、第1のコントローラ7、第2のコントローラ8、アドレス情報記憶部9、履歴記憶部10、先読み(プレフェッチ)記憶部11、処理部12を具備する。
【0022】
第1のコントローラ7は、例えば、DRAM用のコントローラであり、キャッシュメモリとして使用される揮発性半導体メモリ5に対するアクセスを制御する。
【0023】
第2のコントローラ8は、例えば、NAND用のコントローラであり、不揮発性半導体メモリ61〜6kに対するアクセスを制御する。
【0024】
アドレス情報記憶部9、履歴記憶部10、先読み記憶部11は、揮発性半導体メモリ5と同様の特徴を持っており、不揮発性半導体メモリ61〜6kよりも高速アクセス可能であり、アクセス可能上限回数が不揮発性半導体メモリ61〜6kよりも多い。なお、アドレス情報記憶部9、履歴記憶部10、先読み記憶部11は、揮発性半導体メモリ5によって実現されてもよい。アドレス情報記憶部9、履歴記憶部10、先読み記憶部11、揮発性半導体メモリ5は、自由に組み合わせ可能である。
【0025】
アドレス情報記憶部9は、アドレス変換テーブル13を備える。アドレス変換テーブル13は、エントリごとに、CPUで管理される不揮発性半導体メモリ61〜6kのNAND論理アドレスと、処理部12によって管理されるNAND物理アドレスと、このエントリのNAND論理アドレス又はNAND物理アドレスに対するアクセスが発生した場合に先読みされるデータ(先読みデータ)に対応するアドレス(先読みアドレス)と、を関連付けて記憶する。アドレス変換テーブル13の詳細については、後述する。
【0026】
履歴記憶部10は、不揮発性半導体メモリ61〜6kに記憶されているデータに対するアクセス履歴を含む履歴テーブル14を備える。履歴テーブル14の詳細については、後述する。
【0027】
先読み記憶部11は、NAND物理アドレスに対するアクセスが発生した場合に、このアクセス後の所定範囲(例えば、アクセス回数、アクセス時間など)内にアクセスされる可能性が高いデータを予め格納する先読みテーブル15を備える。先読みテーブル15は、エントリごとに、NAND物理アドレスと、このNAND物理アドレスに対するアクセスの後の所定範囲内にアクセスされる可能性の高いデータ(先読みデータ)とを管理する。先読みテーブル15の詳細については、後述する。
【0028】
処理部12は、記憶装置4に対する各種の高度なアクセス制御を実行する。例えば、処理部12は、第2のコントローラ8を介して、不揮発性半導体メモリ61〜6kに対するウェアレベリング、ガーベージコレクション、コンパクションを実行する。
【0029】
処理部12は、アドレス変換テーブル13に基づいて、プロセッサ2から受信したNAND論理アドレスを、NAND物理アドレスに変換し、NAND物理アドレスに基づいて、記憶装置4又は先読み記憶部11に対するアクセスを実行する。
【0030】
処理部12は、データの過去のアクセス時間、アクセス頻度、アクセス回数のうちの少なくとも一つに基づいて、アクセスされる可能性の高いデータを、第1のコントローラ7経由で揮発性半導体メモリ5に記憶するキャッシュ制御を実行する。
【0031】
処理部12は、必要に応じて、揮発性半導体メモリ5に記憶されているデータ及び先読み記憶部11に記憶されているデータを、不揮発性半導体メモリ61〜6kに書き戻し、データの内容のコヒーレンシ(coherency)を保持する。
【0032】
さらに、処理部12は、履歴管理部16、先読みアドレス管理部17、先読みデータ管理部18、アクセス部19を具備する。
【0033】
履歴管理部16は、不揮発性半導体メモリ61〜6kに対するアクセス履歴を履歴テーブル14に登録する。履歴管理部16の詳細については、後述する。
【0034】
先読みアドレス管理部17は、履歴テーブル14に基づいて、アドレス変換テーブル13におけるNAND論理アドレスとNAND物理アドレスとのうちの少なくとも一方に対して、先読みアドレスを関連付けて登録する。先読みアドレスとは、NAND論理アドレス又はNAND物理アドレスがアクセスされる場合に、そのアクセスの後にアクセスされる可能性の高いアドレスである。先読みアドレス管理部17の詳細については、後述する。
【0035】
先読みデータ管理部18は、NAND物理アドレスに対するアクセスの後にアクセスされる可能性の高い先読みデータを予め先読みテーブル15に格納する。先読みデータ管理部18の詳細については、後述する。
【0036】
アクセス部19は、アクセス対象データが先読みテーブル15に格納されている場合には、先読みテーブル15に格納されているアクセス対象データをアクセスする。
【0037】
アクセス部19は、アクセス対象データが先読みテーブル15に格納されていない場合には、第1のコントローラ7又は第2のコントローラ8経由で、揮発性半導体メモリ5又は不揮発性半導体メモリ61〜6kに記憶されているアクセス対象データをアクセスする。
【0038】
処理部12は、ハードウェアにより上記の制御を実行してもよく、例えばファームウェアなどのソフトウェアにより上記の制御を実行してもよい。
【0039】
図2は、本実施形態に係るアドレス変換テーブル13、履歴テーブル14、先読みテーブル15の構成の一例を示す図である。
【0040】
履歴テーブル14は、過去にアクセスされたアドレスを、アクセス順序を識別可能な形式で管理する。履歴テーブル14では、エントリの配列順序がアクセス順序に対応している。有効/無効情報は、エントリが有効であるか否かを示す。
【0041】
図2の履歴テーブル14は、NAND論理アドレス(A−1),(A),(A+1)の順序で、アクセスが発生したことを示している。
【0042】
本実施形態においては、履歴テーブル14に、NAND論理アドレスが登録される場合を例として説明するが、例えばNAND物理アドレスなどが登録されるとしてもよい。
【0043】
アドレス変換テーブル13は、エントリごとに、NAND論理アドレス、NAND物理アドレス、有効/無効情報、先読みアドレスを管理する。
【0044】
アドレス変換テーブル13の各エントリは、不揮発性半導体メモリ61〜6kに記憶されている各データのNAND論理アドレスとNAND物理アドレスとを関連付ける。アドレス変換テーブル13の有効/無効情報は、エントリが有効であるか否かを示す。
【0045】
アドレス変換テーブル13の各エントリの先読みアドレスは、各エントリのNAND論理アドレス又はNAND物理アドレスに対するアクセス後の所定範囲内に、アクセスされる可能性の高いアドレスである。すなわち、先読みアドレスは、あるデータがアクセスされた場合に、このアクセスより後にアクセスされる可能性が高く、先読みされるデータ(先読みデータ)を示すアドレスである。本実施形態では、先読みアドレスとして、NAND物理アドレスが用いられる場合を例として説明するが、例えばNAND論理アドレスなどが用いられてもよい。
【0046】
図2のアドレス変換テーブル13において、NAND論理アドレス(A)は、NAND物理アドレス(B)に変換される。さらに、先読みアドレス(B+1)は、NAND論理アドレス(A)及びNAND物理アドレス(B)に対応するデータ(D)がアクセスされた場合に先読みされる先読みデータ(D+1)を示すアドレスである。図2のアドレス変換テーブル13においては、NAND論理アドレス(A)及びNAND物理アドレス(B)に対して、先読みアドレス(B+1)が関連付けられている。先読みテーブル15の各エントリでは、NAND論理アドレス及びNAND物理アドレスと、エントリの有効又は無効を示す有効/無効情報と、NAND物理アドレスに対するアクセス後の所定範囲内にアクセスされる可能性の高い先読みデータとが関連付けられている。先読みテーブル15では、NAND物理アドレスと先読みデータとが関連付けられているが、NAND論理アドレスと先読みデータとが関連付けられてもよい。
【0047】
図2の先読みテーブル15では、先読みデータ(D+1)がNAND物理アドレス(B)と関連付けられ格納されている。また、先読みデータ(D)がNAND物理アドレス(B−1)と関連付けられ格納されている。
【0048】
なお、本実施形態において、先読みテーブル15では、NAND物理アドレス(B)と、このNAND物理アドレス(B)の後にアクセスされる可能性の高い先読みデータ(D+1)とが関連付けられている。しかしながら、これに代えて、先読みテーブル15では、先読みアドレス(B+1)と、この先読みアドレス(B+1)に対応するデータ(D+1)とが関連付けて格納されるとしてもよい。
【0049】
以下に、図2に示す各テーブル13〜15を用いて、図1の履歴管理部16、先読みアドレス管理部17、先読みデータ管理部18、アクセス部19の動作について具体的に説明する。
【0050】
履歴管理部16は、アクセス順序を識別可能な形式で、アクセスされたNAND論理アドレス(A−1),(A),(A+1)を履歴テーブル14に登録する。
【0051】
先読みアドレス管理部17は、履歴テーブル14に基づいて、アドレス変換テーブル13に対して先読みアドレスを登録する。
【0052】
まず、先読みアドレス管理部17は、アドレス変換テーブル13を用いて、履歴テーブル14のNAND論理アドレス(A−1),(A),(A+1)を、それぞれNAND物理アドレス(B−1),(B),(B+1)に変換する。
【0053】
次に、先読みアドレス管理部17は、NAND物理アドレス(B)がNAND物理アドレス(B−1)の後の所定範囲内にアクセスされたことを認識する。先読みアドレス管理部17は、アドレス変換テーブル13の有効なエントリにおけるNAND物理アドレス(B−1)に対して、NAND物理アドレス(B−1)の後にアクセスされているNAND物理アドレス(B)を、先読みアドレス(B)として関連付けて登録する。
【0054】
先読みデータ管理部18は、NAND物理アドレス(B)に対するアクセスが発生した場合に、アドレス変換テーブル13を参照し、NAND物理アドレス(B)に対応する先読みアドレス(B+1)の示す先読みデータ(D+1)を、不揮発性半導体メモリ61〜6kから読み出す。そして、先読みデータ管理部18は、先読みデータ(D+1)をNAND物理アドレス(B)と関連付けて、先読みテーブル15に格納する。
【0055】
アクセス部19は、アドレス変換テーブル13と先読みテーブル15とを参照し、アクセス対象データが先読みテーブル15に格納されている場合に、この先読みテーブル15に対するアクセスを実行する。
【0056】
アクセス部19は、アクセス対象データが先読みテーブル15に格納されていない場合、揮発性半導体メモリ5又は不揮発性半導体メモリ61〜6kに対するアクセスを実行する。
【0057】
図3は、本実施形態に係るメモリ管理装置3の処理部13のアクセス動作の前半部の一例を示すフローチャートである。
【0058】
図4は、本実施形態に係るメモリ管理装置3の処理部13のアクセス動作の後半部の一例を示すフローチャートである。
【0059】
処理部13は、プロセッサ2から、アクセス先のNAND論理アドレス(CPU物理アドレス)(A)を受信する(ステップS1)。
【0060】
処理部13は、アドレス変換テーブル13を参照し、受信されたNAND論理アドレス(A)をNAND物理アドレス(B)に変換する(ステップS2)。
【0061】
処理部13のアクセス部19は、NAND物理アドレス(B)に対応するデータ(D)が先読みテーブル15に格納されているか判断する(ステップS3)。
【0062】
データ(D)が先読みテーブル15に格納されている場合、処理部13のアクセス部19は、先読みテーブル15に格納されているデータ(D)をアクセスする(ステップS4)。その後、処理はステップS8に移動する。
【0063】
データ(D)が先読みテーブル15に格納されていない場合、処理部13は、NAND物理アドレス(B)に対応するデータ(D)が、揮発性半導体メモリ5に記憶されているか否か判断する(ステップS5)。
【0064】
NAND物理アドレス(B)に対応するデータ(D)が揮発性半導体メモリ5に記憶されている場合、処理部13は、揮発性半導体メモリ5に対して、第1のコントローラ7経由で、NAND物理アドレス(B)に対応するデータ(D)をアクセスする(ステップS6)。その後、処理はステップS8に移動する。
【0065】
NAND物理アドレス(B)に対応するデータ(D)が揮発性半導体メモリ5に記憶されていない場合、処理部13のアクセス部19は、不揮発性半導体メモリ61〜6kに記憶されているデータ(D)をアクセスする(ステップS7)。
【0066】
処理部13の先読みアドレス管理部17は、履歴テーブル14から、NAND論理アドレス(A)の直前にアクセスされたNAND論理アドレス(A−1)を求め、アドレス変換テーブル13に基づいて、直前のNAND論理アドレス(A−1)をNAND物理アドレス(B−1)に変換する(ステップS8)。
【0067】
先読みアドレス管理部17は、アドレス変換テーブル13のエントリの中から、NAND物理アドレス(B−1)に対応するエントリを求める(ステップS9)。
【0068】
先読みアドレス管理部18は、求められた直前のNAND物理アドレス(B−1)に対応するエントリの先読みアドレスに、NAND物理アドレス(B)を登録する(ステップS10)。
【0069】
先読みデータ管理部18は、アドレス変換テーブル13のNAND物理アドレス(B)に対応するエントリに登録されている先読みアドレス(B+1)が有効であるか否か判断する(ステップS11)。
【0070】
先読みアドレス(B+1)が有効でない場合、処理はステップS13に移動する。
【0071】
先読みアドレス(B+1)が有効な場合、先読みデータ管理部18は、不揮発性半導体メモリ61〜6kから、先読みアドレス(B+1)に対応するデータ(D+1)を先読みし、データ(D+1)を先読みテーブル15に格納する(ステップS12)。
【0072】
履歴管理部16は、NAND論理アドレス(A)を履歴テーブル14に登録する(ステップS13)。
【0073】
以上説明した本実施形態においては、アドレス変換テーブル13におけるアドレスに対して、このアドレスに対するアクセスの後にアクセスされる可能性の高い先読みアドレスが登録される。これにより、あるデータがアクセスされた場合に、このアクセス後にアクセスされる可能性の高いデータを不揮発性半導体メモリ61〜6kから事前に読み出し、高速にアクセス可能な先読み記憶部11に準備しておくことができる。本実施形態においては、たとえ連続するデータではないデータであっても、アクセス履歴に基づいて不揮発性半導体メモリ61〜6kに対するアクセスを効率化させることができ、アクセス速度を高速化でき、アクセス性能を向上させることができる。
【0074】
本実施形態においては、不揮発性半導体メモリ61〜6kに対するアクセス回数を減少させることができ、不揮発性半導体メモリ61〜6kの長寿命化を実現させることができる。
【0075】
本実施形態においては、先読みアドレスに、NAND物理アドレスが使用される。これにより、不揮発性半導体メモリ61〜6kに書き込まれるデータの再配置の自由度を向上させることができ、不揮発性半導体メモリ61〜6kに対するアクセスの信頼性を向上させることができる。
【0076】
なお、本実施形態において、先読みアドレスとしては、先読みデータの絶対アドレスが用いられる。
【0077】
例えば、アドレス変換テーブル13において、変換前のNAND論理アドレス(A)と変換後のNAND物理アドレス(B)とが関係付けられているエントリがあると仮定する。このエントリにおいて、先読みアドレスに、変換前のNAND論理アドレス(A)又は変換後のNAND物理アドレス(B)と同じNAND論理アドレス(A)又はNAND物理アドレス(B)が登録されている場合には、先読みは実行されないとする。
【0078】
また、アドレス変換テーブル13の項目に、先読みアドレスが有効か否かを示す先読み有効/無効情報を加え、この先読み有効/無効情報が有効であることを示す場合にのみ、先読みを実行するとしてもよい。
【0079】
(第2の実施形態)
本実施形態では、上記第1の実施形態に対する第1から第5までの変形例について説明する。
【0080】
<第1の変形例>
第1の変形例において、アドレス変換テーブル13は、相対アドレスを用いて、先読みアドレスを特定するとしてもよい。
【0081】
例えば、アドレス変換テーブル13において、変換前のNAND論理アドレス(A)と変換後のNAND物理アドレス(B)とが関係付けられており、先読みアドレスに、NAND物理アドレス(B)からの相対位置を示す相対アドレス(N)が登録されているエントリがあると仮定する。このエントリにおいて、NAND物理アドレス(B)に対するアクセス後にアクセスされる可能性の高い先読みアドレスは、NAND物理アドレス(B+N)となる。例えば、先読みアドレスが0の場合には、先読みは実行されない。
【0082】
この第1の変形例において、不揮発性半導体メモリ61〜6kの全アドレスが2n個とすると、先読みアドレスの情報量をnより少なくすることができ、アドレス変換テーブル13のデータ容量を少なくすることができる。
【0083】
この第1の変形例において、不揮発性半導体メモリ61〜6kにおけるアクセス可能範囲外に対しては、先読みが行わないように設定される。
【0084】
<第2の変形例>
第2の変形例において、アドレス変換テーブル13は、各エントリにおいて、複数の先読みアドレスを登録しているとしてもよい。
【0085】
この第2の変形例において、先読みアドレス管理部17は、アドレス変換テーブル13のエントリに、複数の先読みアドレスを登録する。
【0086】
そして、先読みデータ管理部18は、アドレス変換テーブル13を参照し、アクセスされたNAND物理アドレスに対して、複数の先読みアドレスが関連付けられている場合に、各先読みアドレスに対応するデータを先読みテーブル15に格納する処理を繰り返す。これにより、先読みテーブル15のヒット率を向上させることができる。
【0087】
<第3の変形例>
図5は、本変形例に係るアドレス変換テーブル13の一例を示す図である。
【0088】
第3の変形例において、アドレス変換テーブル13は、アクセス間隔を登録するためのフィールドを含む。
【0089】
アクセス間隔としては、例えば、アクセス時間又はアクセス回数が用いられる。
【0090】
まず、アクセス間隔として、アクセス時間を用いる場合について説明する。
【0091】
例えば、NAND論理アドレス(A)をアクセスしてから、その後にNAND論理アドレス(A+1)をアクセスするまでのアクセス時間がtであるアクセスパターンが、履歴テーブル14から得られたとする。
【0092】
この場合、アドレス変換テーブル13では、NAND論理アドレス(A)、NAND物理アドレス(B)、先読みアドレスであるNAND物理アドレス(B+1)、アクセス時間tが関連付けられる。
【0093】
先読みデータ管理部18は、NAND論理アドレス(A)をアクセスした後、t×a+b時間経過した後に、先読みアドレス(B+1)に対応するデータ(D+1)を、先読みテーブル15に格納する。なお、a,bは、アクセス時間tに基づいて先読みを実行するタイミングを算出するための定数である。t×a+b時間は、t時間よりも短いとする。
【0094】
これにより、先読みデータ管理部18は、先読みデータ(D+1)を、アクセス時間tが経過する前の任意のタイミングで、先読みテーブル15に格納することができる。
【0095】
次に、アクセス間隔として、アクセス回数を用いる場合について説明する。
【0096】
例えば、NAND論理アドレス(A)に対するアクセスがz回発生した後にNAND論理アドレス(A+1)に対するアクセスが発生するアクセスパターンが、履歴テーブル14から得られたとする。
【0097】
この場合、アドレス変換テーブル13では、NAND論理アドレス(A)、NAND物理アドレス(B)、先読みアドレス(B+1)、アクセス回数zが関連付けられる。
【0098】
先読みデータ管理部18は、NAND論理アドレス(A)が、z×v+w回受信された後に、先読みアドレス(B+1)に対応するデータ(D+1)を、先読みテーブル15に格納する。なお、v,wは、アクセス回数zに基づいて先読みを実行するタイミングを算出するための定数である。z×v+wは、zよりも小さい値とする。
【0099】
これにより、先読みデータ管理部18は、先読みデータ(D+1)を、アクセス回数zの実行前の任意のタイミングで、先読みテーブル15に格納することができる。
【0100】
以上説明した第3の変形例においては、アクセス時間又はアクセス回数などのようなアクセス間隔に基づいて、先読みを実行するタイミングを制御することができ、先読み動作の効率化を実現することができる。
【0101】
<第4の変形例>
第4の変形例として、先読みアドレス管理部17は、アクセス対象データが先読みテーブル15に格納されていない場合(先読みミスの場合)、アクセス変換テーブル13の該当エントリにおける先読みアドレスを、更新する。
【0102】
例えば、アドレス変換テーブル13の該当エントリに、NAND論理アドレス(A)、NAND物理アドレス(B)、先読みアドレスであるNAND物理アドレス(B+1)が登録されていると仮定する。そして、該当エントリのNAND物理アドレス(B)の後のアクセス先が、該当エントリの先読みアドレス(B+1)と異なるNAND物理アドレス(B+10)であり、このNAND物理アドレス(B+10)に対応するデータ(D+10)が先読みテーブル15に格納されていないとする。
【0103】
この場合、先読みアドレス管理部17は、アドレス変換テーブル13のエントリの先読みアドレスを、(B+1)から(B+10)に更新する。
【0104】
先読みデータ管理部17は、データ(D+10)を先読みテーブル15に格納する。
【0105】
この第4の変形例においては、最新のアクセス履歴に基づいて先読みアドレス及び先読みデータが更新されるため、先読みデータのヒット率を向上させることができる。
【0106】
<第5の変形例>
第5の変形例として、先読みアドレス管理部17は、アクセス変換テーブル13のエントリごとに、先読みアドレスに関するヒット回数とミス回数とをカウントし、結果を登録する。ヒット回数とは、あるアドレスに対するアクセスの後の所定範囲内に、このアドレスに対応する先読みアドレスに対するアクセスが発生した回数とする。これに対し、ミス回数とは、あるアドレスに対するアクセスの後の所定範囲内に、このアドレスに対応する先読みアドレスに対するアクセスが発生しなかった回数とする。
【0107】
そして、先読みアドレス管理部17は、ミス回数がヒット回数よりも多くなったエントリに対して、そのエントリの先読みアドレスを更新し、そのエントリのヒット回数とミス回数とを初期化(クリア)する。
【0108】
なお、先読みアドレス管理部17は、アクセス変換テーブル13のエントリごとに、アクセス回数とミス回数、又は、アクセス回数とヒット回数をカウントし、結果を登録してもよい。
【0109】
この場合、先読みアドレス管理部17は、アクセス回数とミス回数、又は、アクセス回数とヒット回数に基づいて、エントリの先読みアドレスを更新するか否か判断する。例えば、先読みアドレス管理部17は、エントリのミス回数/アクセス回数が、ある閾値を超えた場合に、そのエントリの先読みアドレスを更新し、そのエントリのアクセス回数とミス回数とを初期化する。また、例えば、先読みアドレス管理部17は、エントリのヒット回数/アクセス回数が、ある閾値より小さい場合に、そのエントリの先読みアドレスを更新し、そのエントリのアクセス回数とヒット回数とを初期化する。
【0110】
この第5の変形例においては、様々な条件に応じて、アクセス変換テーブル13に対する先読みアドレスの更新制御を行うことができ、先読みデータのヒット率を向上させることができる。
【0111】
(第3の実施形態)
本実施形態では、先読みデータに対する先読みアドレスの効率的な割り当てについて説明する。
【0112】
図6は、本実施形態に係る不揮発性半導体メモリ61〜6kの構成の一例を示す図である。
【0113】
この図6の不揮発性半導体メモリ61〜6kは、複数のブロック領域を含むブロックユニットがマトリクス状に配置されている。
【0114】
マトリクス状に配置されているブロックユニットのうち同一の行に属するブロックユニットは、同一のバンクに属する。
【0115】
マトリクス状に配置されているブロックユニットのうち同一の列に属するブロックユニットは、同一のチャネルに属する。
【0116】
このように、不揮発性半導体メモリ61〜6kがNAND型フラッシュメモリの場合、複数のブロック領域は、バンク0〜mのいずれかに所属するとともに、チャネル0〜nのいずれかに所属する。各ブロック領域は、複数のページ領域を含む。したがって、複数のページ領域は、複数のチャネルと複数のバンクを用いて区分けされている。各ページ領域には、バンク番号とチャネル番号とが付される。
【0117】
この不揮発性半導体メモリ61〜6kにおいて、異なるチャネルに対しては、同時にアクセス可能である。
【0118】
また、不揮発性半導体メモリ61〜6kにおいて、異なるバンクに対しては、同時にアクセス可能である。
【0119】
不揮発性半導体メモリ61〜6kにおいて、連続するページ領域に対しては、連続していないページ領域に対するアクセスよりも高速にアクセスすることが可能である。
【0120】
異なるチャネルに対する同時アクセス、異なるバンクに対する同時アクセス、連続するページ領域に対するアクセスの速度を比較すると、異なるチャネルに対する同時アクセスが最も高速であり、異なるバンクに対する同時アクセスが2番目に高速であり、連続するページ領域に対するアクセスが3番目に高速である。
【0121】
本実施形態に係る先読みアドレス管理部17は、アドレス変換テーブル13を参照して、空きのデータ領域を認識し、上記の関係に基づいて、先読みデータの配置を行う。
【0122】
先読みアドレス管理部17は、あるデータのアドレスと、このあるデータに対する複数の先読みアドレスとに対して、チャネルとバンクとのうちの少なくとも一方が異なるように、NAND物理アドレスを割り当てる。
【0123】
または、先読みアドレス管理部17は、例えば、あるデータのアドレスと、そのデータに対する先読みアドレスとが連続するように、あるデータ及び先読みデータに対してNAND物理アドレスを割り当てる。
【0124】
先読みアドレス管理部17によるアドレスの割り当ては、例えば、ウェアレベリング又はガーベージコレクションの実行時などのように、不揮発性半導体メモリ61〜6kに対するNAND物理アドレスの再配置が必要な場合に、実行される。
【0125】
以下に、履歴テーブル14に基づくアドレスの割り当てについて、詳しく説明する。
【0126】
図7は、本実施形態に係るアドレス変換テーブル13と履歴テーブル14とアドレス割り当て結果との関係の一例を示す図である。
【0127】
アドレス変換テーブル13のNAND物理アドレスは、チャネル番号、バンク番号、ブロック番号及びページ番号を含むNANDチップアドレス、オフセットを含む。
【0128】
本実施形態において、履歴テーブル14は、メモリ管理装置3に受信されたNAND論理アドレス(CPU物理アドレス)を登録しているとする。
【0129】
例えば、この履歴テーブル14に、NAND論理アドレス(A)の次に、NAND論理アドレス(A+1)がアクセスされたことが登録されているとする。
【0130】
例えば、この履歴テーブル14に、NAND論理アドレス(A)の次に、NAND論理アドレス(A+5)がアクセスされたことが登録されているとする。
【0131】
例えば、この履歴テーブル14に、NAND論理アドレス(A)の次に、NAND論理アドレス(A+2)がアクセスされたことが登録されているとする。
【0132】
例えば、この履歴テーブル14に、NAND論理アドレス(A)の次に、NAND論理アドレス(A+1)がアクセスされ、さらにその次に、NAND論理アドレス(A+3)がアクセスされたことが登録されているとする。
【0133】
例えば、履歴テーブル14に、NAND論理アドレス(A)の次に、NAND論理アドレス(A+4)がアクセスされたことが登録されているとする。
【0134】
このようなアクセスパターンが履歴テーブル14に登録されている場合、先読みアドレス管理部17は、NAND論理アドレス(A+1),(A+2),(A+3),(A+5)のそれぞれに対して、チャネルとバンクとのうちの少なくとも一方が異なり、かつ、チャネル及びバンクの内で使用されるNANDチップアドレスが同じになるように、NAND物理アドレスを割り当てる。
【0135】
また、先読みアドレス管理部17は、NAND物理アドレス(A)と先読みアドレス(A+4)とに対して、同一のチャネル及び同一のバンク内で連続するNAND物理アドレスを割り当てる。
【0136】
図7では、アドレス変換テーブル13の各エントリに、n×mビットのチャネルフィールドが設けられている。チャネルフィールドでは、先読みデータが配置されるチャネル及びバンクを識別可能とすることによって、先読みアドレスが特定される。すなわち、本実施形態では、NAND物理アドレスと先読みアドレスとの間で、NANDチップアドレスが共有される。
【0137】
図7のアドレス変換テーブル13では、変更前のNAND論理アドレス(A)と変更後のNAND物理アドレス(B)とに対して、先読みアドレスの割り当てられたチャネル及びバンクに対応するフラグが「1」で表され、先読みアドレスの割り当てられていないチャネル及びバンクに対応するフラグが「0」で表される。
【0138】
先読みアドレス管理部17は、アドレス変換テーブル13において、先読みアドレスの割り当てられたチャネル及びバンクに対応するビットに「1」を設定する。
【0139】
先読みデータ管理部18は、NAND物理アドレス(B)のデータがアクセスされた場合に、フラグが「1」となっているチャネル及びバンク内で、NAND物理アドレス(B)と同じNANDチップアドレスで指定されるデータを、同時に読み出し、読み出された先読みデータを先読みテーブル15に格納する。
【0140】
また、図7のアドレス変換テーブル13では、NAND物理アドレス(B)のデータがアクセスされた場合の先読みデータが、NAND物理アドレス(B)に連続するデータ領域に記憶されている場合、アドレス変換テーブル13のNAND物理アドレス(B)のエントリにおける連続割り当てフラグに、「1」が設定される。
【0141】
先読みデータ管理部18は、NAND物理アドレス(B)に対するアクセスが発生し、連続割り当てフラグが「1」となっている場合、このNAND物理アドレス(B)の次のデータ領域に記憶されている先読みデータを、先読みテーブル15に格納する。
【0142】
以上説明した本実施形態においては、例えば、ウェアレベリング、ガーベージコレクションの実行時に、履歴テーブル14及びアドレス変換テーブル13に基づいて、NAND物理アドレスを最適に割り当てることができる。
【0143】
本実施形態においては、先読みデータを複数のチャネル及びバンクから同時に読み出すことができる。
【0144】
本実施形態においては、データと先読みデータとが連続するデータ領域に記憶されるため、高速に先読みデータを読み出すことができる。
【0145】
本実施形態においては、アドレス変換テーブル13の1つのエントリに複数の先読みアドレスを登録することができ、先読みデータの数を増加させることができる。
【0146】
本実施形態においては、NAND物理アドレスと先読みアドレスとの間で、NANDチップアドレスを共有させることにより、アドレス変換テーブル13に必要とされるデータ容量を削減することができる。
【0147】
なお、本実施形態において、アドレス変換テーブル13の先読みアドレスとして相対アドレスが用いられており、先読みアドレスが相対アドレスを用いて参照可能な範囲の外であり、先読みが行われない場合、先読みアドレス管理部17は、履歴テーブル14をアクセスし、連続してアクセスされているNAND論理アドレス(A−1),(A)を抽出し、相対アドレスで参照可能な範囲に、NAND論理アドレス(A−1)のデータ及びNAND論理アドレス(A)のデータを再配置し、アドレス変換テーブル13を更新する。
【0148】
これにより、相対アドレスで参照可能な範囲外に先読みデータが存在する場合であっても、相対アドレスで参照可能な範囲内に先読みデータを再配置し、先読みを行うことができる。
【0149】
(第4の実施形態)
本実施形態においては、アドレス変換テーブル13に登録される先読みアドレスとして、NAND論理アドレスが使用され、先読みテーブル15に、NAND論理アドレスと先読みデータとが格納される場合について説明する。
【0150】
図8は、本実施形態に係るアドレス変換テーブル13、履歴テーブル14、先読みテーブル15の構成の一例を示す図である。
【0151】
この図8のアドレス変換テーブル13では、変換前のNAND論理アドレスと変換後のNAND物理アドレスとの組み合わせに対して、NAND論理アドレスである先読みアドレスが関連付けられる。
【0152】
また、図8の先読みテーブル15の各エントリでは、NAND論理アドレスと、エントリの有効又は無効を示す有効/無効情報と、先読みデータとが関連付けられる。
【0153】
図9は、本実施形態に係るメモリ管理装置3の処理部13のアクセス動作の前半部の一例を示すフローチャートである。
【0154】
図10は、本実施形態に係るメモリ管理装置3の処理部13のアクセス動作の後半部の一例を示すフローチャートである。
【0155】
処理部13は、プロセッサ2から、アクセス先のNAND論理アドレス(A)を受信する(ステップT1)。
【0156】
処理部13は、アドレス変換テーブル13を参照し、受信されたNAND論理アドレス(A)をNAND物理アドレス(B)に変換する(ステップT2)。
【0157】
処理部13のアクセス部19は、NAND物理アドレス(B)に対応するデータ(D)が先読みテーブル15に格納されているか判断する(ステップT3)。
【0158】
データ(D)が先読みテーブル15に格納されている場合、処理部13のアクセス部19は、先読みテーブル15に格納されているデータ(D)をアクセスする(ステップT4)。その後、処理はステップT8に移動する。
【0159】
データ(D)が先読みテーブル15に格納されていない場合、処理部13は、NAND物理アドレス(B)に対応するデータ(D)が、揮発性半導体メモリ5に記憶されているか否か判断する(ステップT5)。
【0160】
NAND物理アドレス(B)に対応するデータ(D)が揮発性半導体メモリ5に記憶されている場合、処理部13は、揮発性半導体メモリ5に対して、第1のコントローラ7経由で、NAND物理アドレス(B)に対応するデータ(D)をアクセスする(ステップT6)。その後、処理はステップT8に移動する。
【0161】
NAND物理アドレス(B)に対応するデータ(D)が揮発性半導体メモリ5に記憶されていない場合、処理部13のアクセス部19は、不揮発性半導体メモリ61〜6kに記憶されているデータ(D)をアクセスする(ステップT7)。
【0162】
処理部13の先読みアドレス管理部17は、履歴テーブル14から、NAND論理アドレス(A)の直前にアクセスされたNAND論理アドレス(A−1)を求める(ステップT8)。
【0163】
先読みアドレス管理部17は、アドレス変換テーブル13のエントリの中から、直前のNAND論理アドレス(A−1)に対応するエントリ求める(ステップT9)。
【0164】
先読みアドレス管理部18は、求められた直前のNAND論理アドレス(A−1)に対応するエントリの先読みアドレスに、NAND論理アドレス(A)を登録する(ステップT10)。
【0165】
先読みデータ管理部18は、アドレス変換テーブル13のNAND論理アドレス(A)に対応するエントリに登録されている先読みアドレス(A+1)が有効であるか否か判断する(ステップT11)。
【0166】
先読みアドレス(A+1)が有効でない場合、処理はステップT14に移動する。
【0167】
先読みアドレス(A+1)が有効な場合、先読みデータ管理部18は、アドレス変換テーブル13に基づいて、先読みアドレス(A+1)をNAND物理アドレス(B+1)に変換する(ステップT12)。
【0168】
そして、先読みデータ管理部18は、不揮発性半導体メモリ61〜6kから、NAND物理アドレス(B+1)に対応するデータ(D+1)を先読みし、データ(D+1)を先読みテーブル15に格納する(ステップT13)。
【0169】
履歴管理部16は、NAND論理アドレス(A)を履歴テーブル14に登録する(ステップT14)。
【0170】
以上説明した本実施形態においては、先読みアドレスとしてNAND論理アドレスが使用される。この場合、データに対するNAND物理アドレスが変更又は削除されたとしても、先読み動作の効率を悪化させることなく、連続的に先読みを実行させることができる。
【0171】
(第5の実施形態)
本実施形態においては、ソフトウェアによる先読み制御について説明する。
【0172】
図11は、本実施形態に係る先読みテーブル15とアドレス変換テーブル13とソフトウェアとの関係の一例を示すブロック図である。
【0173】
本実施形態において、アドレス変換テーブル13は、先読みアドレスの変更を禁止するか否かを示すロックビットを持つ。ロックビットが「1」のエントリについては、先読みアドレスの変更が禁止される。ロックビットが「0」のエントリについては、先読みアドレスの変更が許可される。
【0174】
本実施形態において先読みテーブル15は、エントリの変更を禁止するか否かを示すロックビットを持つ。ロックビットが「1」のエントリについては、変更が禁止される。ロックビットが「0」のエントリについては、変更が許可される。
【0175】
本実施形態のソフトウェア20としては、例えば、プロセッサ2によって実行されるオペレーティングシステム、プロセッサ2によって実行されるアプリケーションソフトウェア、処理部12によって実行されるファームウェアがある。
【0176】
ソフトウェア20は、アドレス変換テーブル13及び先読みテーブル15に対する設定を変更する。
【0177】
さらに、ソフトウェア20は、アドレス変換テーブル13に対するロックビットの設定、及び先読みテーブル15に対するロックビットの設定を行い、エントリ単位で登録又は格納内容をロックすることができる。
【0178】
この図11のアドレス変換テーブル13において、先読みアドレス(B)は、ロックビット「1」に関連付けられているため、更新されない。
【0179】
例えば、不揮発性半導体メモリ61〜6kの特定のデータ領域に、オペレーティングシステムによって頻繁にアクセスされるデータが記憶されているとする。この場合、ソフトウェア20は、頻繁にアクセスされるデータを、先読みテーブル15に格納する。
【0180】
また、例えば、先読みテーブル15では、先読みテーブル15の容量が所定の値を超えた場合に、古い先読みデータが削除されるとする。しかしながら、頻繁にアクセスされるデータが先読みテーブル15から削除されないように、ソフトウェア20は、この頻繁にアクセスされるデータに対応するロックビットを「1」に設定し、このデータの消去を禁止する。
【0181】
この図11の先読みテーブル15において、先読みデータ(D+6)は、ロックビット「1」に関連付けられているため、更新されない。
【0182】
以上説明した本実施形態においては、ソフトウェア20によって先読みテーブル15及びアドレス変換テーブル13を静的に設定することができる。
【0183】
また、本実施形態においては、ソフトウェア29により、先読みテーブル15及びアドレス変換テーブル13の更新を、自動で実行させるモードとするか、ロックさせるモードとするか、選択することができる。
【0184】
本発明のいくつかの実施形態を説明したが、これらの実施形態は、例として提示したものであり、発明の範囲を限定することは意図していない。これら新規な実施形態は、その他の様々な形態で実施されることが可能であり、発明の要旨を逸脱しない範囲で、種々の省略、置き換え、変更を行うことができる。これら実施形態やその変形は、発明の範囲や要旨に含まれるとともに、特許請求の範囲に記載された発明とその均等の範囲に含まれる。
【符号の説明】
【0185】
1…情報処理装置、2…プロセッサ、2a…MMU、3…メモリ管理装置、4…記憶装置、5…揮発性半導体メモリ、61〜6k…不揮発性半導体メモリ、7…第1のコントローラ、8…第2のコントローラ、9…アドレス情報記憶部、10…履歴記憶部、11…先読み記憶部、12…処理部、13…アドレス変換テーブル、14…履歴テーブル、15…先読みテーブル、16…履歴管理部、17…先読みアドレス管理部、18…先読みデータ管理部、19…アクセス部、20…ソフトウェア
【特許請求の範囲】
【請求項1】
メインメモリとして使用される不揮発性半導体メモリに記憶されているデータに対するアクセス履歴を管理する履歴管理部と、
前記データについての論理アドレスと物理アドレスの変換テーブルを含むアドレス変換テーブルと、
前記アドレス変換テーブルの第1の論理アドレスに対するアクセスの後にアクセスされる第2の論理アドレスを前記アクセス履歴に基づき決定し、前記第2の論理アドレスに対応する第2の物理アドレスを前記第1の論理アドレスに対応付けて前記アドレス変換テーブルに登録するアドレス管理部と、
前記第2の物理アドレスに対応するデータをバッファに格納する先読みデータ管理部と、
を具備するメモリ管理装置。
【請求項2】
第1の論理アドレスに対するアクセスの後の所定範囲内に前記第2の物理アドレスに対するアクセスが発生した回数であるヒット回数と、前記第1の論理アドレスに対するアクセスの後の所定範囲内に前記第2の物理アドレスに対するアクセスが発生しなかった回数であるミス回数とのうちの少なくとも一方を前記アドレス変換テーブルに前記第1の論理アドレスに対応付けて登録し、前記アドレス管理部は、前記ヒット回数と前記ミス回数とのうちの少なくとも一方に基づいて、前記第1の論理アドレスに対応付けられた前記第2の物理アドレスを更新することを特徴とする請求項1記載のメモリ管理装置。
【請求項3】
前記アドレス変換テーブルは、前記第1の論理アドレスと前記第2の物理アドレスのアクセスパターン情報を登録し、前記アドレス管理部は、前記アクセスパターン情報に基づいて、前記第2の物理アドレスに対応するデータを前記バッファに格納するタイミングを決定することを特徴とする請求項1又は請求項2記載のメモリ管理装置。
【請求項4】
前記不揮発性半導体メモリは、NAND型フラッシュメモリであり、
前記論理アドレスは、NAND論理アドレスであり、
前記物理アドレスは、NAND物理アドレスであり、
前記先読みアドレスは、絶対アドレス又は前記NAND物理アドレスから相対位置を示す相対アドレスである
ことを特徴とする請求項1乃至請求項3のいずれか1項に記載のメモリ管理装置。
【請求項5】
前記不揮発性半導体メモリは、複数のチャネル及び複数のバンクで区分けされた複数の領域を備え、
前記第1の論理アドレスに対して複数の前記第2の物理アドレスがある場合に、複数の前記第2の物理アドレスに対応するデータを、異なるチャネルに属する領域又は異なるバンクに属する領域の同一物理アドレスに格納する
ことを特徴とする請求項1乃至請求項4のいずれか1項に記載のメモリ管理装置。
【請求項6】
前記第1の論理アドレスに対応するデータと前記第2の物理アドレスに対応するデータとを、同一の前記チャネル及び同一の前記バンクに属し、連続する物理アドレスに格納することを特徴とする請求項5記載のメモリ管理装置。
【請求項7】
メインメモリとして使用される不揮発性半導体メモリに記憶されているデータに対するアクセス履歴を管理する履歴管理部と、
前記データについての論理アドレスと物理アドレスの変換テーブルを含むアドレス変換テーブルと、
前記アドレス変換テーブルの第1の論理アドレスに対するアクセスの後にアクセスされる第2の論理アドレスを前記アクセス履歴に基づき決定し、前記第2の論理アドレスを前記第1の論理アドレスに対応付けて前記アドレス変換テーブルに登録するアドレス管理部と、
前記第2の論理アドレスに対応するデータをバッファに格納する先読みデータ管理部と、
を具備するメモリ管理装置。
【請求項8】
履歴管理部が、メインメモリとして使用される不揮発性半導体メモリに記憶されているデータに対するアクセス履歴を管理すること、
アドレス管理部が、論理アドレスと物理アドレスとを対応付けているアドレス変換テーブルの第1の論理アドレスに対するアクセスの後にアクセスされる第2の論理アドレスを前記アクセス履歴に基づき決定し、前記第2の論理アドレスに対応する第2の物理アドレスを前記第1の論理アドレスに対応付けて前記アドレス変換テーブルに登録すること、
先読みデータ管理部が、前記第2の物理アドレスに対応するデータをバッファに格納すること
を具備するメモリ管理方法。
【請求項1】
メインメモリとして使用される不揮発性半導体メモリに記憶されているデータに対するアクセス履歴を管理する履歴管理部と、
前記データについての論理アドレスと物理アドレスの変換テーブルを含むアドレス変換テーブルと、
前記アドレス変換テーブルの第1の論理アドレスに対するアクセスの後にアクセスされる第2の論理アドレスを前記アクセス履歴に基づき決定し、前記第2の論理アドレスに対応する第2の物理アドレスを前記第1の論理アドレスに対応付けて前記アドレス変換テーブルに登録するアドレス管理部と、
前記第2の物理アドレスに対応するデータをバッファに格納する先読みデータ管理部と、
を具備するメモリ管理装置。
【請求項2】
第1の論理アドレスに対するアクセスの後の所定範囲内に前記第2の物理アドレスに対するアクセスが発生した回数であるヒット回数と、前記第1の論理アドレスに対するアクセスの後の所定範囲内に前記第2の物理アドレスに対するアクセスが発生しなかった回数であるミス回数とのうちの少なくとも一方を前記アドレス変換テーブルに前記第1の論理アドレスに対応付けて登録し、前記アドレス管理部は、前記ヒット回数と前記ミス回数とのうちの少なくとも一方に基づいて、前記第1の論理アドレスに対応付けられた前記第2の物理アドレスを更新することを特徴とする請求項1記載のメモリ管理装置。
【請求項3】
前記アドレス変換テーブルは、前記第1の論理アドレスと前記第2の物理アドレスのアクセスパターン情報を登録し、前記アドレス管理部は、前記アクセスパターン情報に基づいて、前記第2の物理アドレスに対応するデータを前記バッファに格納するタイミングを決定することを特徴とする請求項1又は請求項2記載のメモリ管理装置。
【請求項4】
前記不揮発性半導体メモリは、NAND型フラッシュメモリであり、
前記論理アドレスは、NAND論理アドレスであり、
前記物理アドレスは、NAND物理アドレスであり、
前記先読みアドレスは、絶対アドレス又は前記NAND物理アドレスから相対位置を示す相対アドレスである
ことを特徴とする請求項1乃至請求項3のいずれか1項に記載のメモリ管理装置。
【請求項5】
前記不揮発性半導体メモリは、複数のチャネル及び複数のバンクで区分けされた複数の領域を備え、
前記第1の論理アドレスに対して複数の前記第2の物理アドレスがある場合に、複数の前記第2の物理アドレスに対応するデータを、異なるチャネルに属する領域又は異なるバンクに属する領域の同一物理アドレスに格納する
ことを特徴とする請求項1乃至請求項4のいずれか1項に記載のメモリ管理装置。
【請求項6】
前記第1の論理アドレスに対応するデータと前記第2の物理アドレスに対応するデータとを、同一の前記チャネル及び同一の前記バンクに属し、連続する物理アドレスに格納することを特徴とする請求項5記載のメモリ管理装置。
【請求項7】
メインメモリとして使用される不揮発性半導体メモリに記憶されているデータに対するアクセス履歴を管理する履歴管理部と、
前記データについての論理アドレスと物理アドレスの変換テーブルを含むアドレス変換テーブルと、
前記アドレス変換テーブルの第1の論理アドレスに対するアクセスの後にアクセスされる第2の論理アドレスを前記アクセス履歴に基づき決定し、前記第2の論理アドレスを前記第1の論理アドレスに対応付けて前記アドレス変換テーブルに登録するアドレス管理部と、
前記第2の論理アドレスに対応するデータをバッファに格納する先読みデータ管理部と、
を具備するメモリ管理装置。
【請求項8】
履歴管理部が、メインメモリとして使用される不揮発性半導体メモリに記憶されているデータに対するアクセス履歴を管理すること、
アドレス管理部が、論理アドレスと物理アドレスとを対応付けているアドレス変換テーブルの第1の論理アドレスに対するアクセスの後にアクセスされる第2の論理アドレスを前記アクセス履歴に基づき決定し、前記第2の論理アドレスに対応する第2の物理アドレスを前記第1の論理アドレスに対応付けて前記アドレス変換テーブルに登録すること、
先読みデータ管理部が、前記第2の物理アドレスに対応するデータをバッファに格納すること
を具備するメモリ管理方法。
【図1】
【図2】
【図3】
【図4】
【図5】
【図6】
【図7】
【図8】
【図9】
【図10】
【図11】
【図2】
【図3】
【図4】
【図5】
【図6】
【図7】
【図8】
【図9】
【図10】
【図11】
【公開番号】特開2012−64158(P2012−64158A)
【公開日】平成24年3月29日(2012.3.29)
【国際特許分類】
【出願番号】特願2010−209997(P2010−209997)
【出願日】平成22年9月17日(2010.9.17)
【出願人】(000003078)株式会社東芝 (54,554)
【Fターム(参考)】
【公開日】平成24年3月29日(2012.3.29)
【国際特許分類】
【出願日】平成22年9月17日(2010.9.17)
【出願人】(000003078)株式会社東芝 (54,554)
【Fターム(参考)】
[ Back to top ]