(57)【要約】【課題】アクセスマスタからリード要求後のデータ保持が不要のデータを用いる処理がある場合にメインメモリとキャッシュメモリとの間のデータ転送処理を削減する。【解決手段】  メインメモリのメモリ領域を分割したメモリ領域ごとにアクセスマスタからリード後のデータ保持の要否を定義する転送属性管理手段５０と、アクセス要求に対してキャッシュミスか否かを検出するヒット検出手段１０と、アクセスマスタからライト要求されたときにキャッシュミスと検出した場合、キャッシュメモリにキャッシュラインを確保し、アクセスマスタがライト要求しているアドレスを含むメモリ領域がリードされた後のデータ保持が不要と定義されていれば、メインメモリからキャッシュメモリへのデータ転送をすることなく確保したキャッシュラインにアクセスマスタからライト要求されたデータを書き込む要求制御手段３０とを備える。【選択図】    図１
2014032555.tif 000002
【特許請求の範囲】
【請求項１】
メインメモリのメモリ領域を分割してそれぞれの分割された前記メモリ領域ごとにアクセスマスタからリードされた後のデータ保持の要否を定義して管理する転送属性管理手段と、
前記アクセスマスタからアクセス要求されたアドレスに対応するキャッシュラインがキャッシュメモリに存在するか否かを検出するヒット検出手段と、
前記アクセスマスタからのアクセス要求に基づいて、前記メインメモリと前記キャッシュメモリとの間のデータ転送及び前記キャッシュメモリへデータの書き込みまたはデータの読み出しを行う要求制御手段とを備え、
前記要求制御手段は、前記アクセスマスタからのアクセス要求がライト要求であって前記ヒット検出手段がアクセス要求されたアドレスに対応するキャッシュラインが前記キャッシュメモリに存在しないと検出した場合に、前記キャッシュメモリにアクセス要求された前記アドレスに対応するキャッシュラインを確保し、
分割された前記メモリ領域のうち前記転送属性管理手段によって前記アクセスマスタがライト要求しているアドレスを含む前記メモリ領域について、前記アクセスマスタからリードされた後のデータ保持が必要と定義されていれば、ライト要求されているアドレスに対応するキャッシュラインに該当する前記メインメモリのアドレス領域に記憶されたデータを確保した前記キャッシュラインへデータ転送をしてから、さらに前記アクセスマスタがライト要求したデータを確保した前記キャッシュラインに書き込みを行ない、
分割された前記メモリ領域のうち前記転送属性管理手段によって前記アクセスマスタがライト要求しているアドレスを含む前記メモリ領域について、前記アクセスマスタからリードされた後のデータ保持が不要と定義されていれば、前記データ転送を行わずに前記アクセスマスタがライト要求したデータを確保した前記キャッシュラインに書き込む
ことを特徴とするキャッシュメモリ制御装置。
【請求項２】
アクセスマスタごとにそのアクセスマスタからのリード要求に対応したキャッシュラインの情報を記憶するリード監視手段をさらに備え、
前記転送属性管理手段は、前記メインメモリのそれぞれ分割された前記メモリ領域ごとにリードアクセスをするアクセスマスタをさらに定義して管理するものであり、
前記要求制御手段は、リード監視手段からの情報と前記転送属性管理手段で定義された情報とに基づいて、アクセスマスタからのリード要求に対応したキャッシュラインについて、定義されたアクセスマスタがリードを完了したと判断したときは、前記アクセスマスタからのリード要求に対応した前記キャッシュラインを開放する
ことを特徴とする請求項１に記載のキャッシュメモリ制御装置。
【請求項３】
前記リード監視手段は、前記アクセスマスタからのリード要求が、そのアクセスマスタからのリード要求に対応したキャッシュラインの末尾のデータまでリード要求するものであったときに、そのキャッシュラインの全データをリードしたと判定して記憶する
ことを特徴とする請求項２に記載のキャッシュメモリ制御装置。
【請求項４】
メインメモリのメモリ領域を分割してそれぞれの分割された前記メモリ領域ごとにアクセスマスタからリードされた後のデータ保持の要否を定義して管理する転送属性管理ステップと、
前記アクセスマスタからアクセス要求されたアドレスに対応するキャッシュラインがキャッシュメモリに存在するか否かを検出するヒット検出ステップと、
前記アクセスマスタからのアクセス要求に基づいて、前記メインメモリと前記キャッシュメモリとの間のデータ転送及び前記キャッシュメモリへデータの書き込みまたはデータの読み出しを行う要求制御ステップとを備え、
前記要求制御ステップは、前記アクセスマスタからのアクセス要求がライト要求であって前記ヒット検出手段がアクセス要求されたアドレスに対応するキャッシュラインが前記キャッシュメモリに存在しないと検出した場合に、前記キャッシュメモリにアクセス要求された前記アドレスに対応するキャッシュラインを確保し、
分割された前記メモリ領域のうち前記転送属性管理ステップによって前記アクセスマスタがライト要求しているアドレスを含む前記メモリ領域について、前記アクセスマスタからリードされた後のデータ保持が必要と定義されていれば、ライト要求されているアドレスに対応するキャッシュラインに該当する前記メインメモリのアドレス領域に記憶されたデータを確保した前記キャッシュラインへデータ転送をしてから、さらに前記アクセスマスタがライト要求したデータを確保した前記キャッシュラインに書き込みを行ない、
分割された前記メモリ領域のうち前記転送属性管理ステップによって前記アクセスマスタがライト要求しているアドレスを含む前記メモリ領域について、前記アクセスマスタからリードされた後のデータ保持が不要と定義されていれば、前記データ転送を行わずに前記アクセスマスタがライト要求したデータを確保した前記キャッシュラインに書き込む
ことを特徴とするキャッシュメモリ制御方法。
【請求項５】
アクセスマスタごとにそのアクセスマスタからのリード要求に対応したキャッシュラインの情報を記憶するリード監視ステップをさらに備え、
前記転送属性管理ステップは、前記メインメモリのそれぞれ分割された前記メモリ領域ごとにリードアクセスをするアクセスマスタをさらに定義して管理するものであり、
前記要求制御ステップは、リード監視ステップからの情報と前記転送属性管理ステップで定義された情報とに基づいて、アクセスマスタからのリード要求に対応したキャッシュラインについて、定義されたアクセスマスタがリードを完了したと判断したときは、前記アクセスマスタからのリード要求に対応した前記キャッシュラインを開放する
ことを特徴とする請求項４に記載のキャッシュメモリ制御方法。
【請求項６】
前記リード監視ステップは、前記アクセスマスタからのリード要求が、そのアクセスマスタからのリード要求に対応したキャッシュラインの末尾のデータまでリード要求するものであったときに、そのキャッシュラインの全データをリードしたと判定して記憶する
ことを特徴とする請求項５に記載のキャッシュメモリ制御方法。
【発明の詳細な説明】
【技術分野】
【０００１】
この発明は、アクセスマスタからメインメモリへのアクセス処理についてキャッシュメモリを介して実現するキャッシュメモリ制御装置に関する。
【背景技術】
【０００２】
電子機器においては、メインメモリを搭載し、コンピュータプログラムの実行や、映像、音声、通信といったデータを扱った処理の実行を行なうときに、処理途中のデータをメインメモリに書き込み・読み出しを行うことが一般的に行われている。近年ではこのメインメモリの記憶容量が増加の一途をたどっており、通信機器や画像処理装置によっては、数ギガバイトから数テラバイトの半導体メモリ、例えばＤＲＡＭ（Ｄｙｎａｍｉｃ  Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）が搭載されるものもある。また、プロセッサコアやＤＭＡ（Ｄｙｎａｍｉｃ  Ｍｅｍｏｒｙ  Ａｃｃｓｅｓｓ）回路を含む複数のアクセスマスタがメインメモリにアクセスするアーキテクチャが主流である。
【０００３】
このような場合、１つ以上のアクセスマスタがメインメモリに高速にアクセスするため、ＤＲＡＭよりもＳＲＡＭ（Ｓｔａｔｉｃ  Ｒａｎｄｏｍ  Ｍｅｍｏｒｙ）のような高速にデータアクセスが可能な半導体メモリをキャッシュメモリとして設けて、メモリを階層化することが一般的である。ここでキャッシュメモリは、アクセスマスタとメインメモリとの間におかれるもので、メインメモリに格納されるデータのうちの一部をキャッシュメモリに格納し、アクセスマスタがメインメモリにアクセス要求をしたときに、該当のデータがキャッシュメモリに格納されている場合は、メインメモリにアクセスすることなくキャッシュメモリに格納されたデータについてアクセスマスタの要求に基づいた書き込みまたは読み出しを行なう。これにより、メインメモリよりも高速にデータアクセスが可能なキャッシュメモリへのアクセスで対応できることになり、見かけ上のメインメモリへのアクセス速度を高速化できる。特に使用頻度の高いデータをキャッシュメモリに格納していれば、アクセスマスタが使用頻度の高いデータにアクセス要求すればするほどキャッシュメモリによる高速化の効果が顕著になる。
【０００４】
ここで、アクセスマスタがメインメモリにリード要求をした場合のキャッシュメモリ制御について説明する。キャッシュメモリ制御装置は、アクセスマスタがリード要求したアドレスに対応するデータがキャッシュメモリ側に格納されているときは、キャッシュメモリにアクセスしてキャッシュメモリに格納されたデータを読み出してアクセスマスタに出力する。一方、キャッシュメモリに格納されていないときは、一旦キャッシュメモリにアクセスマスタからリード要求されたデータを転送するためのキャッシュラインを確保する。ここで、キャッシュラインとは、キャッシュメモリの管理単位となるメモリ領域であってキャッシュメモリには複数のキャッシュラインによってメモリ領域が構成される。また、メインメモリとのデータ転送についてはキャッシュライン単位（またはライン単位、とよぶ）で行なわれる。
【０００５】
上述のように確保したキャッシュラインに、アクセスマスタからリード要求されたアドレスを含むキャッシュライン単位のメモリ領域のデータをメインメモリからデータ転送する。このデータ転送を行なってから、リード要求されたアドレスのデータについてアクセスマスタへ出力する。ここで、アクセスマスタからメインメモリへアクセス要求されたときに、該当のアドレスのデータがキャッシュメモリに格納されているときをキャッシュヒットとよび、キャッシュメモリに格納されていないときをキャッシュミスとよぶ。
【０００６】
次にアクセスマスタがメインメモリにライト要求をした場合のキャッシュメモリ制御について説明する。ライト要求された該当のアドレスに対応するキャッシュラインがキャッシュメモリに格納されているとき、つまりキャッシュヒットのときは、キャッシュメモリの該当のアドレスを含むキャッシュラインに書き込まれる。一方、キャッシュミスの場合は、一旦キャッシュメモリにアクセスマスタからリード要求されたデータを転送するためのキャッシュラインを確保してメインメモリに格納されている該当のキャッシュライン分のデータをキャッシュメモリへデータ転送した上で、キャッシュメモリの該当のアドレスを含むキャッシュラインに書き込まれる。
【０００７】
このとき、全てのキャッシュラインが使用状態になると、空きラインを確保するため、キャッシュメモリからメインメモリへの退避を行ない、キャッシュメモリに該当のアドレスを含むメモリ領域をキャッシュライン単位で確保する必要が生じる。退避するキャッシュラインの選択方法のアルゴリズムとして、参照されていない時間が最も長いキャッシュラインを選択するＬＲＵ（Ｌｅａｓｔ  Ｒｅｃｅｎｔｌｙ  Ｕｓｅｄ）方式、または参照された頻度が最も低いラインを選択するＬＦＵ（Ｌｅａｓｔ  Ｆｒｅｑｕｅｎｔｌｙ  Ｕｓｅｄ）方式が知られている。
【０００８】
このようにキャッシュメモリを設けて階層的にメモリを配置することにより、メインメモリへのアクセスは、キャッシュミス発生時と、空きライン確保のためのキャッシュ退避に集約されることになる。つまり、アクセスマスタからメインメモリへのデータ転送において、キャッシュヒットの確率が低下してキャッシュミスの発生が多くなればなるほどメインメモリへのアクセスが増えてデータ転送の高速化への妨げとなっていた。
【０００９】
特に複数のアクセスマスタから１つのメインメモリにアクセスするときは、それぞれで違うメモリアドレス領域をアクセスする場合が増えるため、キャッシュヒットの確率が低下して全体の処理にかかる時間が延びるという問題があった。さらに、一方のアクセスマスタのタスク処理に関連するメモリアクセスと他方のアクセスマスタのタスク処理に関連するメモリアクセスとが混在した場合に、一方のアクセスマスタのタスク処理時に空きライン確保のためのキャッシュ退避が行う際に他方のアクセスマスタのタスク処理で必要なデータのキャッシュラインが退避されてしまうと、他方のアクセスマスタのタスク処理でメモリアクセスしたときにキャッシュミスとなり、タスク処理の高速化の妨げとなるという問題があった。また、キャッシュメモリに用いる半導体メモリはメインメモリにくらべてアクセスが高速である反面コストが高価であることから、キャッシュメモリの大容量化に頼ると、システム全体のコストアップが生じる。
【００１０】
そこで、複数のタスクを並行処理するシステムにおいては、各タスクとキャッシュメモリのメモリ領域を分割した各メモリ領域とを対応付けて管理し、各タスクの処理によるメモリアクセスが混在してもお互いのタスクによって引き起こされるキャッシュミスをなくすという方法があった（例えば、特許文献１参照）。
【先行技術文献】
【特許文献】
【００１１】
【特許文献１】特開２００４−１７８５７１号公報（第８−１５頁、第１図）
【発明の概要】
【発明が解決しようとする課題】
【００１２】
従来の方法では、アクセスマスタからライト要求されたときにキャッシュミスであった場合、一旦キャッシュメモリにライト要求されたデータを書き込むためのキャッシュラインを確保し、ライト要求されているアドレスを含むキャッシュライン分のアドレスに該当するデータをメインメモリからキャッシュメモリの確保したキャッシュラインへデータ転送する処理を行なう。しかしながら、ライト要求されているアドレスのデータが一度しかリード要求されないデータであったとしても、キャッシュミスであれば必ずメインメモリとキャッシュメモリとの間のデータ転送処理が必要となり、処理システム全体の処理速度に悪影響を及ぼすこととなるという問題があった。
【００１３】
この発明は、上述のような課題を解決する為になされたもので、アクセスマスタからリード要求された後のデータ保持が不要とされているデータを用いる処理がある場合にキャッシュミスしたときのメインメモリとキャッシュメモリとの間のデータ転送処理を削減して全体の処理速度を向上させるキャッシュメモリ制御装置を得ることを目的とする。
【課題を解決するための手段】
【００１４】
この発明に係るキャッシュメモリ制御装置においては、メインメモリのメモリ領域を分割してそれぞれの分割された前記メモリ領域ごとにアクセスマスタからリードされた後のデータ保持の要否を定義して管理する転送属性管理手段と、前記アクセスマスタからアクセス要求されたアドレスに対応するキャッシュラインがキャッシュメモリに存在するか否かを検出するヒット検出手段と、前記アクセスマスタからのアクセス要求に基づいて、前記メインメモリと前記キャッシュメモリとの間のデータ転送及び前記キャッシュメモリへデータの書き込みまたはデータの読み出しを行う要求制御手段とを備え、前記要求制御手段は、前記アクセスマスタからのアクセス要求がライト要求であって前記ヒット検出手段がアクセス要求されたアドレスに対応するキャッシュラインが前記キャッシュメモリに存在しないと検出した場合に、前記キャッシュメモリにアクセス要求された前記アドレスに対応するキャッシュラインを確保し、分割された前記メモリ領域のうち前記転送属性管理手段によって前記アクセスマスタがライト要求しているアドレスを含む前記メモリ領域について、前記アクセスマスタからリードされた後のデータ保持が必要と定義されていれば、ライト要求されているアドレスに対応するキャッシュラインに該当する前記メインメモリのアドレス領域に記憶されたデータを確保した前記キャッシュラインへデータ転送をしてから、さらに前記アクセスマスタがライト要求したデータを確保した前記キャッシュラインに書き込みを行ない、分割された前記メモリ領域のうち前記転送属性管理手段によって前記アクセスマスタがライト要求しているアドレスを含む前記メモリ領域について、前記アクセスマスタからリードされた後のデータ保持が不要と定義されていれば、前記データ転送を行わずに前記アクセスマスタがライト要求したデータを確保した前記キャッシュラインに書き込むことを特徴とするものである。
【発明の効果】
【００１５】
この発明は、メインメモリのメモリ領域を分割して、それぞれの分割されたメモリ領域とアクセスマスタからリード要求がされた後のデータ保持の要否の定義とを対応付け、キャッシュミスと判定されたときはメインメモリから該当のキャッシュラインのデータを転送せずにキャッシュメモリにのみ書き込むことで、アクセスマスタからリード要求がされた後のデータ保持が不要なデータをライト要求した場合のキャッシュミスした際にメインメモリとキャッシュメモリとの間のデータ転送処理が不要となる。これにより、メインメモリとキャッシュメモリとの間のデータ転送処理を削減してシステム全体の処理速度を向上させることができる。
【図面の簡単な説明】
【００１６】
【図１】この発明に係るキャッシュメモリ制御手段１００および処理システムの構成を示すブロック図である。
【図２】属性管理手段５０が管理する属性の内容の一例を示す図である。
【図３】ライト要求の場合の要求制御手段３０の処理を示すフローチャートである。
【図４】リード要求の場合の要求制御手段３０の処理を示すフローチャートである。
【発明を実施するための形態】
【００１７】
実施の形態１．
図１は、この発明の実施の形態１に係るキャッシュメモリ制御装置１００および処理システムの構成を示すブロック図である。図１において、キャッシュメモリ制御手段１００は、キャッシュメモリ１５０、それぞれのアクセスマスタ２００，２１０、メインメモリ３００と接続されている。図１のように複数のアクセスマスタ２００，２１０は、共通のバスライン線に接続されている。
【００１８】
アクセスマスタ２００，２１０は、処理システムのなかで処理の実行を行うもので、メインメモリ３００に格納されたコンピュータプログラムデータに基づいて実行するマイクロプロセッサであってもよいし、ＤＭＡ回路などの汎用回路であってもよい。メインメモリ３００へのアクセス要求をする作用については同様の作用を行なうものである。
【００１９】
メインメモリ３００は、処理システムで用いられるデータを格納するものであって、例えばＤＲＡＭのような半導体メモリで構成される。
【００２０】
次に、図１に示す処理システムでのアクセスマスタ２００とキャッシュメモリ制御装置１００とのインターフェース信号について説明する。アクセス種別情報２２１は、アクセスマスタ２００がメインメモリ３００に対するアクセス要求の種別を示すものであって、書き込み（ライト）要求あるいは読み出し（リード）要求しているかを示す。アドレスデータ２２２は、アクセスマスタ２００がアクセス要求しているメインメモリ３００のアドレスを示す。ライトデータ２２３は、アクセスマスタ２００がメインメモリ３００へ書き込む際に出力するデータである。リードデータ２２４は、アクセスマスタ２００がメインメモリ３００に格納されたデータを読み出す際にキャッシュメモリ制御装置１００から出力されるデータである。
【００２１】
同様に、図１に示す処理システムでのアクセスマスタ２１０とキャッシュメモリ制御装置１００とのインターフェース信号について説明する。アクセス種別情報２２５は、アクセスマスタ２１０がメインメモリ３００に対するアクセス要求の種別を示すものであって、書き込み（ライト）要求あるいは読み出し（リード）要求しているかを示す。アドレスデータ２２６は、アクセスマスタ２１０がアクセス要求しているメインメモリ３００のアドレスを示す。ライトデータ２２７は、アクセスマスタ２１０がメインメモリ３００へ書き込む際に出力するデータである。リードデータ２２８は、アクセスマスタ２１０がメインメモリ３００に格納されたデータを読み出す際にキャッシュメモリ制御装置１００から出力されるデータである。
【００２２】
図１に示すアクセスマスタ２００，２１０とキャッシュメモリ制御手段１００との間のインターフェース信号以外に、アクセスマスタ２００，２１０がアクセスするデータの長さを出力したり、キャッシュメモリ制御装置１００がアクセス応答情報を出力したりしてやり取りしてもよい。また、図１では、２つのアクセスマスタ２００，２１０がキャッシュメモリ制御手段１００に接続される処理システムを表しているが、アクセスマスタの数は、１つ以上の任意の数でキャッシュ制御手段１００を共有してよい。
【００２３】
キャッシュメモリ１５０は、メインメモリ３００よりも高速にデータ転送が可能なものであって、例えばＳＲＡＭのような半導体メモリで構成される。また、キャッシュメモリ制御装置１００とは所定のデータ量単位で書き込みまたは読み出しができる。この所定のデータ量をラインと呼び、例えばライン単位を６４バイトとしてメインメモリ３００の連続した６４バイトのデータが格納される。ライン単位が６４バイトであってメインメモリ３００の１つのアドレスに対するビット幅が３２バイトであれば、メインメモリ３００とキャッシュメモリ１５０とのデータ転送はメインメモリ３００の２アドレス分を纏めてデータ転送することになる。メインメモリ３００とキャッシュメモリ１５０とのデータ転送はライン複写とも呼ばれる。キャッシュメモリ１５０は、ライン単位のメモリ領域を１つのキャッシュラインとして、複数のキャッシュラインで構成される。
【００２４】
次にキャッシュメモリ制御装置１００について説明する。キャッシュメモリ制御装置１００は、ヒット検出手段１０、リード監視手段２０、要求制御手段３０、タグメモリ４０および属性管理手段５０を備える。
【００２５】
タグメモリ４０は、キャッシュメモリ１５０の各キャッシュラインに格納されたデータのメインメモリ３００におけるアドレス情報と、各キャッシュラインのデータが有効か無効かを示すフラグを格納する。ここで、このフラグが有効であるときはそのキャッシュラインにデータが存在する状態をいい、無効であるときはそのキャッシュラインにデータが存在しない状態をいう。
【００２６】
ヒット検出手段１０は、タグメモリ４０に格納された情報が読み取り可能にタグメモリ４０と接続されている。また、アクセスマスタ２００または２１０からアクセス要求があった場合に、アクセス要求されたアドレスに対応するキャッシュラインがキャッシュメモリ１５０に存在するかどうかをタグメモリ４０に格納されたアドレス情報とフラグとにより判断する。
【００２７】
アクセス要求されたアドレスに対応するキャッシュラインがキャッシュメモリ１５０に存在するかどうかを示す検出結果２３２と、キャッシュメモリ１５０上のアドレス情報２３３を出力する。検出結果２３２は、アクセス要求されたアドレスに対応するキャッシュラインがキャッシュメモリ１５０に存在する場合はキャッシュヒットを示す情報、アクセス要求されたアドレスに対応するキャッシュラインがキャッシュメモリ１５０に存在しない場合はキャッシュミスを示す情報となる。
【００２８】
判断の方法は、例えば、タグメモリ４０の各キャッシュラインの情報のうち、フラグが有効であるキャッシュラインのアドレス情報を順次、アクセス要求をしているアクセスマスタより出力されているアドレスデータと比較する。フラグが有効であるキャッシュラインのアドレス情報のうち、アクセス要求されているアドレスデータと一致するアドレス情報がある場合は、キャッシュメモリ１５０にアクセスマスタ２００，２１０がアクセス要求をしているデータが存在すると判断され、一致するアドレス情報がない場合はキャッシュメモリ１５０にアクセスマスタ２００，２１０がアクセス要求をしているデータが存在しないと判断される。
【００２９】
リード監視手段２０は、キャッシュメモリ１５０のキャッシュライン毎にアクセスマスタ２００，２１０から入力されるアクセス種別情報２２１，２２５とアドレスデータを監視し、アクセスマスタ２００，２１０がそれぞれリードしたキャッシュラインを記憶する。リード監視手段２０は、キャッシュメモリ１５０のキャッシュラインの数とアクセスマスタの数とを掛けた分の記憶素子を備える。
【００３０】
リード監視手段２０の動作について説明する。リード監視手段２０は、アクセス要求されたアドレスに対応するキャッシュラインがキャッシュメモリ１５０に存在するかどうかを示す検出結果２３２と、キャッシュメモリ１５０上のアドレス情報２３３を得る。
【００３１】
さらにリード監視手段２０は、アクセスマスタ２００，２１０から入力されたアドレスデータのうち、下位アドレスよりアドレス情報２３３に該当するキャッシュメモリ１５０のキャッシュライン中の位置を検出する。下位アドレスから、キャッシュメモリ１５０のキャッシュラインを構成するデータの末尾にアクセスしたと判断すると、アクセスを発行したアクセスマスタ２００，２１０のアドレス情報２３３に該当するキャッシュラインの情報をリード済みと記憶する。リードする下位アドレスからリード状態を判定することにより、簡便な構成にてリード状態を監視できる。
【００３２】
要求制御手段３０は、アクセス要求されたアドレスのデータがキャッシュメモリ１５０に格納されている場合は、キャッシュメモリ１５０にアクセスする。アクセス要求されたアドレスのデータがキャッシュメモリ１５０に格納されていない場合は、アクセス種別情報２２１，２２５に応じた処理を行なう。
【００３３】
データが一時データであるかどうかを識別するため、属性管理手段５０にて、メインメモリ３００を１つ以上の領域に分割し、それぞれの分割されたメモリ領域ごとの属性を定義する。属性管理手段５０により定義される属性の内容を図２に示す。
【００３４】
属性管理手段５０は、メインメモリ３００を１つ以上のメモリ領域に分割してそれぞれの分割されたメモリ領域ごとの属性を定義する。例えば、メインメモリ３００のそれぞれの分割されたメモリ領域の開始アドレスの情報を格納することで、それぞれの分割されたメモリ領域を定義する。ここで、定義されたメモリ領域は必ずキャッシュメモリ１５０の１ライン以上の大きさをもち、キャッシュメモリ１５０に格納される際に同一キャッシュラインが複数領域にまたがることがないように定義される。
【００３５】
さらに、定義されたメモリ領域ごとに、一時データを格納するメモリ領域（一時データ領域）であるかないかを定義して格納する。ここで、一時データとは、１つのアクセスマスタがライトしたデータをライトしたアクセスマスタと同じ、または異なるアクセスマスタが１回リードした後、次にアクセスマスタが新たなデータをライトすることにより更新されるまでの期間、どのアクセスマスタからもリードアクセスされることがないデータとする。
【００３６】
定義は、例えば処理システムで実行するプログラムに基づいて、いずれかのアクセスマスタが１回リードした後から新たにデータをライト要求されるまでの期間、どのアクセスマスタからもリードアクセスされることがないデータについて割り当てたアドレス領域か否かによって定義する。
【００３７】
一時データ領域であるということは、キャッシュメモリ１５０上のあるキャッシュラインが更新された後、アクセスマスタ２００，２１０がそのキャッシュラインを読み出し完了すると、次に当該メモリ領域へのデータ更新が起こるまでの間、当該メモリ領域への読み出し要求が発生しないことを表す。さらに、一時データ領域である場合は、そのメモリ領域をリードするアクセスマスタを定義して格納することで、定義されたアクセスマスタ以外がそのメモリ領域をリード要求しているかが容易に判別できる。
【００３８】
図２は、属性管理手段５０により定義される属性の内容を示す図である。図２のように、開始アドレスの情報を定義することで、メインメモリ３００のメモリ領域が定義された数分のメモリ領域に分割されて定義されていることが判別でき、アクセス要求されたアドレスデータがどのメモリ領域内に属するかが判別できる。また、各メモリ領域に対応付けて一時データを格納する一時データ領域であるかないかを示す情報とそのメモリ領域をリードするアクセスマスタの情報を格納することで、アクセス要求されたアドレスデータが一時データを格納するデータであるかないか、どのアクセスマスタがリード要求すると定義されているかが判別できる。ここでリード要求すると定義されているアクセスマスタをリードマスタとよぶ。
【００３９】
次に、アクセスマスタ２００，２１０がメインメモリ３００に対してアクセス要求をしたときのキャッシュメモリ制御手段の動作について説明する。
【００４０】
図３は、アクセスマスタ２００，２１０がメインメモリ３００に対して書き込み（ライト）要求をしていることを示す場合の要求制御手段３０が行う処理を示すフローチャートである。
【００４１】
まず、ヒット検出手段１０が、アクセス要求されたアドレスデータとタグメモリ４０に格納された情報とから、アクセス要求されたアドレスに対応するキャッシュラインがキャッシュメモリ１５０に存在するかどうかを判断する。要求制御手段３０は、ヒット検出手段１０からその判断結果とキャッシュメモリ１５０上のアドレス情報２３３を得る（ステップＳ４００）。
【００４２】
ステップＳ４００にて、アクセス要求されたアドレスのデータがキャッシュメモリ１５０に存在する場合（Ｙｅｓ）は、要求制御手段３０は、ヒット検出手段１０より得たアドレス情報２３３で示されるキャッシュメモリ１５０上のキャッシュラインにライトデータを格納して（ステップＳ４４０）、ライト処理を完了する。
【００４３】
ステップＳ４００にて、アクセス要求されたアドレスのデータがキャッシュメモリ１５０に存在しない場合（Ｎｏ）は、ライト要求されているアドレスのライトデータを格納するためのキャッシュラインをキャッシュメモリ１５０上に確保する（ステップＳ４１０）。ここで、既にキャッシュメモリ１５０の全キャッシュラインにデータが格納されている場合は、過去に格納されたキャッシュラインをメインメモリ３００へ退避することによりライト要求されているライトデータを格納するキャッシュラインを確保する。
【００４４】
次に、要求制御手段３０は、アクセス要求されたアドレスデータと属性管理手段５０に格納された情報とから、ライト要求されているアドレスのライトデータが一時データであるかどうかの判別を行う（ステップＳ４２０）。
【００４５】
ステップＳ４２０において、アクセスマスタ２００，２１０がライト要求しているメモリ領域が一時データ領域でない場合には、要求制御手段３０は、メインメモリ３００にて記憶されたデータをステップＳ４１０にて確保したキャッシュメモリ１５０のキャッシュラインへライン複写する（ステップＳ４３０）。その後、要求制御手段３０は、複写したキャッシュラインにアクセスマスタ２００，２１０がライト要求したライトデータを上書きする（ステップＳ４４０）。以後、続けてアクセスマスタ２００，２１０がこのキャッシュラインへのライト要求をしたときは、ステップＳ４００にてライト領域がキャッシュメモリ１５０に存在する場合（Ｙｅｓ）になるため、ステップＳ４４０にてキャッシュメモリ１５０にライトデータを上書きする。
【００４６】
一方、ステップＳ４２０において、ライトする領域が一時データ領域であると判別した場合（Ｙｅｓ）には、アクセスマスタ２００，２１０はライトされたメモリ領域のみリードする一時データ領域の特性を鑑み、新たに確保したキャッシュラインに対して、メインメモリ３００からキャッシュメモリ１５０へのライン複写を行わず、アクセスマスタ２００、２１０より入力されたデータ２２３、２２７を確保したキャッシュラインに書き込みをして（ステップＳ４４０）、ライト処理を完了する。
【００４７】
これにより、ステップＳ４２０において、ライト要求されたアドレスのデータが一時データかどうかを判定して、一時データでないときのみメインメモリ３００からデータをデータ転送するので、アクセスするデータがキャッシュメモリに存在しない場合にも、キャッシュメモリ制御手段１００がメインメモリ３００へのアクセスをする回数を減らすことができる。
【００４８】
図４は、アクセスマスタ２００，２１０がメインメモリ３００に対して読み出し（リード）要求をしていることを示す場合の要求制御手段３０が行う処理を示すフローチャートである。
【００４９】
まず、ヒット検出手段１０が、アクセス要求されたアドレスデータとタグメモリ４０に格納された情報とから、アクセス要求されたアドレスに対応するキャッシュラインがキャッシュメモリ１５０に存在するかどうかを判断する。要求制御手段３０は、ヒット検出手段１０からその判断結果とキャッシュメモリ１５０上のアドレス情報２３３を得る（ステップＳ５００）。
【００５０】
ステップＳ５００にて、アクセス要求されたアドレスのデータがキャッシュメモリ１５０に存在する場合（Ｙｅｓ）は、要求制御手段３０は、ヒット検出手段１０より得たアドレス情報２３３で示されるキャッシュメモリ１５０上のキャッシュラインから該当するデータを読み出してリードデータとして出力し（ステップＳ５４０）、リード処理を完了する。
【００５１】
ステップＳ５００にて、アクセス要求されたアドレスのデータがキャッシュメモリ１５０に存在しない場合（Ｎｏ）は、リード要求されているアドレスのライトデータを読み出すためのキャッシュラインをキャッシュメモリ１５０上に確保する（ステップＳ５１０）。ここで、既にキャッシュメモリの全キャッシュラインにデータが格納されている場合は、過去に格納されたキャッシュラインをメインメモリへ退避することによりリード要求されているデータを格納するキャッシュラインを確保する。
【００５２】
要求制御手段３０は、メインメモリ３００にて記憶されたデータをステップＳ５１０にて確保したキャッシュメモリ１５０のキャッシュラインへライン複写する（ステップＳ５３０）。その後、要求制御手段３０は、複写したキャッシュメモリ１５０上のキャッシュラインから該当するデータを読み出してリードデータとして出力する（ステップＳ５４０）。
【００５３】
次に要求制御手段３０は、ステップＳ５５０にて、属性管理手段５０よりリードした領域の属性を得て、アクセスマスタ２００，２１０がリードしたメモリ領域が一時データ領域である場合には、さらにステップＳ５６０にて、リード監視手段２０より、リードしたキャッシュメモリ１５０のキャッシュラインへのリード状態を得る。
【００５４】
リード監視手段２０は、キャッシュメモリ１５０のキャッシュラインの数×アクセスマスタの数分のリード状態記憶フラグを備え、アクセスマスタ２００，２１０からのアクセス種別信号、アドレスデータにより、リード状態記憶フラグを更新する。例えば、アクセスマスタ２００がライト要求をしたとき、ヒット検出手段１０の検出結果がキャッシュヒットを示す場合、リード監視手段２０は、アドレスデータ２２２がキャッシュラインの末尾アドレスであることを検知すると、当該キャッシュラインのリード状態記憶フラグのうち、アクセスマスタ２００のリード状態を「未リード」を示す情報を記憶する。
【００５５】
その後、アクセスマスタ２００が当該キャッシュラインに転送されたアドレスのデータに対してリード要求をすると、リード監視手段２０は、検出結果２３２、アドレスデータ２２２よりキャッシュメモリの当該キャッシュラインの末尾アドレスへのリードであることを検知すると、当該キャッシュラインのリード状態記憶フラグのうち、アクセスマスタ２００のリード状態を「リード」を示す情報に更新する。
【００５６】
属性管理手段５０にて定義されたリードマスタのリード状態が「リード」を示す情報となっていれば、そのキャッシュラインをキャッシュメモリ１５０より解放する。具体的には、タグメモリ４０上の該当キャッシュラインのフラグを有効から無効に変更する（ステップＳ５７０）。属性管理手段５０にて、複数のリードマスタが定義されている場合、定義されたリードマスタのリード状態が全て「リード」となっていれば、そのキャッシュラインをキャッシュメモリ１５０より解放する。
【００５７】
上述のように、ステップＳ５５０〜Ｓ５７０において、リード要求しているアクセスマスタ２００，２１０のアドレスデータから、リードするデータが格納されているキャッシュラインが一時データ領域として定義されているかどうかを識別して、当該キャッシュラインが一時データ領域であり、定義されたアクセスマスタ２００，２１０が当該キャッシュラインのデータをリード完了していれば、当該キャッシュラインを保持不要として、キャッシュメモリ１５０より解放できるので、メインメモリ３００上の別のキャッシュラインのデータをキャッシュメモリ１５０に格納することができる。解放したキャッシュラインは、あるアクセスマスタが次にライトするまでの期間、同じアクセスマスタまたは別のアクセスマスタよりリードアクセスされることがないため、解放後のキャッシュミスによるメインメモリ３００へのアクセス回数を減らすことができる。
【００５８】
例えば、図１に示す処理システムがネットワークサービス加入者端末などのような通信処理装置である場合、通信処理装置は、ＰＣなどの加入者端末より通信データを受け取ると、一旦通信データをメインメモリ３００に格納し、ネットワークのプロトコルにしたがって同期をとり、格納された通信データを読み出してネットワークに出力する。通信データはネットワークに出力された後、メインメモリ３００に格納されたまま再び読み出されることなく、新たな通信データに更新されてはじめて、再び読み出される一時データである。
【００５９】
また、キャッシュライン解放の際にキャッシュメモリ１５０よりメインメモリ３００への退避を省略することもできるので、メインメモリ３００へのアクセス回数を減らすことができる。なお、図１に示すように、アクセスマスタ２００，２１０より入力される２系統のアクセス信号２２１〜２２３、２２５〜２２７が個別にヒット検出手段１０、リード監視手段２０、要求制御手段３０に入力され、２系統のアクセスを同時に受け付ける構成としてもよいし、キャッシュメモリ制御手段１００が２２１〜２２３、２２５〜２２７の２系統のうち１系統を選択して、順次アクセスを受け付け、ヒット検出手段１０、リード監視手段２０、要求制御手段３０には、アクセスマスタ２００，２１０のいずれか１系統の信号が順次入力されるように構成してもよい。
【符号の説明】
【００６０】
１０  ヒット検出手段
２０  リード監視手段
３０  要求制御手段
４０  タグメモリ
５０  属性管理手段
１００  キャッシュメモリ制御手段
１５０  キャッシュメモリ
２００、２１０  アクセスマスタ
３００  メインメモリ
【図１】
2014032555.tif 000003
【図２】
2014032555.tif 000004
【図３】
2014032555.tif 000005
【図４】
2014032555.tif 000006