(57)【特許請求の範囲】
【請求項１】
アドレス毎に情報を記憶するメモリと、
複数の学習モデルのうちの１個の学習モデルを選択する学習モデル選択部と、
アドレスを入力し、前記学習モデル選択部により選択された学習モデルを用いて、前記入力したアドレスの履歴を基に次のアドレスを予測し、前記予測したアドレスを前記メモリに出力することにより、前記メモリに記憶されている情報を読み出すメモリコントローラと、
入力されるアドレスの履歴を基に、前記学習モデルのパラメータを学習し、前記学習モデル選択部により選択された学習モデルのパラメータを出力する学習部とを有し、
前記メモリコントローラは、前記学習部により出力されたパラメータを、前記学習モデル選択部により選択された学習モデルに適用して、前記次のアドレスを予測することを特徴とするメモリシステム。
【請求項２】
前記学習モデルは、前記学習部により学習されたパタメータを用いた関数であり、
前記学習部は、前記学習モデルの関数により予測される次のアドレスと、次に入力されたアドレスとの誤差が小さくなるように前記パラメータを学習することを特徴とする請求項１記載のメモリシステム。
【請求項３】
前記学習モデルは、サポートベクター回帰モデル又は確率的勾配降下法回帰モデルであることを特徴とする請求項１又は２記載のメモリシステム。
【請求項４】
前記メモリコントローラは、次に入力されたアドレスと前記予測したアドレスとが異なる場合には、前記予測したアドレスに基づき読み出された情報を捨て、前記次に入力されたアドレスを前記メモリに出力することにより、前記メモリに記憶されている情報を読み出すことを特徴とする請求項１〜３のいずれか１項に記載のメモリシステム。
【請求項５】
前記学習モデル選択部は、前記学習部が学習した前記アドレスの履歴数に応じて選択することを特徴とする請求項１〜４のいずれか１項に記載のメモリシステム。
【請求項６】
前記学習モデル選択部は、前記学習部が学習した前記アドレスの履歴数が閾値以上である場合には、確率的勾配降下法回帰モデルを選択し、前記学習部が学習した前記アドレスの履歴数が前記閾値未満である場合には、サポートベクター回帰モデルを選択することを特徴とする請求項１〜５のいずれか１項に記載のメモリシステム。
【請求項７】
前記メモリコントローラは、前記学習部の学習の終了後に、前記学習部が学習したパラメータを前記学習モデルに適用して、前記次のアドレスを予測することを特徴とする請求項１〜６のいずれか１項に記載のメモリシステム。
【請求項８】
前記学習部の学習は、前記メモリコントローラの予測と並列して行われることを特徴とする請求項１〜６のいずれか１項に記載のメモリシステム。
【請求項９】
前記メモリは、複数のメモリ部を有し、
前記メモリコントローラは、前記複数のメモリ部に複数のアドレスを並列に出力することにより、前記複数のメモリ部の情報を並列に読み出すことを特徴とする請求項１〜８のいずれか１項に記載のメモリシステム。
【請求項１０】
前記メモリは、フラッシュメモリであり、
前記メモリコントローラは、ソリッドステートドライブコントローラであることを特徴とする請求項１〜９のいずれか１項に記載のメモリシステム。
【請求項１１】
学習モデル選択部により、複数の学習モデルのうちの１個の学習モデルを選択し、
学習部により、入力されるアドレスの履歴を基に、前記学習モデルのパラメータを学習し、前記選択された学習モデルのパラメータを出力し、
メモリコントローラにより、アドレスを入力し、前記出力されたパラメータを、前記選択された学習モデルに適用して、前記入力したアドレスの履歴を基に次のアドレスを予測し、前記予測したアドレスをメモリに出力することにより、前記メモリに記憶されている情報を読み出すことを特徴とするメモリ制御方法。
【請求項１２】
複数の学習モデルのうちの１個の学習モデルを選択し、
入力されるアドレスの履歴を基に、前記学習モデルのパラメータを学習し、前記選択された学習モデルのパラメータを出力し、
アドレスを入力し、前記出力されたパラメータを、前記選択された学習モデルに適用して、前記入力したアドレスの履歴を基に次のアドレスを予測し、前記予測したアドレスをメモリに出力することにより、前記メモリに記憶されている情報を読み出す、
処理をコンピュータに実行させるプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、メモリシステム、メモリ制御方法及びプログラムに関する。
【背景技術】
【０００２】
オペランドデータの先読み成功率を高く保つことができる情報処理装置が知られている（特許文献１参照）。キャッシュ制御装置は、局所的にオペランドデータにアクセスする命令についてはオペランドデータのアドレスをオペランドキャッシュに格納し、オペランドデータを非局所的にアクセスするロード命令については次回アクセスされるオペランドデータのロードアドレスを先読みする。ロードアドレスの先読み方式としては、「固定間隔アドレス予測方式」と「アドレス組予測方式」とが用いられる。先読みされたロードアドレスは先読みオペランドバッファに格納され、キャッシュ制御装置はロード命令が再び実行された際に先読みオペランドバッファを索引する。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開２００２−２１５４５６号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
メモリへのアクセスが空間的局所性を持つことを利用して、過去にアクセスしたアドレスに対して連続したアドレスのデータを先読みするシーケンシャル先読み技術が知られている。しかし、シーケンシャル先読み技術は、メモリへのアクセスが空間的局所性を持つことを前提とした技術であり、空間的局所性がない場合には次にアクセスするアドレスの予測が困難になるという課題がある。
【０００５】
本発明の目的は、次に読み出すアドレスの予測の成功率を向上させることができるメモリシステム、メモリ制御方法及びプログラムを提供することである。
【課題を解決するための手段】
【０００６】
メモリシステムは、アドレス毎に情報を記憶するメモリと、複数の学習モデルのうちの１個の学習モデルを選択する学習モデル選択部と、アドレスを入力し、前記学習モデル選択部により選択された学習モデルを用いて、前記入力したアドレスの履歴を基に次のアドレスを予測し、前記予測したアドレスを前記メモリに出力することにより、前記メモリに記憶されている情報を読み出すメモリコントローラと、入力されるアドレスの履歴を基に、前記学習モデルのパラメータを学習し、前記学習モデル選択部により選択された学習モデルのパラメータを出力する学習部とを有し、前記メモリコントローラは、前記学習部により出力されたパラメータを、前記学習モデル選択部により選択された学習モデルに適用して、前記次のアドレスを予測する。
【発明の効果】
【０００７】
学習モデルを用いることにより、次に読み出すアドレスの予測の成功率を向上させることができる。
【図面の簡単な説明】
【０００８】
【図１】図１は、第１の実施形態によるメモリシステムの構成例を示す図である。
【図２】図２は、アドレスの履歴を示す図である。
【図３】図３は、学習部の学習を示す図である。
【図４】図４は、メモリシステムのメモリ制御方法を示すフローチャートである。
【図５】図５は、図４のステップＳ４０３の処理の詳細を示すフローチャートである。
【図６】図６は、シーケンシャル割合に対する実行時間のシミュレーション結果を示す図である。
【図７】図７は、第２の実施形態によるメモリシステムの構成例を示す図である。
【発明を実施するための形態】
【０００９】
（第１の実施形態）
図１は、第１の実施形態によるメモリシステムの構成例を示す図である。メモリシステムは、コンピュータシステム１０１及び学習システム１０２を有する。コンピュータシステム１０１は、中央処理ユニット（ＣＰＵ）１１１、メモリバス１１２、メモリコントローラ１１３及びメモリ１１５を有する。メモリコントローラ１１３は、第１の学習モデル１１４ａ及び第２の学習モデル１１４ｂを有する。第１の学習モデル１１４ａは、例えば、サポートベクター（ＳＶ：Support Vector）回帰モデルである。第２の学習モデル１１４ｂは、例えば、確率的勾配降下法（ＳＧＤ：Stochastic Gradient Descent）回帰モデルである。メモリ１１５は、インターリーブ形式の複数のメモリバンク（メモリ部）１１６ａ〜１１６ｄを有し、アドレス毎に情報を記憶する。
【００１０】
メモリバンク１１６ａ〜１１６ｄは、ＤＲＡＭ（Dynamic Random Access Memory）の他、次世代のメモリデバイスとして期待されているＭＲＡＭ（Magnetoresistive Random Access Memory）、ＲｅＲＡＭ（Resistive Random Access Memory）、ＰＣＭ（Phase Change Random Access Memory）でもよい。
【００１１】
学習システム１０２は、アドレス取得部１２１、学習モデル選択部１２２及び学習部１２３を有する。学習部１２３は、第１の学習部１２４ａ及び第２の学習部１２４ｂを有し、統計的機械学習を行う。第１の学習部１２４ａは、第１の学習モデル１１４ａのための学習部であり、第１の学習モデル１１４ａに用いるパラメータを学習する。第２の学習部１２４ｂは、第２の学習モデル１１４ｂのための学習部であり、第２の学習モデル１１４ｂに用いるパラメータを学習する。
【００１２】
学習部１２３の学習方法には、事前学習タイプ及びリアルタイム学習タイプの２種類がある。まず、事前学習タイプについて説明する。まず、学習モードにおいて、ＣＰＵ１１１は、メモリ１１５にアクセス（読み出し）を行うためのアドレスをメモリバス１１２に出力する。メモリバス１１２には、時系列順に、アクセスされるアドレスが順に出力される。アドレス取得部１２１は、メモリバス１１２のアドレスＡ１を取得し、アドレスの履歴Ａ２を学習部１２３に出力する。アドレス取得部１２１は、アドレス履歴Ａ２を記憶をする記憶部を有する。アドレスの履歴Ａ２は、図２に示すように、時系列順にアクセスされるアドレスの履歴である。第１の学習部１２４ａは、アドレスの履歴Ａ２を基に、第１の学習モデル１１４ａのためのパラメータを学習する。第２の学習部１２４ｂは、アドレスの履歴Ａ２を基に、第２の学習モデル１１４ｂのためのパラメータを学習する。学習のパラメータが収束すると、学習モードが終了し、パラメータが決定する。
【００１３】
次に、通常モードにおいて、ＣＰＵ１１１は、メモリ１１５にアクセス（読み出し）を行うためのアドレスをメモリバス１１２に出力する。アドレス取得部１２１は、メモリバス１１２のアドレスＡ１を取得し、アドレス履歴情報Ａ３を学習モデル選択部１２２に出力する。学習モデル選択部１２２は、アドレス履歴情報Ａ３を基に、第１の学習モデル１１４ａ及び第２の学習モデル１１４ｂのうちから最適なものを選択する。学習モデル選択部１２２は、第１の学習モデル１１４ａを選択する場合には、選択信号Ａ４によりメモリコントローラ１１３内の第１の学習モデル１１４ａを選択し、選択信号Ａ５により学習部１２３内の第１の学習部１２４ａを選択する。また、学習モデル選択部１２２は、第２の学習モデル１１４ｂを選択する場合には、選択信号Ａ４によりメモリコントローラ１１３内の第２の学習モデル１１４ｂを選択し、選択信号Ａ５により学習部１２３内の第２の学習部１２４ｂを選択する。学習部１２３は、第１の学習部１２４ａが選択された場合には、第１の学習部１２４ａが学習したパラメータＡ６をメモリコントローラ１１３に出力する。また、学習部１２３は、第２の学習部１２４ｂが選択された場合には、第２の学習部１２４ｂが学習したパラメータＡ６をメモリコントローラ１１３に出力する。メモリコントローラ１１３は、学習モデル選択部１２２により選択された第１の学習モデル１１４ａ又は第２の学習モデル１１４ｂを用いて、メモリバス１１２から入力したアドレスの履歴を基に次のアドレスを予測し、予測したアドレスをメモリ１１５に出力することにより、メモリ１１５に記憶されている情報を読み出す。具体的には、学習モデル選択部１２２が第１の学習モデル１１４ａを選択した場合、メモリコントローラ１１３は、第１の学習部１２４ａが学習したパラメータＡ６を第１の学習モデル１１４ａに適用して、メモリバス１１２から入力したアドレスの履歴を基に次のアドレスを予測する。また、学習モデル選択部１２２が第２の学習モデル１１４ｂを選択した場合、メモリコントローラ１１３は、第２の学習部１２４ｂが学習したパラメータＡ６を第２の学習モデル１１４ｂに適用して、メモリバス１１２から入力したアドレスの履歴を基に次のアドレスを予測する。
【００１４】
メモリコントローラ１１３は、メモリバス１１２から次に入力されたアドレスと上記の予測したアドレスとが同じ場合には、予測成功として、上記の予測したアドレスに基づき読み出された情報をすぐにＣＰＵ１１１に出力する。これに対し、メモリコントローラ１１３は、メモリバス１１２から次に入力されたアドレスと上記の予測したアドレスとが異なる場合には、予測失敗として、上記の予測したアドレスに基づき読み出された情報を捨て、上記の次に入力されたアドレスをメモリ１１５に出力することにより、メモリ１１５に記憶されている情報を読み出す。そして、メモリコントローラ１１３は、その読み出した情報をＣＰＵ１１１に出力する。上記の処理は、投機的な読み出しである。これにより、メモリコントローラ１１３は、ＣＰＵ１１１から読み出し要求（アドレスを含む）を入力すると、即時にメモリ１１５から読み出した情報をＣＰＵ１１１に出力することが可能になり、読み出し速度を向上させることができる。
【００１５】
以上のように、事前学習タイプでは、メモリコントローラ１１３は、学習部１２３の学習の終了後に、第１の学習部１２４ａ又は第２の学習部１２４ｂが学習したパラメータＡ６を第１の学習モデル１１４ａ又は第２の学習部１１４ｂに適用して、次のアドレスを予測する。
【００１６】
次に、リアルタイム学習タイプについて説明する。以下、リアルタイム学習タイプが上記の事前学習タイプと異なる点を説明する。ＣＰＵ１１１は、メモリ１１５にアクセス（読み出し）を行うためのアドレスをメモリバス１１２に出力する。アドレス取得部１２１は、メモリバス１１２のアドレスＡ１を取得し、アドレスの履歴Ａ２を学習部１２３に出力し、アドレス履歴情報Ａ３を学習モデル選択部１２２に出力する。第１の学習部１２４ａは、アドレスの履歴Ａ２を基に、第１の学習モデル１１４ａのためのパラメータを学習する。第２の学習部１２４ｂは、アドレスの履歴Ａ２を基に、第２の学習モデル１１４ｂのためのパラメータを学習する。学習モデル選択部１２２は、アドレス履歴情報Ａ３を基に、第１の学習モデル１１４ａ及び第２の学習モデル１１４ｂのいずれかを選択する。学習部１２３は、第１の学習モデル１１４ａが選択された場合には、第１の学習部１２４ａが学習したパラメータＡ６をメモリコントローラ１１３に出力する。また、学習部１２３は、第２の学習モデル１１４ｂが選択された場合には、第２の学習部１２４ｂが学習したパラメータＡ６をメモリコントローラ１１３に出力する。メモリコントローラ１１３は、学習部１２３が出力したパラメータＡ６を、学習モデル選択部１２２により選択された第１の学習モデル１１４ａ又は第２の学習モデル１１４ｂに適用し、メモリバス１１２から入力したアドレスの履歴を基に次のアドレスを予測し、予測したアドレスをメモリ１１５に出力することにより、メモリ１１５に記憶されている情報を読み出す。
【００１７】
以上のように、リアルタイム学習タイプでは、学習部１２３の学習は、メモリコントローラ１１３の予測と並列して行われる。これにより、学習部１２３の事前学習が不要になる。
【００１８】
メモリ１１５は、複数のメモリバンク１１６ａ〜１１６ｄが並列処理することにより、アクセス速度を向上させることができる。メモリ１１５へのアクセスは空間的局所性を有するので、メモリ１１５は連続したアドレス順にアクセスされることが多い。メモリバンク１１６ａ〜１１６ｄは、インターリーブ形式でアドレスが割り当てられている。例えば、１００番地のアドレスはメモリバンク１１６ａに割り当てられ、１０１番地のアドレスはメモリバンク１１６ｂに割り当てられ、１０２番地のアドレスはメモリバンク１１６ｃに割り当てられ、１０３番地のアドレスはメモリバンク１１６ｄに割り当てられ、１０４番地のアドレスはメモリバンク１１６ａに割り当てられ、１０５番地のアドレスはメモリバンク１１６ｂに割り当てられる。メモリコントローラ１１３は、過去の複数サイクルのアドレスの履歴を基に、例えば１００番地のアドレス１１７ａを予測する。そして、メモリコントローラ１１３は、過去の複数サイクルのアドレスの履歴及び予測したアドレス１１７ａを基に、例えば１０１番地のアドレス１１７ｂを予測する。そして、メモリコントローラ１１３は、過去の複数サイクルのアドレスの履歴及び予測したアドレス１１７ａ，１１７ｂを基に、例えば１０２番地のアドレス１１７ｃを予測する。そして、メモリコントローラ１１３は、過去の複数サイクルのアドレスの履歴及び予測したアドレス１１７ａ，１１７ｂ，１１７ｃを基に、例えば１０３番地のアドレス１１７ｄを予測する。その後、メモリコントローラ１１３は、予測したアドレス１１７ａをメモリバンク１１６ａに、予測したアドレス１１７ｂをメモリバンク１１６ｂに、予測したアドレス１１７ｃをメモリバンク１１６ｃに、予測したアドレス１１７ｄをメモリバンク１１６ｄに、並列に出力する。すると、メモリバンク１１６ａ〜１１６ｄは、それぞれ、アドレス１１７ａ〜１１７ｄの４個の情報を並列に読み出し、その読み出した４個の情報をメモリコントローラ１１３に並列に出力する。この並列処理により、読み出し速度を高速化することができる。
【００１９】
なお、メモリコントローラ１１３は、２個の学習モデル１１４ａ及び１１４ｂを有する場合に限定されず、１個又は３個以上の学習モデルを有していてもよい。同様に、学習部１２３も、１個又は３個以上の学習部を有していてもよい。統計的機械学習における学習モデルは様々な種類があり、メモリコントローラ１１３が全ての学習モデルを有することができるが、それが困難である場合には、メモリコントローラ１１３は、代表的な複数の学習モデルを保持することができる。その場合、学習モデル選択部１２２は、それぞれの学習モデルの長所及び短所を基に、アドレス履歴情報Ａ３に応じて最適な学習モデルを選択する。
【００２０】
第１の学習モデル１１４ａがＳＶ回帰モデルである例を説明する。ＳＶ回帰モデルの関数ｆ（ｘ）は、次式（１）で表される。
ｆ（ｘ）＝ｘTｗ＋ｂ      ・・・（１）
【００２１】
ここで、ｘは、過去の複数サイクル（例えば４サイクル）のアドレス履歴の行列である。ｘTは、行列ｘの転置行列である。ｗ及びｂは、パラメータである。ｗは、列ベクトルの行列である。ｂは、スカラーである。ｆ（ｘ）は、学習したい関数であり、アドレス履歴ｘの次のアドレスを表す。メモリコントローラ１１３は、アドレス履歴ｘを入力し、第１の学習モデル１１４ａの関数ｆ（ｘ）を演算し、ｆ（ｘ）の値を次のアドレスとして予測し、予測されたアドレスｆ（ｘ）をメモリ１１５に出力する。
【００２２】
第１の学習部１２４ａは、次式（２）の最適化問題を最小二乗法などにより解くことにより、ＳＶ回帰モデルのパラメータｗ及びｂを学習により決定する。
【００２３】
【数１】
0006468100.tif 000002
【００２４】
ここで、ｘi及びｙiは、図１のアドレスＡ２に対応する。ｘiは、例えば４サイクル分のアドレス履歴である。ｙiは、アドレス履歴ｘiの次のアドレスである。Ｎは、学習するアドレス履歴数である。||ｗ||は、列ベクトルｗのノルムを表す。λは、過学習を防ぐための正則化項である。関数ξは、許容誤差εの関数である。ξ（ｒ）は、｜ｒ｜＜εである場合には「ξ（ｒ）＝０」であり、それ以外の場合には「ξ（ｒ）＝｜ｒ｜−ε」である。ｒは、ｙi−ｆ（ｘi）である。ｆ（ｘi）は、ｘ＝ｘiの場合のｆ（ｘ）の値である。
【００２５】
第１の学習部１２４ａは、式（２）の値が最小になるようなパラメータｗ及びｂを決定し、パラメータｗ及びｂをパラメータＡ６としてメモリコントローラ１１３に出力する。すなわち、第１の学習部１２４ａは、図３に示すように、第１の学習モデル１１４ａの関数ｆ（ｘ）により予測される次のアドレスｆ（ｘi）と、次に入力されたアドレスｙiとの誤差が小さくなるようにパラメータｗ及びｂを学習する。学習部１２３は、多量の行列演算を行うので、行列演算に特化したハードウエアが好ましい。メモリコントローラ１１３は、第１の学習部１２４ａが決定したパラメータｗ及びｂを、式（１）の第１の学習モデル１１４ａの関数ｆ（ｘ）に適用し、次のアドレスを予測する。
【００２６】
メモリコントローラ１１３は、読み出し要求があった場合に、次に入力されるであろうアドレスを予測し、そのアドレスに対して投機的に読み出しを行う。また、この先読みは、メモリバンク１１６ａ〜１１６ｄの並列数分だけ行うことが望ましい。もし、予測したアドレスのメモリバンクが、既にアクセス中のメモリバンクである場合は、先読みは行えないため、読み出しを保留し、先行していたアクセスが完了次第、先読みを再開する。
【００２７】
例えば、第１の学習モデル１１４ａがＳＶ回帰モデルであり、第２の学習モデル１１４ｂがＳＧＤ回帰モデルである例を説明する。ＳＶ回帰モデルは、少ない学習アドレス履歴数でも高い汎化能力がある。これに対し、ＳＧＤ回帰モデルは、大規模なアドレス履歴数に向いていて、数学的に最適解が得られることが証明されている。学習モデル選択部１２２は、学習部１２３が学習したアドレス履歴数が閾値（例えば１００Ｋ）以上である場合にはＳＧＤ回帰モデルを選択し、学習部１２３が学習したアドレス履歴数が閾値（例えば１００Ｋ）未満である場合にはＳＶ回帰モデルを選択する。
【００２８】
図４は、メモリシステムのメモリ制御方法を示すフローチャートである。ステップＳ４０１では、ＣＰＵ１１１は、ワークロードを実行することにより、メモリ１１５に対するアクセス処理を開始する。ワークロードは、例えば、データベースアクセス処理又はウェブ（Ｗｅｂ）サーバ処理等である。ＣＰＵ１１１は、アドレスを含む読み出し要求をメモリバス１１２に出力する。
【００２９】
次に、ステップＳ４０２では、アドレス取得部１２１は、メモリバス１１２を介して、ＣＰＵ１１１が出力するアドレスＡ１を取得し、アドレス履歴情報Ａ３を学習モデル選択部１２２に出力する。
【００３０】
次に、ステップＳ４０３では、学習モデル選択部１２２は、アドレス履歴情報Ａ３を基に、複数の学習モデルのうちの最適な１個の学習モデルを選択する。
【００３１】
図５は、図４のステップＳ４０３の処理の詳細を示すフローチャートである。ステップＳ５０１では、学習モデル選択部１２２は、アドレス履歴情報Ａ３を基に、学習部１２３が学習したアドレス履歴数が閾値（例えば１００Ｋ）以上であるか否かを判定する。学習部１２３が学習したアドレス履歴数が閾値（例えば１００Ｋ）以上である場合には、ステップＳ５０２に進み、学習部１２３が学習したアドレス履歴数が閾値（例えば１００Ｋ）未満である場合には、ステップＳ５０３に進む。ステップＳ５０２では、学習モデル選択部１２２は、第２の学習モデル（ＳＧＤ回帰モデル）１１４ｂを選択する。ステップＳ５０３では、学習モデル選択部１２２は、第１の学習モデル（ＳＶ回帰モデル）１１４ａを選択する。
【００３２】
なお、リアルタイム学習タイプの場合、学習モデル選択部１２２は、アドレス履歴数が閾値未満である場合には、ＳＶ回帰モデルを選択し、アドレス履歴数が閾値以上になった後、ＳＧＤ回帰モデルを選択する。すなわち、学習モデル選択部１２２は、最初はＳＶ回帰モデルを選択し、学習量が閾値を超えた後はＳＧＤ回帰モデルを選択する。
【００３３】
その後、図４に戻り、ステップＳ４０４では、学習モデル選択部１２２が第１の学習モデル１１４ａを選択した場合、第１の学習部１２４ａが第１の学習モデル１１４ａのパラメータを決定する。また、学習モデル選択部１２２が第２の学習モデル１１４ｂを選択した場合、第２の学習部１２４ｂが第２の学習モデル１１４ｂのパラメータを決定する。
【００３４】
次に、ステップＳ４０５では、学習モデル選択部１２２は、ステップＳ４０３で選択した学習モデルの選択信号Ａ４をメモリコントローラ１１３に出力する。学習部１２３は、ステップＳ４０４で決定したパラメータＡ６をメモリコントローラ１１３に出力する。
【００３５】
次に、ステップＳ４０６では、メモリコントローラ１１３は、学習部１２３から入力したパラメータＡ６を、学習モデル選択部１２２により選択された学習モデル１１４ａ又は１１４ｂに適用して、次のアドレスを予測し、その予測したアドレスをメモリ１１５内のメモリバンク１１６ａ〜１１６ｄに出力することにより、メモリ１１５内のメモリバンク１１６ａ〜１１６ｄに記憶されている情報を読み出す。
【００３６】
図６は、シーケンシャル割合に対する実行時間のシミュレーション結果を示す図である。シーケンシャル割合は、メモリアクセスアドレスのシーケンシャル割合を示す。実行時間は、メモリアクセスの実行時間を示す。このシミュレーションにおいて、学習数は５１２であり、メモリバンクの並列数は８である。
【００３７】
特性線６０１は、すべてのアドレス入力を予め知っている場合の理想の特性を示す。特性線６０２は、本実施形態によるアドレス予測の特性を示す。特性線６０３は、シーケンシャル予測による特性を示す。本実施形態の特性線６０２は、特性線６０１及び６０３の間の特性を示し、シーケンシャル予測の特性線６０３より予測の成功率が高いことがわかる。
【００３８】
本実施形態によれば、学習部１２３がアドレス履歴の規則性を抽出するので、人手による予測が不要になる。また、空間的局所性がある場合にはシーケンシャル予測が可能であるが、空間的局所性がない場合にはシーケンシャル予測が困難である。本実施形態では、学習モデルを用いることにより、空間的局所性の有無にかかわらず、次に読み出すアドレスの予測の成功率を向上させることができる。その結果、メモリ１１５へのアクセスを高速化することができる。
【００３９】
（第２の実施形態）
図７は、第２の実施形態によるメモリシステムの構成例を示す図である。本実施形態のメモリシステムは、ソリッドステートドライブ（ＳＳＤ）のメモリシステムである。以下、本実施形態が第１の実施形態と異なる点を説明する。図７のストレージバス７１２は、図１のメモリバス１１２の代わりに設けられる。図７のＳＳＤコントローラ７１３は、図１のメモリコントローラ１１３の代わりに設けられる。図７のメモリ７１５は、図１のメモリ１１５の代わりに設けられる。図７のＮＡＮＤフラッシュメモリ部７１６ａ〜７１６ｄは、メモリ７１５内に設けられ、図１のメモリバンク１１６ａ〜１１６ｄの代わりに設けれる。
【００４０】
ストレージバス７１２は、ＳＡＴＡ（Serial ATA）やＳＡＳ（Serial Attached SCSI）などのストレージ向けのバス、又はＰＣＩ−Ｅｘｐｒｅｓｓなどの汎用的なバス等である。また、学習システム１０２は、メモリアクセスと比べて低速なため、リアルタイム学習タイプの場合、学習に長時間かかる学習モデルのアルゴリズムを採用することができる。また、メモリ７１５は、一般的なＳＳＤで使われているＮＡＮＤフラッシュメモリ部７１６ａ〜７１６ｄの他に、次世代不揮発メモリとして期待されているＲｅＲＡＭ（Resistive Random Access Memory）、ＰＣＭ（Phase Change Random Access Memory）、ＭＲＡＭ（Magnetoresistive Random Access Memory）などを有するものでもよい。
【００４１】
第１及び第２の実施形態では、メモリコントローラ１１３，７１３、アドレス取得部１２１、学習モデル選択部１２２及び学習部１２３は、コンピュータがプログラムを実行することによって実現することもできる。また、上記のプログラムを記録したコンピュータ読み取り可能な記録媒体及び上記のプログラム等のコンピュータプログラムプロダクトも本発明の実施形態として適用することができる。記録媒体としては、例えばフレキシブルディスク、ハードディスク、光ディスク、光磁気ディスク、ＣＤ−ＲＯＭ、磁気テープ、不揮発性のメモリカード、ＲＯＭ等を用いることができる。
【００４２】
なお、上記実施形態は、何れも本発明を実施するにあたっての具体化の例を示したものに過ぎず、これらによって本発明の技術的範囲が限定的に解釈されてはならないものである。すなわち、本発明はその技術思想、又はその主要な特徴から逸脱することなく、様々な形で実施することができる。
【符号の説明】
【００４３】
１０１  コンピュータシステム
１０２  学習システム
１１１  中央処理ユニット（ＣＰＵ）
１１２  メモリバス
１１３  メモリコントローラ
１１４ａ  第１の学習モデル
１１４ｂ  第２の学習モデル
１１５  メモリ
１１６ａ〜１１６ｄ  メモリバンク
１２１  アドレス取得部
１２２  学習モデル選択部
１２３  学習部
１２４ａ  第１の学習部
１２４ｂ  第２の学習部
【図１】
0006468100.tif 000003
【図２】
0006468100.tif 000004
【図３】
0006468100.tif 000005
【図４】
0006468100.tif 000006
【図５】
0006468100.tif 000007
【図６】
0006468100.tif 000008
【図７】
0006468100.tif 000009