(57)【要約】【課題】プロセッサの実行状態に即応して不要なデータ転送を削減し、キャッシュの使用効率を向上させ、消費電力を低減するメモリシステムおよびメモリアクセス制御方法を提供する。【解決手段】メモリシステム１０１は、キャッシュメモリ１０５を有するプロセッサ１０２と、キャッシュメモリとメインメモリとの間のデータ転送を制御するデータ転送制御部１１０と、プロセッサ内で処理中の命令を監視することにより、プロセッサが特定の命令シーケンスを実行したか否かを判定する命令シーケンス判定部１０７と、命令シーケンス判定部１０７による判定結果に応じてデータ転送の中止および一時的中断の少なくとも１つをデータ転送制御部１１０に指示する転送制御切替部１０８とを備える。【選択図】図１Ａ
2007207039.tif 000002
【特許請求の範囲】
【請求項１】
キャッシュメモリを有するプロセッサと、
キャッシュとメインメモリとの間のデータ転送を制御する転送制御手段と、
プロセッサ内で処理中の命令を監視することにより、プロセッサが特定の命令シーケンスを実行したか否かを判定する判定手段と、
前記判定手段による判定結果に応じてデータ転送の中止および一時的中断の何れかを前記転送制御手段に指示する指示手段と
を備えることを特徴とするメモリシステム。
【請求項２】
前記判定手段は、命令の実行結果および命令の実行内容を監視する
ことを特徴とする請求項１記載のメモリシステム。
【請求項３】
前記特定の命令シーケンスは、キャッシュミスを発生させた命令とそれ以降に実行される前方への分岐命令とを含み、
前記指示手段は、前記特定の命令シーケンスを実行したと判定されたとき、データ転送の中止を指示する
ことを特徴とする請求項２記載のメモリシステム。
【請求項４】
前記特定の命令シーケンスは、キャッシュミスを発生させた命令とそれ以降に実行される後方への分岐命令とを含み、
前記指示手段は、前記特定の命令シーケンスを実行したと判定されたとき、データ転送の中断を指示し、さらに再開を指示する
ことを特徴とする請求項２記載のメモリシステム。
【請求項５】
前記判定手段は、前記特定の命令シーケンスが実行されたか否かを判定することによって、プロセッサ内で処理中の命令を監視することにより、現在のリフィル対象の未転送データに対してプロセッサからのアクセスが発生する可能性を判定し、
前記指示手段は、前記判定手段による判定結果に応じてリフィルの中止を前記転送制御手段に指示する
ことを特徴とする請求項1記載のメモリシステム。
【請求項６】
前記判定手段は、監視中の命令が前方への分岐命令であり、かつ当該分岐命令による分岐先アドレスがリフィル対象の全データに対応するアドレスを超える場合に、前記未転送データへのアクセスが生じ得ないと判定し、
前記指示手段は、前記未転送データへのアクセスが生じ得ないと判定された場合、前記転送制御手段にリフィルの中止を指示し、さらに、中止したリフィルにおいて既に転送済のデータの無効化を、キャッシュメモリに指示する
ことを特徴とする請求項５記載のメモリシステム。
【請求項７】
前記判定手段は、監視中の命令が前方への分岐命令である場合に、前記未転送データへのアクセスが生じる可能性が小さいと判定し、
前記指示手段は、前記転送制御手段にリフィルの中断を指示する
ことを特徴とする請求項５記載のメモリシステム。
【請求項８】
前記判定手段は、監視中の命令が前方への分岐命令であり、かつ当該分岐命令による分岐先アドレスがリフィル対象の全データに対応するアドレスを超える場合に、前記未転送データへのアクセスが生じ得ないと判定し、
前記指示手段は、現在のリフィルの原因となるキャッシュミスを生じさせたデータがキャッシュメモリに転送され、かつ前記未転送データへのアクセスが生じ得ないと判定された場合に、前記転送制御手段にリフィルの中止を指示する
ことを特徴とする請求項５記載のメモリシステム。
【請求項９】
前記判定手段は、現在のリフィルの原因となるキャッシュミスを生じさせたデータがキャッシュメモリに転送され、かつ監視中の命令が後方への分岐命令である場合に、前記未転送データへのアクセスが生じる可能性が小さいと判定し、
前記指示手段は、前記未転送データへのアクセスが生じる可能性が小さいと判定された場合、前記転送制御手段にリフィルの中断を指示し、他のデータ転送を指示し、リフィルの再開を指示する
ことを特徴とする請求項５記載のメモリシステム。
【請求項１０】
前記後方への分岐命令は、ループ処理を構成する分岐命令である
ことを特徴とする請求項９記載のメモリシステム。
【請求項１１】
前記メモリシステムは、さらに、
メインメモリへのアクセスが行われていない期間に、前記転送制御手段へのクロック供給を一時的に停止するクロック停止手段を備える
ことを特徴とする請求項１から１０の何れかに記載のメモリシステム。
【請求項１２】
前記判定手段は、さらに、監視中の命令がループ処理を構成する分岐命令である場合に、ループ処理の繰り返し期間を検出し、
前記クロック停止手段は、前記繰り返し期間でかつメインメモリへのアクセスが行われてない場合、前記クロック供給を一時的に停止する
ことを特徴とする請求項１１記載のメモリシステム。
【請求項１３】
前記メモリシステムは、さらに、メモリアクセス要求信号に基づいて転送アドレスを含む１つ以上の転送情報を格納するテーブルメモリを備え、
前記判定手段は、監視中の命令が後方への分岐命令である場合に、前記未転送データへのアクセスが生じる可能性が小さいと判定し、
前記指示手段は、前記転送制御手段にリフィルの中断を指示し、前記テーブルメモリに基づいて他のデータ転送を指示した後、リフィルの再開を指示する
ことを特徴とする請求項５記載のメモリシステム。
【請求項１４】
前記後方への分岐命令は、ループ処理を構成する分岐命令である
ことを特徴とする請求項１３記載のメモリシステム。
【請求項１５】
前記転送情報はさらに優先度を含み、
前記指示手段は、リフィルの中断後、前記優先度に基づいて他のデータ転送の開始および再開を指示する
ことを特徴とする請求項１３記載のメモリシステム。
【請求項１６】
前記指示手段は、前記判定手段による判定結果に応じてリフィルの中止、中断、再開の何れかを前記転送制御手段に指示し、中止を指示した場合にはキャッシュメモリに対してリフィルデータの無効化を指示する
ことを特徴とする請求項５記載のメモリシステム。
【請求項１７】
キャッシュメモリを有するプロセッサと、キャッシュミス時にキャッシュメモリにデータをリフィルするためのデータ転送を制御する転送制御手段とを備えるメモリシステムにおけるメモリアクセス制御方法であって、
プロセッサ内で処理中の命令を監視することにより、プロセッサが特定の命令シーケンスを実行したか否かを判定し、
判定結果に応じてデータ転送の中止、一時的中断の少なくとも１つを前記転送制御手段に指示する
ことを特徴とするメモリアクセス制御方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、キャッシュメモリを有するプロセッサにおいてキャッシュミス時にキャッシュメモリにデータをリフィルするためのデータ転送を制御するメモリシステムおよびメモリアクセス制御方法に関する。
【背景技術】
【０００２】
従来のキャシュメモリを有するプロセッサは、アクセスしたいデータがキャッシュメモリにあれば、低速なメインメモリより高速にデータアクセスすることが可能である。
【０００３】
キャッシュミスが生じた場合には、メインメモリからキャッシュメモリにデータがリフィルされる。リフィルされるデータは通常固定サイズであるが、固定サイズであるためにアクセスされない不要なデータまでリフィルされることがある。不要なデータ転送を削減する技術が、例えば特許文献１に開示されている。この技術では、メインメモリからキャッシュメモリへの転送データの内容を参照し、転送データが特定パターンに一致すれば、リフィル終了と判断している。ここで特定パターンは分岐命令などである。この場合、分岐命令に後続する不要なデータ（命令コード）のデータ転送を削減している。
【特許文献１】特開１９９３−１４３４５６号公報
【発明の開示】
【発明が解決しようとする課題】
【０００４】
しかしながら、従来の技術によれば、メインメモリから読み出された転送データの内容を参照して、特定パターンに一致するか否かによってリフィルの終了を判断しているが、リフィルの終了によってメインメモリから読み込まれなかったデータを、プロセッサが実行する命令によって使用する可能性がある。言い換えれば、プロセッサの実行状態とは無関係にリフィルの終了の判断をしているので、プロセッサの実行状態に合わない場合がある。このような場合はキャッシュメモリの使用効率を返って悪化させるという問題がある。
【０００５】
そこで、本発明は前記問題に鑑みてなされたものであり、リフィル終了によるデータの取得ミスなく、プロセッサの実行状態に即応して不要なデータ転送を削減し、キャッシュの使用効率を向上させるメモリシステムおよびメモリアクセス制御方法を提供することを目的とする。
【課題を解決するための手段】
【０００６】
上記課題を解決するため本発明のメモリシステムは、キャッシュメモリを有するプロセッサと、キャッシュとメインメモリとの間のデータ転送を制御する転送制御手段と、プロセッサ内で処理中の命令を監視することにより、プロセッサが特定の命令シーケンスを実行したか否かを判定する判定手段と、前記判定手段による判定結果に応じてデータ転送の中止および一時的中断の何れかを前記転送制御手段に指示する指示手段とを備える。
【０００７】
この構成によれば、プロセッサ内で処理中の命令を監視するので、キャッシュメモリへのリフィル中の転送データを監視する場合と比べて、キャッシュメモリへの無駄なデータ転送の削減をプログラムの実行状態に即応することができる。これにより、他のデータ転送のための時間を確保できるのでキャッシュメモリの使用効率を向上させることができる。
【０００８】
ここで、前記判定手段は、命令の実行結果および命令の実行内容を監視するようにしてもよい。
【０００９】
この構成によれば、命令の実行結果、実行内容を監視するので、転送制御手段によるデータ転送に対して、現在のプログラムの実行状態を正確に反映させることができる。
【００１０】
ここで、前記特定の命令シーケンスは、キャッシュミスを発生させた命令とそれ以降に実行される前方への分岐命令とを含み、前記指示手段は、前記特定の命令シーケンスを実行したと判定されたとき、データ転送の中止を指示するようにしてもよい。
【００１１】
この構成によれば、キャッシュメモリが命令キャッシュであれば前方への分岐命令に後続する命令列はリフィルしてもアクセス(命令フェッチ)されないので、無駄なデータ転送を削減できる。しかも、前方への分岐命令が処理された時点で即座に中止することができる。さらに、中止により消費電力を低減することができる。
【００１２】
ここで、前記特定の命令シーケンスは、キャッシュミスを発生させた命令とそれ以降に実行される後方への分岐命令とを含み、前記指示手段は、前記特定の命令シーケンスを実行したと判定されたとき、データ転送の中断を指示し、さらに再開を指示するようにしてもよい。
【００１３】
この構成によれば、後方への分岐命令により後方へ分岐した場合、中断と再開の間に、他のデータ転送をすることにより、データ転送の混雑（トラフィック）を低減することが可能となる。
【００１４】
ここで、前記判定手段は、前記特定の命令シーケンスが実行されたか否かを判定することによって、プロセッサ内で処理中の命令を監視することにより、現在のリフィル対象の未転送データに対してプロセッサからのアクセスが発生する可能性を判定し、前記指示手段は、前記判定手段による判定結果に応じてリフィルの中止を前記転送制御手段に指示するようにしてもよい。
【００１５】
この構成によれば、プロセッサ内で処理中の命令を監視することによって、現在のリフィル対象の未転送データに対してプロセッサからのアクセスが発生する可能性を判定するので、キャッシュメモリへのリフィル中の転送データを監視する場合と比べて、キャッシュメモリへの無駄なデータ転送の削減をプログラムの実行状態に即応することができる。これにより、他のデータ転送のための時間を確保できるのでキャッシュメモリの使用効率を向上させることができる。
【００１６】
ここで、前記判定手段は、監視中の命令が前方への分岐命令であり、かつ当該分岐命令による分岐先アドレスがリフィル対象の全データに対応するアドレスを超える場合に、前記未転送データへのアクセスが生じ得ないと判定し、前記指示手段は、前記未転送データへのアクセスが生じ得ないと判定された場合、前記転送制御手段にリフィルの中止を指示し、さらに、中止したリフィルにおいて既に転送済のデータの無効化を、キャッシュメモリに指示するようにしてもよい。
【００１７】
この構成によれば、キャッシュメモリが命令キャッシュであれば前方への分岐命令に後続する命令列はリフィルしてもアクセス(命令フェッチ)されないので、無駄なデータ転送を削減できる。しかも、前方への分岐命令が処理された時点で即座に中止することができる。さらに、中止により消費電力を低減することができる。
【００１８】
ここで、前記判定手段は、監視中の命令が前方への分岐命令である場合に、前記未転送データへのアクセスが生じる可能性が小さいと判定し、前記指示手段は、前記転送制御手段にリフィルの中断を指示するようにしてもよい。
【００１９】
この構成によれば、中断することにより、データバスを一時的に解放することができる。その結果、データ転送の混雑（トラフィック）を低減することが可能となる。
【００２０】
ここで、前記判定手段は、監視中の命令が前方への分岐命令であり、かつ当該分岐命令による分岐先アドレスがリフィル対象の全データに対応するアドレスを超える場合に、前記未転送データへのアクセスが生じ得ないと判定し、前記指示手段は、現在のリフィルの原因となるキャッシュミスを生じさせたデータがキャッシュメモリに転送され、かつ前記未転送データへのアクセスが生じ得ないと判定された場合に、前記転送制御手段にリフィルの中止を指示するようにしてもよい。
【００２１】
この構成によれば、キャッシュミスを生じさせたデータが完全にキャッシュメモリに転送されてから、リフィル中止を指示するので、キャッシュメモリがデータキャッシュである場合でも矛盾のない動作を保証することができる。
【００２２】
ここで、前記判定手段は、現在のリフィルの原因となるキャッシュミスを生じさせたデータがキャッシュメモリに転送され、かつ監視中の命令が後方への分岐命令である場合に、前記未転送データへのアクセスが生じる可能性が小さいと判定し、前記指示手段は、前記未転送データへのアクセスが生じる可能性が小さいと判定された場合、前記転送制御手段にリフィルの中断を指示し、他のデータ転送を指示し、リフィルの再開を指示するようにしてもよい。
【００２３】
この構成によれば、後方への分岐命令により後方へ分岐した場合、中断と再開の間に、他のデータ転送をすることにより、データ転送の混雑（トラフィック）を低減することが可能となる。
【００２４】
ここで、前記後方への分岐命令は、ループ処理を構成する分岐命令であってもよい。
この構成によれば、ループ処理の期間中のデータ転送の混雑（トラフィック）を低減することが可能となる。
【００２５】
ここで、前記メモリシステムは、さらに、メインメモリへのアクセスが行われていない期間に、前記転送制御手段へのクロック供給を一時的に停止するクロック停止手段を備えてもよい。
【００２６】
この構成によれば、メインメモリへのアクセスが行われない期間、クロック供給を一時的に停止することにより、消費電力の削減に寄与する。
【００２７】
ここで、前記判定手段は、さらに、監視中の命令がループ処理を構成する分岐命令である場合に、ループ処理の繰り返し期間を検出し、前記クロック停止手段は、前記繰り返し期間でかつメインメモリへのアクセスが行われてない場合、前記クロック供給を一時的に停止するようにしてもよい。
【００２８】
この構成によれば、メモリアクセスを行わないループ処理の期間にクロックを停止するので、消費電力の低減に寄与する。
【００２９】
ここで、前記メモリシステムは、さらに、メモリアクセス要求信号に基づいて転送アドレスを含む１つ以上の転送情報を格納するテーブルメモリを備え、前記判定手段は、監視中の命令が後方への分岐命令である場合に、前記未転送データへのアクセスが生じる可能性が小さいと判定し、前記指示手段は、前記転送制御手段にリフィルの中断を指示し、前記テーブルメモリに基づいて他のデータ転送を指示した後、リフィルの再開を指示するようにしてもよい。
【００３０】
この構成によれば、後方への分岐命令により後方へ分岐した場合、中断と再開の間に、他のデータ転送をすることにより、データ転送の混雑（トラフィック）を低減することが可能となる。特にキャッシュメモリ以外のホストからもメモリアクセス要求信号が入力される場合にメインメモリへのアクセス効率を向上させることができる。
【００３１】
ここで、前記後方への分岐命令は、ループ処理を構成する分岐命令であってもよい。
この構成によれば、ループ処理の間に、他のデータ転送をすることができ、データ転送の混雑（トラフィック）を低減することが可能となる。
【００３２】
ここで、前記転送情報はさらに優先度を含み、前記指示手段は、リフィルの中断後、前記優先度に基づいて他のデータ転送の開始および再開を指示するようにしてもよい。
【００３３】
この構成によれば、優先させたいメモリアクセスを先に行うことが可能となる。
ここで、前記指示手段は、前記判定手段による判定結果に応じてリフィルの中止、中断、再開の何れかを前記転送制御手段に指示し、中止を指示した場合にはキャッシュメモリに対してリフィルデータの無効化を指示するようにしてもよい。
【００３４】
この構成によれば、プロセッサ内で処理中の命令を監視するので、キャッシュメモリへのリフィル中の転送データを監視する場合と比べて、キャッシュメモリへの無駄なデータ転送の削減をプログラムの実行状態に即応することができる。これにより、他のデータ転送のための時間を確保できるのでキャッシュメモリの使用効率を向上させることができる。さらに、消費電力を低減することができる。
【００３５】
また、本発明のメモリアクセス制御方法は上記と同様の手段を有するので、説明を省略する。
【発明を実施するための最良の形態】
【００３６】
（実施の形態１）
実施の形態におけるメモリシステムは、プロセッサ内で処理中の命令を監視することにより、メインメモリからキャッシュメモリへのリフィル対象に現在なっている未転送データに対してプロセッサからのアクセスが発生する可能性を判定し、その判定結果に応じてリフィルの中止、中断、再開の何れかを行う。前記転送制御手段に指示し、中止を指示した場合にはキャッシュメモリに対してリフィルデータの無効化を指示するように構成される。処理中の命令を監視するので、キャッシュメモリへの無駄なデータ転送の削減をプログラムの実行状態に即応することができ、キャッシュメモリの使用効率を向上させ、消費電力低減にも寄与する。
【００３７】
実施の形態１におけるメモリシステムは、処理中の命令の実行結果および実行内容を監視し、先行命令がキャッシュミスし、後続の命令が前方への分岐命令であるような命令シーケンスであった場合には、リフィル対象データのうち未転送データへのアクセスが生じ得ないと判定する。さらに、該当データ取得後に、未転送データの転送を中止し、さらに、キャッシュメモリ中のリフィル対象の転送済データを破棄（無効化）する。なお、前方への分岐命令の「前方」はＰＣ（プログラムカウンタ）のカウントが進む方向であり、実行順では遅い方である。
【００３８】
以下、本発明に係る実施の形態１について、図面を参照しながら説明する。
図１Ａは、本発明に係る実施の形態１におけるメモリシステムの構成を示すブロック図である。図１Ａに示されるように、メモリシステム１０１は、プロセッサ１０２、メモリアクセス制御装置１０３などを備え、メインメモリ１０４にアクセスする。
【００３９】
プロセッサ１０２は、キャッシュメモリ１０５、命令デコーダ部１０６、命令シーケンス判定部１０７から構成される。
【００４０】
キャッシュメモリ１０５は、メインメモリ１０４から読み出した命令もしくはデータ１５１を保持している。キャッシュメモリ１０５は、該当する命令もしくはデータが存在しなければ、キャッシュミスと判定し、リフィルを起動するため、メモリアクセス要求信号１５２を出力する。メモリアクセス要求信号１５２は、アドレス、データサイズ、Ｒ／Ｗ（読み出し／書き込み）を示す。リフィルは、メモリアクセス要求信号１５２の内容に従ってメモリアクセス制御装置１０３が制御する。リフィル対象の１ライン分のデータは、メモリアクセス制御装置１０３を通して、メインメモリ１０４から取得する。また、キャッシュメモリ１０５は、リフィル途中にキャッシュミスを起したデータの取得が完了すれば、データ取得完了信号１５３を出力する。
【００４１】
命令デコーダ部１０６は、キャッシュメモリ１０５から読み出した命令１５４をフェッチし、デコードする。デコードした結果として、命令情報１５５を出力する。命令情報１５５はプロセッサ内で処理中の命令のアドレス（ＰＣ値）や種別等を表し、特に分岐命令の場合には、分岐先アドレスも含む。分岐先アドレスは種別に応じて相対アドレスで表される場合と絶対アドレスで表される場合とがある。
【００４２】
命令シーケンス判定部１０７は、命令デコーダ部１０６から出力される命令情報１５５を常時監視し、ある一連の命令がメインメモリ１０４へアクセスする命令であるか否か、かつ先行の命令が該当するデータが存在せずにキャッシュミスし、後続の命令が前方への分岐命令であることを検出すると、命令シーケンス判定情報１５６を出力する。命令シーケンス判定情報１５６は、命令シーケンスの検出結果を単に示すだけでなく、現在のリフィル対象の未転送データに対してプロセッサ１０２からのアクセスが発生する可能性を判定した結果でもある。上記後続の命令が前方への分岐命令であるとの検出結果は、上記未転送データへのプロセッサ１０２へのアクセスが生じ得ないとの判定結果でもある。
【００４３】
また、メモリアクセス制御装置１０３は、転送制御切替部１０８、テーブルメモリ１０９、データ転送制御部１１０から構成され、プロセッサ１０２から発行されるメモリアクセス要求信号１５２に従って、キャッシュメモリ１０５にデータをリフィルするためにメインメモリ１０４からキャッシュメモリ１０５へのデータ転送を制御する。なお、メモリアクセス制御装置１０３は、プロセッサ１０２以外のプロセッサやＤＭＡＣ（Direct Memory Access Controller）などからのメモリアクセス要求信号も受付可能であり、そのためにテーブルメモリ１０９を備えている。
【００４４】
転送制御切替部１０８は、命令シーケンス判定部１０７の判定結果に応じてリフィルの中止、中断、再開の何れかをデータ転送制御部１１０に指示し、中止を指示した場合にはキャッシュメモリに対してリフィルデータの無効化を指示する指示手段として機能し、具体的には、キャッシュメモリ１０５から出力されるデータ取得完了信号１５３、および命令シーケンス判定部１０７から出力される命令シーケンス判定情報１５６を受け、データ転送破棄信号１５８−１、データ転送中断信号１５８−２、もしくはデータ転送再開信号１５８-３のいずれかをアサートする。
【００４５】
データ転送破棄信号１５８−１は、テーブルメモリ１０９に格納されたデータ転送情報をフラッシュすることで、データ転送を破棄つまりリフィルを中止することをデータ転送制御部１１０に指示する。中止により無駄なデータ転送を削減する。また、データ転送破棄信号１５８−１は、キャッシュメモリ１０５に対して、中止したリフィルにおいて既に転送済のデータの破棄つまり無効化をキャッシュメモリ１０５に指示する。転送済のデータの無効化により１ライン分のキャッシュエントリが空き領域となり、他のラインデータのリフィル回数の削減を可能にする。
【００４６】
データ転送中断信号１５８−２は、データ転送を一時的に中断することを指示する。中断により中断されたデータ転送とは別のデータ転送を可能にする。データ転送再開信号１５８−３は、中断されたデータ転送の再開を指示する。なお、実施の形態１では、データ転送中断信号１５８−２とデータ転送再開信号１５８-３は説明の便宜上使用しないものとし、実施の形態２以降で説明する。
【００４７】
テーブルメモリ１０９は、プロセッサ１０２が発行するメモリアクセス要求信号１５２をデータ転送情報として格納し、データ転送情報１５７としてデータ転送制御部１１０へ出力する。図１Ｂにテーブルメモリ１０９の一例を示す。同図のように、テーブルメモリ１０９は複数のデータ転送情報１５７を保持する。各データ転送情報１５７は、アドレス、Ｒ／Ｗの区別、転送サイズ、残りの転送回数を示すカウント数、フラグなどを含む。フラグには、データ転送を中止したことを示す中止フラグＳ１、データ転送を中断していることを示す中断フラグＳ２、データ転送の再開中を示す再開フラグＳ３などがある。中断フラグ以外はなくてもよい。
【００４８】
データ転送制御部１１０は、テーブルメモリ１０９に格納されたデータ転送情報１５７を受け、メインメモリ１０４にメモリアクセス制御信号１６０を出力することでデータ転送を行い、テーブルメモリ１０９から出力されるデータ転送情報１５７に基づき、メインメモリ１０４へのアクセスがないと判断すれば、メインメモリアクセス可否信号１５９をネゲートし、メインメモリ１０４へのアクセスがあると判断すれば、メインメモリ可否信号をアサートする。転送制御切替部１０８から出力される制御信号１５８−１〜３を受けることで、メインメモリ１０４とのアクセス制御を切り替える。
【００４９】
以上のように、構成されたメモリシステムについて、以下にその動作を説明する。図２は、本発明に係る実施の形態１におけるメモリシステムのメモリアクセス制御装置の動作を示したフローチャートである。
【００５０】
プロセッサ１０２は、命令デコーダ部１０６で命令をフェッチし、デコードすることで、命令を実行する。ある命令でキャッシュメモリ１０５からのデータ読み出しがミスすると、メインメモリ１０４がデータアクセスの対象となり、メインメモリ１０４に対してデータ読み出しアクセスを行うと同時に、そのデータをキャッシングするためのラインをキャッシュ上に確保する必要がある。プロセッサ１０２は、メインメモリ１０４からキャッシュメモリ１０５内に1ライン分のデータを取り込むリフィルを起動する。リフィルは１ライン分のデータ転送を行うためのメモリアクセス制御信号１６０をメインメモリ１０４に出力することで、バースト転送を行う（ステップＳ１１）。その際、命令シーケンス判定部１０７で、一連の命令シーケンス内で、キャッシュミスを起こした命令の後続の命令が前方への分岐命令であると判断する（ステップＳ１２ａ）と、命令情報１５５からその分岐命令自身のアドレス（ＰＣ値）と分岐先アドレスを取得する（ステップＳ１２ｂ）。命令情報１５５中の分岐先アドレスが相対アドレスである場合は、ＰＣ値に相対アドレスを加算し分岐先の絶対アドレスを求める。さらに、命令シーケンス判定部１０７は、分岐先アドレスがリフィル対象の全データに対応するアドレス（リフィルアドレス）を超えているか否か、つまりリフィル対象のラインデータのアドレス範囲外か否かを判定する（Ｓ１２ｃ）。アドレス範囲外であると判定された場合、命令シーケンス判定部１０７は、命令シーケンス判定情報１５６を出力する（ステップＳ１３）。また、キャッシュメモリ１０５は、リフィルによりキャッシュミスを起こした該当データを取得すると、リフィル途中であってもデータ取得完了信号１５３を出力する（ステップＳ１４）。転送制御切替部１０８は、命令シーケンス判定情報１５６およびデータ取得完了信号１５３に基づき、データ転送破棄信号１５８−１をアサート（ステップＳ１５）し、テーブルメモリ１０８およびデータ転送制御部１１０に出力する。データ転送破棄信号１５８−１がアサートされることにより、テーブルメモリ１０９に保持された対応するデータ転送情報がフラッシュされ、データ転送制御部１１０は、該当データを取得した後のメインメモリ１０４との残りのアクセスを中止する。また、データ転送破棄信号１５８−１がアサートされることにより、リフィル対象データのうちキャッシュメモリ１０５に既に転送済のデータを保持するラインが無効化される。無効化はリフィル対象ラインのバリッドフラグ（Ｖフラグ）のリセットによる。
【００５１】
このように、メモリシステム１０１は、キャッシュミスが発生した場合、命令シーケンス判定部１０７で、一連の命令がメインメモリ１０４にアクセスするような命令でなく、かつ前方への分岐命令であることを検出し、必要な分だけのリフィルを行った後の残りのデータ転送を破棄し、データ転送の冗長性を低減することが可能となる。
【００５２】
なお、キャッシュメモリ１０５が命令キャッシュである場合には、前方への分岐命令による分岐先が無効化したラインデータの外であることは図２ステップＳ１２ｃの判定によって、保証されている。一方、キャッシュメモリ１０５がデータキャッシュである場合には、前方への分岐命令による分岐先が無効化したラインデータの外であることは、ステップＳ１２ｃの判定では保証されない。これを保証するためには、例えば、前方へ分岐する分岐命令による分岐後のデータアクセスは、分岐前のアクセスアドレスよりも１ライン分以上離れたアドレスとするような制約をソフトウェア仕様として設ければよい。この制約は、コンパイラにより満たすことができる。
【００５３】
また、上記の前方への分岐命令は、典型的には無条件分岐命令であるが、前方へ分岐する条件分岐命令であってもよい。条件分岐命令に対しては、命令シーケンス判定部１０７は、条件の成就を判定して分岐の成否を判定し、分岐しない場合は無視し、分岐する場合に前方への分岐命令と判定すればよい。また、条件の成就を判定しない場合でも、分岐の確率が分岐しない確率よりも高ければ高いほど効果を奏する。
【００５４】
なお、キャッシュメモリ１０５が命令キャッシュである場合には、図２のステップＳ１４の判定を省略してもよい。省略した場合、命令シーケンス判定部１０７が現在リフィル対象になっているラインの命令を監視している限り、キャッシュミスを起した命令は既に実行済であるから上記と同様の効果を得ることができる。
【００５５】
また、データ転送情報をフラッシュすることにより、データ転送制御部１１０は、該当データを取得した後のメインメモリ１０４との残りのアクセスを中止しているが、フラグＳ１をセットして中止とみなしてもよい。この場合、テーブルメモリ１０９の領域が一杯になった時点でフラッシュするようしてもよい。
【００５６】
また、データ転送破棄信号１５８−１がアサートされることで行うキャッシュラインの無効化は、バリッドフラグがキャッシュラインのワード毎に備えられ、かつキャッシュミスしたワードからリフィルを開始するクリティカルワードファースト方式を採用しているのであれば、リフィルによって取得したデータの破棄を行う必要はない。リフィル中止によって未取得となったデータが必要となった場合でも、キャッシュミスした次のワード以降からリフィルを行えば良い。
【００５７】
なお、本実施形態で命令シーケンス判定部１０７は、キャッシュミスが発生した場合に、一連の命令がメインメモリ１０４にアクセスするような命令でなく、かつ前方への分岐命令であることを検出している。ここでは、一連の命令としては、少なくともキャッシュミスが生じた命令と前方への分岐命令を検出すればよい。キャッシュミスが生じた命令から前方への分岐命令までの一連の命令がメインメモリ１０４にアクセスするような命令でないことの検出は、しなくてもよい。また、一連の命令はこれ以外でもよく、命令シーケンス判定部１０７は、処理中の命令の実行結果や実行内容を監視することによって、種々の命令シーケンスを、プロセッサの状態に即応して判定することができる。
【００５８】
（実施の形態２）
次に、本発明に係る実施の形態２について、図面を参照しながら説明する。
【００５９】
実施の形態１におけるメモリシステム１０１では、先行命令がキャッシュミスし、後続の命令が前方への分岐命令であるような命令シーケンスであった場合には、該当データ取得後に、リフィルによる残りのメインメモリ１０４からのデータ転送を破棄することで、データ転送の冗長性を低減できるが、先行命令がキャッシュミスし、後続の命令が後方への分岐命令であるような命令シーケンスであった場合には、分岐命令以降の命令で使用する命令もしくはデータが、該当データ取得後の残りのデータ転送に含まれている可能性があるため、むやみに破棄することはできない。なお、後方への分岐命令の「後方」はＰＣ（プログラムカウンタ）のカウントが進む方向と逆の方向であり、実行順では早い方である。
【００６０】
これに対して、図３に示されるように、実施の形態２におけるメモリシステム２０１では、命令シーケンス判定部１０７の代わりに、命令シーケンス判定部２０７を備え、このような問題を解消できるようにしたことを特徴とする。
【００６１】
すなわち、実施の形態２におけるメモリシステム２０１は、先行命令がキャッシュミスし、後続の命令が後方への分岐命令であるような命令シーケンスであった場合には、命令シーケンス判定部２０７から出力される命令シーケンス判定情報１５６、およびキャッシュメモリ１０５から出力されるデータ取得完了信号１５３に基づいて、データ転送中断制御信号１５８−２をアサートすることで、リフィルによる残りのデータ転送を一時的に中断し、中断されたデータ転送とは別の転送を行うことを特徴とする。この場合の命令シーケンス判定情報１５６は、現在のリフィル対象の未転送データに対してプロセッサからのアクセスが発生する可能性が小さいという判定結果を示す。
【００６２】
以上の点を踏まえて、実施の形態２におけるメモリシステムについて説明する。なお、実施の形態１におけるメモリシステム１０１と同一の構成については、同一の参照符号を付して説明を省略する。
【００６３】
命令シーケンス判定部２０７は、命令デコーダ部１０６から出力される命令情報１５５を常時監視し、ある一連の命令がメインメモリ１０４へアクセスする命令であるか否かであり、かつ先行の命令が該当するデータが存在せずにキャッシュミスし、後続の命令が後方への分岐命令であることを検出すると、命令シーケンス判定情報１５６を出力する。
【００６４】
以上のように構成されたメモリシステムについて、以下にその動作を説明する。図４は、本発明に係る実施の形態２におけるメモリシステムのメモリアクセス制御装置の動作を示したフローチャートである。
【００６５】
プロセッサ１０２は、命令デコーダ部１０６で命令をフェッチし、デコードすることで、命令を実行する。ある命令でキャッシュメモリ１０５からのデータ読み出しがミスすると、メインメモリ１０４がデータアクセスの対象となり、メインメモリ１０４に対してデータ読み出しアクセスを行うと同時に、そのデータをキャッシングするためのラインをキャッシュ上に確保する必要がある。プロセッサ１０２は、メインメモリ１０４からキャッシュメモリ１０５内に1ライン分のデータを取り込むリフィルを起動する。リフィルは１ライン分のデータ転送を行うためのメモリアクセス制御信号１６０をメインメモリ１０４に出力することで、バースト転送を行う（ステップＳ２１）。その際、命令シーケンス判定部２０７で、一連の命令シーケンス内で、キャッシュミスを起こした命令の後続の命令が後方への分岐命令であると判断する（ステップＳ２２）と、命令シーケンス判定情報１５６を出力する（ステップＳ２３）。また、キャッシュメモリ１０５は、リフィルによりキャッシュミスを起こした該当データを取得すると、リフィル途中であってもデータ取得完了信号１５３を出力する（ステップＳ２４）。転送制御切替部は、命令シーケンス判定情報１５６およびデータ取得完了信号１５３に基づき、データ転送中断信号１５８−２をアサート（ステップＳ２５）し、データ転送制御部１１０に出力する。テーブルメモリ１０８はリフィルを行うためのデータ転送情報を保持すると同時に、データ転送制御部１１０は、該当データを取得した後のメインメモリ１０４との残りのアクセスを一時的に中断し、中断された転送とは異なるデータ転送を実行する（ステップＳ２６）。データ転送が完了すると、データ転送制御再開信号１５８−３をアサート（ステップＳ２７）し、残りのリフィルを再開させる。
【００６６】
このように、メモリシステム２０１は、キャッシュミスが発生した場合、命令シーケンス判定部２０７で、一連の命令がメインメモリ１０４にアクセスするような命令でなく、かつ後方への分岐命令であることを検出することによりリフィルの未転送データへのアクセスが生じる可能性が小さいと判定し、リフィルを行った後の残りのデータ転送を一時的に中断し、中断した転送とは異なる転送を行うことで、データ転送の混雑を低減することが可能となる。
【００６７】
なお、上記の後方への分岐命令は、典型的には無条件分岐命令であるが、後方へ分岐する条件分岐命令であってもよい。条件分岐命令に対しては、命令シーケンス判定部１０７は、条件の成就も判定して分岐の成否を判定し、分岐しない場合は無視し、分岐する場合に後方への分岐命令と判定すればよい。
【００６８】
また、本実施の形態と実施の形態１とを同時にメモリシステムに適用しても良いことは言うまでもない。テーブルメモリ１０９のフラグＳ１、Ｓ２、Ｓ３を用いて状態を管理するようにしてもよい。
【００６９】
（実施の形態３）
次に、本発明に係る実施の形態３について、図面を参照しながら説明する。
【００７０】
実施の形態２におけるメモリシステム１０２では、プロセッサ１０２から多くのメモリアクセス要求があった場合、先行のメモリアクセス要求が完了するまで次のメモリアクセス要求は待たされてしまう。
【００７１】
これに対して、図５Ａに示されるように、実施の形態３におけるメモリシステム３０１では、テーブルメモリ１０９の代わりに、テーブルメモリ３０９を備え、このような問題を解消できるようにしたことを特徴とする。
【００７２】
すなわち、実施の形態３におけるメモリシステム３０１は、テーブルメモリ３０９に格納されるデータ転送情報が、バスの使用権を調停するために必要なメモリアクセス要求と、データ転送を優先して行なうか否かの情報であることで、優先させたいメモリアクセスを先に行うことを特徴とする。
【００７３】
以上の点を踏まえて、実施の形態３におけるメモリシステムについて説明する。なお、実施の形態２におけるメモリシステム２０１と同一の構成については、同一の参照符号を付して説明を省略する。
【００７４】
図５Ｂは、テーブルメモリ３０９の一例を示す図である。同図のように、テーブルメモリ３０９は、図１Ｂに示したテーブル１０９と比べて、データ転送情報毎に優先度が追加されている点が異なる。この優先度は、データ転送を優先して行なうか否か示し（例えば０が最優先）、データ転送情報１５７の一部としてデータ転送制御部１１０へ出力される。
【００７５】
以上のように構成されたメモリシステムについて、以下にその動作を説明する。図６は、本発明に係る実施の形態３におけるメモリシステムのメモリアクセス制御装置の動作を示したフローチャートである。
【００７６】
プロセッサ１０２は、命令デコーダ部１０６で命令をフェッチし、デコードすることで、命令を実行する。ある命令でキャッシュメモリ１０５からのデータ読み出しがミスすると、メインメモリ１０４がデータアクセスの対象となり、メインメモリ１０４に対してデータ読み出しアクセスを行うと同時に、そのデータをキャッシングするためのラインをキャッシュ上に確保する必要がある。プロセッサ１０２は、メインメモリ１０４からキャッシュメモリ１０５内に1ライン分のデータを取り込むリフィルを起動する。リフィルは１ライン分のデータ転送を行うためのメモリアクセス制御信号１６０をメインメモリ１０４に出力することで、バースト転送を行う（ステップＳ３１）。その際、命令シーケンス判定部２０７で、一連の命令シーケンス内で、キャッシュミスを起こした命令の後続の命令が後方への分岐命令であると判断する（ステップＳ３２）と、命令シーケンス判定情報１５６を出力する（ステップＳ３３）。また、キャッシュメモリ１０５は、リフィルによりキャッシュミスを起こした該当データを取得すると、リフィル途中であってもデータ取得完了信号１５３を出力する（ステップＳ３４）。転送制御切替部は、命令シーケンス判定情報１５６およびデータ取得完了信号１５３に基づき、データ転送中断信号１５８−２をアサート（ステップＳ３５）し、データ転送制御部１１０に出力する。テーブルメモリ１０８はリフィルを行うためのデータ転送情報を保持すると同時に、データ転送制御部１１０は、該当データを取得した後のメインメモリ１０４との残りのアクセスを一時的に中断し、後方への分岐命令の次の命令が実行されるまでの期間、中断された転送とは異なり、その中でも優先度の一番高いデータ転送を実行する（ステップＳ３６）。データ転送が完了しても、後方への分岐命令の次の命令かどうか、命令情報１５５によって、命令シーケンス判定部２０７が判定しなければ（ステップＳ３７）、優先度の一番高いデータ転送を実行し続ける。命令シーケンス判定部２０７が後方への分岐命令の次の命令であると判定すると、データ転送再開信号１５８−３をアサート（ステップＳ３８）し、残りのリフィルを再開させる。
【００７７】
このように、メモリシステム３０１は、キャッシュミスが発生した場合、命令シーケンス判定部２０７で、一連の命令がメインメモリ１０４にアクセスするような命令でなく、および後方への分岐命令であることを検出し、データ転送情報に優先度を付与することで、必要な分だけのリフィルを行った後の残りのデータ転送を一時的に中断し、中断した転送とは異なり、かつ優先度の高い転送を行い続けることで、先行のメモリアクセス要求が完了するまで次のメモリアクセス要求は待たされることがなく実行されることが可能となる。
【００７８】
（実施の形態４）
次に、本発明に係る実施の形態４について、図面を参照しながら説明する。
【００７９】
実施の形態１におけるメモリシステム１０１では、メインメモリ１０４へのメモリアクセス要求がない場合でも、ライトアクセスもしくはリードアクセスに関係する回路へのクロック供給は行われており、電力を無駄に消費している。
【００８０】
これに対して、図７に示されるように、実施の形態４におけるメモリシステム４０１では、命令シーケンス判定部１０７の代わりに、命令シーケンス判定部４０７を備え、転送制御切替部１０８の代わりに、クロック停止制御部４０８を備え、このような問題を解消できるようにしたことを特徴とする。
【００８１】
すなわち、実施の形態４におけるメモリシステム４０１は、Ｎ回繰り返しループする命令であった場合には、ループする回数を保持する機能を持ち、その保持機能によって２回目以降Ｎ回ループする期間は、クロック供給を一時的に停止することを特徴とする。
【００８２】
以上の点を踏まえて、実施の形態４におけるメモリシステムについて説明する。なお、実施の形態１におけるメモリシステム１０１と同一の構成については、同一の参照符号を付して説明を省略する。
【００８３】
命令シーケンス判定部４０７は、命令デコーダ部１０６から出力される命令情報１５５を常時監視し、ある一連の命令がメインメモリ１０４へアクセスする命令であるか否か、かつＮ回繰り返しループする命令であることを検出すると、ループする回数を保持するレジスタをＮに設定し、命令シーケンス判定情報１５６を出力する。
【００８４】
クロック停止制御部４０８は、命令シーケンス判定部４０７から出力される命令シーケンス判定情報４５６、およびデータ転送制御部から出力されるメインメモリアクセス可否信号１５９に基づき、クロック一時停止信号４５８をアサートし、テーブルメモリ１０９およびデータ転送制御部１１０のライトアクセスおよびリードアクセスに関係する回路へのクロック供給を停止する。
【００８５】
以上のように構成されたメモリシステムについて、以下にその動作を説明する。図８は、本発明に係る実施の形態４におけるメモリシステムのメモリアクセス制御装置の動作を示したフローチャートである。
【００８６】
プロセッサ１０２は、命令デコーダ部１０６で命令をフェッチし、デコードすることで、命令を実行する。実行した命令がＮ回繰り返しループする命令であることを命令シーケンス判定部４０７が検出する（ステップＳ４１）と、命令シーケンス判定部４０７内のレジスタにループする回数Ｎを設定する（ステップＳ４２）。ループする毎にカウンタをインクリメントし、カウンタ値が示すループ回数により２回目以降ループしている期間は、命令シーケンス判定情報１５６を出力する。クロック停止制御部４０８は、命令シーケンス判定情報がアサート、かつデータ転送制御部１１０から出力されるメモリアクセス可否信号１５９がネゲート（メモリアクセスをしていない）していれば、クロック停止制御部４０８がクロック一時停止信号４５８をアサートする。クロック一時停止信号４５８がアサートしている期間は、テーブルメモリ１０９およびデータ転送制御部１１０のライトアクセスおよびリードアクセスに関係する回路へのクロック供給を一時的に停止する。命令シーケンス判定部４０７内のカウンタ値が、レジスタに設定したループ回数Ｎになれば、クロック一時停止信号４５８をネゲートすることで、ライトアクセスおよびリードアクセスに関係する回路へのクロック供給を再開する。
【００８７】
このように、メモリシステム４０１は、命令シーケンス判定部４０７が、一連の命令がメインメモリ１０４にアクセスするような命令でなく、かつＮ回繰り返しループする命令であることを検出し、ループする回数を保持することで、命令シーケンス判定情報１５８、およびデータ転送制御部１１０からのメモリアクセス可否信号１５９に基づき、クロック一時停止信号４５８をアサートし、テーブルメモリ１０９およびデータ転送制御１１０のライトアクセスおよびリードアクセスに関係する回路へのクロック供給を一時的に停止することで、低消費電力化が可能となる。
【００８８】
なお実施の形態１、２、４は同時に並存させることができ、実施の形態１、３、４も同時に並存させることができる。たとえば、実施の形態２と、実施の形態４とを並存させる場合、命令シーケンス判定部２０７が、先行命令がキャッシュミスし、後続の命令が後方への分岐命令であるような命令シーケンスであった場合に、データ転送を中断させることになる。ここでいう、後方への分岐命令には、Ｎ回繰り返しループするための分岐命令も当然含まれるので、実施の形態２の構成において、後方への分岐命令がＮ回繰り返しループするための分岐命令である場合に実施の形態４のクロック供給の停止を適用することができる。
【産業上の利用可能性】
【００８９】
本発明は、プロセッサが処理する一連の命令シーケンスを常時監視することで、メモリアクセス制御を容易に切り替え、メインメモリへのアクセスを削減できるので、高速化が要求されるキャッシュメモリを内蔵したプロセッサを含むメモリシステム、もしくは低消費電力化が要求されるメモリシステムなどに利用することができる。
【図面の簡単な説明】
【００９０】
【図１Ａ】実施の形態１におけるメモリシステムの構成を示すブロック図である。
【図１Ｂ】テーブルメモリの一例を示す図である。
【図２】メモリアクセス制御回路の動作を示すフローチャートである。
【図３】実施の形態２におけるメモリシステムの構成を示すブロック図である。
【図４】メモリアクセス制御回路の動作を示すフローチャートである。
【図５Ａ】実施の形態３におけるメモリシステムの構成を示すブロック図である。
【図５Ｂ】テーブルメモリの一例を示す図である。
【図６】メモリアクセス制御回路の動作を示すフローチャートである。
【図７】実施の形態４におけるメモリシステムの構成を示すブロック図である。
【図８】メモリアクセス制御回路の動作を示すフローチャートである。
【符号の説明】
【００９１】
１０１，２０１，３０１，４０１  メモリシステム
１０２  プロセッサ
１０３  メモリアクセス制御装置
１０４  メインメモリ
１０５  キャッシュメモリ
１０６  命令デコーダ部
１０７，２０７，４０７  命令シーケンス判定部
１０８  転送制御切替部
１０９，３０９  テーブルメモリ
１１０  データ転送制御部
４０８  クロック停止制御部
【図１Ａ】
2007207039.tif 000003
【図１Ｂ】
2007207039.tif 000004
【図２】
2007207039.tif 000005
【図３】
2007207039.tif 000006
【図４】
2007207039.tif 000007
【図５Ａ】
2007207039.tif 000008
【図５Ｂ】
2007207039.tif 000009
【図６】
2007207039.tif 000010
【図７】
2007207039.tif 000011
【図８】
2007207039.tif 000012