(57)【特許請求の範囲】
【請求項１】
読み出し対象となるデータを記憶しているメモリデバイスから、記憶されているデータの少なくとも一部をキャッシュしておくことが可能であり、ライトバックモードあるいはライトスルーモードの少なくともいずれかを含む複数のアクセス方式によってアクセス可能なキャッシュメモリを備える情報処理装置であって、
データの書き込みを行う場合に、前記キャッシュメモリにおいて、該データが記憶されている領域に書き込みを行うことなく、該領域を開放すると共に、該データを前記メモリデバイスにおける所定アドレスに書き込むライトフラッシュモードを前記アクセス方式に含み、
プログラムの実行中に前記ライトバックモードとライトスルーモードとライトフラッシュモードとを相互に切り替えて、前記キャッシュメモリにアクセス可能であり、
前記ライトフラッシュモードにおいては、データの書き込みを行う場合に、前記キャッシュメモリにおいて、該データが記憶されていない場合に、前記キャッシュメモリへのアクセスを行わず、該データを前記メモリデバイスにおける所定アドレスに書き込むことを特徴とする情報処理装置。
【請求項２】
前記キャッシュメモリに記憶されているデータと前記メモリデバイスに記憶されているデータとのコヒーレンシを確保した後、前記ライトスルーモードあるいはライトフラッシュモードのいずれかに切り替え可能であることを特徴とする請求項１記載の情報処理装置。
【請求項３】
データの読み出しあるいは書き込みを行う場合に、前記キャッシュメモリに記憶された該データを、他のデータと区別して保持するロックモードを前記アクセス方式に含むことを特徴とする請求項１または２記載の情報処理装置。
【請求項４】
前記キャッシュメモリは、複数ウェイを含むセット・アソシアティブ方式のキャッシュメモリであって、前記ロックモードは、前記複数のウェイにおける特定のウェイを対象として設定可能とされていることを特徴とする請求項３記載の情報処理装置。
【請求項５】
プログラムの実行中に前記ライトバックモードとロックモードとを相互に切り替えて、前記キャッシュメモリにアクセス可能であることを特徴とする請求項３または４記載の情報処理装置。
【請求項６】
前記複数のアクセス方式は、読み出しあるいは書き込み命令の対象となるメモリ空間におけるアドレスの一部に対応付けられ、前記アクセス方式に対応するアドレスを指定することにより、各命令における前記アクセス方式を設定可能であることを特徴とする請求項１から５のいずれか１項に記載の情報処理装置。
【請求項７】
読み出し対象となるデータを記憶しているメモリデバイスから、記憶されているデータの少なくとも一部をキャッシュしておくことが可能であり、ライトバックモードあるいはライトスルーモードの少なくともいずれかを含む複数のアクセス方式によってアクセス可能なキャッシュメモリを備える情報処理装置におけるキャッシュメモリ制御方法であって、
データの書き込みを行う場合に、前記キャッシュメモリにおいて、該データが記憶されている領域に書き込みを行うことなく、該領域を開放すると共に、該データを前記メモリデバイスにおける所定アドレスに書き込むライトフラッシュモードを前記アクセス方式に含み、
プログラムの実行中に前記ライトバックモードとライトスルーモードとライトフラッシュモードとを相互に切り替えて、前記キャッシュメモリにアクセス可能であり、
前記ライトフラッシュモードにおいては、データの書き込みを行う場合に、前記キャッシュメモリにおいて、該データが記憶されていない場合に、前記キャッシュメモリへのアクセスを行わず、該データを前記メモリデバイスにおける所定アドレスに書き込むことを特徴とするキャッシュメモリ制御方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、プロセッサとメモリデバイスとの間で、データの転送を効率的に行うために設けられるキャッシュメモリを備えた情報処理装置およびそのキャッシュメモリの制御方法に関する。
【背景技術】
【０００２】
従来、プロセッサがメインメモリ等のメモリデバイス上のデータを読み出す処理を高速化するために、キャッシュメモリが用いられている。
キャッシュメモリは、プロセッサによって高速にデータを読み出すことが可能な記憶素子によって構成されている。そして、キャッシュメモリは、メモリデバイスに記憶されているデータ（以下、適宜「メモリデバイスデータ」と言う。）の一部を記憶しておき、プロセッサがメモリデバイスからデータの読み出しを行う場合に、そのデータがキャッシュメモリに記憶されているものであれば、キャッシュメモリから読み出すことによって、データを高速に読み出すことを可能としている。
【０００３】
このようなキャッシュメモリにおいては、メモリデバイスに記憶されたデータとコヒーレンシ（一致性）を保証するために、キャッシュメモリに記憶されたデータをメモリデバイスに書き出す必要がある。このとき、キャッシュメモリ内のデータは、一般に、ライトスルーモードあるいはライトバックモードによってメモリデバイスに書き出される。
ライトスルーモードにおいては、プロセッサがキャッシュメモリにデータを書き込んだ場合、キャッシュメモリに書き込んだデータに対し、有効であることを示すフラグを立てると共に、同一のデータがメモリデバイスにも書き出される。それにより、キャッシュメモリ内のデータとメモリデバイス上のデータとの一致性が常に保たれる状態となる。
【０００４】
また、ライトバックモードにおいては、プロセッサがキャッシュメモリにデータを書き込んだ場合、そのデータがＬＲＵ（Least Recently Used）アルゴリズム等に基づいてキャッシュメモリから削除されるタイミングで、メモリデバイスに書き出される。それにより、キャッシュメモリ内のデータをメモリデバイスへ書き出す回数が軽減されることとなる。
【０００５】
一般に、メモリデバイス上のデータへのアクセスは、一定の局所性を有するものであることから、キャッシュメモリにデータがヒットする確率が高い状況の下においては、ライトバックモードによってメモリデバイスへの書き出しを行う方が効率的となる。特に、画像処理のように、処理対象となるデータがメモリ上の局所的なアドレスに存在することが明らかな場合には、ライトバックモードを採用する利点が大きい。
【０００６】
ところで、ＤＭＡＣ（Direct Memory Access Controller）を用いる場合や複数のプロセッサによってメモリを共有する場合等には、特に高いコヒーレンシを確保する必要がある。即ち、上述のライトバックモードにおいては、キャッシュメモリ内のデータとメモリデバイス上のデータとが常に一致しているわけではないことから、ＤＭＡ（Direct Memory Access）等の実行に先立って、キャッシュメモリ内のデータをメモリデバイスに書き出す処理（キャッシュフラッシュ）を行う必要がある。
【０００７】
従来のキャッシュメモリを備えるプロセッサにおいては、キャッシュフラッシュを行うためのコマンド（キャッシュフラッシュコマンド）が用意されており、キャッシュメモリ内のデータを全てメモリデバイスに書き出すコマンドあるいはキャッシュメモリ内の特定のエントリのデータをメモリデバイスに書き出すコマンドのいずれかがキャッシュフラッシュコマンドとして実行される。
【０００８】
なお、キャッシュメモリからメモリデバイスにデータを書き出す処理（キャッシュフラッシュ）については、特開平１０−３２０２７４号公報、特開平９−６６８０号公報あるいは特開平８−３３９３２９号公報に記載されている。
これらの公報には、キャッシュフラッシュ操作に要する時間を短縮する技術が開示されている。
【特許文献１】特開平１０−３２０２７４号公報
【特許文献２】特開平９−６６８０号公報
【特許文献３】特開平８−３３９３２９号公報
【発明の開示】
【発明が解決しようとする課題】
【０００９】
しかしながら、キャッシュメモリを備える従来のプロセッサにおいては、キャッシュフラッシュコマンドを実行する場合、それを実行する処理時間を本来の処理とは別に要することとなり、処理速度の低下を招く事態を生じていた。
なお、ライトスルーモードによってメモリデバイスへのデータの書き出しを行う場合には、高いコヒーレンシを確保できるものの、上述のように、キャッシュメモリの性能としては一般にライトバックモードが優れる場合が多い。
【００１０】
また、従来のキャッシュメモリにおいては、使用頻度の高いデータであっても、一時的に使用されない時間が存在した場合には、ＬＲＵアルゴリズム等に従ってキャッシュメモリ内から削除されたり、キャッシュフラッシュによって他のデータと併せて一律に削除されたりする場合があった。そして、このような場合には、使用頻度の高いデータがキャッシュにミスヒットすることとなり、さらに処理速度の低下を招く事態を生じていた。
【００１１】
本発明の課題は、キャッシュメモリにおける処理速度の向上を図ることである。
【課題を解決するための手段】
【００１２】
以上の課題を解決するため、本発明は、
読み出し対象となるデータを記憶しているメモリデバイスから、記憶されているデータの少なくとも一部をキャッシュしておくことが可能であり、ライトバックモードあるいはライトスルーモードの少なくともいずれかを含む複数のアクセス方式によってアクセス可能なキャッシュメモリを備える情報処理装置であって、プログラムの実行中に前記複数のアクセス方式を相互に切り替えて、前記キャッシュメモリにアクセス可能であることを特徴としている。
【００１３】
また、プログラムの実行中に前記ライトバックモードとライトスルーモードとを相互に切り替えて、前記キャッシュメモリにアクセス可能であることを特徴としている。
また、データの書き込みを行う場合に、前記キャッシュメモリにおいて、該データが記憶されている領域に書き込みを行うことなく、該領域を開放すると共に、該データを前記メモリデバイスにおける所定アドレスに書き込むライトフラッシュモードを前記アクセス方式に含むことを特徴としている。
【００１４】
また、前記ライトフラッシュモードにおいては、データの書き込みを行う場合に、前記キャッシュメモリにおいて、該データが記憶されていない場合に、前記キャッシュメモリへのアクセスを行わず、該データを前記メモリデバイスにおける所定アドレスに書き込むことを特徴としている。
また、プログラムの実行中に前記ライトバックモードとライトフラッシュモードとを相互に切り替えて、前記キャッシュメモリにアクセス可能であることを特徴としている。
【００１５】
また、前記キャッシュメモリに記憶されているデータと前記メモリデバイスに記憶されているデータとのコヒーレンシを確保した後、前記ライトスルーモードあるいはライトフラッシュモードのいずれかに切り替え可能であることを特徴としている。
また、データの読み出しあるいは書き込みを行う場合に、前記キャッシュメモリに記憶された該データを、他のデータと区別して保持するロックモードを前記アクセス方式に含むことを特徴としている。
【００１６】
前記キャッシュメモリは、複数ウェイを含むセット・アソシアティブ方式のキャッシュメモリであって、前記ロックモードは、前記複数のウェイにおける特定のウェイを対象として設定可能とされていることを特徴としている。
また、プログラムの実行中に前記ライトバックモードとロックモードとを相互に切り替えて、前記キャッシュメモリにアクセス可能であることを特徴としている。
【００１７】
また、前記複数のアクセス方式は、読み出しあるいは書き込み命令の対象となるメモリ空間におけるアドレスの一部に対応付けられ、前記アクセス方式に対応するアドレスを指定することにより、各命令における前記アクセス方式を設定可能であることを特徴としている。
また、本発明は、
読み出し対象となるデータを記憶しているメモリデバイスから、記憶されているデータの少なくとも一部をキャッシュしておくことが可能であり、ライトバックモードあるいはライトスルーモードの少なくともいずれかを含む複数のアクセス方式によってアクセス可能なキャッシュメモリを備える情報処理装置におけるキャッシュメモリ制御方法であって、プログラムの実行中に前記複数のアクセス方式を相互に切り替えて、前記キャッシュメモリにアクセスすることを特徴としている。
【００１８】
本発明によれば、従来のライトバックモード、ライトスルーモードに加え、ライトフラッシュモードによって、データの読み出しあるいは書き込み命令を実行することが可能である。
したがって、キャッシュフラッシュを行うことなく、キャッシュメモリのデータとメモリデバイスのデータとの高いコヒーレンシを確保することができるため、情報処理装置の処理速度を向上させることが可能となる。
【００１９】
また、ライトフラッシュモードによってデータの書き込み命令を実行した場合、書き込まれたデータが記憶されていたキャッシュメモリの領域が開放されるため、キャッシュメモリをより効率的に使用することが可能となる。
また、本発明によれば、ロックモードによる読み出しあるいは書き込み命令を実行することが可能であるため、使用頻度が高く固定的な値に保たれるデータ等を、要求に応じてキャッシュメモリ内に保持させることが可能となり、キャッシュのヒット率が向上すると共に、処理速度を向上させることが可能となる。
【００２０】
また、本発明によれば、ライトバックモード、ライトフラッシュモード、ロックモードおよびライトフラッシュモードを、プログラムの実行中に、相互に切り替えることが可能である。
したがって、プログラムの処理内容に応じて柔軟に命令のモードを変更することが可能となり、処理効率を向上させることが可能となる。
【発明を実施するための最良の形態】
【００２１】
以下、図を参照して本発明に係る情報処理装置の実施の形態を説明する。
本発明においては、従来のキャッシュメモリにおけるライトバックモードおよびライトスルーモードに加え、新たにライトフラッシュモードを規定することにより、キャッシュフラッシュを実行することなく、キャッシュメモリとメモリデバイスとのコヒーレンシを確保可能なものとしている。さらに、本発明においては、ロックモードを規定することにより、キャッシュのヒット率および処理速度を向上させることを可能としている。
【００２２】
まず、構成を説明する。
図１は、本発明を適用した情報処理装置１の構成を示す概略図である。
図１において、情報処理装置１は、ＣＰＵ（Central Processing Unit）コア１０と、キャッシュメモリ２０と、ＤＭＡＣ３０と、メモリ４０ａ，４０ｂとを含んで構成され、これら各部はバスを介して接続されている。
【００２３】
ＣＰＵコア１０は、情報処理装置１全体を制御するものであり、所定のプログラムを実行することにより、種々の処理を行う。例えば、ＣＰＵコア１０は、メモリ４０ａ，４０ｂの所定のアドレスから演算対象となるデータあるいは命令コードを読み出して演算処理を行い、演算結果をメモリ４０ａ，４０ｂの所定のアドレスに書き込む動作を繰り返しながら、入力されたプログラムを実行する。このとき、ＣＰＵコア１０がメモリ４０ａ，４０ｂにアクセスする処理を高速化するために、キャッシュメモリ２０を介してデータが入出力される。
【００２４】
ＣＰＵコア１０は、データの書き込みを指示する命令として、ライトスルーモード、ライトバックモードおよびライトフラッシュモードのいずれかを選択し、キャッシュメモリ２０に出力する。
ライトスルーモードでは、書き込み対象であるデータがキャッシュにヒットした場合、キャッシュメモリ２０への書き込みを行うと共に、メモリ４０ａ，４０ｂに対しても書き込みを行い、データを書き込んだキャッシュを有効な状態とする。また、書き込み対象であるデータがキャッシュにミスヒットした場合、メモリ４０ａ，４０ｂにのみデータを書き込み、キャッシュメモリ２０への書き込みは行わない。
【００２５】
ライトバックモードでは、書き込み対象であるデータがキャッシュにヒットした場合、キャッシュメモリ２０への書き込みを行い、データを書き込んだキャッシュを有効な状態とすると共に、メモリ４０ａ，４０ｂに対しては書き込みを行わない。このとき、キャッシュメモリ２０内のデータがメモリ４０ａ，４０ｂの対応するデータと一致しているか否か（即ち、キャッシュメモリ２０内のデータのみが書き換えられているか否か）を示すDirtyフラグの状態に応じて書き込みを制御する。また、書き込み対象であるデータがキャッシュにミスヒットした場合、ＬＲＵアルゴリズムに従って、キャッシュメモリ２０において更新すべき領域を判定し、上述のDirtyフラグの状態に応じて、必要であれば（即ち、後述するように、Dirtyフラグが“１”であれば）、その領域に記憶されているデータをメモリ４０ａ，４０ｂに書き出す。そして、データが書き出されることにより確保されたキャッシュメモリ２０の領域に、書き込み対象であるデータのアドレスを参照して、メモリ４０ａ，４０ｂアドレスからデータをフィルし（読み込み）、フィルされたキャッシュメモリ２０内のデータを、書き込み対象であるデータに更新する。
【００２６】
ライトフラッシュモードでは、書き込み対象であるデータがキャッシュにヒットした場合、キャッシュメモリ２０への書き込みを行うことなく、メモリ４０ａ，４０ｂにのみデータの書き込みを行い、データを書き込んだキャッシュを無効な状態とする。また、書き込み対象であるデータがキャッシュにミスヒットした場合、メモリ４０ａ，４０ｂにのみデータを書き込み、キャッシュメモリ２０への書き込みは行わない。
【００２７】
また、ＣＰＵコア１０は、上述の３つのモードの他に、キャッシュメモリ２０内においてデータ保持させるためのモードとして、ロックモードを選択することが可能である。
ロックモードでデータにアクセスすることにより、キャッシュメモリ２０内に一旦取り込んだデータは、ＬＲＵアルゴリズムによる更新が行われることなく継続して保持される。
【００２８】
キャッシュメモリ２０は、メモリ４０ａ，４０ｂより高速にＣＰＵコア１０からアクセス可能な記憶素子を備えており、ＣＰＵコア１０がメモリ４０ａ，４０ｂとデータを入出力する処理を高速化する。
ここで、キャッシュメモリの方式には種々のものがあるが、セット・アソシアティブ方式が一般的であるため、ここでは２ウェイ（ウェイＡ，Ｂ）のセット・アソシアティブ方式のキャッシュメモリを例に挙げて説明する。
【００２９】
なお、セット・アソシアティブ方式とは、キャッシュメモリを複数の領域（ウェイ）に分割し、それぞれのウェイに、メモリデバイス上の異なるアドレスのデータを格納しておくことにより、ヒット率を向上させることができる方式である。
図２は、キャッシュメモリ２０の機能構成を示すブロック図である。
図２において、キャッシュメモリ２０は、アドレスデコード部２１と、ヒット検出部２２と、フラグメモリ２３と、タグアドレスメモリ２４と、キャッシュ制御部２５と、データメモリ２６と、メモリインターフェース（Ｉ／Ｆ）２７とを含んで構成される。
【００３０】
アドレスデコード部２１は、ＣＰＵコア１０からＣＰＵアドレスバスを介して入力されたアドレスをデコードし、キャッシュメモリ２０への書き込みモード（ライトスルーモード、ライトバックモード、ライトフラッシュモード、ロックモード）のいずれであるかを示す信号（以下、命令のモードを示す信号を「モード選択信号」と言う。）をキャッシュ制御部２５に出力したり、メモリ４０ａ，４０ｂ上のアクセス対象であるアドレスを算出してヒット検出部２２およびキャッシュ制御部２５に出力したりする。
【００３１】
ヒット検出部２２は、アドレスデコード部２１からアドレスが入力された場合に、データメモリ２６に記憶されているデータがヒットしたか否かを検出する。具体的には、タグアドレスメモリ２４に記憶されたアドレスそれぞれを参照し、アドレスデコード部２１から入力されたアドレスが検出されると、そのアドレスについてフラグメモリ２３に記憶されているフラグ（後述するValidフラグ）が有効であることを示すものか否かを判定し、有効であることを示す場合には、キャッシュにヒットしたことを示す制御信号（以下、「キャッシュヒット信号」と言う。）をキャッシュ制御部２５に出力する。なお、このキャッシュヒット信号には、キャッシュメモリ２０内においてヒットしたデータのアドレス、ウェイおよびエントリを示す情報が含まれている。一方、キャッシュにヒットしない場合には、ヒット検出部２２は、キャッシュにヒットしないことを示す制御信号（以下、「キャッシュミスヒット信号」と言う。）をキャッシュ制御部２５に出力する。
【００３２】
フラグメモリ２３は、データメモリ２６の各エントリに記憶されているデータそれぞれについて、各ウェイのデータの有効性を示すValidフラグ、次に使用されるウェイを示すUsedフラグ、エントリの更新に対する制限を示すLockフラグおよびキャッシュメモリ２０内のデータがメモリ４０ａ，４０ｂの対応するデータと一致しているか否か（即ち、キャッシュメモリ２０内のデータのみが書き換えられているか否か）を示すDirtyフラグを記憶している。これらのフラグは、ＣＰＵコア１０がキャッシュメモリ２０にアクセスすることに対応して、順次、最新の状態を示す値に書き換えられる。
【００３３】
タグアドレスメモリ２４は、データメモリ２６の各エントリに記憶されているデータそれぞれについて、各ウェイのデータが記憶されているメモリ４０ａ，４０ｂ上のアドレスを記憶している。これらのアドレスは、キャッシュメモリ２０内のエントリの更新に伴い、順次書き換えられる。
キャッシュ制御部２５は、ＣＰＵコア１０からメモリ４０ａ，４０ｂ上のデータの読み出しあるいは書き込みを指示する制御信号（以下、「ＣＰＵ制御信号」と言う。）が入力されると、そのデータがキャッシュにヒットするか否かに応じて、所定の動作を行う。即ち、ＣＰＵコア１０からデータの読み出しを指示するＣＰＵ制御信号が入力された場合、読み出し対象であるデータがキャッシュにヒットした（ヒット検出部２２からキャッシュヒット信号が入力された）ときには、データメモリ２６から読み出し対象であるデータを読み出し、ＣＰＵコア１０に対して出力するデータ（以下、「ＣＰＵ入力データ」と言う。）とする。
【００３４】
一方、読み出し対象であるデータがキャッシュにヒットしない（ヒット検出部２２からキャッシュミスヒット信号が入力された）ときには、キャッシュ制御部２５は、アドレスデコード部２１から入力されるアドレスに基づいて、メモリ４０ａ，４０ｂから読み対象であるデータを読み出し、ＣＰＵ入力データとすると共に、キャッシュメモリ２０に記憶する。
【００３５】
また、ＣＰＵコア１０からデータの書き込みを指示するＣＰＵ制御信号が入力された場合、キャッシュ制御部２５は、そのデータがキャッシュにヒットした（ヒット検出部２２からキャッシュヒット信号が入力された）ときには、アドレスデコード部２１から入力されるモード選択信号に基づいて、ライトスルーモード、ライトバックモードあるいはライトフラッシュモードのいずれかであるかを判定する。
【００３６】
ライトスルーモードの場合、キャッシュ制御部２５は、アドレスデコード部２１から入力されるアドレスに基づいて、メモリ４０ａ，４０ｂに、ＣＰＵ制御信号によって指示されたデータを書き込むと共に、ヒット検出部２２から入力されるエントリおよびウェイに対応するデータメモリ２６内のデータを、ＣＰＵ制御信号によって書き込みが指示されたデータに更新する。このとき、更新されたデータのValidフラグは有効であることを示すものとされる。
【００３７】
ライトバックモードの場合、キャッシュ制御部２５は、メモリ４０ａ，４０ｂにはアクセスすることなく、ヒット検出部２２から入力されるエントリおよびウェイに対応するデータメモリ２６内のデータを、ＣＰＵ制御信号によって書き込みが指示されたデータに更新する。このとき、更新されたデータのValidフラグは有効であることを示すものとされる。また、キャッシュメモリ２０のデータメモリ２６とメモリ４０ａ，４０ｂとの一致を示すDirtyフラグも同時に更新される。
【００３８】
ライトフラッシュモードの場合、キャッシュ制御部２５は、アドレスデコード部２１から入力されるアドレスに基づいて、メモリ４０ａ，４０ｂに、ＣＰＵ制御信号によって指示されたデータを書き込み、データメモリ２６内のデータは更新しない。このとき、ヒット検出部２２から入力されるエントリおよびウェイに対応するデータメモリ２６内のデータのValidフラグは無効であることを示すものとされる。
【００３９】
一方、ＣＰＵコア１０からデータの書き込みを指示するＣＰＵ制御信号が入力された場合に、キャッシュ制御部２５は、そのデータがキャッシュにヒットしない（ヒット検出部２２からキャッシュミスヒット信号が入力された）ときには、アドレスデコード部２１から入力されるモード選択信号が、ライトバックモードである場合にのみ、キャッシュメモリ２０内にデータを書き込み、他のモードである場合には、メモリ４０ａ，４０ｂにのみデータを書き込む。
【００４０】
即ち、ライトバックモードである場合、キャッシュ制御部２５は、データメモリ２６において、ＬＲＵアルゴリズムに従い削除対象となっているデータが記憶されている領域あるいは空き領域に、Dirtyフラグの状態に応じて、ＣＰＵ制御信号によって指示されたデータを書き込み、メモリ４０ａ，４０ｂにはデータを書き込まない。
また、図２において、データメモリ２６は、アクセス頻度の高いデータ等、メモリ４０ａ，４０ｂ上の所定データを記憶している。さらに、データメモリ２６には、ウェイＡ，Ｂそれぞれに対応するデータを記憶することが可能である。
【００４１】
メモリＩ／Ｆ２７は、キャッシュ制御部２５がメモリ４０ａ，４０ｂにアクセスするための入出力インターフェースである。
図１に戻り、ＤＭＡＣ３０は、メモリ４０ａ，４０ｂにおけるＤＭＡを制御し、ＤＭＡの実行中にＣＰＵコア１０をウェイト状態とさせたり、ＤＭＡの終了をＣＰＵコア１０に通知したりする。
【００４２】
メモリ４０ａ，４０ｂは、例えばＳＤＲＡＭ（Synchronous Dynamic Random Access Memory）等の揮発性のメモリによって構成され、ＣＰＵコア１０がプログラムを実行する際に読み込む命令あるいは演算対象となるデータを記憶している。
また、メモリ４０ａ，４０ｂによって構成されるメモリ空間には、物理的なメモリ空間を示すアドレスと、書き込みあるいは読み込み命令のモードを示すアドレスとが割り当てられている。
【００４３】
図３は、メモリ４０ａ，４０ｂによって構成されるメモリ空間のアドレスマップを示す図である。
図３において、アドレスの最上位は書き込みあるいは読み込み命令のモードを示し、最上位に次ぐ下位のアドレスはメモリ４０ａ，４０ｂの物理的なメモリ空間を示している。
例えば、“０ｘ４”（１６進の“４”）で始まるアドレスはライドバックモードであることを示し、“０ｘ５”（１６進の“５”）で始まるアドレスはライトスルーモードであることを示している。また、“０ｘ６”（１６進の“６”）で始まるアドレスはライトフラッシュモードであることを示し、“０ｘ７”で始まるアドレスはロックモードであることを示している。
【００４４】
このようなアドレスマップに従って、ＣＰＵコア１０が、命令のモードに対応する最上位アドレスと、演算対象となるデータが記憶されているメモリ４０ａ，４０ｂの物理的なアドレスとを指定する。
次に、動作を説明する。
まず、ＣＰＵコア１０が、キャッシュメモリ２０に対し、図３に示すアドレスを指定して、データの読み出しあるいは書き込み命令を行う。
【００４５】
すると、キャッシュメモリ２０のアドレスデコード部２１が、命令中の最上位アドレスに基づいてモードを判定する。そして、その判定されたモードに対応して、ヒット検出部２２が各フラグおよびアドレスを更新すると共に、キャッシュ制御部２５がデータメモリ２６を更新したり、メモリ４０ａ，４０ｂにデータを書き込んだり、メモリ４０ａ，４０ｂからデータを読み出してデータメモリ２６に記憶したりする。
【００４６】
このような動作を行うことにより、各フラグは、命令のモードに対応して順次更新される。
図４は、読み出し命令が行われた場合の各フラグの状態遷移を示す図であり、図５は、書き込み命令が行われた場合の各フラグの状態遷移を示す図である。図４および図５においては、命令の種類（読み出し命令“Read”あるいは書き込み命令“Write”）、モード（Mode）、キャッシュにヒットしたか否か（hit/miss）、フラグの初期状態（V0，V1：Validフラグ、U：Usedフラグ、L：Lockフラグ）、使用されるウェイ（使用Way）、チェック対象であるDirtyフラグ（DirtyFlagチェック）、更新後のフラグの値（更新後の値）が示されている。なお、図４および図５において、値のない欄“−”は“don’tcare”（不問）であり、“X”は“０”または“１”のどちらかの値が使用されることを示す。
【００４７】
初めに、図４を参照して、読み出し命令の場合について概説する。
図４において、読み出し命令の場合、ライトスルーモード、ライトバックモードおよびライトフラッシュモードのいずれも同様の状態遷移となる。
例えば、ライトスルーモード、ライトバックモードおよびライトフラッシュモードの読み出し命令が入力され、キャッシュにミスヒットした場合、各フラグの初期状態がＶ０＝０，Ｖ１＝０のとき、Usedフラグの値に関わらずウェイＡが使用され、ウェイＡが使用されたときには、ウェイＡに有効なデータが書き込まれるため、ValidフラグＶ０＝１となり、さらに、次に更新対象となるウェイはウェイＢとなることからUsedフラグはＵ＝１となる（図４における最上段のパターン参照）。
【００４８】
また、例えば、ライトスルーモード、ライトバックモードおよびライトフラッシュモードの読み出し命令が入力され、キャッシュにミスヒットした場合、各フラグの初期状態がＶ０＝１，Ｖ１＝１であり、UsedフラグＵ＝０のとき、ウェイＡが使用され、ウェイＡにデータが書き込まれる（フィルされる）ため、その書き込みに先立ち、DirtyフラグＤ０がチェックされる。そして、Ｄ０＝１であれば、キャッシュメモリ２０内のデータが書き換えられ、かつ、その内容がメモリ４０ａ，４０ｂには反映されていない状態であることから、キャッシュメモリ２０からメモリ４０ａ，４０ｂへの書き出しが行われた上で新たなデータがキャッシュメモリ２０内に読み込まれる。また、Ｄ０＝０であれば、データを書き出す必要がないことから、そのまま新たなデータがキャッシュメモリ２０内に読み込まれる。また、次に更新対象となるウェイはウェイＢとなることからUsedフラグはＵ＝１となり、新たに書き込まれたデータについてのDirtyフラグはＤ０＝０となる（図４における第４段のパターン参照）。
【００４９】
また、例えば、ライトスルーモード、ライトバックモードおよびライトフラッシュモードの読み出し命令が入力され、キャッシュにヒットした場合、ValidフラグＶ０の初期状態がＶ０＝１であり、ウェイＡがヒットした場合、ウェイＡから値が読み出され、次に更新対象となるウェイはウェイＢとなることからUsedフラグはＵ＝１となる（図４における第７段のパターン参照）。なお、ここでのキャッシュの状態更新アルゴリズムは、ＬＲＵに従うものとする。
【００５０】
一方、ロックモードにおいては、例えば、ロックモードの読み出し命令が入力され、キャッシュにミスヒットした場合、各フラグ（Ｖ０，Ｖ１，Ｕ，Ｌ）の状態に関わらず、ウェイＡが使用され、ウェイＡに有効なデータが書き込まれ、このデータは保持される（ロックされる）。フラグの状態は、ValidフラグＶ０＝１、LockフラグＬ＝１となり、さらに、次に更新対象となるウェイはウェイＢとなることからUsedフラグはＵ＝１となる（図４における第９〜１２段のパターン参照）。
【００５１】
このように、本発明においては、ロックモードが選択された場合、特定のウェイにデータを保持することが可能である。また、本発明におけるロックモードは、ウェイＡについてのみ選択することが可能である。即ち、本発明においては、ロックモードは、ウェイＡに専用に設けられたモードとなっている。
また、例えば、ロックモードの読み出し命令が入力され、キャッシュにミスヒットした場合、各フラグの初期状態がＶ０＝１，Ｌ＝０であり、ウェイＡが既に使用されたときには、ウェイＡにデータが書き込まれる（フィルされる）ため、その書き込みに先立ち、DirtyフラグＤ０がチェックされる。そして、Ｄ０＝１であれば、キャッシュメモリ２０内のデータが書き換えられ、かつ、その内容がメモリ４０ａ，４０ｂには反映されていない状態であることから、キャッシュメモリ２０からメモリ４０ａ，４０ｂへの書き出しが行われた上で新たなデータがキャッシュメモリ２０内に読み込まれる。一方、Ｄ０＝０であれば、データを書き出す必要がないことから、そのまま新たなデータがキャッシュメモリ２０内に読み込まれる。また、次に更新対象となるウェイはウェイＢとなることからUsedフラグはＵ＝１となり、新たに書き込まれたデータについてのDirtyフラグはＤ０＝０となる。さらに、新たに書き込まれたデータは保持されるため、LockフラグはＬ＝１となる（図４における第１０段のパターン参照）。
【００５２】
他の場合についても、同様に、命令のモードに従ってフラグが更新される。
次に、図５を参照して、書き込み命令の場合について概説する。
図５において、書き込み命令の場合、ライトスルーモード、ライトバックモード、ライトフラッシュモードおよびロックモードのいずれも異なる状態遷移となる。
例えば、ライトバックモードの書き込み命令が入力され、キャッシュにミスヒットした場合、各フラグの初期状態がＶ０＝０，Ｖ１＝０のとき、Usedフラグの値に関わらずウェイＡが使用され、ウェイＡに有効なデータが書き込まれるため、ValidフラグＶ０＝１、となり、さらに、次に更新対象となるウェイはウェイＢとなることからUsedフラグはＵ＝１となる。また、キャッシュメモリ２０にはデータが書き込まれたが、メモリ４０ａ，４０ｂにはそのデータが書き込まれていないため、DirtyフラグはＤ０＝１となる。（図５における最上段のパターン参照）。
【００５３】
また、例えば、ライトバックモードの書き込み命令が入力され、キャッシュにミスヒットした場合、各フラグの初期状態がＶ０＝１，Ｖ１＝１であり、UsedフラグＵ＝０のとき、ウェイＡが使用され、ウェイＡにデータが書き込まれる（フィルされる）ため、その書き込みに先立ち、DirtyフラグＤ０がチェックされる。そして、Ｄ０＝１であれば、キャッシュメモリ２０内のデータが書き換えられ、かつ、その内容がメモリ４０ａ，４０ｂには反映されていない状態であることから、キャッシュメモリ２０からメモリ４０ａ，４０ｂへの書き出しが行われた上で新たなデータがキャッシュメモリ２０内に読み込まれる。一方、Ｄ０＝０であれば、データを書き出す必要がないことから、そのまま新たなデータがキャッシュメモリ２０内に読み込まれる。また、次に更新対象となるウェイはウェイＢとなることからUsedフラグはＵ＝１となり、新たに書き込まれたデータについてのDirtyフラグはＤ０＝１となる（図５における第４段のパターン参照）。
【００５４】
また、例えば、ライトスルーモードの書き込み命令が入力され、キャッシュにヒットした場合、ValidフラグＶ０の状態がＶ０＝１であり、ウェイＡがヒットしたときには、ウェイＡにデータが書き込まれる（フィルされる）ため、その書き込みに先立ち、DirtyフラグＤ０がチェックされる。そして、Ｄ０＝１であれば、キャッシュメモリ２０内のデータが書き換えられ、かつ、その内容がメモリ４０ａ，４０ｂには反映されていない状態であることから、キャッシュメモリ２０からメモリ４０ａ，４０ｂへの書き出しが行われた上で新たなデータがキャッシュメモリ２０内に読み込まれる。一方、Ｄ０＝０であれば、データを書き出す必要がないことから、そのまま新たなデータがキャッシュメモリ２０内に読み込まれる。また、次に更新対象となるウェイはウェイＢとなることからUsedフラグはＵ＝１となり、新たに書き込まれたデータについてのDirtyフラグはＤ０＝０となる（図５における第１０段のパターン参照）。
【００５５】
また、例えば、ライトフラッシュモードの書き込み命令が入力され、キャッシュにヒットした場合、ValidフラグＶ０の状態がＶ０＝１であり、ウェイＡがヒットしたときには、ウェイＡにデータが書き込まれる（フィルされる）ため、その書き込みに先立ち、DirtyフラグＤ０がチェックされる。そして、Ｄ０＝１であれば、キャッシュメモリ２０内のデータが書き換えられ、かつ、その内容がメモリ４０ａ，４０ｂには反映されていない状態であることから、キャッシュメモリ２０からメモリ４０ａ，４０ｂへの書き出しが行われた上で新たなデータがキャッシュメモリ２０内に読み込み可能となる。一方、Ｄ０＝０であれば、データを書き出す必要がないことから、そのまま新たなデータがキャッシュメモリ２０内に読み込み可能となる。また、ライトフラッシュモードの場合、使用されたウェイＡが開放される。即ち、ValidフラグＶ０はＶ０＝０（無効）とされ、次に更新対象となるウェイはヒットしたウェイ（この例ではウェイＡとなる。）となるため、UsedフラグはＵ＝０となり、新たに読み込まれたデータについてのDirtyフラグはリセットされる（図５における第１３段のパターン参照）。
【００５６】
なお、本実施の形態に係るキャッシュメモリ２０の各ウェイは、複数ワード長を有し、複数ワードに対して１つのDirtyフラグが設定されている。そして、同一のDirtyフラグが設定されている複数ワードについては、ワード単位でなく、それら複数のワードをまとめてキャッシュメモリ２０に入出力する構成である。そのため、特定のワードに対する書き込み命令が実行される場合には、同一のDirtyフラグが設定されている他のワードについて、メモリ４０ａ，４０ｂとのコヒーレンシを確保する必要がある。したがって、上述のように、ライトスルーモードおよびライトフラッシュモードの場合にも、Dirtyフラグのチェックおよびメモリ４０ａ，４０ｂへのデータの書き出しが行われる。また、ライトスルーモードおよびライトフラッシュモードの場合、キャッシュにミスヒットしたときには、キャッシュメモリ２０に対する操作は行われない。
【００５７】
さらに、例えば、ロックモードの書き込み命令が入力され、キャッシュにヒットした場合、ValidフラグＶ０の状態がＶ０＝１であり、ウェイＡがヒットしたときには、ウェイＡにデータが書き込まれる（フィルされる）ため、その書き込みに先立ち、DirtyフラグＤ０がチェックされる。そして、Ｄ０＝１であれば、キャッシュメモリ２０内のデータが書き換えられ、かつ、その内容がメモリ４０ａ，４０ｂには反映されていない状態であることから、キャッシュメモリ２０からメモリ４０ａ，４０ｂへの書き出しが行われた上で新たなデータがキャッシュメモリ２０内に読み込まれる。一方、Ｄ０＝０であれば、データを書き出す必要がないことから、そのまま新たなデータがキャッシュメモリ２０内に読み込まれる。また、ロックモードの場合、ウェイＡのデータが保持される。したがって、次に更新対象となるウェイは常にウェイＢとなることからUsedフラグはＵ＝１となり、新たに書き込まれたデータについてのDirtyフラグはＤ０＝０となる（図５における第１６段のパターン参照）。
【００５８】
このように、各命令において、ＣＰＵコア１０がモードを指定することによってモードの切り替えを行うことが可能であり、それによって、キャッシュメモリ２０からメモリ４０ａ，４０ｂに対するデータの書き出しを柔軟に行うことが可能となる。
以下、プログラムの実行中に、モードを切り替える場合の具体的な処理フローについて説明する。
【００５９】
図６は、プログラムの実行中にライトバックモードとライトフラッシュモードとを切り替える場合の処理を示すフローチャートである。
図６において、処理が開始されると、ＣＰＵコア１０は、メモリ４０ａ，４０ｂにおいて使用するメモリの領域を確保し（ステップＳ１）、読み出しあるいは書き込み命令における指定アドレスをライトバックモードに対応するアドレス（アドレスの最上位を“０ｘ４”）に設定する（ステップＳ２）。
【００６０】
そして、ＣＰＵコア１０は、ライトバックモードによる処理を実行し（ステップＳ３）、ライトバックモードによる処理、即ち、データの局所性を用いる処理が全て終了したか否かの判定を行う（ステップＳ４）。
ステップＳ４において、データの局所性を用いる処理の全ては終了していないと判定した場合、ＣＰＵコア１０は、ステップＳ３の処理に移行し、データの局所性を用いる処理が全て終了したと判定した場合、読み出しあるいは書き込み命令における指定アドレスをライトフラッシュモードに対応するアドレス（アドレスの最上位を“０ｘ６”）に設定する（ステップＳ５）。
【００６１】
次いで、ＣＰＵコア１０は、ライトフラッシュモードによる処理を実行し（ステップＳ６）、ライトフラッシュモードによる処理、即ち、メモリ４０ａ，４０ｂへの書き出しを伴う処理が全て終了したか否かの判定を行う（ステップＳ７）。
ステップＳ７において、メモリ４０ａ，４０ｂへの書き出しを伴う処理の全ては終了していないと判定した場合、ＣＰＵコア１０は、ステップＳ６の処理に移行し、メモリ４０ａ，４０ｂへの書き出しを伴う処理が全て終了したと判定した場合、ＤＭＡＣ３０による処理（ＤＭＡ転送等）を実行する（ステップＳ８）。
【００６２】
そして、ＣＰＵコア１０は、ステップＳ１において確保したメモリの領域を開放し（ステップＳ９）、処理を終了する。
このように、ＤＭＡ等、キャッシュメモリ２０が記憶するデータとメモリ４０ａ，４０ｂが記憶するデータとの高いコヒーレンシを要する場合に、プログラムの実行中において、ライトバックモード（あるいは他のモード）からライトフラッシュモードに切り替えることが可能であることにより、キャッシュフラッシュを行う必要がなくなるため、情報処理装置１の処理速度を向上させることが可能となると共に、順次、キャッシュメモリ２０のエントリが開放されるため、キャッシュメモリ２０を効率的に使用することが可能となる。
【００６３】
次に、プログラムの実行中にライトバックモードとロックモードとを切り替える場合の処理について説明する。
図７は、プログラムの実行中にライトバックモードとロックモードとを切り替える場合の処理を示すフローチャートである。
図７において、処理が開始されると、ＣＰＵコア１０は、メモリ４０ａ，４０ｂにおいて使用するメモリの領域を確保し（ステップＳ１０１）、読み出しあるいは書き込み命令における指定アドレスをロックモードに対応するアドレス（アドレスの最上位を“０ｘ７”）に設定する（ステップＳ１０２）。
【００６４】
そして、ＣＰＵコア１０は、メモリ４０ａ，４０ｂから使用頻度の高いテーブル形式のデータをキャッシュメモリ２０に読み出し、その参照を伴う処理を実行する（ステップＳ１０３）。
ここで、ステップＳ１０３において読み出されるデータは、テーブル形式のデータに限られず、使用頻度が高く固定的な値に保たれるデータであれば良い。
【００６５】
次いで、ＣＰＵコア１０は、使用頻度の高いテーブル形式のデータを参照する処理が全て終了したか否かの判定を行う（ステップＳ１０４）。
ステップＳ１０４において、使用頻度の高いテーブル形式のデータを参照する処理の全ては終了していないと判定した場合、ＣＰＵコア１０は、ステップＳ１０３の処理に移行し、使用頻度の高いテーブル形式のデータを参照する処理が全て終了したと判定した場合、読み出しあるいは書き込み命令における指定アドレスをライトバックモードに対応するアドレス（アドレスの最上位を“０ｘ４”）に設定する（ステップＳ１０５）。
【００６６】
次に、ＣＰＵコア１０は、ライトバックモードによる処理を実行し（ステップＳ１０６）、ライトバックモードにより処理が全て終了したか否かの判定を行う（ステップＳ１０７）。
ステップＳ１０７において、ライトバックモードによる処理の全ては終了していないと判定した場合、ＣＰＵコア１０は、ステップＳ１０６の処理に移行し、ライトバックモードによる処理が全て終了したと判定した場合、ロックモードによって保持されたデータが記憶されている領域（ロック領域）を開放するコマンドを実行する（ステップＳ１０８）。
【００６７】
そして、ＣＰＵコア１０は、ステップＳ１０１において確保したメモリの領域を開放し（ステップＳ１０９）、処理を終了する。
このように、テーブル形式のデータ等、使用頻度が高く固定的な値に保たれるデータを参照する場合に、ロックモードによる読み出しあるいは書き込みを行い、使用頻度が高く固定的な値に保たれるデータを参照する処理が終了した後に、ライトバックモード（あるいは他のモード）に切り替えることが可能であることにより、キャッシュのヒット率を向上させることができるため、情報処理装置１の処理速度を向上させることが可能となる。
【００６８】
以上のように、本実施の形態に係る情報処理装置１は、従来のライトバックモード、ライトスルーモードに加え、ライトフラッシュモードによって、データの読み出しあるいは書き込み命令を実行することが可能である。
したがって、キャッシュフラッシュを行うことなく、キャッシュメモリ２０のデータとメモリ４０ａ，４０ｂのデータとの高いコヒーレンシを確保することができるため、情報処理装置１の処理速度を向上させることが可能となる。
【００６９】
また、ライトフラッシュモードによってデータの書き込み命令を実行した場合、書き込まれたデータが記憶されていたキャッシュメモリ２０のエントリが開放されるため、キャッシュメモリ２０をより効率的に使用することが可能となる。
また、本実施の形態に係る情報処理装置１は、ロックモードによる読み出しあるいは書き込み命令を実行することが可能である。
【００７０】
したがって、使用頻度が高く固定的な値に保たれるデータを、要求に応じてキャッシュメモリ２０内に保持させることが可能となり、キャッシュのヒット率が向上すると共に、処理速度を向上させることが可能となる。
また、本実施の形態に係る情報処理装置１は、ライトバックモード、ライトフラッシュモード、ロックモードおよびライトフラッシュモードを、プログラムの実行中に、相互に切り替えることが可能である。
【００７１】
例えば、キャッシュメモリ２０内のデータをメモリ４０ａ，４０ｂに書き出すことにより、キャッシュメモリ２０のデータとメモリ４０ａ，４０ｂのデータとのコヒーレンシを確保する際に、引き続き使用するデータについては、ライトスルーモードに設定し、キャッシュを有効な状態に維持する一方、以後、使用しないデータについては、ライトフラッシュモードに設定し、エントリを開放するといったことにより、キャッシュメモリ２０の状態を制御することが可能である。
【００７２】
したがって、プログラムの処理内容に応じて柔軟に命令のモードを変更することが可能となり、処理効率を向上させることが可能となる。
【図面の簡単な説明】
【００７３】
【図１】本発明を適用した情報処理装置１の構成を示す概略図である。
【図２】キャッシュメモリ２０の機能構成を示すブロック図である。
【図３】メモリ４０ａ，４０ｂによって構成されるメモリ空間のアドレスマップを示す図である。
【図４】読み出し命令が行われた場合の各フラグの状態遷移を示す図である。
【図５】書き込み命令が行われた場合の各フラグの状態遷移を示す図である。
【図６】プログラムの実行中にライトバックモードとライトフラッシュモードとを切り替える場合の処理を示すフローチャートである。
【図７】プログラムの実行中にライトバックモードとロックモードとを切り替える場合の処理を示すフローチャートである。
【符号の説明】
【００７４】
１  情報処理装置，１０  ＣＰＵコア，２０  キャッシュメモリ，２１  アドレスデコード部，２２  ヒット検出部，２３  フラグメモリ，２４  タグアドレスメモリ，２５  キャッシュ制御部，２６  データメモリ，３０  ＤＭＡＣ，４０ａ，４０ｂ  メモリ
【図１】
0004765249.tif 000002
【図２】
0004765249.tif 000003
【図３】
0004765249.tif 000004
【図４】
0004765249.tif 000005
【図５】
0004765249.tif 000006
【図６】
0004765249.tif 000007
【図７】
0004765249.tif 000008