(57)【特許請求の範囲】
【請求項１】
キャッシュメモリへのプリフェッチ機能をもつ処理装置により、グラフィックスライブラリの関数を処理する画像処理装置であって、前記処理装置からなる関数処理部と、前記関数の処理のあとに使用されるであろうデータまたは命令のアドレスを予測するエリア予測部と、前記エリア予測部により予測されたアドレスに格納されている命令またはデータを前記キャッシュメモリへプリフェッチするプリフェッチ部からなることを特徴とする画像処理装置。
【請求項２】
キャッシュメモリへのプリフェッチ機能をもつ処理装置によりグラフィックスライブラリの関数を処理する画像処理方法であって、前記処理装置により前記グラフィックスライブラリの関数を処理する第一のステップと、前記関数の処理のあとに使用されるであろうデータまたは命令のアドレスを予測する第２のステップと、前記エリア予測部により予測されたアドレスに格納されている命令またはデータを前記キャッシュメモリへプリフェッチする第３のステップからなることを特徴とする画像処理方法。
【請求項３】
コンピュータに、キャッシュメモリへのプリフェッチ機能をもつ処理装置によりグラフィックスライブラリの関数を処理する画像処理プログラムであって、前記処理装置により前記グラフィックスライブラリの関数を処理する第一のステップと、前記関数の処理のあとに使用されるであろうデータまたは命令のアドレスを予測する第２のステップと、前記エリア予測部により予測されたアドレスに格納されている命令またはデータを前記キャッシュメモリへプリフェッチする第３のステップの各ステップを実行させるプログラム。
【請求項４】
キャッシュメモリへのプリフェッチ機能をもつ処理装置により、複数のグラフィックスライブラリの関数により第一の頂点と第二の頂点から構成される折れ線を描画する画像処理装置であって、前記処理装置からなる関数処理部において第一の頂点の座標の座標を前記関数へ渡し描画する関数処理装置と、前記関数の処理のあとに前記第二の頂点のアドレスを予測するエリア予測部と、前記エリア予測部により予測された前記アドレスに格納されている命令またはデータを前記キャッシュメモリへプリフェッチするプリフェッチ部からなることを特徴とする画像処理装置。
【請求項５】
キャッシュメモリへのプリフェッチ機能をもつ処理装置により、複数のグラフィックスライブラリの関数により第一の頂点と第二の頂点から構成される折れ線を描画する画像処理方法であって、前記処理装置からなる関数処理部において第一の頂点の座標の座標を前記関数へ渡し描画する第一のステップと、前記関数の処理のあとに前記第二の頂点のアドレスを予測する第二のステップと、前記エリア予測部により予測された前記アドレスに格納されている命令またはデータを前記キャッシュメモリへプリフェッチする第三のステップからなることを特徴とする画像処理装置。
【請求項６】
コンピュータに、キャッシュメモリへのプリフェッチ機能をもつ処理装置により、複数のグラフィックスライブラリの関数により第一の頂点と第二の頂点から構成される折れ線を描画する画像処理プログラムであって、前記処理装置からなる関数処理部において第一の頂点の座標の座標を前記関数へ渡し描画する第一のステップと、前記関数の処理のあとに前記第二の頂点のアドレスを予測する第二のステップと、前記エリア予測部により予測された前記アドレスに格納されている命令またはデータを前記キャッシュメモリへプリフェッチする第三のステップの各ステップを実行させるプログラム。
【請求項７】
前記関数の種類により前記エリア予測部での予測方法を変更することを特徴とする請求項１記載の画像処理装置。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は画像処理装置、画像処理方法に関し、特にＯＰＥＮ  ＧＬに準拠したライブラリ関数を高速に実行する装置および方法に関する。
【０００２】
【従来の技術】
ＣＰＵの性能は年々向上し、実行性能における、さらなる高性能な処理への要求が高まっていく中で、キャッシュをいかにうまく利用して、システムの性能を向上させるかも問題となってきている。その中で、少しでも効率よくデータや命令を先読みし、キャッシュのヒット率を向上させ、システムの実行性能の向上を図っている。
【０００３】
特に、最近のＣＰＵ（中央処理装置）では、プリフェッチ（ＰｒｅＦｅｔｃｈ）命令という、メモリからキャッシュへのデータの先読み命令を持つものがある。メモリ上の連続領域に配置された一連のデータを処理する場合、あるいは、次に処理されるべきデータがメモリ上のどこに置かれているかが明白な場合には、プリフェッチ命令を使用して、次の処理されるべきデータの先読みを行い、効率よくデータ処理を行っていた。
【０００４】
特開平１１−２１２８０２号公報「コンパイル装置」には、データキャッシュを「有効に活用したプログラムを生成して実行時性能を向上するようにしたコンパイル装置であって、コンパイル段階でプログラムの構造の特徴を解析してロード命令に先立ってデータキャッシュに必要なメモリの内容をコピーする技術が開示されている。
【０００５】
【発明が解決しようとする課題】
上述の従来のキャッシュの使用方法では、不特定多数のユーザから利用される、一連の関数群からなるライブラリを実現する場合には、ライブラリとして提供する関数においては、その呼び出された時に受け渡されたデータ（パラメータ）以外の情報はないので、プリフェッチ命令を効果的に利用できないという問題があった。
【０００６】
特開平１１−２１２８０２号公報「コンパイル装置」は、不特定多数のユーザから利用される、一連の関数群からなるライブラリには適用することが難しかった。
【０００７】
しかし、一定の規則にしたがって、繰り返し呼び出されることが予測できるケースもある。本発明の目的は、プリフェッチ命令を持った装置上での、不特定ユーザから利用されるライブラリ（関数群）の実現において、その関数の特性と、それまでに呼び出された関数でのパラメータのメモリ上のアドレスから、次に呼び出される関数で受け渡されるデータのメモリ上のアドレスを予測して、事前にそのアドレスのデータのプリフェッチを実施することによって、効率的にデータを処理し画像処理の性能向上を図ることである。
【０００８】
【課題を解決するための手段】
本発明第一の画像処理装置は、キャッシュメモリへのプリフェッチ機能をもつ処理装置により、グラフィックスライブラリの関数を処理する画像処理装置であって、前記処理装置からなる関数処理部と、前記関数の処理のあとに使用されるであろうデータまたは命令のアドレスを予測するエリア予測部と、前記エリア予測部により予測されたアドレスに格納されている命令またはデータを前記キャッシュメモリへプリフェッチするプリフェッチ部からなる。
【０００９】
本発明第一の画像処理方法は、キャッシュメモリへのプリフェッチ機能をもつ処理装置によりグラフィックスライブラリの関数を処理する画像処理方法であって、前記処理装置により前記グラフィックスライブラリの関数を処理する第一のステップと、前記関数の処理のあとに使用されるであろうデータまたは命令のアドレスを予測する第２のステップと、前記エリア予測部により予測されたアドレスに格納されている命令またはデータを前記キャッシュメモリへプリフェッチする第３のステップからなる。
【００１０】
本発明第一のプログラムは、コンピュータに、キャッシュメモリへのプリフェッチ機能をもつ処理装置によりグラフィックスライブラリの関数を処理する画像処理プログラムであって、前記処理装置により前記グラフィックスライブラリの関数を処理する第一のステップと、前記関数の処理のあとに使用されるであろうデータまたは命令のアドレスを予測する第２のステップと、前記エリア予測部により予測されたアドレスに格納されている命令またはデータを前記キャッシュメモリへプリフェッチする第３のステップ各ステップを実行させる。
【００１１】
本発明第二の画像処理装置は、キャッシュメモリへのプリフェッチ機能をもつ処理装置により、複数のグラフィックスライブラリの関数により第一の頂点と第二の頂点から構成される折れ線を描画する画像処理装置であって、前記処理装置からなる関数処理部において第一の頂点の座標の座標を前記関数へ渡し描画する関数処理装置と、前記関数の処理のあとに前記第二の頂点のアドレスを予測するエリア予測部と、前記エリア予測部により予測された前記アドレスに格納されている命令またはデータを前記キャッシュメモリへプリフェッチするプリフェッチ部からなる。
【００１２】
本発明第二の画像処理方法は、キャッシュメモリへのプリフェッチ機能をもつ処理装置により、複数のグラフィックスライブラリの関数により第一の頂点と第二の頂点から構成される折れ線を描画する画像処理方法であって、前記処理装置からなる関数処理部において第一の頂点の座標の座標を前記関数へ渡し描画する第一のステップと、前記関数の処理のあとに前記第二の頂点のアドレスを予測する第二のステップと、前記エリア予測部により予測された前記アドレスに格納されている命令またはデータを前記キャッシュメモリへプリフェッチする第三のステップからなることを特徴とする画像処理装置。
【００１３】
本発明第二のプログラムは、コンピュータに、キャッシュメモリへのプリフェッチ機能をもつ処理プログラムにより、複数のグラフィックスライブラリの関数により第一の頂点と第二の頂点から構成される折れ線を描画する画像処理方法であって、前記処理装置からなる関数処理部において第一の頂点の座標の座標を前記関数へ渡し描画する第一のステップと、前記関数の処理のあとに前記第二の頂点のアドレスを予測する第二のステップと、前記エリア予測部により予測された前記アドレスに格納されている命令またはデータを前記キャッシュメモリへプリフェッチする第三のステップ各ステップを実行させる。
【００１４】
本発明第三の画像処理装置は、本発明第一の画像処理装置であって、前記関数の種類により前記エリア予測部での予測方法を変更する。
【００１５】
【発明の実施の形態】
次に、本発明の実施の形態について図面を参照して詳細に説明する。以下図面を参照しつつ実施例に従って説明する。図１は本発明実施の形態の画像処理装置の構成を示すブロック図である。画像処理装置１は、関数処理部１１とエリア予測部１２とプリフェッチ部１３から構成される。ライブラリの中に実装される関数は、関数処理部１１により実行される。関数処理部はキャッシュ１１１を有する。エリア予測部１２は、関数の処理の後に使用されるであろうデータ（または命令）エリアを予測する。プリフェッチ部１３は、エリア予測部１２での予測結果に基づいて、そのデータ（または命令）のプリフェッチを行ってキャッシュ１１１上に先読みする。
【００１６】
図２は、本発明実施の形態の画像処理方法の動作を示すフローチャートである。まず、関数Ａの本来の処理を関数が呼ばれた際に渡されたデータに従って実行する（ステップＡ−１）。次に、関数Ａが呼ばれた際に渡されたデータとは直接関係のない、その後の処理で使われる事が予想されるデータ（または命令）を予測する（ステップＡ−２）。最後に、関数Ａの呼び出しの中では使われないデータ（または命令）をキャッシュ１１１上に先読みする（ステップＡ−３）。これにより、キャッシュのミスヒットを削減し、効率的な処理を行う。
【００１７】
次に、本発明の実施の形態の動作について図面を参照して説明する。
図３は、アプリケーションプログラムにおいて、折れ線を描画するための各頂点の座標データのメモリ上での配置を示す図である。図４は、３次元グラフィックスのライブラリ、ＯｐｅｎＧＬの仕様での、個々の頂点の処理を行う関数を示す図である。たとえば、３次元グラフィックス機能を提供するライブラリを例にとって考える。アプリケーションプログラムにおいて、一般に、折れ線を描画するための各頂点の座標データは、図３のようにメモリ上の連続領域に配置されることが多い。また、３次元グラフィックスのライブラリとして、最も広く使われているＯｐｅｎＧＬの仕様では、図４のように、個々の頂点の処理を行う関数を持っている。
【００１８】
この場合、第一の頂点の処理を行う関数呼び出し（ｂ１）においては、第一の頂点の処理のみを行えばよい（第一の頂点の情報以外の情報は渡されない）が、次には、第二の頂点が処理されることが予想され、第二の頂点のデータの格納アドレスを予測し、そのアドレスのデータをプリフェッチしておくことによって、次の第二の頂点を処理する関数の呼び出し（ｂ２）においては、そこで処理すべきデータがすでにキャッシュ上に存在する状況になっており、効率的に処理することができる。第二の頂点のデータの格納アドレスの最も単純な予測の方法としては、図３のように連続的に配置されていると考え、次のキャッシュラインをプリフェッチすることである。
【００１９】
図６は、アプリケーションプログラムにおいて、各頂点について、座標データの他に、その頂点の描画すべき色とか、その頂点にかかる圧力の情報などを持つ場合の座標データのメモリ上での配置を示す図である。図６のようなケースでは、各頂点について、座標データの他に、その頂点の描画すべき色とか、その頂点にかかる圧力の情報などをメモリ上に連続して持つこともよくあるケースである。このような場合には、先に関数が呼ばれたときに渡されたデータのアドレスを保持しておき、今回関数が呼ばれた際のデータのアドレスとの差分（ｍワード）を求め、次のデータの格納アドレスは、今回のデータのアドレスから、その差分であるｍワード先と予測する。
【００２０】
第一の頂点を処理する関数の呼び出し（ｂ１）の中で、そこでは、参照されることのない、次のデータの格納アドレスを予測し、そのデータをプリフェッチしておくことによって、第二の頂点を処理する関数の呼び出し（ｂ２）の処理を高速に実施することができる。最後の頂点である第ｎ番目の処理（ｂｎ）においては、意味のないデータをプリフェッチすることになるが、全体の処理効率は向上する。
【００２１】
図７は、図５に示した折れ線を描画するためのすべての頂点データを一括して受け渡し、一括処理するような関数でのプリフェッチ方法を示すフローチャートである。図５に示したような折れ線を描画するためのすべての頂点データを一括して受け渡し、一括処理するような関数がある。この場合には、関数の中で、処理効率を考慮して、図７のようにプリフェッチを実行する。
【００２２】
図８は、本発明第二の実施の形態のデータ、命令エリアの予測方法を示すフロ−チャートである。図３、６図に示したように、データは連続的に格納されていたり、ある一定間隔で格納されていたり、様々なケースが考えられる。しかし、格納方法は、アプリケーションプログラムごとに、一定のルールで格納される。そこで、前記「後に使用されるであろうデータ（または命令）エリアの予測手段１」に、アプリケーションプログラムが何であるかを判別する手段を持たせ、アプリケーションプログラムごとに、予測の方法を変更する。
【００２３】
先の実施例においては、データのプリフェッチの例を示した。現在、広く使用されているＰｅｎｔｉｕｍＩＩＩというＣＰＵでは、データのプリフェッチの命令しか用意されていない。しかし、命令キャッシュへの命令のプリフェッチ命令を持った装置では、たとえば、第４の例では、Ｂｅｇｉｎ（）という関数の次には、Ｖｅｒｔｅｘ（）という関数が呼ばれることが多いと予想され、Ｂｅｇｉｎ（）という関数において、次に呼ばれるであろう関数を予測して、その関数のアドレスを求め、その関数の命令を命令キャッシュにプリフェッチする。
【００２４】
上述の各ステップはコンピュータのプログラムにより実現することが可能である。図９は、本発明実施の形態の画像処理プログラムを実行するコンピュータ６０とそのプログラムが記録された記録媒体を示す図である。
【００２５】
【発明の効果】
本発明によれば、先に呼ばれた同一もしくは別の関数の実行の際に、次に処理されるであろうデータを予測し、そのデータのアドレスを予測して、プリフェッチしておくことによって、関数が呼ばれた際には、すでに、そこで処理されるべきデータはキャッシュ上にプリフェッチされているために、効率的に処理できるというメリットがある。
【図面の簡単な説明】
【図１】本発明実施の形態の画像処理装置の構成を示すブロック図である。
【図２】本発明実施の形態の画像処理方法の動作を示すフローチャートである。
【図３】アプリケーションプログラムにおいて、折れ線を描画するための各頂点の座標データのメモリ上での配置を示す図である。
【図４】３次元グラフィックスのライブラリ、ＯｐｅｎＧＬの仕様での、個々の頂点の処理を行う関数を示す図である。
【図５】３次元グラフィックスのライブラリ、ＯｐｅｎＧＬの仕様での、折れ線を描画するためのすべての頂点データを一括して受け渡し、一括処理する関数を示す図である。
【図６】アプリケーションプログラムにおいて、各頂点について、座標データの他に、その頂点の描画すべき色とか、その頂点にかかる圧力の情報などを持つ場合の座標データのメモリ上での配置を示す図である。
【図７】図５に示した折れ線を描画するためのすべての頂点データを一括して受け渡し、一括処理するような関数でのプリフェッチ方法を示すフローチャートである。
【図８】本発明第二の実施の形態のデータ、命令エリアの予測方法を示すフロ−チャートである。
【図９】本発明実施の形態の画像処理プログラムを実行するコンピュータ６０とそのプログラムが記録された記録媒体を示す図である。
【符号の説明】
１    画像処理装置
１１    関数処理部
１２    エリア予測部
１３    プリフェッチ部
１１１    キャッシュ
【図１】
0003576992.tif 000002
【図２】
0003576992.tif 000003
【図３】
0003576992.tif 000004
【図４】
0003576992.tif 000005
【図５】
0003576992.tif 000006
【図６】
0003576992.tif 000007
【図７】
0003576992.tif 000008
【図８】
0003576992.tif 000009
【図９】
0003576992.tif 000010