(57)【要約】【課題】キャッシュメモリを効率的にキャッシュフラッシュすることにより、データ処理速度の向上を図るための情報処理装置、キャッシュフラッシュ制御方法及び情報処理制御装置を提供する。【解決手段】ＣＰＵ２０は、ロード／ストアユニット２２、フラッシュ制御部２３を備えている。そして、ＣＰＵ２０は、キャッシュコントローラ３１を介してキャッシュ３２に格納されたデータを制御する。フラッシュ制御部２３が、「.ｆ」信号を検知した場合、１キャッシュライン分のアクセスを待機する。そして、１キャッシュライン分のアクセスを検知した場合、フラッシュ制御部２３は、キャッシュコントローラ３１に対してキャッシュフラッシュ命令を発行する。【選択図】図１
2008305246.tif 000002
【特許請求の範囲】
【請求項１】
データを格納するデータキャッシュ部と、
前記データキャッシュ部を制御するロード／ストアユニットと、
前記データキャッシュ部に対してキャッシュフラッシュ命令を発行するフラッシュ制御部とを備えた情報処理装置であって、
前記フラッシュ制御部が、
前記ロード／ストアユニットからデータの転送幅情報を取得する転送幅情報取得手段と、
前記ロード／ストアユニットから前記データキャッシュ部を制御する転送先アドレス情報を取得するアドレス情報取得手段と、
前記アドレス情報取得手段が取得した転送先アドレス情報と、前記転送幅情報取得手段が取得した転送幅情報とを用いて、前記ロード／ストアユニットのプログラム実行中に１キャッシュライン分のアクセスを検知し、この検知に応じて、キャッシュフラッシュ命令を発行するフラッシュ命令出力手段とを含むフラッシュ制御部と
を備えたことを特徴とする情報処理装置。
【請求項２】
前記フラッシュ制御部は、前記ロード／ストアユニットから、条件付ロード命令に対応する信号を取得した場合に、前記フラッシュ命令出力手段からのキャッシュフラッシュ命令の発行を許容することを特徴とする請求項１に記載の情報処理装置。
【請求項３】
前記フラッシュ命令出力手段は、前記ロード／ストアユニットから取得した転送先アドレスに転送幅を加算し、１キャッシュライン分のデータ量で除算した剰余を算出し、この剰余に基づいてキャッシュフラッシュ命令を発行することを特徴とする請求項１又は２のいずれか１つに記載の情報処理装置。
【請求項４】
データを格納するデータキャッシュ部と、
前記データキャッシュ部を制御するロード／ストアユニットと、
前記データキャッシュ部に対してキャッシュフラッシュ命令を発行するフラッシュ制御部とを備えた情報処理装置を用いるキャッシュフラッシュ制御方法であって、
前記フラッシュ制御部が、
前記ロード／ストアユニットからデータの転送幅情報を取得し、
前記ロード／ストアユニットから前記データキャッシュ部を制御する転送先アドレス情報を取得し、
前記取得した転送先アドレス情報と転送幅情報とを用いて、前記ロード／ストアユニットのプログラム実行中に１キャッシュライン分のアクセスを検知し、この検知に応じて、キャッシュフラッシュ命令を発行することを特徴とするキャッシュフラッシュ制御方法。
【請求項５】
データを格納するデータキャッシュ部に接続されて、前記データキャッシュ部を制御するロード／ストアユニットと、
前記データキャッシュ部に対してキャッシュフラッシュ命令を発行するフラッシュ制御部とを備えた情報処理制御装置であって、
前記フラッシュ制御部が、
前記ロード／ストアユニットからデータの転送幅情報を取得する転送幅情報取得手段と、
前記ロード／ストアユニットから前記データキャッシュ部を制御する転送先アドレス情報を取得するアドレス情報取得手段と、
前記アドレス情報取得手段が取得した転送先アドレス情報と、前記転送幅情報取得手段が取得した転送幅情報とを用いて、前記ロード／ストアユニットのプログラム実行中に１キャッシュライン分のアクセスを検知し、この検知に応じて、キャッシュフラッシュ命令
を発行するフラッシュ命令発行手段とを含むフラッシュ制御部と
を備えたことを特徴とする情報処理制御装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、キャッシュメモリを制御するための情報処理装置、キャッシュフラッシュ制御方法及び情報処理制御装置に関する。
【背景技術】
【０００２】
使用頻度の高いデータを高速な記憶装置に蓄えておくことにより、データを読み出す処理を高速化することができる。例えば、メモリはハードディスクに比べれば高速にデータの読み書きを行なうことができるため、使用頻度の高いデータをメモリ内に保持しておくことにより、すべてのデータをハードディスクに置いた場合よりも処理を高速化することができる。この場合、メモリがハードディスクのキャッシュとなる。このようなキャッシュメモリは、通常、小容量で高速なスタティックＲＡＭを用いて構成される。データ本体の一部とそのアドレス、フラグなど属性情報のセットを固定容量のメモリに格納する構造を備える。
【０００３】
図６に示すように、ＣＰＵ１０は、ロード／ストアユニット１２を備える。そして、このロード／ストアユニット１２は、キャッシュコントローラ３１に対して、アドレスを指定してＲ／Ｗ命令を発行する。ここで、「アドレス」はアクセス先アドレスであり、「Ｒ／Ｗ命令」はリード又はライトの識別信号である。この場合、キャッシュコントローラ３１はキャッシュ３２に格納されたデータを制御する。また、ＣＰＵ１０は、フラッシュ機能部１１を備えており、キャッシュコントローラ３１に対して、アドレスを指定してキャッシュフラッシュ命令を発行する。ここで、キャッシュフラッシュ命令はフラッシュの実行を決定する信号である。この場合、キャッシュコントローラ３１はキャッシュ３２のライン毎にフラッシュを行なう。
【０００４】
そして、このキャッシュメモリにおける処理速度の向上を図る検討も行なわれている（例えば、特許文献１を参照。）。この文献記載の情報処理装置では、読み出し対象となるデータを記憶しているメモリデバイスから、記憶されているデータの少なくとも一部をキャッシュしておく。そして、ライトバックモードあるいはライトスルーモードの少なくともいずれかを含む複数のアクセス方式によってアクセス可能なキャッシュメモリを備える。そして、プログラムの実行中に複数のアクセス方式を相互に切り替えて、前記キャッシュメモリにアクセスできるようにしている。
【特許文献１】特開２００５−１４９２９０号公報（第１頁）
【発明の開示】
【発明が解決しようとする課題】
【０００５】
このようなハードウェアにおいて、キャッシュの容量は限られているため、優先度の高いデータをなるべくキャッシュに留ませるようにすることにより高速化を図ることができる。従って、アプリケーションプログラムにおいて参照されなくなったデータについては、すぐにキャッシュから退去させることで、他の優先度の高いデータをキャッシュに留める機会が増え、処理の高速化を実現することができる。したがって、このような処理を簡易に実現できればプログラム作成者にとって便利である。
【０００６】
一方、多くのプロセッサは、キャッシュをフラッシュする命令をサポートしている。これを利用して、アプリケーションプログラムにおいて参照されなくなったデータをフラッシュする場合、キャッシュ制御を行なうためにはアプリケーションプログラムの変更を強いられることになる。すなわち、キャッシュフラッシュ命令の効果範囲は、通常、１つのキャッシュライン全体に及ぶため、ループ展開を行なってデータの処理単位を１キャッシ
ュライン分にする等の変更が必要になる。例えば、ＰｏｗｅｒＰＣ（登録商標）の例では、同一アドレスに対して重複したフラッシュ処理の発行を避けるためループの内部を３２バイト単位の処理にまとめる必要がある。従って、図７におけるコードＰ１０のように４バイト単位のアクセスの場合、バイト単位のアクセスに対して、コードＰ１１に示すようにキャッシュラインのサイズに合わせた３２バイト単位のアクセスに対してキャッシュフラッシュ命令を発行するように構成する必要がある。この場合、コードサイズの増大や可読性の低下を招く。
【０００７】
また、Ｃ言語等で記述されたプログラムの一部に、アセンブラコードを埋め込むインラインアセンブラを使ってキャッシュフラッシュ命令を追加することも可能である。しかし、この場合、機械寄りのコードが混じることによりプログラムの見通しが悪くなるとともに、機種依存性が高まり、移植性が低下することになる。
【０００８】
本発明は、上記課題を解決するために、キャッシュメモリを効率的にキャッシュフラッシュすることにより、データ処理速度の向上を図るための情報処理装置、キャッシュフラッシュ制御方法及び情報処理制御装置を提供することにある。
【課題を解決するための手段】
【０００９】
本発明では、データを格納するデータキャッシュ部と、前記データキャッシュ部を制御するロード／ストアユニットと、前記データキャッシュ部に対してキャッシュフラッシュ命令を発行するフラッシュ制御部とを備えた情報処理装置であって、前記フラッシュ制御部が、前記ロード／ストアユニットからデータの転送幅情報を取得する転送幅情報取得手段と、前記ロード／ストアユニットから前記データキャッシュ部を制御する転送先アドレス情報を取得するアドレス情報取得手段と、前記アドレス情報取得手段が取得した転送先アドレス情報と、前記転送幅情報取得手段が取得した転送幅情報とを用いて、前記ロード／ストアユニットのプログラム実行中に１キャッシュライン分のアクセスを検知し、この検知に応じて、キャッシュフラッシュ命令を発行するフラッシュ命令出力手段とを含むフラッシュ制御部とを備えたことを要旨とする。これにより、転送先アドレス情報を用いてキャッシュフラッシュのタイミングを判断して、効率的にキャッシュフラッシュ命令を発行することができる。この結果、データキャッシュ部を効率的に利用することができ、データ処理速度を向上させることができる。
【００１０】
本発明の情報処理装置では、前記フラッシュ制御部は、前記ロード／ストアユニットから、条件付ロード命令に対応する信号を取得した場合に、前記フラッシュ命令出力手段からのキャッシュフラッシュ命令の発行を許容することを要旨とする。これにより、必要な場合にのみ、キャッシュフラッシュを行なうことができる。特に、Ｃ言語でアプリケーションプログラムを開発する場合、コンパイラ制御文などの追加だけでキャッシュ制御による高速化が期待できる。その結果、従来のように、ループ展開やインラインアセンブラ命令の使用といった作業が不要になる。
【００１１】
本発明の情報処理装置では、前記フラッシュ命令出力手段は、前記ロード／ストアユニットから取得した転送先アドレスに転送幅を加算し、１キャッシュライン分のデータ量で除算した剰余を算出し、この剰余に基づいてキャッシュフラッシュ命令を発行することを要旨とする。これにより、剰余を用いてキャッシュフラッシュのタイミングを判断することができる。
【発明の効果】
【００１２】
本発明によれば、キャッシュメモリを効率的にキャッシュフラッシュすることにより、データ処理速度の向上を図るための情報処理装置、キャッシュフラッシュ制御方法及び情報処理制御装置を提供することができる。
【発明を実施するための最良の形態】
【００１３】
以下、本発明を具体化した情報処理装置の一実施形態を図１〜図５に従って説明する。本実施形態では、所定の番地のデータを転送した後では、このデータを再利用しない場合を想定する。例えば、図５に示すように、０番地〜１００番地のメモリ領域Ｍ１に格納されたデータを、８０００番地〜８１００番地のメモリ領域Ｍ２に転送する場合を想定する。
【００１４】
（構成）
本実施形態の情報処理装置は、図１に示すように、情報処理制御装置としてのＣＰＵ２０を備える。このＣＰＵ２０は、ロード／ストアユニット２２を備える。そして、このロード／ストアユニット２２は、キャッシュコントローラ３１に対して、転送先のアドレスを指定してＲ／Ｗ命令を発行する。
【００１５】
このキャッシュコントローラ３１とキャッシュ３２とはデータキャッシュ部とを構成し、キャッシュコントローラ３１はキャッシュ３２に格納されたデータを制御する。
このＣＰＵ２０はフラッシュ機能部２１を備えている。このフラッシュ機能部２１は、キャッシュコントローラ３１に対して、アドレスを指定してキャッシュフラッシュ命令を発行する。この場合、キャッシュコントローラ３１はキャッシュ３２のライン毎にフラッシュを行なう。
【００１６】
更に、ＣＰＵ２０は、キャッシュ制御を行なう支援を実行するフラッシュ制御部２３を備えている。このフラッシュ制御部２３には、ロード／ストアユニット２２から、転送先のアドレス情報、転送幅情報、フラッシュ制御付きのロード／ストア命令（「.ｆ」命令
）が供給される。そして、このフラッシュ制御部２３は、図２に示すように、「.ｆ」信
号検知手段２３１、転送幅情報取得手段２３２、アドレス情報取得手段２３３、剰余算出手段２３４、フラッシュ命令出力手段２３５から構成される。この剰余算出手段２３４、フラッシュ命令出力手段２３５がフラッシュ命令発行手段として機能する。
【００１７】
（動作）
次に、以上のように構成された情報処理装置の動作を説明する。ここでは、連続アドレスに逐次的にアクセスし、アドレスがデクリメントされていく場合の適用を除外する。そして、アクセス後は、キャッシュからフラッシュしたいデータを扱うものとする。また、１キャッシュラインは３２バイトで構成されていると想定する。
【００１８】
ここで、キャッシュに格納されているデータに４バイトずつアクセスしている場合、アドレスの下位５ビットが「２８」の時に１キャッシュライン分のアクセスが完了することになる。「アドレス＋転送幅」が「３２」（キャッシュサイズ）で割り切れる場合、１キャッシュラインの転送完了を検知して、キャッシュフラッシュを行なうことする。
【００１９】
また、本実施形態では、コンパイラに特定の情報を渡すために使用するコンパイラ制御文であるプラグマを用いる。このプラグマで指定されたポインタに関してのロード処理は、「Load with cache flash」命令のアセンブリ命令（＊．ｆ命令）にコンパイルされる
ことになる。例えば、図４に示すコードＰ２０に対して、コードＰ２１に示すように「#pragma pulin cache_flash」を挿入する。
【００２０】
そして、フラッシュ制御部２３は、「.ｆ」信号検知処理を実行する（ステップＳ１）
。本実施形態では、「ｌｂｚ」がバイト単位、「ｌｈｚ」が２バイト単位、そして「ｌｗｚ」が４バイト単位のロード命令とする。ここで、「ｌｄｚ．ｆ」がバイト単位、「ｌｈｚ．ｆ」が２バイト単位、そして「ｌｗｚ．ｆ」が４バイト単位のキャッシュフラッシュ
機能付きのロード命令を設ける。「.ｆ」命令が実行された時には、「.ｆ」信号をフラッシュ制御部２３に供給する。そして、フラッシュ制御部２３の「.ｆ」信号検知手段２３
１が、「.ｆ」信号を取得する。この場合、「.ｆ」信号検知手段２３１は、転送幅情報取得手段２３２、アドレス情報取得手段２３３を有効化する。
【００２１】
そして、フラッシュ制御部２３は、転送幅情報の取得処理を実行する（ステップＳ２）。具体的には、フラッシュ制御部２３の転送幅情報取得手段２３２が、ロード／ストアユニット２２から供給される転送幅情報を取得する。ここでは、ロード命令に対応する転送幅を「Ｎ」とする。
【００２２】
更に、フラッシュ制御部２３は、アドレス情報の取得処理を実行する（ステップＳ３）。具体的には、フラッシュ制御部２３のアドレス情報取得手段２３３が、ロード／ストアユニット２２から供給されるアドレス情報を取得する。ここでは、アドレスの下位５ビットを「Ｘ」とする。
【００２３】
次に、フラッシュ制御部２３は、剰余確認処理を実行する（ステップＳ４）。具体的には、剰余算出手段２３４が、転送幅情報取得手段２３２が取得した転送幅（Ｎ）とアドレス情報取得手段２３３がアドレス（Ｘ）を用いて、ロード／ストア処理後にキャッシュフラッシュを行なうかどうかを決定する。ここでは、剰余算出手段２３４が、「Ｘ＋Ｎ」を「１キャッシュラインのバイトサイズ（本実施形態では「３２」）」で除算した剰余が「０」かどうかを判断する。そして、剰余が「０」になるまで待機する（ステップＳ４において「ＮＯ」）。図５に示すように、転送先アドレスとして８０２８番地を取得した場合、８０２８番地から転送幅（Ｎ）として４バイトを記録した場合、剰余が「０」になる。
【００２４】
剰余が「０」になった場合（ステップＳ４において「ＹＥＳ」の場合）、ロード／ストア命令は１キャッシュライン分のすべてアドレスにアクセスしたことになる。そこで、フラッシュ制御部２３は、今回の転送幅分のデータのロードの完了を待機する（ステップＳ５において「ＮＯ」）。
【００２５】
そして、次のアドレスを取得することにより、今回の転送幅分のデータのロードの完了を検知した場合（ステップＳ５において「ＹＥＳ」の場合）、フラッシュ制御部２３は、キャッシュフラッシュ命令の出力処理を実行する（ステップＳ６）。そこで、フラッシュ制御部２３のフラッシュ命令出力手段２３５は、このキャッシュラインのキャッシュフラッシュを行なうためにキャッシュフラッシュ命令をキャッシュコントローラ３１に供給する。
【００２６】
そして、フラッシュ制御部２３は、「Load with cache flash」命令についての全番地
のロードストア処理が終了（ステップＳ８において「ＹＥＳ」）まで、ステップＳ２〜Ｓ７の処理を繰り返す。
【００２７】
上記実施形態の情報処理装置によれば、以下のような効果を得ることができる。
・  上記実施形態では、コンパイラに特定の情報を渡すために使用するコンパイラ制御文であるプラグマで指定されたポインタに関してのロード処理は、「Load with cache flash」命令のアセンブリ命令（＊．ｆ命令）にコンパイルされることになる。ソースコー
ドに対してコンパイラ制御文の追加だけで、キャッシュフラッシュ命令を使う場合と同等以上の機能を実現することになる。特に、Ｃ言語でアプリケーションプログラムを開発する場合、コンパイラ制御文などの追加だけでキャッシュ制御による高速化が期待できる。その結果、従来のように、ループ展開やインラインアセンブラ命令の使用といった作業が不要になる。
【００２８】
・  上記実施形態では、フラッシュ制御部２３は、１キャッシュライン分のデータの転送を完了した場合、キャッシュフラッシュ命令を発行する。これにより、キャッシュライン毎に効率的にキャッシュフラッシュを行なうことができる。
【００２９】
なお、上記実施形態は以下のように変更してもよい。
○  上記実施形態では、１キャッシュは３２バイトで構成されていると想定したがこれに限定されるものではなく、キャッシュラインのサイズに応じて決定することができる。
【００３０】
○  上記実施形態では、次のアドレスを取得することにより、今回の転送幅分のデータのロードの完了を検知した場合（ステップＳ５において「ＹＥＳ」の場合）、フラッシュ制御部２３は、キャッシュフラッシュ命令の出力処理を実行する（ステップＳ６）。１キャッシュラインのストアを検知する方法はこれに限定されるものではない。
【図面の簡単な説明】
【００３１】
【図１】本実施形態の情報処理装置の説明図。
【図２】本実施形態のフラッシュ制御部の機能ブロックの説明図。
【図３】本実施形態の処理フローの説明図。
【図４】本実施形態のプラグマの説明図。
【図５】本実施形態のデータ転送の説明図。
【図６】従来の情報処理装置の説明図。
【図７】従来のコーディングの説明図。
【符号の説明】
【００３２】
２０…ＣＰＵ、２１…フラッシュ機能部、２２…ロード／ストアユニット、２３…フラッシュ制御部、３１…キャッシュコントローラ、３２…キャッシュ、２３１…「.ｆ」信
号検知手段、２３２…転送幅情報取得手段、２３３…アドレス情報取得手段、２３４…剰余算出手段、２３５…フラッシュ命令出力手段。
【図１】
2008305246.tif 000003
【図２】
2008305246.tif 000004
【図３】
2008305246.tif 000005
【図４】
2008305246.tif 000006
【図５】
2008305246.tif 000007
【図６】
2008305246.tif 000008
【図７】
2008305246.tif 000009