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