(57)【要約】【課題】本発明は、メモリアクセスのオーバーヘッドを削減すると共に、メモリやＣＰＵ、メモリにデータ供給する外部デバイス等の利用効率を上げ、システム全体の性能を向上させることの出来るキャッシュメモリシステム、ＣＰＵコア及びキャッシュメモリ制御方法を提供することを課題とする。【解決手段】上位メモリデータ格納装置２４は、ＣＰＵコア１１が参照したデータが前記更新されるデータであるとき、更新されたデータを下位メモリ階層１２から読み出し、上位メモリ階層１５にデータを格納する。メモリロック装置２３は、上位メモリ格納部２４が上位メモリ階層１５にデータを格納したとき、上位メモリ階層１５をロックする。【選択図】図１
2010003137.tif 000002
【特許請求の範囲】
【請求項１】
ＣＰＵ、及び少なくとも上位メモリ階層と下位メモリ階層の２階層を備えるメモリ階層を備え、前記下位メモリ階層に供給されるデータを前記ＣＰＵが書き換えを行わないキャッシュメモリシステムにおいて、
前記下位メモリ階層上の更新されるデータのアドレスを記憶する領域格納部と、
前記ＣＰＵが参照したデータのアドレスと前記領域格納部内のアドレスを比較し、当該ＣＰＵが参照したデータが前記更新されるデータであるとき、前記更新されるデータを前記下位メモリ階層から読み出し、前記上位メモリ階層にデータを格納する上位メモリデータ格納部と、
前記上位メモリ格納部が前記上位メモリ階層にデータを格納した後に、前記上位メモリ階層をロックするメモリロック部と、
を備えることを特徴とするキャッシュメモリシステム。
【請求項２】
前記ＣＰＵが前記上位メモリ階層を参照するに当たって、予め設定した条件を満たしたとき、前記ＣＰＵに通知を行う条件完了通知部を更に備え、
前記条件完了通知部による前記ＣＰＵへの通知に対して、前記ＣＰＵは、前記下位メモリ階層へのデータ転送を指示することを特徴とする請求項１に記載のキャッシュメモリシステム。
【請求項３】
前記領域格納部は、前記上位メモリデータ格納部が前記下位メモリ階層から前記上位メモリ階層に格納するデータの大きさを格納し、
前記上位メモリデータ格納部が前記下位メモリ階層から前記上位メモリ階層にデータを格納する際、一度に前記データの大きさ分格納することを特徴とする請求項１に記載のキャッシュメモリシステム。
【請求項４】
順次データが更新される下位メモリ階層と接続されたＣＰＵコアにおいて
前記下位メモリ階層より高速な上位メモリ階層と、
メモリからデータを読み出して処理を行う命令実行部と、
前記下位メモリ階層上の更新されるデータのアドレスを記憶する領域格納部と、
前記命令実行部が参照したデータのアドレスと前記領域格納部内のアドレスを比較し、当該ＣＰＵが参照したデータが前記下位メモリ階層のデータであるとき、当該下位メモリ階層からデータを読み出し、前記上位メモリ階層に    データを格納する上位メモリデータ格納部と、
前記命令実行部がメモリを参照する際に、予め設定されている条件を満たしたなら前記下位メモリ階層上のデータの更新を指示する条件完了通知部と、
を備えることを特徴とするＣＰＵコア。
【請求項５】
順次データが更新される下位メモリ階層と接続されたＣＰＵコアによるキャッシュメモリ制御方法において、
命令を実行する命令実行部が参照したデータのアドレスと、前記下位メモリ階層上の更新されるデータのアドレスを比較し、当該ＣＰＵが参照したデータが前記下位メモリ階層のデータであるとき、当該下位メモリ階層からデータを読み出し、前記下位メモリ階層より高速な上位メモリ階層にデータを格納し、
前記命令実行部がメモリを参照する際に、予め設定されている条件を満たしたなら前記下位メモリ階層上のデータの更新を指示する
ことを特徴とするキャッシュメモリ制御方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、キャッシュメモリシステムに関する。
【背景技術】
【０００２】
図９に本発明の前提となる従来のキャッシュメモリシステムを示す。
図９のキャッシュメモリシステム１００ａでは、メモリアクセス性能を向上させるため、ＣＰＵ１０１と下位メモリ階層１０３の間に上位メモリ階層（キャッシュメモリ）１０２が設けられている。この上位メモリ階層１０２は下位メモリ階層１０３よりアクセス速度は速いが、下位メモリ階層１０３よりメモリ容量が小さい。
【０００３】
このような構成のキャッシュメモリシステム１００ａにおいて、アクセラレータ等の外部デバイス１０４から出力されるデータＡが下位メモリ階層１０３に置かれ、ＣＰＵ１０１が外部デバイス１０４が出力したデータＡを参照し、何らかの演算をするケースを考える。
【０００４】
このケースでは、ＣＰＵ１０１がデータＡに対する全ての処理を終了するまで、下位メモリ階層１０３にはデータＡが保持され続け、ＣＰＵ１０１がデータＡに対する処理を終了すると、ＣＰＵ１０１は上位メモリ階層１０２と下位メモリ階層１０３のデータを無効化した後、外部デバイス１０４に次のデータＢを下位メモリ階層１０３に書き込む処理に取り掛からせる。したがって外部デバイス１０４に待ち時間が生じて、処理効率が悪い。
【０００５】
図９に示す方法ではシステム全体性能が上がらないため、下位メモリ階層１０３をダブルバッファにしたキャッシュメモリシステム１００ｂの構成を取ることが多い。
図１０に下位メモリ階層をダブルバッファにしたキャッシュメモリシステム１００ｂの構成を示す。
【０００６】
ダブルバッファのキャッシュメモリシステム１００ｂでは、下位メモリ階層１０３上の上位メモリ階層１０２にムーブインされたデータが記録されていた領域に次のデータをオーラップ処理する。
【０００７】
図１０に示すように下位メモリ階層１０３をダブルバッファ構成とすると、データＡの処理とデータＢの処理をオーバーラップさせることが出来るので、図９のキャッシュメモリシステムに比べて全体的なスループットが向上する。
【０００８】
なおキャッシュメモリシステムの構成としては、様々なものが提案されており、一例として、特許文献１には、データの処理時間を短縮するために、プロセッサからの命令の有無に関わらず、事前にキャッシュメモリにデータを読み込んでおくキャッシュメモリシステムが開示されている。
【０００９】
また特許文献２には、上位のキャッシュメモリと下位のキャッシュメモリが同時に同じデータを持たないようにして、メモリ容量を有効に活用するようにしたキャッシュメモリシステムが開示されている。
【００１０】
更に特許文献３に開示のあるキャッシュメモリシステムでは、データとタグとを保持する複数のエントリからなる複数のウェイ毎に、優先して格納すべきデータの種類を示す優先属性を保持する。これにより優先属性を持つデータに対してウェイを確保すると同時に、ウェイ中の空きエントリは他の属性を持つデータを格納するので、キャッシュメモリを
有効活用できる。
【特許文献１】特開平９−１２８２９６号公報
【特許文献２】特開平５−１２７９９７号公報
【特許文献３】特開２００５−３４６２６８号公報
【発明の開示】
【発明が解決しようとする課題】
【００１１】
従来のキャッシュメモリシステムではプログラムの実行状態によっては、上位メモリ階層のデータが下位メモリ階層に追い出される可能性があったため、プログラムが第１のデータの使用が完了するまで、下位メモリ階層に次の第２のデータを置くことができなかった。
【００１２】
これを回避するため、下位メモリ階層をダブルバッファ構成にすることで、第１のデータの処理と次の第２のデータの処理をオーバーラップさせていた。
しかし図１０に示すダブルバッファによるキャッシュメモリシステムでは、これからＣＰＵ１０１が利用することが分かっているデータが下位メモリ階層１０３にあった場合、ＣＰＵ１０１がそのデータを実際に利用するタイミングになって初めて下位メモリ階層１０３から読み出すため、リードレイテンシが長くなる。そしてこの点がボトルネックとなり性能の向上が望めない。
【００１３】
そこで本発明は、メモリアクセスのオーバーヘッドを削減すると共に、メモリやＣＰＵ、メモリにデータ供給する外部デバイス等の利用効率を上げ、システム全体の性能を向上させることの出来るキャッシュメモリシステム、ＣＰＵコア及びキャッシュメモリ制御方法を提供することを課題とする。
【課題を解決するための手段】
【００１４】
本発明によるキャッシュメモリシステムは、ＣＰＵ、及び少なくとも上位メモリ階層と下位メモリ階層の２階層を備えるメモリ階層を備え、前記下位メモリ階層に供給されるデータを前記ＣＰＵが書き換えを行わないことを前提とし、領域格納部、上位メモリデータ格納部、及びメモリロック部を備える。
【００１５】
領域格納部は、前記下位メモリ階層上の更新されるデータのアドレスを記憶する。
上位メモリデータ格納部は、前記ＣＰＵが参照したデータのアドレスと前記領域格納部内のアドレスを比較し、当該ＣＰＵが参照したデータが前記更新されるデータであるとき、前記更新されるデータを前記下位メモリ階層から読み出し、前記上位メモリ階層にデータを格納する。
【００１６】
メモリロック部は、前記上位メモリ格納部が前記上位メモリ階層にデータを格納した後に、前記上位メモリ階層をロックする。
また本発明によるＣＰＵコアは、順次データが更新される下位メモリ階層と接続されたＣＰＵコアであって、前記下位メモリ階層より高速な上位メモリ階層と、メモリからデータを読み出して処理を行う命令実行部と、前記下位メモリ階層上の更新されるデータのアドレスを記憶する領域格納部と、前記命令実行部が参照したデータのアドレスと前記領域格納部内のアドレスを比較し、当該ＣＰＵが参照したデータが前記下位メモリ階層のデータであるとき、当該下位メモリ階層からデータを読み出し、前記上位メモリ階層にデータを格納する上位メモリデータ格納部と、前記命令実行部がメモリを参照する際に、予め設定されている条件を満たしたなら前記下位メモリ階層上のデータの更新を指示する条件完了通知部と、を備えることを特徴とする。
【００１７】
更に本発明によるキャッシュメモリ制御方法は、順次データが更新される下位メモリ階
層と接続されたＣＰＵコアによるキャッシュメモリ制御方法であって、命令を実行する命令実行部が参照したデータのアドレスと、前記下位メモリ階層上の更新されるデータのアドレスを比較し、当該ＣＰＵが参照したデータが前記下位メモリ階層のデータであるとき、当該下位メモリ階層からデータを読み出し、前記下位メモリ階層より高速な上位メモリ階層にデータを格納し、前記命令実行部がメモリを参照する際に、予め設定されている条件を満たしたなら前記下位メモリ階層上のデータの更新を指示する、ことを特徴とする。
【発明の効果】
【００１８】
本キャッシュメモリシステムによれば、メモリアクセスのオーバーヘッド削減と、メモリや外部デバイスやＣＰＵの利用効率を向上し、システム全体の性能を向上することができる。
【００１９】
また従来のシステムより下位メモリ階層を小さく構成することが出来、システム全体の縮小及び低コスト化を実現することが出来る。
【発明を実施するための最良の形態】
【００２０】
以下に図面を参照しながら本発明の一実施形態について説明する。
図１は本実施形態のキャッシュメモリシステムが前提とするシステムのイメージ図である。
【００２１】
本実施形態のキャッシュメモリシステム１は、ＣＰＵコア１１、下位メモリ階層１２、及び下位メモリ階層１２に大量かつ連続してデータを書き込むハードウェアアクセラレータ等の外部デバイス１３がバス１４を介して接続される構成となっている。またＣＰＵコア１１は、内部に上位メモリ階層１５を備えている。
【００２２】
なお順次下位メモリ階層１２にデータが書き込まれてゆく状況にありさえすれば、下位メモリ階層１２にデータを供給するものは外部デバイス１３に限定されるものではなく、キャッシュメモリシステム１内に外部デバイス１３を備えなくても良い。
【００２３】
図１のキャッシュメモリシステム１において、外部デバイス１３は下位メモリ階層１２に順次データを書き込んでゆき、ＣＰＵコア１１はこのデータを上位メモリ階層１５を介して参照する。なおＣＰＵコア１１は、データを参照するのみで改変は行わないものとする。
【００２４】
以下の説明では、キャッシュメモリシステム１が動画のデコード処理を行なうシステムに用いられる場合を例として説明する。
この場合外部デバイス１３はＤＭＡＣであり、ネットワーク等から定期的に動画ストリームを取得し下位メモリ階層１２であるメインメモリに転送する動作を行ない、上位メモリ階層１５であるキャッシュメモリを持つＣＰＵコア１１はその動画ストリームを取り込みデコード処理を行ない画像データを出力するものとする。
【００２５】
次に本実施形態のキャッシュメモリシステム１の動作を説明する。
図２は本実施形態のキャッシュメモリシステム１の動作を説明する図である。
同図においてＣＰＵコア１１は、キャッシュメモリシステム１の動作制御を行うために、上位メモリ解放装置２１、条件完了通知装置２２、上位メモリロック装置２３、上位メモリデータ格納装置２４及び領域格納装置２５を備えている。
【００２６】
上位メモリ解放装置２１は、ＣＰＵコア１１からの指示に基づいて、上位メモリロック装置２３がロックした上位メモリ階層１５を解放する。条件完了通知装置２２は、予め設定した条件を満たしたらＣＰＵコア１１に通知するもので、この通知を受けてＣＰＵコア
１１は、外部デバイス１３に対して次のデータ処理を行うよう指示する。上位メモリロック装置２３は、上位メモリ階層１５に格納したデータが追い出されないようロックする。上位メモリデータ格納装置２４は、指定領域を下位メモリ階層１２から一度に読み出し、上位メモリ階層１５にデータを格納する。領域格納装置２５は、外部デバイス１３が更新するメモリ領域の開始番地と終了番地を記憶する。
【００２７】
このような構成において、まず外部デバイス１３が、下位メモリ階層１２にデータを書き込み、データの更新を行う（１）。次に外部デバイス１３は、下位メモリ階層１２の更新が完了したことをＣＰＵコア１１に通知する（２）。
【００２８】
ＣＰＵコア１１は、（１）で外部デバイス１３が下位メモリ階層１２に書き込んだデータを参照しようとする（３）。このときＣＰＵコア１１の上位メモリデータ格納装置２４は、領域格納装置２５内のアドレスと参照データのアドレスを比較して、ＣＰＵコア１１が参照しようとしたデータが（１）で更新された領域のデータであると判断した場合は、下位メモリ階層１２から該当領域のデータを一度に全て読み出し、上位メモリ階層１５に格納する（４）。また上位メモリロック装置２３は、（４）で上位メモリ階層１５に格納したデータを下位メモリ階層１２に追い出されないようロックする（５）。
【００２９】
条件完了通知装置２２は、ＣＰＵコア１１が特定のアドレスのデータを参照したり特定の値のデータを参照する等、予め設定した条件を満たしたら、ＣＰＵコア１１に通知を行う。ＣＰＵコア１１は、この通知を受けて、該当領域のデータを用いた処理をしつつ、外部デバイス１３に次のデータ処理を指示する（６）。
【００３０】
そしてＣＰＵコア１１が該当領域のデータの利用を終了したら、上位メモリ解放装置２１は、（５）で行った上位メモリ階層１５のロックを解除し、上位メモリ階層１５の無効化処理を行う。
【００３１】
図３は、本実施形態のキャッシュメモリシステム１のＣＰＵコア１１、上位メモリ階層１５、下位メモリ階層１２及び外部デバイス１３間のデータのやりとりを示すシーケンス図である。
【００３２】
同図においてまず外部デバイス１３が下位メモリ階層１２内にデータを書き込み、データの更新を行う（１）。データの更新が完了すると、外部デバイス１３は、ＣＰＵコア１１にデータの更新が完了したことを通知する（２）。
【００３３】
これを受けてＣＰＵコア１１は、（１）で更新されたデータを参照しようとする（３）。このデータはまだ上位メモリ階層１５には無いので、ＣＰＵコア１１はデータを下位メモリ階層１２に対して参照する。この参照により、（１）で更新されたデータは、下位メモリ階層１２から上位メモリ階層１５に一度に全て読み込まれる（４）。この読み込みが完了すると、上位メモリ階層１５内のデータがはき出されないように、上位メモリ階層１５をロックする（５）。以降ＣＰＵコア１１は、上位メモリ階層１５上のデータを参照して処理を行う。
【００３４】
ＣＰＵコア１１が上位メモリ階層１５上のデータを参照して処理を行っている最中に、予め設定しておいた特定条件、例えばＣＰＵコア１１が特定のアドレスのデータを参照する等の条件を満たしたら、これを条件完了通知装置２２がＣＰＵコア１１に通知し、ＣＰＵコア１１は外部デバイス１３に次のデータ更新処理の開始を指示する（６）。
【００３５】
これを受けて外部デバイス１３は下位メモリ階層１２に次のデータを書き込んでゆく。またこのとき並列して、ＣＰＵコア１１は上位メモリ階層１５上のデータを参照しながら
処理を続ける（７）。なおこの間上位メモリ階層１５と下位メモリ階層１２の間にコヒーレンシがとれてない部分３１が生じる。
【００３６】
そしてＣＰＵコア１１は処理が終了すると、上位メモリ階層１５のロックを解除する（８）。
以降（３）〜（８）の処理を繰り返し、外部デバイス１３によって更新されるデータを順次処理していく。
【００３７】
このように本実施形態のキャッシュメモリシステム１では、ＣＰＵコア１１が参照するデータは常に上位メモリ階層１５にあるので、ＣＰＵコア１１は高速に処理を行うことが出来る。またＣＰＵコア１１によるデータを参照しながらの処理と、外部デバイス１３によるデータの更新処理が並列に行われるので、システム全体の高速化、及び性能の向上を行うことが出来る。
【００３８】
また図９の従来のキャッシュメモリシステムに比して、システム全体において高スループットを実現することが出来る。更に図１０のダブルバッファの構成に比して、下位メモリ階層の容量を小さくすることが出来る。
【００３９】
次に外部デバイス１３が下位メモリ階層１２に書き込むデータの大きさが上位メモリ階層１５の容量より大きい場合について説明する。
外部デバイス１３が下位メモリ階層１２に書き込むデータの大きさが上位メモリ階層１５の容量より大きい場合は、本実施形態のキャッシュメモリシステム１は、複数回に分けて上位メモリ階層１５にデータを読み込む。
【００４０】
図４は外部デバイス１３が下位メモリ階層１２に書き込むデータの大きさが上位メモリ階層１５の容量より大きい場合における、本実施形態のキャッシュメモリシステム１の動作を説明する図である。
【００４１】
同図において、まず外部デバイス１３が、下位メモリ階層１２にデータを書き込み、データの更新を行う（１）。次に外部デバイス１３は、下位メモリ階層１２の更新が完了したことをＣＰＵコア１１に通知する（２）。
【００４２】
ＣＰＵコア１１は、（１）で外部デバイス１３が下位メモリ階層１２に書き込んだデータを参照しようとする（３）。このときＣＰＵコア１１の上位メモリデータ格納装置２４は、領域格納装置２５内のアドレスと参照データのアドレスを比較し、ＣＰＵコア１１が参照しようとしたデータが（１）で更新された領域のデータであると判断した場合は、下位メモリ階層１２から該当領域のデータを一度に上位メモリ階層１５の容量分読み出し、上位メモリ階層１５に格納する（４）。また上位メモリロック装置２３は、（４）で上位メモリ階層１５に格納したデータを下位メモリ階層１２に追い出されないようロックする（５）。
【００４３】
この（１）〜（５）までの処理は、基本的には図２の場合と同じになる。
次にＣＰＵコア１１が、上位メモリ階層１５上のデータを使用し終えたなら、上位メモリ解放装置２１が、（５）で行われた上位メモリ階層１５に対するロックを解除し、上位メモリ階層１５の無効化処理を行う（６）。
【００４４】
そして次にＣＰＵコア１１が、上位メモリ階層１５外の（１）で外部デバイス１３が下位メモリ階層１２に書き込んだデータを参照しようとすると、下位メモリ階層１２上のデータを上位メモリ階層１５に上位メモリ階層１５の容量分格納する。また上位メモリロック装置２３は、上位メモリ階層１５に格納したデータを下位メモリ階層１２に追い出されないようロックする。そしてＣＰＵコア１１が、上位メモリ階層１５上のデータを使用し終えたなら、上位メモリ解放装置２１が、上位メモリ階層１５に対するロックを解除して上位メモリ階層１５の無効化処理を行う（７）。
【００４５】
この（７）の処理を、ＣＰＵコア１１が（１）で外部デバイス１３が更新したデータに対して全て行うまで繰り返す。
そして（７）において、ＣＰＵコア１１が上位メモリ階層１５上のデータを参照しながら処理を行っている途中で、ＣＰＵコア１１が特定のアドレスのデータを参照する等、予め設定した条件を満たしたなら、条件完了通知装置２２はこれをＣＰＵコア１１に通知する。そしてＣＰＵコア１１は、この通知を受けると、外部デバイス１３に対して次のデータ処理を指示する（８）。この指示を受けて外部デバイス１３は下位メモリ階層１２に次のデータを転送してゆく。
【００４６】
そしてＣＰＵコア１１は、（７）での条件完了通知装置２２へのデータ参照が終了したならば、上位メモリロック装置２３は上位メモリ階層１５に対するロックを解除する（９）。
【００４７】
図５は外部デバイス１３が下位メモリ階層１２に書き込むデータの大きさが上位メモリ階層１５の容量より大きい場合における、本実施形態のキャッシュメモリシステム１のＣＰＵコア１１、上位メモリ階層１５、下位メモリ階層１２及び外部デバイス１３間のデータのやりとりを示すシーケンス図である。
【００４８】
同図においてまず外部デバイス１３が下位メモリ階層１２内にデータを書き込み、データの更新を行う（１）。データの更新が完了すると、外部デバイス１３は、ＣＰＵコア１１にデータの更新が完了したことを通知する（２）。
【００４９】
これを受けてＣＰＵコア１１は、（１）で更新されたデータを参照しようとする（３）。このデータはまだ上位メモリ階層１５には無いので、ＣＰＵコア１１はデータを下位メモリ階層１２に対して参照する。この参照により、（１）で更新されたデータは、下位メモリ階層１２から上位メモリ階層１５に一度に上位メモリロック装置２３の容量分のデータが読み込まれる（４）。この読み込みが完了すると、上位メモリ階層１５内のデータがはき出されないように、上位メモリ階層１５をロックする（５）。以降ＣＰＵコア１１は、上位メモリ階層１５上のデータを参照して処理を行う。
【００５０】
この（１）〜（５）までの処理は、基本的には図３の場合と同じになる。
次にＣＰＵコア１１が、上位メモリ階層１５上のデータを使用し終えたなら、（５）で行われた上位メモリ階層１５に対するロックを解除する（６）。
【００５１】
そして次にＣＰＵコア１１が、上位メモリ階層１５外の（１）で外部デバイス１３が下位メモリ階層１２に書き込んだデータを参照しようとすると、下位メモリ階層１２上のデータを上位メモリ階層１５に上位メモリ階層１５の容量分格納する。また上位メモリ階層１５に格納したデータを下位メモリ階層１２に追い出されないようロックする。そしてＣＰＵコア１１が、上位メモリ階層１５上のデータを使用し終えたなら、上位メモリ階層１５に対するロックを解除する（７）。
【００５２】
（７）でＣＰＵコア１１が上位メモリ階層１５上のデータを参照して処理を行っている最中に、予め設定しておいた特定条件、例えばＣＰＵコア１１が特定のアドレスのデータを参照する等の条件を満たしたら、ＣＰＵコア１１は外部デバイス１３に次のデータ更新処理の開始を指示する（８）。
【００５３】
これを受けて外部デバイス１３は下位メモリ階層１２に次のデータを書き込んでゆく。またこのとき並列して、ＣＰＵコア１１は上位メモリ階層１５上のデータを参照しながら処理を続ける（９）。
【００５４】
そしてＣＰＵコア１１は処理が終了すると、上位メモリ階層１５のロックを解除する（１０）。
以降（３）〜（１０）の処理を繰り返し、外部デバイス１３によって更新されるデータを順次処理してゆく。
【００５５】
このように本実施形態のキャッシュメモリシステム１は、外部デバイス１３が下位メモリ階層１２に転送するデータの量が、上位メモリ階層１５の容量より大きい場合にも対処することが出来る。
【００５６】
次に上位メモリ階層１５上のデータを更新する際のデータ更新量を設定した場合の例を示す。
このデータ更新量が設定されると、上位メモリ階層１５が下位メモリ階層１２からデータを転送する際、常にこのデータ更新量の大きさのデータ量が転送されることとなる。
【００５７】
図６はデータ更新量を設定した場合の本実施形態のキャッシュメモリシステム１の動作を説明する図である。
なお同図において、データ更新量は、領域格納装置２５内に設定される。
【００５８】
図６において、まず外部デバイス１３が、下位メモリ階層１２にデータを書き込み、データの更新を行う（１）。次に外部デバイス１３は、下位メモリ階層１２の更新が完了したことをＣＰＵコア１１に通知する（２）。
【００５９】
ＣＰＵコア１１は、（１）で外部デバイス１３が下位メモリ階層１２に書き込んだデータを参照しようとする（３）。このときＣＰＵコア１１の上位メモリデータ格納装置２４は、領域格納装置２５に格納されているアドレスと参照データのアドレスから、ＣＰＵコア１１が参照しようとしたデータが（１）で更新された領域のデータであると判断した場合は、下位メモリ階層１２から該当領域のデータを上位メモリ階層１５の容量分読み出し、上位メモリ階層１５に格納する（４）。このとき上位メモリ階層１５に読み込みデータ量は、予め領域格納装置２５内に設定されるデータ更新量となる。
【００６０】
また上位メモリロック装置２３は、（４）で上位メモリ階層１５に格納したデータを下位メモリ階層１２に追い出されないようロックする（５）。
ＣＰＵコア１１は、上位メモリ階層１５を参照しながら処理を進める。そしてこの間に例えばＣＰＵコア１１が特定のアドレスのデータを参照する等、特定の条件を満たすと、条件完了通知装置２２が条件完了通知装置２２が下位メモリ階層１２の該当領域を無効化する（６）。これにより外部デバイス１３が下位メモリ階層１２は、次のデータを下位メモリ階層１２に転送する。
【００６１】
またＣＰＵコア１１が上位メモリ階層１５上のデータを参照し終え、次のデータを参照しようとすると、上位メモリ解放装置２１はこれを認知し、（３）で行った上位メモリ階層１５のロックを解除して、無効化処理を行う（７）。
【００６２】
（７）で上位メモリ階層１５の無効化が行われると、上記した（４）〜（７）の処理を繰り返し、ＣＰＵコア１１によるデータの参照処理と、外部デバイス１３による下位メモリ階層１２へのデータ転送が並列して行われる。
【００６３】
図７は、データ更新量を設定した場合における、本実施形態のキャッシュメモリシステム１のＣＰＵコア１１、上位メモリ階層１５、下位メモリ階層１２及び外部デバイス１３間のデータのやりとりを示すシーケンス図である。
【００６４】
同図において、まず外部デバイス１３が下位メモリ階層１２内にデータを書き込み、データの更新を行う（１）。データの更新が完了すると、外部デバイス１３は、ＣＰＵコア１１にデータの更新が完了したことを通知する（２）。
【００６５】
これを受けてＣＰＵコア１１は、（１）で更新されたデータを参照しようとする（３）。このデータはまだ上位メモリ階層１５には無いので、ＣＰＵコア１１はデータを下位メモリ階層１２に対して参照する。この参照により、（１）で更新されたデータは、下位メモリ階層１２から上位メモリ階層１５に読み込まれる（４）。このとき上位メモリ階層１５に読み込まれるデータの大きさは、領域格納装置２５内に設定されている大きさとなる。
【００６６】
この（４）の読み込みが完了すると、上位メモリ階層１５内のデータがはき出されないように、上位メモリ階層１５をロックする（５）。以降ＣＰＵコア１１は、上位メモリ階層１５上のデータを参照して処理を行う。
【００６７】
次にＣＰＵコア１１が、上位メモリ階層１５上のデータを使用し終えたなら、（５）で行われた上位メモリ階層１５に対するロックを解除する（６）。これにより、上位メモリ階層１５上のデータは無効となる。
【００６８】
そして次にＣＰＵコア１１が、上位メモリ階層１５外の（１）で外部デバイス１３が下位メモリ階層１２に書き込んだデータを参照しようとすると、下位メモリ階層１２上のデータを上位メモリ階層１５に上位メモリ階層１５の容量分格納する。また上位メモリ階層１５に格納したデータを下位メモリ階層１２に追い出されないようロックする。そしてＣＰＵコア１１が、上位メモリ階層１５上のデータを使用し終えたなら、上位メモリ階層１５に対するロックを解除する（７）。
【００６９】
（７）でＣＰＵコア１１が上位メモリ階層１５上のデータを参照して処理を行っている最中に、予め設定しておいた特定条件、例えばＣＰＵコア１１が特定のアドレスのデータを参照する等の条件を満たしたら、ＣＰＵコア１１は外部デバイス１３に次のデータ更新処理の開始を指示する（８）。
【００７０】
これを受けて外部デバイス１３は下位メモリ階層１２に次のデータを書き込んでゆく。またこのとき並列して、ＣＰＵコア１１は上位メモリ階層１５上のデータを参照しながら処理を続ける（９）。
【００７１】
そしてＣＰＵコア１１は処理が終了すると、上位メモリ階層１５のロックを解除する（１０）。
以降（３）〜（１０）の処理を繰り返し、外部デバイス１３によって更新されるデータを順次処理してゆく。
【００７２】
このように本実施形態のキャッシュメモリシステム１は、外部デバイス１３が下位メモリ階層１２に転送するデータの量が、上位メモリ階層１５の容量より大きい場合も、下位メモリ階層１２から上位メモリ階層１５へのデータ転送を複数回に分けることにより実現することが出来る。また、下位メモリ階層１２から上位メモリ階層１５へのデータ転送を行う際の、データ転送量を事前に設定変更することが出来る。
【００７３】
図８は、本実施形態のキャッシュメモリシステムのＣＰＵコアのキャッシュメモリ関係の詳細な構成を示す図である。
同図においてキャッシュメモリシステム１に係る構成としては、上述した上位メモリ解放装置２１、条件完了通知装置２２、上位メモリロック装置２３、上位メモリデータ格納装置２４及び領域格納装置２５の他にタグＲＡＭ４１、キャッシュＲＡＭ４２、ＸＯＲ回路４３及びキャッシュフィル装置４４を備えている。
【００７４】
タグＲＡＭ４１及びキャッシュＲＡＭ４２は、上位メモリ階層１５を構成するメモリで、タグＲＡＭ４１には命令実行部５０から要求されたデータのアドレスがキャッシュにヒット／ミスしたかを判断するためのタグ情報が、またキャッシュＲＡＭ４２にはタグ情報に対応したデータが記憶されている。またタグＲＡＭ４１にはロックビットを記憶する領域があり、このログビットがセットされると対応する上位メモリ階層１５のデータ（すなわちキャッシュＲＡＭ４２のデータ）がロックされる。
【００７５】
ＸＯＲ回路４３は、命令実行部５０から要求されたデータのアドレスとタグＲＡＭ４１の出力とのＸＯＲ演算を行いキャッシュのヒット／ミスを出力するものである。キャッシュフィル装置４４は、上位メモリデータ格納装置２４からの指示に基づいて命令実行部５０から要求されたアドレスのデータを含む、特定の大きさのデータを下位メモリ階層１２に要求する。
【００７６】
このような構成の本実施形態のキャッシュメモリシステム１では、命令実行部５０が要求アドレスを発行するとこれがタグＲＡＭ４１内のタグと比較され、ヒットすればキャッシュＲＡＭ４２からデータが読み出されて、命令実行部５０に出力される。またキャッシュミスすれば、上位メモリデータ格納装置２４からの指示に基づいてキャッシュフィル装置４４が下位メモリ階層１２にデータの要求を行い、新たなデータがタグＲＡＭ４１及びキャッシュＲＡＭ４２に格納される。
【００７７】
このように本実施形態のキャッシュメモリシステム１では、ＣＰＵコア１１が参照するデータは常に上位メモリ階層１５にあるので、ＣＰＵコア１１の処理は高速になる。例えば動画のデコード処理を行なうときは、１フレーム分のストリームデータが常にキャッシュにあるため、ＣＰＵコア１１の動画デコード処理が高速になる。
【００７８】
またＣＰＵコア１１による処理と、下位メモリ階層１２へのデータの転送を平行して行うことが出来るので、システム全体のスループットを向上させることが出来る。例えば動画のデコード処理を行なうときは、前フレームの動画デコード処理を行ないながら、次フレームのストリームデータを取得することができる。
更には、ダブルバッファとする構成に比して、下位メモリ階層１２の容量を小さく構成することが出来る。よってシステム全体の小型化、低価格化を実現することが出来る。
【００７９】
以上の実施形態に関し、更に以下の付記を開示する。
（付記１）
ＣＰＵ、及び少なくとも上位メモリ階層と下位メモリ階層の２階層を備えるメモリ階層を備え、前記下位メモリ階層に供給されるデータを前記ＣＰＵが書き換えを行わないキャッシュメモリシステムにおいて、
前記下位メモリ階層上の更新されるデータのアドレスを記憶する領域格納部と、
前記ＣＰＵが参照したデータのアドレスと前記領域格納部内のアドレスを比較し、当該ＣＰＵが参照したデータが前記更新されるデータであるとき、前記更新されるデータを前記下位メモリ階層から読み出し、前記上位メモリ階層にデータを格納する上位メモリデータ格納部と、
前記上位メモリ格納部が前記上位メモリ階層にデータを格納した後に、前記上位メモリ
階層をロックするメモリロック部と、
を備えることを特徴とするキャッシュメモリシステム。
（付記２）
前記ＣＰＵが前記上位メモリ階層を参照するに当たって、予め設定した条件を満たしたとき、前記ＣＰＵに通知を行う条件完了通知部を更に備え、
前記条件完了通知部による前記ＣＰＵへの通知に対して、前記ＣＰＵは、前記下位メモリ階層へのデータ転送を指示することを特徴とする付記１に記載のキャッシュメモリシステム。
（付記３）
前記上位メモリ階層に対するロックを解除する上位メモリ開放部と、
を更に備え、
前記ＣＰＵが前記上位メモリ階層上のデータの参照を終了した後に、前記上位メモリ開放部は、前記上位メモリ階層の前記ロックを解除することを特徴とする付記１に記載のキャッシュメモリシステム。
（付記４）
前記領域格納部は、前記上位メモリデータ格納部が前記下位メモリ階層から前記上位メモリ階層に格納するデータの大きさを格納し、
前記上位メモリデータ格納部が前記下位メモリ階層から前記上位メモリ階層にデータを格納する際、一度に前記データの大きさ分格納することを特徴とする付記１に記載のキャッシュメモリシステム。
（付記５）
前記データの大きさは、前記上位メモリ階層の最大容量であることを特徴とする付記４に記載のキャッシュメモリシステム。
（付記６）
前記ＣＰＵが前記上位メモリ階層上のデータの参照を終了した後に、前記上位メモリデータ格納部が前記下位メモリ階層から前記上位メモリ階層に前記データの大きさ分のデータを格納することを特徴とする付記４に記載のキャッシュメモリシステム。
（付記７）
前記下位メモリ階層上のデータを更新する外部デバイス部を更に備えることを特徴とする付記１に記載のキャッシュメモリシステム。
（付記８）
前記外部デバイス部は、前記下位メモリ階層のデータの更新の完了を前記ＣＰＵに通知することを特徴とする付記７に記載のキャッシュメモリシステム。
（付記９）
順次データが更新される下位メモリ階層と接続されたＣＰＵコアにおいて
前記下位メモリ階層より高速な上位メモリ階層と、
メモリからデータを読み出して処理を行う命令実行部と、
前記下位メモリ階層上の更新されるデータのアドレスを記憶する領域格納部と、
前記命令実行部が参照したデータのアドレスと前記領域格納部内のアドレスを比較し、当該ＣＰＵが参照したデータが前記下位メモリ階層のデータであるとき、当該下位メモリ階層からデータを読み出し、前記上位メモリ階層にデータを格納する上位メモリデータ格納部と、
前記命令実行部がメモリを参照する際に、予め設定されている条件を満たしたなら前記下位メモリ階層上のデータの更新を指示する条件完了通知部と、
を備えることを特徴とするＣＰＵコア。
（付記１０）
前記上位メモリデータ格納部が、前記下位メモリ階層からデータを読み出し、前記上位メモリ階層にデータを格納した後、当該上位メモリ階層をロックする上位メモリロック部を更に備えることを特徴とする付記９に記載のＣＰＵコア。
（付記１１）
前記命令実行部が、前記上位メモリ階層上のデータを参照し終えたとき、前記上位メモ
リ階層のロックを解除する上位メモリ解放部を更に備えることを特徴とする付記１０に記載のＣＰＵコア。
（付記１０）
順次データが更新される下位メモリ階層と接続されたＣＰＵコアによるキャッシュメモリ制御方法において、
命令を実行する命令実行部が参照したデータのアドレスと、前記下位メモリ階層上の更新されるデータのアドレスを比較し、当該ＣＰＵが参照したデータが前記下位メモリ階層のデータであるとき、当該下位メモリ階層からデータを読み出し、前記下位メモリ階層より高速な上位メモリ階層にデータを格納し、
前記命令実行部がメモリを参照する際に、予め設定されている条件を満たしたなら前記下位メモリ階層上のデータの更新を指示する
ことを特徴とするキャッシュメモリ制御方法。
【図面の簡単な説明】
【００８０】
【図１】本実施形態のキャッシュメモリシステムが前提とするシステムのイメージ図である。
【図２】本実施形態のキャッシュメモリシステムの動作を説明する図である。
【図３】本実施形態のキャッシュメモリシステムのデータのやりとりを示すシーケンス図である。
【図４】外部デバイスが下位メモリ階層に書き込むデータの大きさが上位メモリ階層の容量より大きい場合における、本実施形態のキャッシュメモリシステムの動作を説明する図である。
【図５】外部デバイスが下位メモリ階層に書き込むデータの大きさが上位メモリ階層の容量より大きい場合における、本実施形態のキャッシュメモリシステムのデータのやりとりを示すシーケンス図である。
【図６】データ更新量を設定した場合の本実施形態のキャッシュメモリシステムの動作を説明する図である。
【図７】データ更新量を設定した場合の本実施形態のキャッシュメモリシステムのデータのやりとりを示すシーケンス図である。
【図８】本実施形態のキャッシュメモリシステムのＣＰＵコアのキャッシュメモリ関係の詳細な構成を示す図である。
【図９】従来のキャッシュメモリシステムを示す図である。
【図１０】下位メモリ階層をダブルバッファにしたキャッシュメモリシステムの構成を示す図である。
【符号の説明】
【００８１】
１        キャッシュメモリシステム
１１        ＣＰＵコア
１２        下位メモリ階層
１３        外部デバイス
１４        バス
１５        上位メモリ階層
２１        上位メモリ解放装置
２２        条件完了通知装置
２３        上位メモリロック装置
２４        上位メモリデータ格納装置
２５        領域格納装置
４１        タグＲＡＭ
４２        キャッシュＲＡＭ
４３        ＸＯＲ回路
４４        キャッシュフィル装置
【図１】
2010003137.tif 000003
【図２】
2010003137.tif 000004
【図４】
2010003137.tif 000005
【図６】
2010003137.tif 000006
【図８】
2010003137.tif 000007
【図３】
2010003137.tif 000008
【図５】
2010003137.tif 000009
【図７】
2010003137.tif 000010
【図９】
2010003137.tif 000011
【図１０】
2010003137.tif 000012