(57)【要約】【課題】キャッシュメモリのヒット率を向上させ、処理を高速化すること。【解決手段】第１の変化値に基づいて値をカウントするカウンタ１と、カウンタ１の出力に対応するアドレスに基づいて、キャッシュメモリ６におけるキャッシュ判定をする制御部２と、を有する。制御部２がキャッシュミスであると判定した場合に、カウンタ１は、第１の変化値ｍを第１の変化値ｍと異なる第２の変化値ｎに切り替えてカウントする。制御部２、第２の変化値ｎに基づくカウント値に基づいてキャッシュ判定をする。【選択図】図１
2010198342.tif 000002
【特許請求の範囲】
【請求項１】
第１の変化値に基づいて値をカウントするカウンタと、
前記カウンタの出力に対応するアドレスに基づいて、キャッシュメモリにおけるキャッシュ判定をする制御部と、を有し、
前記制御部がキャッシュミスであると判定した場合に、前記カウンタは、前記第１の変化値を前記第１の変化値と異なる第２の変化値に切り替えてカウントし、前記制御部は、前記第２の変化値に基づくカウント値に基づいてキャッシュ判定をすることを特徴とするメモリアクセス判定回路。
【請求項２】
前記制御部は、前記第２の変化値に基づくカウント値に対応するアドレスのキャッシュ判定を、前記キャッシュミスとなったアドレスに基づくメインメモリへのアクセスに対応させて行うことを特徴とする請求項１に記載のメモリアクセス判定回路。
【請求項３】
前記カウンタは、前記制御部がキャッシュミスであると判定した場合に前記第１の変化値に基づくカウント値を保持し、前記キャッシュミスとなったアドレスに基づくメインメモリへのアクセス状況に応じて前記第２の変化値に基づくカウント値を、保持された前記第１の変化値に基づくカウント値に切り替えることを特徴とする請求項１または２に記載のメモリアクセス判定回路。
【請求項４】
前記第２の変化値は、前記第１の変化値よりも大きいことを特徴とする請求項１〜３のいずれか一つに記載のメモリアクセス判定回路。
【請求項５】
前記制御部は、前記第２の変化値に基づくカウント値に対応するアドレスに対してキャッシュミスであると判定した場合に、キャッシュミスとなった当該第２の変化値に基づくカウント値に対応するアドレスを保持することを特徴とする請求項２に記載のメモリアクセス判定回路。
【請求項６】
前記制御部は、前記キャッシュミスとなった前記第１の変化値に基づくカウント値に対応するアドレスに基づくメインメモリへのアクセス状況に応じて、保持された前記第２の変化値に基づくカウント値に対応するアドレスに基づいてメインメモリへアクセスすることを特徴とする請求項５に記載のメモリアクセス判定回路。
【請求項７】
第１の変化値に基づいてカウンタで値をカウントする工程と、
前記第１の変化値に基づいてカウントされた前記カウンタの出力に対応するアドレスを求める工程と、
前記第１の変化値に基づくカウント値に対応する前記アドレスに基づいてキャッシュメモリにおけるキャッシュ判定をする工程と、
キャッシュミスであると判定した場合に、前記第１の変化値を前記第１の変化値と異なる第２の変化値に切り替えて前記カウンタで値をカウントする工程と、
前記第２の変化値に基づいてカウントされた前記カウンタの出力に対応するアドレスを求める工程と、
を含むことを特徴とするメモリアクセス判定方法。
【請求項８】
前記第２の変化値に基づくカウント値に対応する前記アドレスに基づいてキャッシュメモリにおけるキャッシュ判定を、前記キャッシュミスとなったアドレスに基づくメインメモリへのアクセスに対応させて行う工程、を含むことを特徴とする請求項７に記載のメモリアクセス判定方法。
【請求項９】
メインメモリと、
前記メインメモリよりも高速なキャッシュメモリと、
第１の変化値に基づいて値をカウントするカウンタと、
前記カウンタの出力に対応するアドレスに基づいて、前記キャッシュメモリにおけるキャッシュ判定をする制御部と、を有し、
前記制御部がキャッシュミスであると判定した場合に、前記カウンタは、前記第１の変化値を前記第１の変化値と異なる第２の変化値に切り替えてカウントし、前記制御部は、前記第２の変化値に基づくカウント値に基づいてキャッシュ判定をすることを特徴とする電子機器。
【請求項１０】
前記制御部は、前記第２の変化値に基づくカウント値に対応するアドレスのキャッシュ判定を、前記キャッシュミスとなったアドレスに基づく前記メインメモリへのアクセスに対応させて行うことを特徴とする請求項９に記載の電子機器。
【発明の詳細な説明】
【技術分野】
【０００１】
この発明は、メモリアクセス判定回路、メモリアクセス判定方法および電子機器に関する。
【背景技術】
【０００２】
従来、メインメモリとキャッシュメモリを備え、先読みアドレスのデータをメインメモリからキャッシュメモリに先読みするキャッシュメモリ装置が知られている。このような装置において、例えば、データに付随するキャッシュ制御情報に基づいてアドレス計算回路で先読みアドレスを決定する技術が知られている（例えば、特許文献１参照。）。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開平９−２５９０４０号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
しかしながら、従来の技術では、キャッシュのヒット率を向上させるための手段としてデータにキャッシュ制御情報を付加する必要があるため、付加した分だけメモリを多く必要とし、キャッシュ判定を高速化できたとしても、メモリへのアクセス効率が低下してしまうためデータ処理が遅くなる、という問題点がある。またプロセッサのみがデータにアクセスを行う事を前提としているため。キャッシュ制御情報を含むデータではデータに汎用性が無い。
【課題を解決するための手段】
【０００５】
このメモリアクセス判定回路、メモリアクセス判定方法および電子機器は、カウンタおよび制御部を備えている。カウンタは、第１の変化値または第１の変化値と異なる第２の変化値に基づいて値をカウントする。制御部は、カウンタの出力に対応するアドレスに基づいて、キャッシュメモリにおけるキャッシュ判定を行う。第１の変化値に基づいてカウントしているときのカウンタの出力に対応するアドレスに基づいて制御部がキャッシュミスであると判定した場合、カウンタは、第１の変化値を第２の変化値に切り替えてカウントする。そして、制御部は、第２の変化値に基づくカウント値に基づいてキャッシュ判定を行う。
【発明の効果】
【０００６】
このメモリアクセス判定回路、メモリアクセス判定方法および電子機器によれば、連続性を有するデータに対してキャッシュ判定を高速化することができるという効果を奏する。また、このメモリアクセス判定回路、メモリアクセス判定方法および電子機器によれば、連続性を有するデータに対して処理を高速化することができるという効果を奏する。
【図面の簡単な説明】
【０００７】
【図１】本発明の実施の形態１におけるブロック図である。
【図２】本発明の実施の形態１における動作の説明図である。
【図３】本発明の実施の形態１におけるフローチャートである。
【図４】本発明の実施の形態２におけるブロック図である。
【図５】本発明の実施の形態２におけるカウンタ部の第１の例のブロック図である。
【図６】本発明の実施の形態２におけるカウンタ部の第１の例の動作の説明図である。
【図７】本発明の実施の形態２におけるカウンタ部の第２の例のブロック図である。
【図８】本発明の実施の形態２におけるカウンタ部の第２の例の動作の説明図である。
【図９】本発明の実施の形態２におけるカウンタ部の第３の例のブロック図である。
【図１０】本発明の実施の形態２におけるカウンタ部の第３の例の動作の説明図である。
【図１１】本発明の実施の形態２におけるカウント値とアドレスの関係の一例を示す図表である。
【図１２】本発明の実施の形態２における動作の説明図である。
【図１３】比較例の動作の説明図である。
【図１４】本発明の実施の形態２におけるカウント値とアドレスの関係の他の例を示す図表である。
【図１５】本発明の実施の形態２を適用して画像データを処理する例を示す説明図である。
【図１６】本発明の実施の形態２を適用して画像データを処理する例を示す説明図である。
【図１７】本発明の実施の形態２におけるフローチャートである。
【発明を実施するための形態】
【０００８】
以下に添付図面を参照して、このメモリアクセス判定回路、メモリアクセス判定方法および電子機器の好適な実施の形態を詳細に説明する。
【０００９】
（実施の形態１）
図１は、本発明の実施の形態１におけるブロック図である。図１に示すように、メモリアクセス判定回路は、カウンタ１および制御部２を備えている。制御部２は、アドレス演算部３、キャッシュ判定部４およびプリフェッチアドレスキュー５を備えている。また、このメモリアクセス判定回路を備えた電子機器は、キャッシュメモリ６、メインメモリ７およびデータ処理部８を備えている。
【００１０】
カウンタ１は、第１の変化値ｍに基づいて値をカウントする。カウンタ１は、キャッシュ判定部４からプリフェッチアドレス生成要求を受け取ると、第２の変化値ｎに基づいて値をカウントする。ここで、ｍとｎは等しくない。また、ｎはｍよりも大きい整数であってもよい。例えば、ｍおよびｎは、サイクル数に対応する値であってもよい。この場合、カウンタ１は、ｍサイクル後またはｎサイクル後に必要なデータのアドレスを求めるための値をカウントしていることになる。カウンタ１は、カウント値をアドレス演算部３へ送る。
【００１１】
アドレス演算部３は、カウンタ１から受け取ったカウント値に対応するアドレスを求める。その際、アドレス演算部３は、カウント値とアドレスとの対応関係を示す演算式を用いて、計算によりカウント値からアドレスを求めてもよいし、カウント値とアドレスとの対応関係を示すルックアップテーブルを参照して、カウント値に該当するアドレスを求めてもよい。演算式やルックアップテーブルは、予めアドレス演算部３に設定されている。アドレス演算部３は、アドレスをキャッシュ判定部４へ送る。
【００１２】
キャッシュ判定部４は、キャッシュメモリ６から、キャッシュメモリ６に格納されている全データに対応するアドレスの情報を取得する。キャッシュ判定部４は、キャッシュメモリ６から受け取ったアドレスの情報に基づいてキャッシュ判定を行い、アドレス演算部３から受け取ったアドレスに対応するデータがキャッシュメモリ６に格納されているか否かを判定する。該当するデータがキャッシュメモリ６に格納されている場合は、キャッシュヒットであり、格納されていない場合は、キャッシュミスである。キャッシュ判定部４は、キャッシュヒットであると判定した場合、該当するデータの格納場所を示すライン番号をキャッシュメモリ６へ送る。キャッシュ判定部４は、キャッシュミスであると判定した場合、キャッシュミスと判定されたアドレスでメインメモリ７にアクセスする。キャッシュ判定部４は、キャッシュミスであると判定した場合、プリフェッチアドレス生成要求をカウンタ１へ送る。キャッシュ判定部４は、プリフェッチアドレス生成要求を出力したことに起因してアドレス演算部３から送られてきたアドレスに対してキャッシュミスであると判定した場合、当該アドレスをプリフェッチアドレスキュー５に格納する。
【００１３】
プリフェッチアドレスキュー５は、格納されているアドレスを格納の古い順にメインメモリ７へ送る。メインメモリ７は、キャッシュ判定部４から受け取ったアドレスに格納されているデータをキャッシュメモリ６へ送る。メインメモリ７は、プリフェッチアドレスキュー５から受け取ったアドレスに格納されているデータをキャッシュメモリ６へ送る。メインメモリ７からキャッシュメモリ６へのデータ転送の際に、キャッシュ判定部４からのアドレスに起因する動作と、プリフェッチアドレスキュー５からのアドレスに起因する動作が競合することがある。競合した場合には、データ処理部８での処理を高速化するには、キャッシュ判定部４からのアドレスに起因するデータ転送動作を優先させるのが好ましい。つまり、キャッシュ判定部４からのアドレスに起因するデータ転送動作の終了後に、プリフェッチアドレスキュー５からのアドレスに起因するデータ転送動作が行われるのが好ましい。
【００１４】
キャッシュメモリ６は、メインメモリ７から送られてきたデータを格納する。キャッシュメモリ６は、キャッシュ判定部４から受け取ったライン番号に格納されているデータをデータ処理部８へ送る。キャッシュメモリ６は、キャッシュ判定部４からのアドレスに起因してメインメモリ７から送られてきたデータをデータ処理部８へ送る。メインメモリ７は、メモリに対してアクセスを開始してからデータが出力されるまでに時間のかかるメモリである。例えば、メインメモリ７は、Ｓｙｎｃｈｒｏｎｏｕｓ  Ｄｙｎａｍｉｃ  Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ（ＳＤＲＡＭ）であってもよい。キャッシュメモリ６は、メインメモリ７よりも高速にデータの読み出しが可能なメモリである。例えば、キャッシュメモリ６は、Ｓｔａｔｉｃ  Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ（ＳＲＡＭ）であってもよい。
【００１５】
図２は、本発明の実施の形態１における動作の説明図である。図２に示すように、まず、カウンタ１は、第１の変化値ｍでカウントを開始する。アドレス演算部３は、カウント値ｍに対応するアドレスを求める。例えば、カウント値ｍのときのアドレスがキャッシュヒットである場合、カウント値ｍに対応するアドレスのデータがキャッシュメモリ６から読み出され、データ処理部８へ送られる。続いて、カウント値がｍだけ加算されてカウント値２ｍとなる。アドレス演算部３は、カウント値２ｍに対応するアドレスを求める。例えば、カウント値２ｍのときのアドレスがキャッシュミスである場合、メインメモリ７に対して、カウント値２ｍに対応するアドレスへのリード要求が行われ、メインメモリ７からのデータの読み出しが開始される。
【００１６】
メインメモリ７からデータが読み出されている間、プリフェッチアドレス生成要求の出力により、カウンタ１は、第１の変化値ｍを第２の変化値ｎに切り替え、第２の変化値ｎでカウントを継続する。従って、カウント値は２ｍ＋ｎとなる。その際、カウンタ１は、第１の変化値ｍから第２の変化値ｎに切り替わるときのカウント値、図示例では２ｍを保持する。アドレス演算部３は、カウント値２ｍ＋ｎに対応するアドレスを求める。例えば、カウント値２ｍ＋ｎのときのアドレスがキャッシュミスである場合、カウント値２ｍ＋ｎのときのアドレスは、プリフェッチアドレスキュー５に格納される。
【００１７】
図示例では、さらにｎだけ加算されたカウント値２ｍ＋２ｎのときのアドレスもキャッシュミスであるので、カウント値２ｍ＋２ｎのときのアドレスもプリフェッチアドレスキュー５に格納される。従って、プリフェッチアドレスキュー５には、格納の古い順に、カウント値２ｍ＋ｎのときのアドレス、カウント値２ｍ＋２ｎのときのアドレスが格納されている。図示例では、さらにｎだけ加算されたカウント値２ｍ＋３ｎのときのアドレスは、キャッシュヒットである。従って、カウント値２ｍ＋３ｎのときのアドレスは、プリフェッチアドレスキュー５に格納されない。このように、カウント値２ｍに対応するアドレスのデータがメインメモリ７から読み出されている間、アドレスのプリフェッチが行われる。
【００１８】
カウント値２ｍに対応するアドレスのデータがキャッシュメモリ６に格納されると、カウント値２ｍに対応するアドレスのデータの読み出し動作、およびアドレスのプリフェッチ動作が終了する。カウンタ１は、カウント値を、先に保持していた値、図示例では２ｍに戻す。そして、カウンタ１は、第２の変化値ｎを第１の変化値ｍに戻し、第１の変化値ｍでカウントを継続する。従って、カウント値は３ｍとなり、アドレス演算部３は、カウント値３ｍに対応するアドレスを求める。以後、第１の変化値ｍでカウントした値でキャッシュ判定が行われる。カウンタ１が第１の変化値ｍでカウントを継続している間、それと並行して、プリフェッチアドレスキュー５に格納されているアドレスに対応するデータが順次メインメモリ７から読み出され、キャッシュメモリ６に格納される。カウンタ１が第１の変化値ｍでカウントを継続しているときにキャッシュミスが起こると、上述したカウント値２ｍのときのキャッシュミスと同様に、メインメモリ７からデータを読み出してキャッシュメモリ６に格納する動作と、そのデータの読み出し期間中にアドレスのプリフェッチ動作が行われる。
【００１９】
実施の形態１のメモリアクセス判定回路は、ハードウェアだけでなく、ソフトウェアで実現することもできる。例えば、Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ（ＣＰＵ）がメモリアクセス判定処理プログラムを実行することにより、上述したメモリアクセス判定回路と同じ動作を実現することができる。メモリアクセス判定処理プログラムは、ＣＰＵがアクセセス可能なＲｅａｄ  Ｏｎｌｙ  Ｍｅｍｏｒｙ（ＲＯＭ）などの不揮発性メモリに格納される。以下に、メモリアクセス判定処理の手順について説明する。
【００２０】
図３は、本発明の実施の形態１におけるフローチャートである。図３に示すように、メモリアクセス判定処理が開始されると、まず、第１の変化値ｍでカウントを開始する（ステップＳ１）。次いで、カウント値に対応するアドレスを計算して求める（ステップＳ２）。あるいは、ルックアップテーブルを参照して、カウント値に対応するアドレスを求めてもよい。次いで、カウント値に対応するアドレスに対してキャッシュ判定を行う（ステップＳ３）。キャッシュヒットである場合（ステップＳ３：Ｎｏ）、カウント値ｍに対応するアドレスのデータがキャッシュメモリ６から読み出され、データ処理部８へ送られる。続いて、カウント値を第１の変化値ｍだけ加算した値とし、同様にアドレスの計算およびキャッシュ判定を行う（ステップＳ１〜ステップＳ３）。
【００２１】
ステップＳ３でキャッシュミスである場合（ステップＳ３：Ｙｅｓ）、キャッシュミスと判定されたアドレスのデータがメインメモリ７から読み出され、キャッシュメモリ６に格納される。メインメモリ７へのアクセス開始からキャッシュメモリ６へのデータの格納が終了するまでの間、第１の変化値ｍを第２の変化値ｎに切り替え、カウント値を第２の変化値ｎだけ加算した値とする（ステップＳ４）。その際、第１の変化値ｍから第２の変化値ｎに切り替わるときのカウント値を保持する。次いで、カウント値に対応するアドレスを求める（ステップＳ５）。ステップＳ５で求められたアドレスがキャッシュミスである場合、当該アドレスをキューに保持する。次いで、ステップＳ３でキャッシュミスが発生したことに起因して実行されている、メインメモリ７からのデータの読み出しが終了したか否かを判定する（ステップＳ６）。
【００２２】
データの読み出しが終了していない場合（ステップＳ６：Ｎｏ）、データの読み出しが終了するまで、あるいは、第１の変化値ｍから第２の変化値ｎに切り替わった後、予め設定された規定回数だけ、第２の変化値ｎでのカウントが終了するまで、ステップＳ４〜ステップＳ６を繰り返す。データの読み出しが終了した場合（ステップＳ６：Ｙｅｓ）、メモリアクセス処理の終了であるか否かを判定する（ステップＳ７）。終了でなければ（ステップＳ７：Ｎｏ）、カウント値を、第１の変化値ｍから第２の変化値ｎに切り替わるときに保持されたカウント値に戻す。また、第２の変化値ｎを第１の変化値ｍに切り替える。そして、第１の変化値ｍでのカウント、アドレスの計算およびキャッシュ判定を行う（ステップＳ１〜ステップＳ３）。並行して、ステップＳ４〜ステップＳ６でキューに保持されたアドレスに対応するデータがメインメモリ７から読み出され、キャッシュメモリ６に格納される。ステップＳ７で終了であれば（ステップＳ７：Ｙｅｓ）、一連のメモリアクセス判定処理を終了する。
【００２３】
実施の形態１によれば、第１の変化値ｍに基づいてカウントされた値に対応するアドレスが発生するので、連続性を有するデータに対してキャッシュ判定を高速化することができる。従って、連続性を有するデータに対して処理を高速化することができる。また、キャッシュミスが発生してメインメモリ７へアクセスしている間に、第２の変化値ｎに基づいてカウントされた値に対応するアドレスがプリフェッチされる。そして、キャッシュミスによるメインメモリ７へのアクセス終了後に、プリフェッチされていたアドレスに対応するデータがメインメモリ７から読み出されてキャッシュメモリ６に格納されるので、後のサイクルでキャッシュヒットとなる確率が高くなる。従って、連続性を有するデータに対して処理を高速化することができる。連続性を有するデータの一例として、例えば画像データが挙げられる。従って、実施の形態１を画像データの処理に適用すれば、画像データを高速に処理することができる。
【００２４】
（実施の形態２）
図４は、本発明の実施の形態２におけるブロック図である。図４に示すように、メモリアクセス判定回路は、カウンタ部１１、アドレス演算部１２、キャッシュ制御部１３、先読み制御部１４およびアクセス調停部１５を備えている。キャッシュ制御部１３は、キャッシュ判定部１６およびウェイト制御部１７を備えている。先読み制御部１４は、先読みアドレスバッファ１８を備えている。アドレス演算部１２、キャッシュ制御部１３、先読み制御部１４およびアクセス調停部１５は、制御部として動作する。また、このメモリアクセス判定回路を備えた電子機器は、キャッシュメモリ１９、メインメモリ２０およびデータ処理部２１を備えている。
【００２５】
カウンタ部１１は、一般に、データのアクセス元に設けられている。カウンタ部１１には、ウェイト制御部１７からウェイト信号が入力する。カウンタ部１１は、ウェイト信号がネゲートされているときには、第１の変化値ｍに基づいて値をカウントし、ウェイト信号がアサートされているときには、第２の変化値ｎに基づいて値をカウントする。第１の変化値ｍおよび第２の変化値ｎについては、実施の形態１で説明したとおりである。カウンタ部１１は、カウント値をアドレス演算部１２へ送る。カウンタ部１１の詳細な構成については、後述する。
【００２６】
アドレス演算部１２は、実施の形態１と同様に演算式やルックアップテーブルを用いて、カウンタ部１１から受け取ったカウント値に対応するアドレスを求める。アドレス演算部１２は、アドレスをキャッシュ判定部１６および先読みアドレスバッファ１８へ送る。
【００２７】
キャッシュ制御部１３は、キャッシュ判定、およびキャッシュミスの発生時にカウンタの切り替えやデータの先読みの制御を行う。キャッシュ判定部１６は、キャッシュメモリ１９から、キャッシュメモリ１９に格納されている全データに対応するアドレスの情報を取得する。キャッシュ判定部１６は、キャッシュメモリ１９から受け取ったアドレスの情報に基づいて、アドレス演算部１２から受け取ったアドレスに対してキャッシュ判定を行う。キャッシュ判定部１６は、判定結果がキャッシュヒットである場合、ミス信号をネゲートにするとともに、ライン番号をキャッシュメモリ１９へ送る。キャッシュ判定部１６は、判定結果がキャッシュミスである場合、ミス信号をアサートにするとともに、キャッシュミスと判定されたアドレスをメモリアクセス要求としてアクセス調停部１５へ送る。
【００２８】
ウェイト制御部１７は、ミス信号がアサートされると、前記ウェイト信号をアサートにするとともに、先読み制御部１４に先読みアドレスのエントリを指示する。ウェイト信号は、ウェイト信号がアサートにされた原因となるアドレスのデータがメインメモリ２０から読み出されてキャッシュメモリ１９に格納されるまで、アサートされた状態を保つ。ウェイト信号がアサートにされた原因となるアドレスのデータがキャッシュメモリ１９に格納されると、ウェイト信号はネゲートされる。ウェイト信号がアサートされているときには、先読みアドレスのエントリが指示されており、ウェイト信号がネゲートされているときには、先読みアドレスのエントリの指示は取り下げられている。
【００２９】
先読み制御部１４は、先読み動作を制御する。先読み制御部１４は、ミス信号がアサートされ、かつ先読みアドレスのエントリが指示されると、アドレス演算部１２から出力されたアドレスを先読みアドレスとして先読みアドレスバッファ１８に格納する。先読み制御部１４は、先読みアドレスバッファ１８に格納された先読みアドレスを格納の古い順に先読み用のメモリアクセス要求としてアクセス調停部１５へ送る。先読みアドレスバッファ１８は、例えばＦｉｒｓｔ−Ｉｎ  Ｆｉｒｓｔ−Ｏｕｔ（ＦＩＦＯ）方式のメモリを備えている。
【００３０】
アクセス調停部１５は、例えば、キャッシュ判定部１６からのメモリアクセス要求と先読みアドレスバッファ１８からの先読み用のメモリアクセス要求とが競合した場合、キャッシュ判定部１６からのメモリアクセスを優先する。それによって、データ処理部２１で必要なデータが直ちにメインメモリ２０から読み出されて、キャッシュメモリ１９に格納される。従って、先読みアドレスによるメモリアクセスを優先させるよりも、データ処理部２１での処理の高速化を図ることができる。先読み用のメモリアクセス要求は、キャッシュ判定部１６からのメモリアクセス要求の処理後に、処理される。アクセス調停部１５は、キャッシュ判定部１６からのメモリアクセス要求を受け付けると、当該メモリアクセス要求によるデータの転送が終了するまでは、キャッシュ判定部１６からの新たなメモリアクセス要求を受け付けない。キャッシュメモリ１９およびメインメモリ２０については、実施の形態１において説明したとおりである。
【００３１】
図５は、本発明の実施の形態２におけるカウンタ部の第１の例のブロック図である。図５に示すように、カウンタ部１１は、第１選択部３１、＋ｍ回路３２、＋ｎ回路３３、第２選択部３４および保持回路３５を備えている。第１選択部３１は、ウェイト信号がアサートの状態からネゲートの状態に切り替わるサイクルのときに保持回路３５の出力値を選択し（“２”側）、それ以外のときには、第２選択部３４から出力されるカウント値を選択する（“１”側）。＋ｍ回路３２は、第１選択部３１の出力値に第１の変化値ｍを加算する。＋ｎ回路３３は、第２選択部３４から出力されるカウント値に第２の変化値ｎを加算する。ｎの値は、ＣＰＵなどの外部から任意に設定することができるようになっている。
【００３２】
第２選択部３４は、ウェイト信号がアサートの状態にあるときに＋ｎ回路３３の出力値を選択し（“２”側）、ウェイト信号がネゲートの状態にあるときに＋ｍ回路３２の出力値を選択する（“１”側）。第２選択部３４は、＋ｎ回路３３の出力値および＋ｍ回路３２の出力値のうち、選択した側の値をカウント値として前記アドレス演算部１２へ出力する。保持回路３５は、ウェイト信号がネゲートの状態からアサートの状態に切り替わるサイクルのときに第２選択部３４から出力されるカウント値を保持する。
【００３３】
図６は、本発明の実施の形態２におけるカウンタ部の第１の例の動作の説明図である。図６に示すように、ウェイト信号がネゲートの状態からアサートの状態に切り替わるとき（図示例では、ウェイト信号の立ち上がりタイミング）にカウント値（図示例では、０）が保持回路３５に保持される。ウェイト信号がアサートの状態にある期間では、前のサイクルのカウント値に対して＋ｎ回路３３で第２の変化値ｎを加算した値がカウント値として出力される。ウェイト信号がアサートの状態からネゲートの状態に切り替わるとき（図示例では、ウェイト信号の立ち下がりタイミング）に、保持回路３５に保持されている値（図示例では、０）が復帰する。その次のサイクルでは、復帰した値（図示例では、０）に対して＋ｍ回路３２で第１の変化値ｍを加算した値（図示例では、０＋ｍ）がカウント値として出力される。ウェイト信号がネゲートの状態にある期間では、前のサイクルのカウント値に対して＋ｍ回路３２で第１の変化値ｍを加算した値がカウント値として出力される。
【００３４】
図７は、本発明の実施の形態２におけるカウンタ部の第２の例のブロック図である。図７に示すように、カウンタ部１１は、選択部４１、＋ｎ回路４２および保持回路４３を備えている。選択部４１は、ウェイト信号がアサートの状態からネゲートの状態に切り替わるサイクルのときに保持回路４３の出力値を選択し（“２”側）、それ以外のときには、＋ｎ回路４２から出力されるカウント値を選択する（“１”側）。＋ｎ回路４２は、ウェイト信号がネゲートの状態にあるときに選択部４１の出力値に第１の変化値ｍを加算し、カウント値として前記アドレス演算部１２へ出力する。＋ｎ回路４２は、ウェイト信号がアサートの状態にあるときに選択部４１の出力値に第２の変化値ｎを加算し、カウント値として前記アドレス演算部１２へ出力する。ｎの値は、ＣＰＵなどの外部から任意に設定することができるようになっている。保持回路４３は、ウェイト信号がネゲートの状態からアサートの状態に切り替わるサイクルのときに＋ｎ回路４２から出力されるカウント値を保持する。
【００３５】
図８は、本発明の実施の形態２におけるカウンタ部の第２の例の動作の説明図である。図８に示すように、ウェイト信号がネゲートの状態からアサートの状態に切り替わるとき（図示例では、ウェイト信号の立ち上がりタイミング）にカウント値（図示例では、０）が保持回路４３に保持される。ウェイト信号がアサートの状態にある期間では、前のサイクルのカウント値に対して＋ｎ回路４２で第２の変化値ｎを加算した値がカウント値として出力される。ウェイト信号がアサートの状態からネゲートの状態に切り替わるとき（図示例では、ウェイト信号の立ち下がりタイミング）に、保持回路４３に保持されている値（図示例では、０）が復帰する。その次のサイクルでは、復帰した値（図示例では、０）に対して＋ｎ回路４２で第１の変化値ｍを加算した値（図示例では、０＋ｍ）がカウント値として出力される。ウェイト信号がネゲートの状態にある期間では、前のサイクルのカウント値に対して＋ｎ回路４２で第１の変化値ｍを加算した値がカウント値として出力される。
【００３６】
図９は、本発明の実施の形態２におけるカウンタ部の第３の例のブロック図である。図９に示すように、カウンタ部１１は、＋ｍ回路５１、＋ｎ回路５２および選択部５３を備えている。＋ｍ回路５１は、ウェイト信号がネゲートの状態にあるとき、選択部５３から出力されるカウント値に第１の変化値ｍを加算する。＋ｍ回路５１は、ウェイト信号がアサートの状態にあるときには、動作を停止し、停止したときのカウント値を保持する。＋ｎ回路５２は、選択部５３から出力されるカウント値に第２の変化値ｎを加算する。ｎの値は、ＣＰＵなどの外部から任意に設定することができるようになっている。選択部５３は、ウェイト信号がアサートの状態にあるときに＋ｎ回路５２の出力値を選択し（“２”側）、ウェイト信号がネゲートの状態にあるときに＋ｍ回路５１の出力値を選択する（“１”側）。選択部５３は、＋ｎ回路５２の出力値および＋ｍ回路５１の出力値のうち、選択した側の値をカウント値として前記アドレス演算部１２へ出力する。
【００３７】
図１０は、本発明の実施の形態２におけるカウンタ部の第３の例の動作の説明図である。図１０に示すように、ウェイト信号がアサートの状態にあるときには、＋ｍ回路５１がカウント値を保持したまま動作を停止し、前のサイクルのカウント値に対して＋ｎ回路５２で第２の変化値ｎを加算した値がカウント値として出力される。ウェイト信号がアサートの状態からネゲートの状態に遷移すると、＋ｍ回路５１が、保持していた値からカウントを再開する。従って、＋ｍ回路５１が保持していた値に対して＋ｍ回路５１で第１の変化値ｍを加算した値がカウント値として出力される。ウェイト信号がネゲートの状態にある期間では、前のサイクルのカウント値に対して＋ｍ回路５１で第１の変化値ｍを加算した値がカウント値として出力される。
【００３８】
一例として、第１の変化値ｍが１であり、第２の変化値ｎが４である場合の動作について説明する。図１１は、本発明の実施の形態２におけるカウント値とアドレスの関係の一例を示す図表である。図１１に示すように、カウント値０、１、２、３、４、５、６、７、８、９および１０に対して、それぞれリードアドレスが０、１６、３２、４８、６４、８０、９６、１１２、１２８、１４４および１６０であるとする。
【００３９】
図１２は、本発明の実施の形態２における動作の説明図である。特に限定しないが、キャッシュメモリ１９の一ラインのサイズを６４バイトとして説明する。従って、キャッシュヒットの際にキャッシュ判定部１６からキャッシュメモリ１９に与えられるライン番号は、メインメモリ２０のアドレスの６４バイトごとに一つ存在するとする。また、キャッシュ判定は、６４バイト単位で行われるとする。また、キャッシュミスの発生時には、メインメモリ２０から、キャッシュミスと判定されたアドレスのデータを含む６４バイト分のデータが読み出されて、キャッシュメモリ１９に格納されるとする。
【００４０】
図１２に示すように、まず、カウント値が０であるときには、キャッシュメモリ１９には何も格納されていないので、キャッシュミスと判定される。それによって、リードアドレス０〜６３（図１１参照）に対応するデータがメインメモリ２０から読み出されてキャッシュメモリ１９に格納される。リードアドレス０〜６３に対応するデータがキャッシュメモリ１９に格納されるまでの間、第２の変化値４が加算されてカウント値は４となる。従って、リードアドレスは６４となる（図１１参照）。リードアドレス６４に対応するデータがキャッシュメモリ１９に格納されていないので、キャッシュミスと判定される。そして、リードアドレス６４が先読みアドレスバッファ１８に格納される。先読み制御部１４は、リードアドレス６４〜１２７についてリードアクセスを要求する。
【００４１】
次いで、第２の変化値４が加算されてカウント値が８となり、キャッシュミスと判定される。従って、リードアドレス１２８（図１１参照）が先読みアドレスバッファ１８に格納される。先読み制御部１４は、リードアドレス１２８〜１９１についてリードアクセスを要求する。次いで、カウント値が１２となり、キャッシュミスにより同様に、リードアドレス１９２が先読みアドレスバッファ１８に格納される。先読み制御部１４は、リードアドレス１９２〜２５５についてリードアクセスを要求する。この時点で、リードアドレス０〜６３に対応するデータがキャッシュメモリ１９に格納され終わったとする。カウント値が０に復帰し、この値に第１の変化値１が加算されるので、新しいカウント値は１となる。
【００４２】
カウント値１に対応するリードアドレスは１６であり（図１１参照）、対応するデータは既にキャッシュメモリ１９に格納されているので、キャッシュヒットとなる。カウント値が２であるときのリードアドレスは３２であり（図１１参照）、カウント値が３であるときのリードアドレスは４８であるので（図１１参照）、いずれもキャッシュヒットとなる。カウント値が４であるときのリードアドレスは６４である（図１１参照）。この時点で、先読みアドレスバッファ１８に格納されたリードアドレス６４について、対応するデータがメインメモリ２０から読み出されてキャッシュ判定部１６に格納されているので、キャッシュヒットとなる。５以降のカウント値についても、先読みによって、対応するデータがメインメモリ２０から読み出されてキャッシュ判定部１６に格納されているので、キャッシュヒットとなる。
【００４３】
図１３は、比較例の動作の説明図である。比較例は、第２の変化値ｎでのカウントによる先読み動作を行わない。その他の条件を図１２で説明した例と同じとする。比較例では、カウント値が４や８であるときに、メインメモリからデータを読み出してキャッシュメモリへ格納するため、処理が遅くなる。図１２と図１３とを比較すると明らかなように、実施の形態２の方が比較例よりも高速であることがわかる。従って、実施の形態２によれば、データ処理部２１での処理を高速化することができる。
【００４４】
図１４は、本発明の実施の形態２におけるカウント値とアドレスの関係の他の例を示す図表である。図１４に示すように、カウント値０、１、２、３、４、５、６、７、８、９および１０に対して、それぞれリードアドレスが９６０、８９６、８３２、７６８、７０４、６４０、５７６、５１２、４４８、３８４および３２０であるとする。この場合、ｍおよびｎを１に設定すると、データ処理の効率が向上する。一例を、図１５および図１６に示す。
【００４５】
図１５に示す例において、大きい四角は、例えば６４画素×１６画素の画像６１である。図１６に示す例において、大きい四角は、例えば１６画素×６４画素の画像６２であり、図１５に示す６４画素×１６画素の画像６１を時計まわりに９０度回転させたものである。両図とも、０〜１０２３の番号を付した小さい四角は、個々の画素６３である。図１５に示す画像６１のデータにおいて、カウンタ値が０であるとき、リードアドレス９６０〜１０２３（図１４参照）に対応する画素６３のデータがメインメモリ２０から読み出されてキャッシュメモリ１９に格納される。このときにキャッシュメモリ１９に格納されたデータは、図１６に示す画像６２のデータにおいては、縦一列の画素６３のデータとなる。従って、画像を９０度回転させるような処理を行う場合、処理の効率が向上する。
【００４６】
なお、第１の変化値ｍや第２の変化値ｎの値は、上述した各例の値に限らない。リードアドレスの進行に合わせて第１の変化値ｍや第２の変化値ｎの値を適当に設定することによって、処理の効率を向上させることができる。第２の変化値ｎについては、先読みアドレスバッファ１８にアドレスができるだけ重複しないで格納されるように、設定するのがよい。また、限られた時間内でできるだけ多くのアドレスを先読みアドレスバッファ１８に格納するには、ｎの値が大きい方がよい。
【００４７】
実施の形態２においても、実施の形態１と同様に、メモリアクセス判定回路をソフトウェアで実現することができる。以下に、ソフトウェアで実現する場合のメモリアクセス判定処理の手順について説明する。
【００４８】
図１７は、本発明の実施の形態２におけるフローチャートである。図１７に示すように、メモリアクセス判定処理が開始されると、まず、第１の変化値ｍでカウントを開始する（ステップＳ１１）。次いで、計算またはルックアップテーブルの参照により、カウント値に対応するアドレスを求める（ステップＳ１２）。次いで、カウント値に対応するアドレスに対してキャッシュ判定を行う（ステップＳ１３）。キャッシュヒットである場合（ステップＳ１３：Ｎｏ）、カウント値ｍに対応するアドレスのデータがキャッシュメモリ１９から読み出され、データ処理部２１へ送られる。続いて、カウント値を第１の変化値ｍだけ加算した値とし、同様にアドレスを求め、キャッシュ判定を行う（ステップＳ１１〜ステップＳ１３）。
【００４９】
ステップＳ１３でキャッシュミスである場合（ステップＳ１３：Ｙｅｓ）、カウント値を保持する（ステップＳ１４）。また、キャッシュミスと判定されたアドレスのデータをメインメモリ２０から読み出して、キャッシュメモリ１９に格納する処理が開始される。キャッシュメモリ１９へのデータの格納が終了するまでの間、第１の変化値ｍを第２の変化値ｎに切り替え、カウント値を第２の変化値ｎだけ加算した値とする（ステップＳ１５）。次いで、カウント値に対応する先読みアドレスを求める（ステップＳ１６）。この先読みアドレスに対してキャッシュ判定を行う（ステップＳ１７）。先読みアドレスがキャッシュヒットである場合（ステップＳ１７：Ｎｏ）、カウント値を第２の変化値ｎだけ加算した値とし、同様にアドレスを求め、キャッシュ判定を行う（ステップＳ１５〜ステップＳ１７）。
【００５０】
先読みアドレスがキャッシュミスである場合（ステップＳ１７：Ｙｅｓ）、当該先読みアドレスを先読みアドレスバッファ１８に保持する（ステップＳ１８）。次いで、ステップＳ１３でキャッシュミスが発生したことに起因して実行されている、メインメモリ２０からのデータの読み出しが終了したか否かを判定する（ステップＳ１９）。メインメモリ２０からのデータの読み出しが終了していない場合（ステップＳ１９：Ｎｏ）、データの読み出しが終了するまでステップＳ１５〜ステップＳ１９を繰り返す。メインメモリ２０からのデータの読み出しが終了した場合（ステップＳ１９：Ｙｅｓ）、カウント値を、第１の変化値ｍから第２の変化値ｎに切り替わるときに保持されたカウント値に戻す（ステップＳ２０）。そして、メモリアクセス処理の終了であるか否かを判定する（ステップＳ２１）。
【００５１】
終了でなければ（ステップＳ２１：Ｎｏ）、第２の変化値ｎを第１の変化値ｍに切り替え、ステップＳ１１へ戻る。並行して、先読みアドレスバッファ１８に保持された先読みアドレスに対応するデータがメインメモリ２０から読み出され、キャッシュメモリ１９に格納される。ステップＳ２１で終了であれば（ステップＳ２１：Ｙｅｓ）、一連のメモリアクセス判定処理を終了する。実施の形態２によれば、実施の形態１と同様の効果が得られる。
【００５２】
なお、画像データなどは、プロセッサからのアクセス以外に特定の画像処理に最適化したハードウェアからのアクセスもある為、汎用的なデータ構造にしておくことが多い。上述する実施の形態は、画像データなどに適用される汎用的なデータ構造に対して適用することが可能である。
【００５３】
上述した各実施の形態に関し、さらに以下の付記を開示する。
【００５４】
（付記１）第１の変化値に基づいて値をカウントするカウンタと、前記カウンタの出力に対応するアドレスに基づいて、キャッシュメモリにおけるキャッシュ判定をする制御部と、を有し、前記制御部がキャッシュミスであると判定した場合に、前記カウンタは、前記第１の変化値を前記第１の変化値と異なる第２の変化値に切り替えてカウントし、前記制御部は、前記第２の変化値に基づくカウント値に基づいてキャッシュ判定をすることを特徴とするメモリアクセス判定回路。
【００５５】
（付記２）前記制御部は、前記第２の変化値に基づくカウント値に対応するアドレスのキャッシュ判定を、前記キャッシュミスとなったアドレスに基づくメインメモリへのアクセスに対応させて行うことを特徴とする付記１に記載のメモリアクセス判定回路。
【００５６】
（付記３）前記カウンタは、前記制御部がキャッシュミスであると判定した場合に前記第１の変化値に基づくカウント値を保持し、前記キャッシュミスとなったアドレスに基づくメインメモリへのアクセス状況に応じて前記第２の変化値に基づくカウント値を、保持された前記第１の変化値に基づくカウント値に切り替えることを特徴とする付記１または２に記載のメモリアクセス判定回路。
【００５７】
（付記４）前記第２の変化値は、前記第１の変化値よりも大きいことを特徴とする付記１〜３のいずれか一つに記載のメモリアクセス判定回路。
【００５８】
（付記５）前記制御部は、前記第２の変化値に基づくカウント値に対応するアドレスに対してキャッシュミスであると判定した場合に、キャッシュミスとなった当該第２の変化値に基づくカウント値に対応するアドレスを保持することを特徴とする付記２に記載のメモリアクセス判定回路。
【００５９】
（付記６）前記制御部は、前記キャッシュミスとなった前記第１の変化値に基づくカウント値に対応するアドレスに基づくメインメモリへのアクセス状況に応じて、保持された前記第２の変化値に基づくカウント値に対応するアドレスに基づいてメインメモリへアクセスすることを特徴とする付記５に記載のメモリアクセス判定回路。
【００６０】
（付記７）第１の変化値に基づいてカウンタで値をカウントする工程と、前記第１の変化値に基づいてカウントされた前記カウンタの出力に対応するアドレスを求める工程と、前記第１の変化値に基づくカウント値に対応する前記アドレスに基づいてキャッシュメモリにおけるキャッシュ判定をする工程と、キャッシュミスであると判定した場合に、前記第１の変化値を前記第１の変化値と異なる第２の変化値に切り替えて前記カウンタで値をカウントする工程と、前記第２の変化値に基づいてカウントされた前記カウンタの出力に対応するアドレスを求める工程と、を含むことを特徴とするメモリアクセス判定方法。
【００６１】
（付記８）前記第２の変化値に基づくカウント値に対応する前記アドレスに基づいてキャッシュメモリにおけるキャッシュ判定を、前記キャッシュミスとなったアドレスに基づくメインメモリへのアクセスに対応させて行う工程、を含むことを特徴とする付記７に記載のメモリアクセス判定方法。
【００６２】
（付記９）前記第１の変化値を前記第２の変化値に切り替える際に、前記第１の変化値に基づくカウント値を保持する工程と、前記キャッシュミスとなったアドレスに基づくメインメモリへのアクセス状況に応じて前記第２の変化値に基づくカウント値を、保持された前記第１の変化値に基づくカウント値に切り替える工程と、を含むことを特徴とする付記７または８に記載のメモリアクセス判定方法。
【００６３】
（付記１０）前記第２の変化値は、前記第１の変化値よりも大きいことを特徴とする付記７〜９のいずれか一つに記載のメモリアクセス判定方法。
【００６４】
（付記１１）前記第２の変化値に基づくカウント値に対応する前記アドレスに対してキャッシュミスであると判定した場合に、キャッシュミスとなった当該第２の変化値に基づくカウント値に対応するアドレスを保持する工程、を含むことを特徴とする付記８に記載のメモリアクセス判定方法。
【００６５】
（付記１２）前記キャッシュミスとなった前記第１の変化値に基づくカウント値に対応するアドレスに基づくメインメモリへのアクセス状況に応じて、保持された前記第２の変化値に基づくカウント値に対応するアドレスに基づいてメインメモリへアクセスする工程、を含むことを特徴とする付記１１に記載のメモリアクセス判定方法。
【００６６】
（付記１３）メインメモリと、前記メインメモリよりも高速なキャッシュメモリと、第１の変化値に基づいて値をカウントするカウンタと、前記カウンタの出力に対応するアドレスに基づいて、前記キャッシュメモリにおけるキャッシュ判定をする制御部と、を有し、前記制御部がキャッシュミスであると判定した場合に、前記カウンタは、前記第１の変化値を前記第１の変化値と異なる第２の変化値に切り替えてカウントし、前記制御部は、前記第２の変化値に基づくカウント値に基づいてキャッシュ判定をすることを特徴とする電子機器。
【００６７】
（付記１４）前記制御部は、前記第２の変化値に基づくカウント値に対応するアドレスのキャッシュ判定を、前記キャッシュミスとなったアドレスに基づく前記メインメモリへのアクセスに対応させて行うことを特徴とする付記１３に記載の電子機器。
【００６８】
（付記１５）前記カウンタは、前記制御部がキャッシュミスであると判定した場合に前記第１の変化値に基づくカウント値を保持し、前記キャッシュミスとなったアドレスに基づく前記メインメモリへのアクセス状況に応じて前記第２の変化値に基づくカウント値を、保持された前記第１の変化値に基づくカウント値に切り替えることを特徴とする付記１３または１４に記載の電子機器。
【００６９】
（付記１６）前記第２の変化値は、前記第１の変化値よりも大きいことを特徴とする付記１３〜１５のいずれか一つに記載の電子機器。
【００７０】
（付記１７）前記制御部は、前記第２の変化値に基づくカウント値に対応するアドレスに対してキャッシュミスであると判定した場合に、キャッシュミスとなった当該第２の変化値に基づくカウント値に対応するアドレスを保持することを特徴とする付記１４に記載の電子機器。
【００７１】
（付記１８）前記制御部は、前記キャッシュミスとなった前記第１の変化値に基づくカウント値に対応するアドレスに基づく前記メインメモリへのアクセス状況に応じて、保持された前記第２の変化値に基づくカウント値に対応するアドレスに基づいて前記メインメモリへアクセスすることを特徴とする付記１７に記載の電子機器。
【符号の説明】
【００７２】
１，１１  カウンタ
２，１３  制御部
４，１６  キャッシュ判定部
５  プリフェッチアドレスキュー
６，１９  キャッシュメモリ
７，２０  メインメモリ
３５，４３  保持回路
１８  先読みアドレスバッファ
【図１】
2010198342.tif 000003
【図２】
2010198342.tif 000004
【図３】
2010198342.tif 000005
【図４】
2010198342.tif 000006
【図５】
2010198342.tif 000007
【図６】
2010198342.tif 000008
【図７】
2010198342.tif 000009
【図８】
2010198342.tif 000010
【図９】
2010198342.tif 000011
【図１０】
2010198342.tif 000012
【図１１】
2010198342.tif 000013
【図１２】
2010198342.tif 000014
【図１３】
2010198342.tif 000015
【図１４】
2010198342.tif 000016
【図１５】
2010198342.tif 000017
【図１６】
2010198342.tif 000018
【図１７】
2010198342.tif 000019