(57)【要約】処理を実行するための実行スレッドとデータのキャッシュメモリへの先読みを実行するためのデータ先読みスレッドとを並行して実行し、かつ、実行スレッドを実行する処理系とデータ先読みスレッドを実行する処理系とが共通のキャッシュメモリにアクセスするシステムにおいて、データ先読みスレッドでのデータ先読み処理の間隔を設定する。入力値を用いて実行スレッドの所要時間を予測して、その予測した所要時間に基づいてデータ先読み処理の間隔を設定するか、または、実行スレッドの処理進行状況とデータ先読みスレッドの処理進行状況を比較し、その比較した結果に基づいてデータ先読み処理の間隔を設定する。このようにデータ先読み処理の間隔を設定することにより、実行スレッドとデータ先読みスレッドとの間のメモリアクセス競合を低減し、かつ、実行スレッドとデータ先読みスレッドとの間の所要時間のバランスをリアルタイムに維持することができる。
2008108129.tif 000002
【特許請求の範囲】
【請求項１】
データ先読みを実行するデータ先読みスレッド及び前記データ先読みと並行して実行処理を行う並列実行スレッドからなるタスクをマルチプロセッサがキャッシュメモリにアクセスして処理する際に、前記データ先読み処理の前記キャッシュメモリへのアクセスを制御するメモリアクセス制御システムであって、
前記並列実行スレッドでの並列処理の入力値により変動するデータフローに適応した前記データ先読みスレッドでのデータ先読み処理の間隔を制御するデータ先読み制御手段を有することを特徴とするメモリアクセス制御システム。
【請求項２】
前記並列実行スレッドでの並列処理の入力値に基づいて前記並列処理の所要時間を予測する所要時間予測手段を有し、
前記データ先読み制御手段は、前記所要時間予測手段が予測した所要時間に基づいて前記データ先読み処理の間隔を制御する制御パラメータを決定する請求項１に記載のメモリアクセス制御システム。
【請求項３】
前記データ先読み制御手段は、前記データ先読みスレッドの処理を実行するプロセッサ以外の他のプロセッサによる処理状況を監視する他プロセッサ監視手段を含み、
前記データ先読み制御手段は、前記他プロセッサ監視手段が監視するプロセッサによる処理状況と前記データ先読みスレッドの処理を実行するプロセッサによる処理状況とを比較して前記データ先読み処理の間隔を制御する請求項１に記載のメモリアクセス制御システム。
【請求項４】
前記並列実行スレッドでの並列処理の入力値に基づいて前記並列処理の所要時間を予測する所要時間予測手段を有し、
前記データ先読み制御手段は、前記データ先読みスレッドの処理を実行するプロセッサ以外の他のプロセッサによる処理状況を監視する他プロセッサ監視手段を含み、
前記データ先読み制御手段は、前記他プロセッサ監視手段が監視するプロセッサによる前記並列実行スレッドでの処理状況と、前記データ先読みスレッドの処理を実行するプロセッサによる処理状況と、前記所要時間予測手段が予測した所要時間とに基づいて前記データ先読み処理の間隔を制御する請求項１に記載のメモリアクセス制御システム。
【請求項５】
前記データ先読み制御手段は、前記所要時間の予測値からメモリアクセス競合が最小限であって、前記データ先読み処理の終了時間が前記並列実行処理の終了時間を超えない最大のデータ先読み間隔をもつ前記データ先読み処理の制御パラメータを決定する請求項２に記載のメモリアクセス制御システム。
【請求項６】
前記データ先読み制御手段は、初期値としてデータ先読み処理の制御パラメータを有し、前記他プロセッサ監視手段が監視するプロセッサによる処理状況に応じて前記制御パラメータの再設定を行う請求項３に記載のメモリアクセス制御システム。
【請求項７】
前記データ先読み制御手段は、前記所要時間予測手段が予測した所要時間の予測値に基づいて前記データ先読みスレッドの処理を実行する制御パラメータを決定し、前記制御パラメータを、前記他プロセッサ監視手段が監視するプロセッサによる前記並列実行スレッドでの処理状況に応じて再設定する請求項４に記載のメモリアクセス制御システム。
【請求項８】
復号画像情報をメモリに格納するためのフレームメモリの該当アドレスのデータを先読みするデータ先読みスレッドと、前記該当アドレスの先読みと並行して、逆直交変換で生成される差分画像と動き補償処理で生成される予測画像とを加算した復号画像情報をメモリに格納する並列実行スレッドとからなるタスクをマルチプロセッサがキャッシュメモリにアクセスして処理する際に、前記データ先読み処理の前記キャッシュメモリへのアクセスを制御するメモリアクセス制御システムであって、
前記並列実行スレッドでの並列処理の入力値により変動するデータフローに適応した前記データ先読みスレッドでのデータ先読み処理の間隔を制御するデータ先読み制御手段を有することを特徴とするメモリアクセス制御システム。
【請求項９】
データ先読みを実行するデータ先読みスレッド及び前記データ先読みと並行して実行処理を行う並列実行スレッドからなるタスクをマルチプロセッサがキャッシュメモリにアクセスして処理する際に、前記データ先読み処理の前記キャッシュメモリへのアクセスを制御するメモリアクセス制御システムを構成するコンピュータに、
前記並列実行スレッドでの並列処理の入力値により変動するデータフローに適応した前記データ先読みスレッドでのデータ先読み処理の間隔を制御する機能を実行させることを特徴とするメモリアクセス制御プログラム。
【請求項１０】
前記コンピュータに、
前記並列実行スレッドでの並列処理の入力値に基づいて前記並列処理の所要時間を予測する機能と、
前記予測された所要時間に基づいて前記データ先読み処理の間隔を制御する制御パラメータを決定する機能とを実行させる請求項８記載のメモリアクセス制御プログラム。
【請求項１１】
前記コンピュータに、
前記データ先読みスレッドの処理を実行するプロセッサ以外の他のプロセッサによる処理状況を監視する機能と、
前記監視するプロセッサによる処理状況と前記データ先読みスレッドの処理を実行するプロセッサによる処理状況とを比較して前記データ先読み処理の間隔を制御する機能とを実行させる請求項９に記載のメモリアクセス制御プログラム。
【請求項１２】
前記コンピュータに、
前記並列実行スレッドでの並列処理の入力値に基づいて前記並列処理の所要時間を予測する機能と、
前記データ先読みスレッドの処理を実行するプロセッサ以外の他のプロセッサによる処理状況を監視する機能と、
前記監視するプロセッサによる前記並列実行スレッドでの処理状況と、前記データ先読みスレッドの処理を実行するプロセッサによる処理状況と、前記予測された所要時間とに基づいて前記データ先読み処理の間隔を制御する機能とを実行させる請求項９に記載のメモリアクセス制御プログラム。
【請求項１３】
前記コンピュータに、
前記所要時間の予測値からメモリアクセス競合が最小限であって、前記データ先読み処理の終了時間が前記並列実行処理の終了時間を超えない最大のデータ先読み間隔をもつ前記データ先読み処理の制御パラメータを決定する機能を実行させる請求項９に記載のメモリアクセス制御プログラム。
【請求項１４】
前記コンピュータに、
初期値として記憶したデータ先読み処理の制御パラメータを、前記監視するプロセッサによる処理状況に応じて再設定する機能を実行させる請求項１１に記載のメモリアクセス制御プログラム。
【請求項１５】
前記コンピュータに、
前記予測された所要時間の予測値に基づいて前記データ先読みスレッドの処理を実行する制御パラメータを決定し、前記制御パラメータを、前記監視するプロセッサによる前記並列実行スレッドでの処理状況に応じて再設定する機能を実行させる請求項１２に記載のメモリアクセス制御プログラム。
【請求項１６】
復号画像情報をメモリに格納するためのフレームメモリの該当アドレスのデータを先読みするデータ先読みスレッドと、前記該当アドレスの先読みと並行して、逆直交変換で生成される差分画像と動き補償処理で生成される予測画像とを加算した復号画像情報をメモリに格納する並列実行スレッドとからなるタスクをマルチプロセッサがキャッシュメモリにアクセスして処理する際に、前記データ先読み処理の前記キャッシュメモリへのアクセスを制御するメモリアクセス制御システムを構成するコンピュータに、
前記並列実行スレッドでの並列処理の入力値により変動するデータフローに適応した前記データ先読みスレッドでのデータ先読み処理の間隔を制御する機能を実行させることを特徴とするメモリアクセス制御プログラム。
【請求項１７】
データ先読みを実行するデータ先読みスレッド及び前記データ先読みと並列して実行処理を行う並列実行スレッドからなるタスクをマルチプロセッサで処理する際に、データ先読み処理においてキャッシュメモリへのアクセスを制御するメモリアクセス制御方法であって、
前記並列実行スレッドでの並列処理の入力値により変動するデータフローに適応した前記データ先読みスレッドでのデータ先読み処理の間隔を制御することを特徴とするメモリアクセス制御方法。
【請求項１８】
前記並列実行スレッドでの並列処理の入力値に基づいて前記並列処理の所要時間を予測し、
前記予測された所要時間に基づいて前記データ先読み処理の間隔を制御する制御パラメータを決定する請求項１７に記載のメモリアクセス制御方法。
【請求項１９】
前記データ先読みスレッドの処理を実行するプロセッサ以外の他のプロセッサによる処理状況を監視し、
前記監視するプロセッサによる処理状況と前記データ先読みスレッドの処理を実行するプロセッサによる処理状況とを比較して前記データ先読み処理の間隔を制御する請求項１７に記載のメモリアクセス制御方法。
【請求項２０】
前記並列実行スレッドでの並列処理の入力値に基づいて前記並列処理の所要時間を予測し、
前記データ先読みスレッドの処理を実行するプロセッサ以外の他のプロセッサによる処理状況を監視し、
前記監視するプロセッサによる前記並列実行スレッドでの処理状況と、前記データ先読みスレッドの処理を実行するプロセッサによる処理状況と、前記所要時間予測手段が予測した所要時間とに基づいて前記データ先読み処理の間隔を制御する請求項１７に記載のメモリアクセス制御方法。
【請求項２１】
前記所要時間の予測値からメモリアクセス競合が最小限であって、前記データ先読み処理の終了時間が前記並列実行処理の終了時間を超えない最大のデータ先読み間隔をもつ前記データ先読み処理の制御パラメータを決定する請求項１８に記載のメモリアクセス制御方法。
【請求項２２】
初期値として設定したデータ先読み処理の制御パラメータを、前記監視するプロセッサによる処理状況に応じて再設定する請求項１９に記載のメモリアクセス制御方法。
【請求項２３】
前記予測された所要時間の予測値に基づいて前記データ先読みスレッドの処理を実行する制御パラメータを決定し、前記制御パラメータを、前記監視するプロセッサによる前記並列実行スレッドでの処理状況に応じて再設定する請求項１９に記載のメモリアクセス制御方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、メモリアクセス制御システム、メモリアクセス制御方法およびそのプログラムに係り、特に、マルチコアプロセッサにおいて、データ先読み処理のようなメモリアクセスが大半を占める処理の制御を行うためのメモリアクセス制御システム、メモリアクセス制御方法およびそのプログラムに関する。
【背景技術】
【０００２】
マルチコアプロセッサを対象としたデータの先読みは、演算の高速化のために処理に必要なデータを先読みしてキャッシュメモリに格納しておく方式のもので、既に多用されている（特許文献１、特許文献２）。
例えば、特許文献１に記載されたデータ先読みシステムは、動画像の圧縮に利用されるフレーム間予測方式を用いて符号化されたビットストリームを復号する際の処理である動き補償（図１５参照)におけるデータを先読みする内容として知られている。【０００３】
図１５は、フレーム間予測方式を用いて圧縮されたビットストリームの復号方法を示すブロック図である。図１５において、外部から供給されるビットストリームは、まず、可変長符号復号部１００１に入力される。可変長符号復号部１００１は、入力されたビットストリームに対して、ビットストリームに記録された情報に基づいて、所定の可変長復号処理を行い、得られる符号化モード、量子化パラメータ、および量子化された直交変換係数等の情報を、逆量子化部１００２に供給する。【０００４】
また、可変長符号復号部１００１は、参照ピクチャや動きベクトルの情報を動き補償部１００４に供給する。前記逆量子化部１００２は、供給される量子化された直交変換係数に対して所定の逆量子化処理を行い、得られた直交変換係数の情報を逆直交変換部１００３に供給する。逆直交変換部１００３は、直交変換係数に対して所定の逆直交変換処理を行い、得られた差分画像情報を加算部１００６に供給する。【０００５】
一方、前述した動き補償部１００４は、供給される参照ピクチャ及び動きベクトル情報に基づき、フレームメモリ１００５に格納されている参照ピクチャを用いて所定の動き補償処理を行い、得られた予測画像情報を加算部１００６に供給する。加算部１００６は、逆直交変換部１００３より供給される差分画像と前記動き補償部１００４より供給される予測画像とを加算し、得られる復号画像情報をフレームメモリ１００５に供給する。フレームメモリ１００５は加算部１００６より供給される復号画像を所定の枚数記憶し、動き補償部１００４に供給すると共に、所定のタイミングで復号画像を外部に出力する。【０００６】
一般に、復号画像を記憶するフレームメモリのサイズは膨大であり、組込みシステムなどのリソースの制限が厳しいシステムでは、フレームメモリがキャッシュメモリに納まることは少ない。
このため、復号画像をフレームメモリに書き込む際、または参照ピクチャを参照する際にキャッシュミスが頻繁に発生し、復号処理の高速化を妨げていた。この種の問題を解決するため、特許文献１ではフレームメモリにアクセスする前に該当データを先読みし、キャッシュメモリに格納しておき、これにより、復号処理の高速化を図っていた。【０００７】
また、特許文献２に記載されたデータ先読みシステムは、データ先読みを行う専用のスレッドと、ソースコードを解析し最適な位置にデータ先読みスレッドの起動処理を挿入する装置と、プログラムの実行優先順位およびキャッシュ使用率を計測する手段とを備えた点を特徴としている。そして、プログラムのコンパイル時に静的にデータの流れを解析し適当な場所にデータ先読みスレッドの生成処理を挿入し、実行中にプログラムの実行優先順位及びキャッシュ使用率を計測することで、データ先読みを行うかどうか判断し、最適な演算処理を行うとしている。【０００８】
前述した特許文献１のデータ先読み手法は、該当データが必要になる毎に比較的小さな容量のデータ先読みを行っていた。
一方、特許文献２のデータ先読み手法では、データ先読みを行う専用のスレッドで、メインスレッドとは独立にデータ先読みを行うことを特徴としていた。これらの違いは、マルチコアプロセッサシステムでは特に重要な意味を持つ。
それは、マルチコアプロセッサシステム（図１４の符号１００）は複数のスレッドを同時に並列に実行することができ、データ先読みスレッドによるデータ先読みがメインスレッドの実行フローを乱すことなく実行できるため、データ先読みスレッドを用いる手法は、より有効なデータ先読みが可能であるからである。更に、データ先読みを行いたい時にアイドルプロセッサが存在する場合には、特に有効である。なぜならば、本来処理に必要ないデータ先読み処理を、メインスレッドとは独立に余ったプロセッサで実行できるためである。【０００９】
上述した記述から明らかなように、圧縮された動画像を復号する場合、機能別に処理を分割し並列処理する際にアイドルプロセッサが発生する。前述した図１５にあって、可変長符号復号部１００１による可変長符号復号処理は逐次処理をする必要がある。また、逆量子化部１００２、逆直交変換部１００３および動き補償部１００４による各処理は、それぞれマクロブロック単位では互いに依存せず、機能内で処理を分割し並列に実行することができる。【００１０】
このため、可変長符号復号部１００１による復号処理が１フレーム分終わった後に、当該フレームに対する逆量子化部１００２，逆直交変換部１００３，および動き補償部１００４の各処理を画面分割して並列実行を行う場合、可変長符号復号部１００１が復号処理を行っている時は当該プロセッサ以外はアイドル状態になっている。この時に復号画像を記録するためのフレームメモリ領域を先読みしキャッシュメモリに確保したい場合、データ先読みスレッドはアイドルプロセッサで実行することができる。【００１１】
図１４に、上記既存の例におけるマルチコアプロセッサシステム１００のハードウェア構成を示す。図１４において、マルチコアプロセッサシステム１００は、ｎ個のプロセッサ１１１，１１２，１１３，……と、この各プロセッサ１１１，１１２，１１３，……に共通のメモリコントローラ１２０と、このメモリコントローラ１２０によって記憶処理動作がコントロールされるキャッシュメモリ１３０と、このキャッシュメモリ１３０が必要とするメインメモリ１４０とを備えている。【００１２】
符号１５１，１５２，１５３，……はそれぞれメモリコントローラ１２０と各プロセッサ１１１，１１２，１１３，……を個別に接続するバスを示す。又、符号１６０，１７０は、メモリコントローラ１２０とキャッシュメモリ１３０とを、又このキャッシュメモリ１３０とメインメモリ１４０とを、それぞれ結ぶ接続バスを示す。又メインメモリ１４０も図示しないバスによりメモリコントローラ１２０と接続されている。【００１３】
メインメモリ１４０は、メモリアクセスは低速であるが大容量の記憶装置である。キャッシュメモリ１３０は、メインメモリ１４０の一部の命令およびデータを一時的に記憶する、小容量であるが高速アクセス可能な記憶装置である。メモリコントローラ１２０は、各プロセッサとキャッシュメモリ１３０の間のメモリアクセス制御、およびキャッシュメモリ１３０とメインメモリ１４０の間のメモリアクセスの制御を行う。プロセッサ１１１，１１２，および１１３は、キャッシュメモリ１３０又はメインメモリ１４０に記憶された命令を実行する演算装置である。【００１４】
そして、プログラムが複数のスレッドを用いて実行できるように記述されている場合、同じプログラムに属するスレッドでも異なるプロセッサで並列に実行することができる。また、各スレッドはキャッシュメモリ１３０又はメインメモリ１４０を介し、データを共有することができる。
【特許文献１】特開２００６−４１８９８号公報
【特許文献２】特開２００５−７８２６４号公報
【発明の開示】
【発明が解決しようとする課題】
【００１５】
しかしながら、上述した関連する技術には、従来より種々の問題点がある。
第１の問題点は、マルチコアプロセッサにおいてデータ先読みのようなメモリアクセスが処理の大半を占めるメモリアクセスネックの処理を行う場合、データ先読み等のメモリアクセスが並列に動作していると他のプロセッサの演算処理を妨げて、処理能力を低下させるという不都合が知られている。【００１６】
ここで、上記メモリアクセスが並列動作により競合した場合に各プロセッサに生じる処理能力の低下について図１４および図１７を参照して説明する。
特許文献２に記載された方法では、例えば図１４におけるプロセッサ１１２のデータ先読みスレッド２１２上で実行しているデータ先読み処理２３２と、他のプロセッサ１１１における並列実行スレッド２１１上で実行しているデータ先読みとの並列実行処理（以下、単に「並列実行処理」という）２３１は、互いに通信することなく独立に動作していた。マルチコアプロセッサシステム１００では、これらのスレッド２１１，２１２は異なるプロセッサ１１１，１１２の上で動作している。【００１７】
このため、メモリアクセスが同時に発生した場合、図１４のメモリコントローラ１２０とキャッシュメモリ１３０の間のバス１６０又はキャッシュメモリ１３０とメインメモリ１４０の間のバス１７０で、各プロセッサからのメモリアクセスに競合が発生する。特に、データ先読みスレッド２１２のデータ先読み処理部２３２は連続的なメモリアクセスを行うため、他プロセッサとのメモリアクセス競合が発生しやすい。このように、データ先読み処理２４１を行うことで、並列実行処理部２３１のメモリアクセスが妨げられ処理性能が低下するという不都合が生じていた。【００１８】
上述した記述から明らかなように、上記のアクセス競合は、データの先読みを終了まで連続的に行わず、データ先読み毎に間隔を空けるようにすることで低減することができる。そして、このデータ先読み間隔を空ければ空けるほどアクセス競合は低減し、その結果、並列実行処理部２３１による並列処理の所要時間は減少する。しかしながら、その一方で、データ先読み処理部２３２による先読み処理の所要時間は増加していくことになる。【００１９】
図１７に、データ先読み間隔を変えたときの、並列実行処理２３１およびデータ先読み処理部２３２の所要時間を表す概念的なグラフを示す。この図１７にあって、右下がりの直線２００１は並列実行処理の所要時間、右上がりの直線グラフ２００２はデータ先読み処理部２３２の所要時間を表している。先読み処理２３２部の所要時間と並列実行処理部２３１の所要時間がバランスする点２００３を見つけることができれば、最適なデータ先読み間隔を決定することができる。【００２０】
しかしながら、このデータ先読み間隔を最適にする点領域２００３を見つけることは、容易ではない。
その理由を第２の問題点としてあげる。
即ち、この第２の問題点は、メモリアクセスの競合を低減するための最適なデータ先読み処理の制御は、プログラムコンパイル時の静的なデータフローやメモリアクセスタイミング解析だけでは困難であることに起因する。【００２１】
それは、データフローやメモリアクセスタイミングは入力の状況によって大きく変動すること、更に、マルチコアプロセッサシステムではたとえ同じ入力データであっても、メモリアクセスタイミングはいつも同じとは限らないこと、が挙げられる。これは、図１７における並列実行処理のグラフ２００１がいつも同じとはならないこととして理解でき、最適点２００３が毎回異なることを意味する。このため、プログラムコンパイル時の静的な解析でデータ先読み制御をすることは困難であり、ここに、プログラム実行中に動的に制御する必要性が生じる。【００２２】
前述した特許文献１および特許文献２で記載された方法では、データ先読みのタイミングを考慮しておらず、このため、アクセス競合を避けることができなかった。また、前述した特許文献２では、データフローの解析は行っているものの、プログラムコンパイル時の静的なデータフローの解析だけである。この方法では、圧縮動画像の復号処理等の入力条件によりプログラムの動作が大きく変動するシステムでは、データフローの解析は困難である。【００２３】
（発明の目的）
本発明は、マルチコアプロセッサにおいて、データ先読み処理のようなメモリアクセスが大半を占める処理に際し、複数プロセッサによるメモリアクセスがあってもその競合を有効に低減するようにし、これによって各プロセッサの処理能力を有効に維持し得るメモリアクセス制御システム、メモリアクセス制御方法およびそのプログラムを提供することを、その目的とする。
【課題を解決するための手段】
【００２４】
前記目的を達成するため、本発明に係るメモリアクセス制御システムは、データ先読みを実行するデータ先読みスレッド及び前記データ先読みと並行して実行処理を行う並列実行スレッドからなるタスクをマルチプロセッサがキャッシュメモリにアクセスして処理する際に、前記データ先読み処理の前記キャッシュメモリへのアクセスを制御するメモリアクセス制御システムであって、
前記並列実行スレッドでの並列処理の入力値により変動するデータフローに適応した前記データ先読みスレッドでのデータ先読み処理の間隔を制御するデータ先読み制御手段を有することを特徴とするものである。【００２５】
また、本発明を画像復号処理に適用した場合、本発明に係るメモリアクセス制御システムは、復号画像情報をメモリに格納するためのフレームメモリの該当アドレスのデータを先読みするデータ先読みスレッドと、前記該当アドレスの先読みと並行して、逆直交変換で生成される差分画像と動き補償処理で生成される予測画像とを加算した復号画像情報をメモリに格納する並列実行スレッドとからなるタスクをマルチプロセッサがキャッシュメモリにアクセスして処理する際に、前記データ先読み処理の前記キャッシュメモリへのアクセスを制御するメモリアクセス制御システムであって、
前記並列実行スレッドでの並列処理の入力値により変動するデータフローに適応した前記データ先読みスレッドでのデータ先読み処理の間隔を制御するデータ先読み制御手段を有する構成として構築される。【００２６】
また、本発明をハードウェアとして構築した場合について説明したが、本発明は、プログラム或いは方法として構築してもよいものである。【００２７】
そして、本発明に係るメモリアクセス制御プログラムは、データ先読みを実行するデータ先読みスレッド及び前記データ先読みと並行して実行処理を行う並列実行スレッドからなるタスクをマルチプロセッサがキャッシュメモリにアクセスして処理する際に、前記データ先読み処理の前記キャッシュメモリへのアクセスを制御するメモリアクセス制御システムを構成するコンピュータに、
前記並列実行スレッドでの並列処理の入力値により変動するデータフローに適応した前記データ先読みスレッドでのデータ先読み処理の間隔を制御する機能を実行させる構成として構築する。【００２８】
本発明を画像復号処理に適用した場合、本発明に係るメモリアクセス制御プログラムは、復号画像情報をメモリに格納するためのフレームメモリの該当アドレスのデータを先読みするデータ先読みスレッドと、前記該当アドレスの先読みと並行して、逆直交変換で生成される差分画像と動き補償処理で生成される予測画像とを加算した復号画像情報をメモリに格納する並列実行スレッドとからなるタスクをマルチプロセッサがキャッシュメモリにアクセスして処理する際に、前記データ先読み処理の前記キャッシュメモリへのアクセスを制御するメモリアクセス制御システムを構成するコンピュータに、
前記並列実行スレッドでの並列処理の入力値により変動するデータフローに適応した前記データ先読みスレッドでのデータ先読み処理の間隔を制御する機能を実行させる構成として構築する。【００２９】
また、本発明に係るメモリアクセス制御方法は、データ先読みを実行するデータ先読みスレッド及び前記データ先読みと並列して実行処理を行う並列実行スレッドからなるタスクをマルチプロセッサがキャッシュメモリにアクセスして処理する際に、前記データ先読み処理のキャッシュメモリへのアクセスを制御するメモリアクセス制御方法であって、
前記並列実行スレッドでの並列処理の入力値により変動するデータフローに適応した前記データ先読みスレッドでのデータ先読み処理の間隔を制御する構成として構築する。
【発明の効果】
【００３０】
本発明によると、マルチコアプロセッサにあって、データ先読みのようなメモリアクセスが処理の大半を占めるメモリアクセスネックの処理を行う場合であっても、並列にメモリアクセスを実行するプロセッサとの間のメモリアクセス競合による処理能力の低下を、上述したようにデータ先読み制御を実行させて並列処理の各所要時間をリアルタイムでバランスさせるようにしたので、これを有効に抑制することができ、効果的なメモリアクセスができる。
【発明を実施するための最良の形態】
【００３１】
以下、本発明の実施形態を図に基づいて詳細に説明する。【００３２】
本発明の実施形態に係るメモリアクセス制御システムは、図１に示すように、データ先読みを実行するデータ先読みスレッド及び前記データ先読みと並行して実行処理を行う並列実行スレッドからなるタスクをマルチプロセッサ１，２・・・ｎがキャッシュメモリ１３０にアクセスして処理する際に、前記データ先読み処理の前記キャッシュメモリ１３０へのアクセスを制御するメモリアクセス制御システムを対象とするものであり、図２，図８，図１１に示すように、基本的な構成として、前記並列実行スレッドでの並列処理の入力値により変動するデータフローに適応した前記データ先読みスレッドでのデータ先読み処理の間隔を制御するデータ先読み制御手段２２を有することを特徴とするものである。【００３３】
したがって、図１に示すように、データ先読みを実行するデータ先読みスレッド及び前記データ先読みと並行して実行処理を行う並列実行スレッドからなるタスクをマルチプロセッサ１，２・・・ｎがキャッシュメモリ１３０にアクセスして処理する際に、図２，図８，図１１に示すように、データ先読み制御手段２２は、前記並列実行スレッドでの並列処理の入力値により変動するデータフローに適応した前記データ先読みスレッドでのデータ先読み処理の間隔を制御することとなる。【００３４】
本発明の実施形態によれば、マルチコアプロセッサが、データ先読みのようなメモリアクセスが処理の大半を占めるメモリアクセスネックの処理を行う場合であっても、並列にメモリアクセスを実行する複数のプロセッサによるメモリアクセス競合による処理能力の低下を、データ先読み制御を実行させて並列処理の各所要時間をリアルタイムでバランスさせることとなる。これにより、複数のプロセッサによるメモリアクセス行号による処理能力の低下を有効に抑制することができ、効果的なメモリアクセスができるという効果をそうするものである。
（実施形態１）【００３５】
更に本発明の実施形態を具体例に基づいて詳細に説明する。先ず、並列処理の所要時間を予測し、その予測した所要時間に基づいてデータ先読み処理の間隔を制御する例を実施形態１として説明する。【００３６】
図１に示すように、マルチコアプロセッサシステム１０１において、例えばプロセッサ２が、データ先読みを実行するデータ先読みスレッドを処理し、例えばプロセッサ１が、並列実行スレッドを処理する。この場合、前記データ先読みスレッドと前記並列実行スレッドとからなるタスクをマルチプロセッサ１，２・・・ｎがキャッシュメモリ１３０にアクセスして処理する際に、前記データ先読み処理のキャッシュメモリ１３０へのアクセスを制御する必要がある。【００３７】
本発明の実施形態１は図１に示すように、前記データ先読み処理の前記キャッシュメモリ１３０へのアクセスを制御するものであって、マルチコアプロセッサシステム１０１は、ｎ個のプロセッサ１，２，３，……と、この各プロセッサ１，２，３，……に共通のメモリコントローラ１２０と、このメモリコントローラ１２０によって記憶処理動作がコントロールされるキャッシュメモリ１３０と、メインメモリ１４０とを備えている。
符号５１，５２，５３，……はそれぞれメモリコントローラ１２０と各プロセッサ１，２，３，……を個別に接続するバスを示す。又、符号１６１，１７０は、メモリコントローラ１２０とキャッシュメモリ１３０とを、又このキャッシュメモリ１３０とメインメモリ１４０とを、それぞれ結ぶ接続バスを示す。又メインメモリ１４０も図示しないバスによりメモリコントローラ１２０と接続されている。【００３８】
メインメモリ１４０は、メモリアクセスは低速であるが大容量の記憶装置である。キャッシュメモリ１３０は、メインメモリ１４０の一部の命令およびデータを一時的に記憶する、小容量であるが高速アクセス可能な記憶装置である。メモリコントローラ１２０は、各プロセッサ１，２，３，……とキャッシュメモリ１３０の間のメモリアクセス制御およびキャッシュメモリ１３０とメインメモリ１４０の間のメモリアクセスの制御を行う。プロセッサ１，２，３，……は、それぞれ前述したキャッシュメモリ１３０又はメインメモリ１４０に記憶された命令を実行する演算装置である。【００３９】
図２に示すように、例えばプロセッサ２が実行するデータ先読みスレッドでは、データ先読みの処理が行われ、例えばプロセッサ１が実行する並列実行スレッドでは、前記データの先読みと並列して並列処理が行われる。【００４０】
本発明の実施形態１における前記データ先読みスレッドでは、プロセッサ２がデータ先読みとデータ先読み制御との処理を実行するものであり、これをハードウェアとして構成すると、プロセッサ２がデータ先読みスレッドを実行する処理系２Ａは、データ先読み処理部２１と、データ先読み制御手段２２とを含む構成となる。そして、本発明の実施形態１における前記並列実行スレッドでは、プロセッサ１が並列実行処理とその処理に必要な所要時間の予測処理とを実行するものであり、これをハードウェアとして構成すると、プロセッサ１が並列実行スレッドを実行する処理系１Ａは、並列実行処理部１１と、所要時間予測手段１２とを含む構成となる。【００４１】
処理系１Ａの並列実行処理部１１は、並列処理を実行するものであり、所要時間予測手段１２は、並列実行処理部１１への並列処理の入力値に基づいて並列処理の所要時間を予測する。処理系２Ａのデータ先読み制御手段２２は、所要時間予測手段１２が予測した所要時間に基づいて、前記所要時間の予測値からメモリアクセス競合が最小限であって、前記データ先読み処理の終了時間が前記並列実行処理の終了時間を超えない最大のデータ先読み間隔をもつ前記データ先読み処理の制御パラメータを決定する。そして、データ先読み処理部２１は、データ先読み制御手段２２が決定した制御パラメータに基づいてデータの先読みを実行する。処理系１Ａの所要時間予測手段１２が予測した所要時間のデータは、スレッド間通信手段２００を介して処理系２Ａのデータ先読み制御手段２２に伝送される。【００４２】
以上のように、データ先読み制御手段２２のメモリアクセス制御機能が有効に作用し、上述したように他のプロセッサにおける並列処理の所要時間をリアルタイムでバランスさせるようにしたので、プロセッサ相互間のメモリアクセス競合による処理能力の低下を有効に抑制することができ、効果的なメモリアクセスができる。
又、他のプロセッサ１が備えている並列実行処理部１１のデータ処理の所要時間の予測値に基づいてデータ先読み制御手段２２がデータ先読み処理部２１のデータ先読み間隔（メモリアクセス実行のタイミング）を設定することから、アクセス競合を更に効率よく低減することができる。【００４３】
ここで、前述したメインメモリ１４０に記憶されたプログラムが複数のスレッドを用いて実行できるように記述（構成）されている場合、同じプログラムに属するスレッド１Ａ，２Ａ，３Ａでも、上述したように異なるプロセッサ１，２，又は３で並列に実行することができるようになっている。又、各スレッドはキャッシュメモリ１３０又はメインメモリ１４０を介してデータ共有が可能となっている。【００４４】
前記スレッド間通信手段２００は、前記キャッシュメモリ１３０による通信情報を記憶し、前記キャッシュメモリ１３０に対する前記メモリコントローラ１２０の書き込み読み出しを行い及び前記各スレッド相互間（プロセッサ相互間）における情報伝送を制御するように構成されている。後述する第２，第３の各実施形態でも同様である。【００４５】
前記処理系２Ａはプロセッサ２上にて起動され、また処理系１Ａはプロセッサ１上にて起動されて、それぞれ所定のデータ処理を実行する。
所要時間予測手段１２は、並列実行処理部１１の実行前に当該処理に入力される入力値を用いて並列実行処理部１１の所要時間を予測し、その予測値をスレッド間通信手段２００に供給する。【００４６】
スレッド間通信手段２００は、キャッシュメモリ１３０又はメインメモリ１４０の一部をもって構成され、処理系１Ａにおけるデータ処理の所要時間（予測値）を処理系２Ａに所定のタイミングで伝送する。同時に、このスレッド間通信手段２００は、所要時間予測手段１２から出力される予測値を一時保持し、データ先読み制御手段２２から読み出されるまで待機させる。【００４７】
データ先読み制御手段２２は、スレッド間通信手段２００に蓄えられている並列実行処理部１１の予測値を読み出すと共に、読み出した予測値からメモリアクセス競合が最小限になるようにデータ先読み処理部２１におけるデータ先読み処理の制御パラメータを決定する。このデータ先読みの制御手段２２による制御内容は、データ先読み処理部２１の動作終了時間が並列実行処理部１１の動作終了時間を越さないように、１回のデータ先読み毎に適当な間隔を空けるように制御を行うものである。【００４８】
このデータ先読み間隔を空けるのは、メモリアクセス競合を起こす確率を下げるためであり、このため、データ先読みの制御パラメータとしてデータ先読み間隔を最適に指定することで、効果的なデータ先読みを行うことができる。このパラメータの決定には、予め、作成されたデータ先読み所要時間とデータ先読み間隔が関連付けられたモデルを構築し、データ先読み所要時間が前記予測値の値を超えない最大のデータ先読み間隔を導く。【００４９】
データ先読み処理部２１は、データ先読み制御手段２２が決定したパラメータに基づいてデータ先読みを行い、メインメモリ１４０より該当データをキャッシュメモリ１３０に格納する。この場合、データ先読みの専用命令が予め設定されているアーキテクチャでは、その専用命令を用いてデータ先読みを行う。一方、データ先読みの専用命令が用意されていないアーキテクチャでは、明示的にデータアクセス命令を用いデータ先読みを行う必要がある。【００５０】
（実施形態１の動作）
次に、図２及び図３に基づいて上記実施形態１の全体の動作について説明する。
まず、所要時間予測手段１２では、並列実行処理部１１の動作開始前に、当該処理部１１に入力される入力値を用いて当該並列実行処理１１の所要時間の予測を行い処理系２Ａに出力する（ステップＳ１０１：所要時間予測工程）。【００５１】
次に、処理系２Ａでは、上記ステップＳ１０１で得られた前記所要時間の予測値を、スレッド間通信手段２００を介してデータ先読み制御手段２２が受信する（ステップＳ１０２：所要時間予測値受信工程）。
データ先読み制御手段２２は、得られた予測値に基づいてデータ先読み処理部２１のデータ先読み制御パラメータを決定する。この制御パラメータ決定は、前述したデータ先読み所要時間と制御パラメータが関連付けられたモデルとが参照され、データ先読み動作の間隔を特定する形態をもって実行される（ステップＳ１０３：データ先読み間隔設定工程）。【００５２】
前記データ先読み制御手段２２は、続いて、ステップＳ１０３で決定された制御パラメータに基づいてデータ先読み処理部２１を稼働させ、設定されたデータ先読み動作間隔に基づいてデータ先読み処理を実行し、前述したメインメモリ１４０より該当データをキャッシュメモリ１３０に格納する（データ先読み処理工程）。この場合、データ先読みの専用命令が用意されているアーキテクチャでは、その専用命令を用いてデータ先読みを行い、データ先読みの専用命令が用意されていないアーキテクチャでは明示的にデータアクセス命令を用いデータ先読みを行う（ステップＳ１０４）。
このステップＳ１０４での実行内容は、データ先読みが終了するまで繰り返される（ステップＳ１０５）。【００５３】
本実施の形態では、処理系１Ａ側に所要時間予測手段１２を設け、並列実行処理部１１によるデータ処理の所要時間を事前に予測して、処理系２Ａ側でのデータ先読み処理に際して制御パラメータを設定しデータ先読み間隔を設けるように構成したので、処理系２Ａ側では、並列実行処理部１１の入力値により変動するデータフローに適応したデータ先読みを実行することができ、メモリアクセス競合を有効に且つ効率よく回避し若しくは低減することができる。【００５４】
ここで、上述した実施形態１における動作説明にあって、各工程の実行内容をプログラム化しコンピュータに実行させるように構成してもよい。このようにしても、上記第１実施形態の場合と同等の作用効果を得ることができる。
（実施形態２）【００５５】
次に、本発明の実施形態に係るメモリアクセス制御システムを画像復号処理に適用した例を実施形態２として説明する。【００５６】
本発明の実施形態２に係るメモリアクセス制御システムは図４〜図７に示すように、復号画像情報をメモリに格納するためのフレームメモリ５１５の該当アドレスのデータを先読みするデータ先読みスレッドと、前記該当アドレスの先読みと並行して、逆直交変換で生成される差分画像と動き補償処理で生成される予測画像とを加算した復号画像情報をメモリに格納する並列実行スレッドとからなるタスクを、マルチプロセッサがキャッシュメモリにアクセスして処理する際に、前記データ先読み処理の前記キャッシュメモリへのアクセスを制御するメモリアクセス制御システムとして構築され、前記並列実行スレッドでの並列処理の入力値により変動するデータフローに適応した前記データ先読みスレッドでのデータ先読み処理の間隔を制御するデータ先読み制御手段を有することを特徴とするものである。【００５７】
本発明の実施形態２は、フレーム間予測方式を用いて符号化された動画像を復号する動画像復号システムにおけるメモリアクセス制御システムである。本実施形態２では、動き補償部５１４が実施形態１のデータ先読み処理部２１を兼ねており、データ先読み対象が、画像復号処理で生成された画像情報を格納するためのフレームメモリ５１５（図１５の１００５に対応する）の該当アドレスに相当する。さらに、可変長符号復号部５２１（図１５の１００１に対応する）が、実施形態１の並列実行処理部１１に相当する。前記画像情報は、逆直交変換部５１３（図１５の１００３に対応する）で生成される差分画像と動き補償部５１４（図１５の１００４に対応する）で生成される予測画像とを加算した復号画像情報に相当する。【００５８】
さらに図４において、可変長符号復号所要時間予測部５２２が、実施形態１の所要時間予測手段１２に相当するものであり、可変長符号復号所要時間予測部５２２は、可変長符号復号部５２１に入力される入力値を用いて可変長符号復号の所要時間を予測し、その予測された所要時間を出力する。図４には図示していないが、実施形態１のデータ先読み制御手段２２に相当する前記データ先読み制御手段を有しており、このデータ先読み制御手段（２２）は、可変長符号所要時間予測部５２２が予測した所要時間のデータを入力し、可変長符号復号部５２１の入力値により変動するデータフローに適応した可変長符号復号処理でのデータ先読み処理の間隔を制御する。【００５９】
図５は、画像サイズやフレームレート等の入力ビットストリームのパラメータが一定の時、可変長符号復号部５２１における復号処理（並列実行処理）の所要時間は、入力ビットストリームのビット長に相関があることを示すためのものである。この図５は、画像サイズがＱＶＧＡ、フレームレートが３０〔ｆｐｓ〕のビットストリームの時の、入力ビットストリームのビット長に対する１フレーム可変長符号復号処理（並列実行処理）の所要時間を表す図である。
事前に入力ビットストリームのビット長から可変長符号復号部５２１の復号処理の所要時間を導くためのモデル式を構築しておくことで、所要時間の予測を行うことができる。簡単には、観測によって得られたデータから線形近似（ｙ＝０．２４４３ｘ＋２．７２８８）を行い、入力のビット長から線形に予測するモデル式を用いてもよい。【００６０】
図６に、動き補償部５１４による動き補償処理、逆直交変換部５１３による逆直交変換処理、加算部５１６による加算処理を行う前に、可変長符号復号部５２１（図２の並列実行処理部１１に対応）による復号処理とデータ先読み処理部２１によるデータ先読み処理とが、並列に作動している様子を示す。
ここで、動き補償と逆直交変換はフレーム内で処理を分割し並列負荷分散処理をしている。具体的には、可変長符号復号部５２１による復号処理は図６の処理系１Ａで実行され、データ先読み処理部２１による前記フレームメモリ５１５に対するデータ先読み処理は前記処理系１Ａとは異なる処理系２Ａで実行される。【００６１】
前述したデータ先読み毎に間隔を空ける方法として、ループボディがｎｏｐ命令であるループを挿入しデータ先読みのタイミングの制御を行う。ｎｏｐ命令とは、何の演算もせずに１サイクル費やす命令である。このループの反復回数を、データ先読み間隔を指定するパラメータとする。【００６２】
本発明の実施形態を適用することにより、可変長符号復号とデータ先読みの間のメモリアクセス競合による処理能力の低下を有効に抑制し若しくは回避することができ、効果的なメモリアクセスができる。【００６３】
次に、図７に基づいて本実施形態２の動作について説明する。
まず、可変長符号復号所要時間予測部５２２は、可変長符号復号部５２１による復号処理の所要時間の予測を行う。予測には、可変長符号復号部５２１に入力される入力値を用いる。ここで、入力値として可変長符号復号部５２１に入力されるビットストリームのビット長を用い、予測を行っても良い。（ステップＳ１１１：可変長符号復号所要時間予測工程）【００６４】
次に、可変長符号復号部５２１の復号処理の所要時間（予測値）を、共有メモリを用いて可変長符号復号処理を行っている処理系１Ａから処理系２Ａに伝達する（ステップＳ１１２：所要時間予測値受信工程）。
この作業は、マルチコアプロセッサシステム（図１の１０１）では特に意識する必要はなく、あるプロセッサ上で動作しているスレッドでのデータにおいてもメモリに書き出すことにより、共有されたキャッシュメモリ１３０又はメインメモリ１４０を介して、異なるプロセッサ上で動作しているスレッドから参照することができる。このため予測値の伝達は、所要時間予測手段１２が予測値を導出した後にメモリに書き込むことで完了する。【００６５】
次に、処理系２Ａデータ先読み制御手段２２が、スレッド間通信手段２００に保持された復号処理時間の予測値に基づいてデータ先読みの制御パラメータであるデータ先読み間隔の決定を行う。事前にデータ先読み所要時間とｎｏｐループの反復回数を関連付けるモデルを作成しておき、最低のパラメータ値を「データ先読み所要時間が可変長符号復号所要時間を越えない最大の反復回数」とする（ステップＳ１１３：データ先読み間隔設定工程）。
間隔が長ければ長いほど、データアクセスによる競合は少なくなるが、データ先読み所要時間が可変長符号復号所要時間を越えてしまう場合には、動画像復号の所要処理時間を延ばしてしまうことになる。【００６６】
次に、決定されたパラメータを用い、前述したデータ先読み処理部２１によりデータ先読みを行う。データ先読みの専用命令が用意されているアーキテクチャでは、その専用命令を用いデータ先読みを行う。一方、データ先読みの専用命令が用意されていないアーキテクチャでは明示的にデータ先読みを行う必要がある。この場合、リード又はライト命令等のデータアクセス命令を用い、該当メモリアドレスにアクセスし、メインメモリ１４０より該当データをキャッシュメモリ１３０に格納する（ステップＳ１１４）。
又、データ先読みの専用命令が用意されていない場合は、アクセス命令以外の実データもメモリコントローラ（図１の１２０）とキャッシュメモリ１３０をつなぐバス（図１の１６１）を通るため、当該バス１６１における競合が起こりやすく、本実施形態によるメモリアクセス競合低減の効果がより現れることになる。
このステップＳ１１４での実行内容は、データ先読みが終了するまで繰り返される（ステップＳ１１５）。【００６７】
このように、上述した実施形態によると、データ先読み処理部２１によるデータ先読みに際しては、データ先読み制御手段２２のメモリアクセス制御機能が有効に作用し、上述したように他のプロセッサ１における並列実行処理部１１における並列処理の所要時間をリアルタイムでバランスさせるようにしたので、プロセッサ相互間のメモリアクセス競合による処理能力の低下を有効に抑制し若しくは回避することができ、効果的なメモリアクセスができるという利点がある。【００６８】
ここで、上述した実施形態２における動作説明にあって、各工程の実行内容をプログラム化しコンピュータに実行させるように構成してもよい。このようにしても、上記実施形態１の場合と同等の作用効果を得ることができる。
（実施形態３）【００６９】
次に、データ先読み制御手段２２が、他のプロセッサを監視してそのプロセッサによる処理状況に基づいてデータ先読み処理の間隔をする例を実施形態３として説明する。【００７０】
本発明の実施形態３では図８に示すように、データ先読み制御手段２２は、データ先読みスレッドの処理を実行するプロセッサ以外の他のプロセッサによる処理状況を監視する他プロセッサ監視手段２３を含んでいる。そして、データ先読み制御手段２２は、他プロセッサ監視手段２３が監視するプロセッサによる処理状況と前記データ先読みスレッドの処理を実行するプロセッサによる処理状況とを比較して前記データ先読み処理の間隔を制御する。さらに、データ先読み制御手段２２は、初期値としてデータ先読み処理の制御パラメータを有し、前記他プロセッサ監視手段２３が監視するプロセッサによる処理状況に応じて前記制御パラメータの再設定を行う。【００７１】
具体的には、図８の実施形態３では、処理系２Ｂのデータ先読み制御手段２２に、処理系１Ｂの並列実行処理部１１によるデータ処理の進捗状況を監視する他プロセッサ監視手段２３が装備されている。また、データ先読み制御手段２２は、前記他プロセッサ監視手段２３から出力される前記並列実行処理部１１のデータ処理の進捗状況にかかる情報に基づいて前記データ先読み処理部２１のデータ先読み間隔を可変設定する。【００７２】
ここで、前述したデータ先読み制御手段２２は、前記データ先読み処理部２１のデータ処理が前記並列実行処理部１１のデータ処理よりも進んでいる場合にデータ先読み間隔を広げるように再設定すると共に、前記データ先読み処理部２１のデータ処理が前記並列実行処理部１１のデータ処理よりも遅れている場合にデータ先読み間隔を縮めるように再設定するように構成されている。【００７３】
実施形態３では、前述した第１実施形態に比較して、処理系１Ｂ側では、並列実行処理の所要時間の予測を行わず（所要時間予測手段１２を有せず）、２Ｂでは、他プロセッサでの処理を監視する他プロセッサ監視手段２３を新たに装備した点が相違する。【００７４】
この図８に示す実施形態にあって、並行実行処理部１１は、所定の処理を行いつつ現在の処理進行状況をスレッド間通信手段２００に伝達する。
又他プロセッサ監視手段２３は、スレッド間通信手段２００に供給される並列実行処理２１の処理進行状況を一定の周期で読み出し、読み出した処理進行状況をデータ先読み制御手段２２に提供する。【００７５】
更に、データ先読み制御手段２２は、前述した第１の実施の形態では所要時間予測手段１２で予測された所要時間に基づいて制御パラメータを決定したが、本実施形態３では、まず、初期設定として予め制御パラメータを与えておく。その一方、前述した実施形態１では、制御パラメータはデータ先読み処理部２１の作動開始前に決定したままその値は変更しなかったが、この実施形態３では、他プロセッサ監視手段２３から供給される処理進行状況に基づいて、データ先読み処理部２１の処理実行中にも、制御パラメータの再設定を行うように構成されている。【００７６】
即ち、実施形態３では、前述したデータ先読み制御手段２２は、予め所定の制御パラメータを初期値として備えており、他プロセッサ監視手段２３から供給される処理進行状況に基づいて制御パラメータの再設定を行う。【００７７】
更に、データ先読み制御手段２２は、並列実行処理部１１によるデータ処理の進行状況を取得すると、更にデータ先読み処理部２１の進行状況も同時に取得する。そして、上記データ先読み制御手段２２は、前述した二つの処理進行状況にかかるデータを比較し、データ先読み処理部２１が並列実行処理部１１よりデータ処理が進んでいれば、データ先読み処理部２１の進行が最適な設定より速いと判断し、データ先読み間隔を広げるように制御パラメータを再設定する。逆に、データ先読み処理部２１の処理が遅れていれば、最適な設定より遅いと判断し、データ先読み間隔を縮めるように制御パラメータを再設定する。【００７８】
このデータ先読み処理部２１では、上述したように所定のデータ先読み処理を行うと共に、現在の処理進行状況をデータ先読み制御手段２２に対して制御パラメータ再設定用の情報として供給する。その他の構成は前述した実施形態１と同一となっている。【００７９】
（実施形態３の動作）
次に、本実施形態３の動作を図９のフローチャートに基づいて説明する。
まず、データ先読み制御手段２２が、データ先読み処理部２１のデータ先読み制御パラメータを決定する。実施形態１では、所要時間予測手段１２で予測された所要時間に基づいて制御パラメータを決定したが、実施形態３では、予めデータ先読み処理部２１のデータ先読み制御パラメータであるデータ先読み間隔を初期値として与え初期設定しておく（ステップＳ２０１：データ先読み間隔初期値設定工程）。【００８０】
次に、ステップＳ２０１で決定された制御パラメータに基づいてデータ先読み処理部２１によるデータ先読み処理を実行し、メインメモリ１４０より取り出して該当するデータをキャッシュメモリ１３０に格納する（ステップＳ２０２：データ先読み処理工程）。
続いて、データ先読み制御手段２２は、データ先読み処理部２１による先読み処理が終了したかどうか判定し、終了ならばデータ先読み処理部２１の先読み処理を終了する（ステップＳ２０３）。【００８１】
データ先読み処理部２１による先読み処理が終了ではない場合、他プロセッサ監視手段２３は並列実行処理部２１の処理進行状況を読み出し、読み出した処理進行状況をデータ先読み制御手段２２に提供する（ステップＳ２０４）。【００８２】
次に、データ先読み制御手段２２は、他プロセッサ監視手段２３とデータ先読み処理部２１から、並列実行処理部１１の処理進行状況とデータ先読み処理部２１の処理進行状況を取得する。そして、データ先読み制御手段２２は、両進行状況を比較し、データ先読み処理部２１のデータ処理が並列実行処理部１１のデータ処理より進んでいればデータ先読み間隔を広げるように、データ先読み処理部２１のデータ処理が遅れていればデータ先読み間隔を縮めるように、制御パラメータの再設定を行う（ステップＳ２０５：先読み間隔再設定工程）。【００８３】
ここで、ステップＳ２０４における他プロセッサ監視を、１回のデータ先読み毎に行わず一定回毎に行うのは、監視処理による他プロセッサ監視手段２３のオーバーヘッド（ひいてはデータ先読みスレッド２Ｂのオーバーヘッド）を抑えるためである。【００８４】
このように、実施形態３にあっては、並列実行処理部２１の処理進行状況を監視する他プロセッサ監視手段（図８の符号２３）と、得られた進行状況とデータ先読み処理部２１の進行状況とを比較しデータ先読み処理の間隔を調整するデータ先読み制御手段２２とを設けたので、並列実行処理部１１とデータ先読み処理部２１との進行状況にあわせ最適なデータ先読み間隔を調整することにより、並列実行処理２１の局所的な処理の偏りや外乱要因による処理の遅れにより変動するデータフロー、アクセスタイミングに動的に適応したデータ先読み処理制御ができることが可能となっている。【００８５】
即ち、実施形態３では、並列実行処理部１１のデータ処理の進行状況とデータ先読み処理部２１の処理進行状況を監視し、データ先読み制御パラメータを状況に合わせて再設定するように構成したので、並列実行処理部２１の局所的な処理の偏りや外乱要因による処理の遅れにより変動するデータフロー、アクセスタイミングに動的に適応したデータ先読みを実行することができ、メモリアクセス競合を効果的に低減できるという利点を備えたものとなっている。【００８６】
ここで、上述した実施形態３における動作説明にあって、各工程の実行内容をプログラム化しコンピュータに実行させるように構成してもよい。このようにしても、上記第１実施形態の場合と同等の作用効果を得ることができる。
（実施形態４）【００８７】
次に、本発明の実施形態３を画像復号処理に適用した例を実施形態４として説明する。本発明の実施形態４では、画像復号処理の構成が図４の可変長符号復号所要時間予測部５２２に代えて図８に示す他プロセッサ監視手段２３を備えた構成となる。そして、他プロセッサ監視手段２３は、他のプロセッサ、具体的には可変長符号復号５２１（図４参照）の処理進行状況を監視し、データ先読み制御手段２２は、他プロセッサ監視手段２３からの情報を受けて、データ先読みの間隔を決定する制御パラメータを再設定するように構成されている。この点が実施形態２と異なる。【００８８】
図１０に基づいて本実施形態４の動作について説明する。前述した実施形態２では、可変長符号復号所要時間予測部５２２で得られら予測値を基に制御パラメータを決定したが、本実施形態４では、初期設定として、データ先読み制御手段２２内に予めデータ先読み間隔の制御情報を設定しておく。尚、このデータ先読間隔は、データ先読み制御手段２２によるデータ先読み処理実行中に調整を行うため、初期設定では０としてもよい（ステップＳ２１１：データ先読み間隔初期値設定工程）。【００８９】
続いて、一定回のデータ先読みを行うが、本実施形態４では、この回数をマクロブロックの横方向１ライン分のデータ先読みができる回数とする。動画像の復号処理は、マクロブロックと呼ばれる単位で行われることが一般的であり、前述した可変長符号復号部５２１の復号処理も実際にはマクロブロック単位で処理しており、マクロブロック単位でデータ先読み処理を行うことは客観的に妥当性がある（ステップＳ２１２：データ先読み処理工程）。
ここで、データ先読みを１マクロブロックラインとしたのは、１マクロブロック毎に監視を行うと、その制御によるオーバーヘッドが大きくなるためである。また、別の理由として、画素データはマクロブロック内では連続しておらず、マクロブロックラインになって初めて連続してメモリに確保される。このため、キャッシュラインへの読み込みが効率的であることがあげられる。【００９０】
続いて、データ先読み処理部２１による先読み処理が終了したかどうか判定し、終了ならばデータ先読み処理部２１の先読み処理を終了する（ステップＳ２１３）。【００９１】
次に、１マクロブロックライン分のデータ先読みを行った後、データ先読みスレッド２Ｂのデータ先読み制御手段２２は、可変長符号復号部５２１のデータ処理進行状況を取得する（ステップＳ２１４）。
この時、可変長符号復号部５２１の処理が１マクロブロックライン分終了していない場合、データ先読み処理部２１のデータ処理が最適な設定より速く進んでいると判断し、データ先読み間隔を増加しデータ先読み処理部２１の進行を遅くする。逆に、可変長符号復号部５２１が１マクロブロックライン分を超えて進んでいる場合、データ先読み処理部２１のデータ処理が最適な設定より遅いと判断し、データ先読み間隔を減少制御してデータ先読み処理部２１によるデータ処理の進行を早める（ステップＳ２１５：先読み間隔再設定工程）。【００９２】
この１マクロブロックライン分のデータ先読みと、可変長符号復号部５２１の処理進行状況を監視、データ先読み間隔パラメータの再設定は、データ先読み処理部２１のデータ処理が終了するまで繰り返される。
（実施形態５）【００９３】
次に、並列処理に要する所要時間と他のプロセッサの処理状況とに基づいてデータ先読みの間隔を決定する例を実施形態５として説明する。【００９４】
本実施形態５は図１１に示すように、並列実行スレッドでの並列処理の入力値に基づいて前記並列処理の所要時間を予測する所要時間予測手段１２を有し、データ先読み制御手段２２は、データ先読みスレッドの処理を実行するプロセッサ以外の他のプロセッサによる処理状況を監視する他プロセッサ監視手段２３を含み、データ先読み制御手段２２は、他プロセッサ監視手段２３が監視するプロセッサによる前記並列実行スレッドでの処理状況と、前記データ先読みスレッドの処理を実行するプロセッサによる処理状況と、前記所要時間予測手段が予測した所要時間とに基づいて前記データ先読み処理の間隔を制御することを特徴とするものである。【００９５】
データ先読み制御手段２２は、所要時間予測手段１２が予測した所要時間の予測値に基づいて前記データ先読みスレッドの処理を実行する制御パラメータを決定し、前記制御パラメータを、前記他プロセッサ監視手段が監視するプロセッサによる前記並列実行スレッドでの処理状況に応じて再設定するようにしてもよいものである。【００９６】
具体的に説明すると、実施形態５では図１１に示すように、処理系１Ｃには、並列実行処理部１１と、並列実行処理部１１のデータ処理の所要時間を予測する所要時間予測手段１２とを含めている。又、処理系２Ｃには、データ先読み制御手段２２と、他プロセッサ制御手段２３と、前記所要時間予測手段１２で予測された前記並列実行処理部１１におけるデータ処理の所要時間に基づいてデータ先読み処理部２１のデータ先読み間隔を設定制御するデータ先読み制御手段２２とを含めている。【００９７】
また、データ先読み制御手段２２は、他のプロセッサ１例えば並列実行処理部１１のデータ処理の進捗状況を監視し且つ当該進捗状況にかかる情報を読み出す他プロセッサ監視手段２３を含んでおり、データ先読み制御手段２２は、他プロセッサ監視手段２３が監視する並列実行処理部１１のデータ処理の進捗状況に応じてデータ先読み処理部２１のデータ先読み間隔を可変設定する。
【００９８】
上記図１１に示す実施形態５は、図１乃至図５に開示した実施形態１の構成に加えて、処理系２Ｃ、他プロセッサでのデータ処理を監視する他プロセッサ監視手段２３等を装備した点が構成上の特徴を有する。又、実施形態１と異なり新たに追加されたプロセッサ監視手段２３は、前述した実施形態３と構成を同じとする。ここで、並列実行処理部１１は、前述したように、所定のデータ処理を行いつつ、その進行状況にかかる情報をリアルタイムでスレッド間通信手段２００を介して前述した一のプロセッサ２側に供給する。【００９９】
他プロセッサ監視手段２３は、スレッド間通信手段２００に供給される並列実行処理部１１の処理進行状況を一定の周期で読み出し、読み出した処理進行状況をデータ先読み制御手段２２に提供する。データ先読み制御手段２２は、実施形態１で記述したのと同じように、データ先読みと並列実行処理部１１の予測値とから初期設定としてデータ先読み処理部２１の制御パラメータを決定する。更に、実施形態５では、他プロセッサ監視手段２３から供給される処理進行状況に基づいて、前述した実施形態３で記述したと同様に、制御パラメータの再設定を行う。【０１００】
データ先読み処理部２１では、所定のデータ先読みを行うと共に、現在の処理進行番号をデータ先読み制御手段２２に供給する。その他の構成は前述した実施形態１，３と同一となっている。【０１０１】
（実施形態５の動作）
次に、図１２に基づいて上記第３実施形態の全体の動作について説明する。
ここで、図１２のステップＳ３０１乃至Ｓ３０３で示される動作、即ち、本実施形態５における所要時間予測手段１２と，得られた予測値を基にデータ先読み制御手段２２とでデータ先読み制御パラメータを決定する動作は、前述した実施形態１における所要時間予測手段１２とデータ先読み制御手段２２とによる連携動作（図３のステップＳ１０１乃至Ｓ１０３）と同じである。【０１０２】
また、ステップＳ３０４乃至Ｓ３０７で示される動作、即ち、本実施形態５における一定回のデータ先読み処理部２１，他プロセッサ監視手段２３，及びデータ先読み制御手段２２による制御パラメータの再設定の各動作は、前述した第２の実施形態の各手段２１３，２３および２１による連携動作（図９のステップＳ２０２乃至Ｓ２０５）と同じである。【０１０３】
即ち、本実施形態５では、並列実行処理部２１のデータ処理の所要時間を事前に予測することでデータ先読み制御パラメータを設定し、更に、並列実行処理部２１の処理進行状況により、又はデータ先読み処理部２１の処理進行状況を一定回監視して状況に合わせてデータ先読み制御パラメータを再設定するように構成されているため、並列実行処理２１の、入力値に依存した変動、局所的な処理の偏り、および外乱要因による処理の遅れにより変動するデータフロー又はアクセスタイミングに対して動的に適応したデータ先読みを実行することができ、メモリアクセス競合を効果的に低減できる。【０１０４】
ここで、上述した実施形態５における動作説明にあって、各工程の実行内容をプログラム化しコンピュータに実行させるように構成してもよい。このようにしても、上記実施形態１の場合と同等の作用効果を得ることができる。
（実施形態６）【０１０５】
次に、本発明の実施形態５を画像復号処理に適用した例を実施形態６として説明する。実施形態６の構成は、図４に示す実施形態４と共通となり、これに加えて、図１１に示す他プロセッサ監視手段２３を備えた構成となる。図１１に示す他プロセッサ制御手段２３は、図１１に示す並列実行処理部１１に相当する図４の可変長符号復号部５２１の処理進行状況を監視し、これに基づいて制御パラメータの再設定を行うようにしたことが前述した実施形態２と相違する。この場合、当該処理進行状況の監視、及び制御パラメータの再設定は、前述した実施例形態４の場合とその構成および手順を同じである。【０１０６】
前述した実施形態２では、入力ビットストリームのビット長を用い、可変長符号復号５２１の所要時間を予測していたが、本実施形態６では、更に、前述した実施形態３で記述したようにデータ先読み処理部２１の先読み処理実行中でも制御パラメータの再設定４で行うように構成されている。【０１０７】
図１３に基づいて本実施形態６の動作について説明する。まず、可変長符号復号所要時間予測部５２２は、可変長符号復号部５２１に入力される入力値を用い可変長符号復号の所要時間の予測を行う。ここで、所要時間の予測は、実施形態１と同様に事前に構築しておいたモデルを参照に入力ビットストリームのビット長を用いて行っても良い。（ステップＳ３１１：可変長符号復号所要時間予測工程）【０１０８】
次に、可変長符号復号所要時間予測部５２２は、導出された予測値をメモリに書き込むことでスレッド間通信手段２００に伝達する（ステップＳ３１２：所要時間予測値受信工程）。続いて、データ先読み制御手段２２が可変長符号復号の所要時間予測値を読み出し、実施形態１と同様に、データ先読み所要時間とｎｏｐループ反復回数との関連を基に初期設定として制御パラメータであるデータ先読み間隔を決定する（ステップＳ３１３）。【０１０９】
次に、１マクロブロックライン分のデータ先読みを行った後（ステップＳ３１４）、データ先読み処理部２１による先読み処理が終了したかどうか判定し、終了ならばデータ先読み処理部２１の先読み処理を終了する（ステップＳ３１５）。【０１１０】
さらに実施形態４と同様に、前記１マクロブロックライン分のデータ先読みと、可変長符号復号部５２１の複合処理の進行状況を監視し（ステップＳ３１６）、これに基づいてデータ先読み間隔パラメータの再設定が実行される。即ち、可変長符号復号部５２１の処理が１マクロブロックライン分終了していない場合、データ先読み間隔を増加制御する。逆に、可変長符号復号部５２１の復号処理が１マクロブロックライン分を超えて進んでいる場合、データ先読み間隔を減少制御する（ステップＳ３１７）。
この１マクロブロックライン分のデータ先読みと、可変長符号復号部５２１の処理進行状況とを監視、データ先読み間隔パラメータの再設定は、データ先読み処理部２１のデータ処理が終了するまで繰り返される。【０１１１】
このように、上記実施形態６では、前述した実施形態４における他プロセッサ監視手段２３を装備したので、並列実行処理部１１とデータ先読み処理２１との進行状況にあわせ最適なデータ先読み間隔を調整することにより、データ先読みとの並列実行処理部１１の入力値や、局所的な処理の偏り、外乱要因による処理の遅れにより変動するデータフロー、アクセスタイミングに動的に適応したデータ先読み処理制御が可能となり、前述した目的を確実に達成することができる。【０１１２】
以上のように、上述した実施形態にあっては、以下に示す効果を奏する。
第１の効果は、マルチコアプロセッサにおいて、データ先読みのようなメモリアクセスが処理の大半を占めるメモリアクセスネックの処理を行う場合にメモリアクセスの競合が発生するが、その場合に生じる各プロセッサの処理能力の低下を有効に回避し又は抑制して効果的なメモリアクセスができるということである。
その理由は、データ先読み処理の所要時間とアクセス競合低減の効果で変動するデータ先読みとの並列処理の所要時間をバランスさせ、最適なデータ先読み間隔を見つけることができるためである。【０１１３】
第２の効果は、メモリアクセスの競合を低減するための最適なデータ先読み処理を、データ先読みとの並列処理の入力値や、局所的な処理の偏り、外乱要因による処理の遅れにより変動するデータフロー、アクセスタイミングに動的に適応し処理制御ができるということである。
その理由は、データ先読みとの並列実行処理の入力値から最適なデータ先読み間隔を決定するとともに、データ先読みとの並列実行処理とデータ先読み処理の進行状況にあわせ最適なデータ先読み間隔を調整することにより、最適なデータ先読み間隔を決定することができるためである。【０１１４】
本発明の実施形態では、並列実行処理部に、当該並列実行処理部のデータ処理の情報を入力し当該データ処理の所要時間を予測する所要時間予測手段を併設する。そして、データ先読み制御手段が、前記所要時間予測手段で予測された所要時間に基づいて前記データ先読み処理部のデータ先読み間隔（メモリアクセス実行のタイミング）を設定制御する構成としてもよい。【０１１５】
これによると、並列実行処理部のデータ処理の予測された所要時間に基づいてデータ先読み制御手段がデータ先読み処理部のデータ先読み間隔（メモリアクセス実行のタイミング）を設定するので、アクセス競合を更に効率よく低減することができる。【０１１６】
又、データ先読み制御手段が、並列実行処理部のデータ処理の進捗状況を監視する他プロセッサ監視手段を有すると共に、前記データ先読み制御手段が、前記他プロセッサ監視手段から出力される前記並列実行処理部のデータ処理の進捗状況にかかる情報に基づいて前記データ先読み処理部のデータ先読み間隔を可変設定する先読み間隔可変設定機能を備えた構成としてもよい。
これによると、一のプロセッサ側で他のプロセッサ側のメモリアクセスの状況を直接監視しその処理の進行状況を直接入手し得るので、データ先読み処理部のデータ先読み間隔をデータ処理中であっても高精度に可変設定することができ、これにより、メモリアクセスの競合を有効に回避することができるという利点がある。【０１１７】
ここで、前述したデータ先読み制御手段（先読み間隔可変設定機能）は、前記データ先読み処理部のデータ処理が前記並列実行処理部のデータ処理よりも進んでいる場合にデータ先読み間隔を広げるように再設定すると共に、前記データ先読み処理部のデータ処理が前記並列実行処理部のデータ処理よりも遅れている場合にデータ先読み間隔を縮めるように再設定するように構成してもよい。【０１１８】
又、並列実行処理部に、当該並列実行処理部のデータ処理の所要時間を予測する所要時間予測手段を併設すると共に、データ先読み制御手段が、前記所要時間予測手段で予測された前記並列実行処理部におけるデータ処理の所要時間に基づいて前記データ先読み処理部のデータ先読み間隔（メモリアクセス実行のタイミング）を設定制御する構成とする。更に、データ先読み制御手段が、並列実行処理部のデータ処理の進捗状況を監視し且つ当該進捗状況にかかる情報を読み出す他プロセッサ監視手段を有すると共に、前記データ先読み制御手段が、前記並列実行処理部のデータ処理の進捗状況に応じて前記データ先読み処理部のデータ先読み間隔を可変設定する構成としてもよい。【０１１９】
これによると、他プロセッサ監視手段とデータ先読み制御手段とにより、並列実行処理部のデータ処理の進捗状況に基づいてデータ先読み制御手段のデータ先読み間隔を迅速に可変設定することができ、メモリアクセスの競合を更に有効に回避することができ、双方のデータ処理能力の低減を有効に抑制することができる。【０１２０】
ここで、前述した一のプロセッサと他のプロセッサとをスレッド間通信手段で連結すると共に、前記各プロセッサ相互間の情報授受に際しては当該スレッド間通信手段を介して実行するように構成してもよい。
又、前記スレッド間通信手段は、前記キャッシュメモリによる通信情報を記憶し、前記キャッシュメモリに対する前記メモリコントローラの書き込み読み出し指令を伝送し、前記各スレッド相互間における情報の伝送を制御するように構成としてもよい。
ここで、前述したメモリアクセス制御システムを画像復号システムとすると共に、データ先読みの対象を、画像復号処理で生成された画像情報を格納するためのフレームメモリの該当アドレスとし、更に、前記並列実行処理が可変長符号復号に相当するように設定してもよいものである。
又、前述したメモリアクセス制御システムを画像復号システムとすると共に、データ先読みの対象は、逆直交変換で生成される差分画像と動き補償処理で生成される予測画像を加算した復号画像情報を格納するためのフレームメモリの該当アドレスであり、更に、前記並列実行処理が可変長符号復号に相当し、前記所要時間予測手段が前記可変長符号復号の所要時間を、入力されるビットストリームのビット長を基に予測するようにしてもよいものである。【０１２１】
ここで、前述した先読み間隔再設定工程にあっては、前記データ先読み処理が前記並列実行処理部におけるデータ処理よりも進んでいる場合には前記データ先読み間隔を広げると共に、データ先読み処理が前記並列実行処理部におけるデータ処理よりも遅れている場合には前記データ先読み間隔を縮めるように前記データ先読み間隔を再設定するように、その実行内容を設定してもよい。
又、前述したメモリアクセス制御方法を画像復号方法に適用し、前記データ先読みの対象を、逆画像復号処理で生成された画像情報を格納するためのフレームメモリの該当アドレスとし、更に、前記並列実行処理が可変長符号復号処理としてもよいものである。
また、前述したメモリアクセス制御方法を画像復号方法に適用し、前記データ先読みの対象を、逆直交変換で生成される差分画像と動き補償処理で生成される予測画像を加算した復号画像情報を格納するためのフレームメモリの該当アドレスとし、更に、前記並列実行処理が可変長符号復号処理とし、前記所要時間予測工程において、可変長符号復号処理の所要時間を、入力されるビットストリームのビット長を基に予測するようにしてもよいものである。【０１２２】
又、前記メモリアクセス制御プログラムを画像復号プログラムに適用し、このプログラム内における前記データ先読みの対象を、逆直交変換で生成される差分画像と動き補償処理で生成される予測画像を加算した復号画像情報を格納するためのフレームメモリの該当アドレスとし、更に、前記並列実行処理を可変長符号復号処理とし、前記可変長符号復号処理の所要時間を入力されるビットストリームのビット長を基に予測するようにしてもよい。【０１２３】
ここで、上述した本発明にかかる三つの実施形態においては、特に、データ先読みにおけるメモリアクセスの制御について述べたが、本発明はデータ先読みの場合に限らず、メモリアクセスが処理の大半を占めるメモリアクセスネックの処理におけるメモリアクセスの制御にも適用可能である。また、本発明におけるコンピュータシステムのハードウェア構成として、マルチコアプロセッサシステム１０１を例示したが、本発明はこのシステムに限定されるものではなく、例えばＳＭＴ（Ｓｉｍｕｌｔａｎｅｏｕｓ  Ｍｕｌｔｉｔｈｒｅａｄｉｎｇ）のように、上述した一のスレッドと他のスレッドとを単一のプロセッサ内で実行スレッドとして同時に実行するシステムにも適用可能である。【０１２４】
以上の説明では、可変長符号復号５２１の復号処理における所要時間の予測に、入力ビットストリームのビット長から線形予測を行った場合を例示したが、この予測方式に限ることはない。更に、データ先読みと並列実行している処理を可変長符号復号部５２１による処理としたが、本発明は、可変長符号復号処理に限ることなく、それ以外の処理についても適用可能である。【０１２５】
以上、実施形態（及び実施例）を参照して本願発明を説明したが、本願発明は上記実施形態（及び実施例）に限定されるものではない。本願発明の構成や詳細には、本願発明のスコープ内で当業者が理解し得る様々な変更をすることができる。【０１２６】
この出願は２００７年３月６日に出願された日本出願特願２００７−０５５６９４を基礎とする優先権を主張し、その開示の全てをここに取り込む。
【図面の簡単な説明】
【０１２７】
【図１】本発明の実施形態１にかかるメモリアクセス制御装置を装備したマルチコアプロセッサシステムを示すブロック図である。
【図２】本発明の第実施形態１を示すブロック図である。
【図３】図２に開示した実施形態１の動作を示すフローチャートである。
【図４】図２に開示した実施形態１の具体例である実施形態２を示すブロック図である。
【図５】入力ビットストリームのビット長と可変長符号復号部の複合処理の所要時間との相関を示す図表である。
【図６】図４に開示した実施形態２にあって、２つのスレッドを用いて、可変長符号復号処理とデータ先読み処理とが機能的に並列に動作し、その後、動き補償と逆直交変換がフレーム内で処理を分割し並列負荷分散処理をしている状態を示す説明図である。
【図７】実施形態２の動作を示すフローチャートである。
【図８】本発明の実施形態３を示すロック図である。
【図９】図８に開示した実施形態３の動作を示すフローチャートである。
【図１０】実施形態３の応用例を示す実施形態４の動作を示すフローチャートである。
【図１１】本発明の実施形態５を示すロック図である。
【図１２】図１１に開示した実施形態５の動作を示すフローチャートである。
【図１３】実施形態５の応用例を示す実施形態６の動作を示すフローチャートである。
【図１４】関連する例におけるマルチコアプロセッサシステムを示すブロック図である。
【図１５】関連する例における動画像復号処理の例を示すブロック図である。
【図１６】図１４に開示したシステムの一部を成すメモリアクセス制御装置の関連する例を示すブロック図である。
【図１７】データ先読み間隔と並列実行処理の所要時間との関係を示す図表である。
【符号の説明】
【０１２８】
１，２，３  プロセッサ
１Ａ，１Ｂ，１Ｃ  並列実行スレッド
２Ａ，２Ｂ，２Ｃ  データ先読みスレッド
１１  並列実行処理部
１２  所要時間予測手段
２１  データ先読み処理部
２２  データ先読み制御手段
２３  他プロセッサ監視手段
１０１  マルチコアプロセッサシステム
１２０  メモリコントローラ
１３０  キャッシュメモリ
１４０  メインメモリ
２００  スレッド間通信手段
５１４  動き補償部
５１５  フレームメモリ部
５１６  加算部
５２１  可変長符号復号部
５２２  可変長符号復号所要時間予測部
２００１  並列実行処理の所要時間
２００２  データ先読処理の所要時間
２００３  データ先読み間隔最適点
【図１】
2008108129.tif 000003
【図２】
2008108129.tif 000004
【図３】
2008108129.tif 000005
【図４】
2008108129.tif 000006
【図５】
2008108129.tif 000007
【図６】
2008108129.tif 000008
【図７】
2008108129.tif 000009
【図８】
2008108129.tif 000010
【図９】
2008108129.tif 000011
【図１０】
2008108129.tif 000012
【図１１】
2008108129.tif 000013
【図１２】
2008108129.tif 000014
【図１３】
2008108129.tif 000015
【図１４】
2008108129.tif 000016
【図１５】
2008108129.tif 000017
【図１６】
2008108129.tif 000018
【図１７】
2008108129.tif 000019
【手続補正書】
【提出日】平成20年5月19日(2008.5.19)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
データ先読みを実行するデータ先読みスレッド及び前記データ先読みと並行して実行処理を行う並列実行スレッドからなるタスクをマルチプロセッサがキャッシュメモリにアクセスして処理する際に、前記データ先読み処理の前記キャッシュメモリへのアクセスを制御するメモリアクセス制御システムであって、
前記並列実行スレッドでの並列処理の入力値により変動するデータフローに適応した前記データ先読みスレッドでのデータ先読み処理の間隔を制御するデータ先読み制御手段を有することを特徴とするメモリアクセス制御システム。
【請求項２】
前記並列実行スレッドでの並列処理の入力値に基づいて前記並列処理の所要時間を予測する所要時間予測手段を有し、
前記データ先読み制御手段は、前記所要時間予測手段が予測した所要時間に基づいて前記データ先読み処理の間隔を制御する制御パラメータを決定する請求項１に記載のメモリアクセス制御システム。
【請求項３】
前記データ先読み制御手段は、前記データ先読みスレッドの処理を実行するプロセッサ以外の他のプロセッサによる処理状況を監視する他プロセッサ監視手段を含み、
前記データ先読み制御手段は、前記他プロセッサ監視手段が監視するプロセッサによる処理状況と前記データ先読みスレッドの処理を実行するプロセッサによる処理状況とを比較して前記データ先読み処理の間隔を制御する請求項１に記載のメモリアクセス制御システム。
【請求項４】
前記並列実行スレッドでの並列処理の入力値に基づいて前記並列処理の所要時間を予測する所要時間予測手段を有し、
前記データ先読み制御手段は、前記データ先読みスレッドの処理を実行するプロセッサ以外の他のプロセッサによる処理状況を監視する他プロセッサ監視手段を含み、
前記データ先読み制御手段は、前記他プロセッサ監視手段が監視するプロセッサによる前記並列実行スレッドでの処理状況と、前記データ先読みスレッドの処理を実行するプロセッサによる処理状況と、前記所要時間予測手段が予測した所要時間とに基づいて前記データ先読み処理の間隔を制御する請求項１に記載のメモリアクセス制御システム。
【請求項５】
前記データ先読み制御手段は、前記所要時間の予測値からメモリアクセス競合が最小限であって、前記データ先読み処理の終了時間が前記並列実行処理の終了時間を超えない最大のデータ先読み間隔をもつ前記データ先読み処理の制御パラメータを決定する請求項２に記載のメモリアクセス制御システム。
【請求項６】
前記データ先読み制御手段は、初期値としてデータ先読み処理の制御パラメータを有し、前記他プロセッサ監視手段が監視するプロセッサによる処理状況に応じて前記制御パラメータの再設定を行う請求項３に記載のメモリアクセス制御システム。
【請求項７】
前記データ先読み制御手段は、前記所要時間予測手段が予測した所要時間の予測値に基づいて前記データ先読みスレッドの処理を実行する制御パラメータを決定し、前記制御パラメータを、前記他プロセッサ監視手段が監視するプロセッサによる前記並列実行スレッドでの処理状況に応じて再設定する請求項４に記載のメモリアクセス制御システム。
【請求項８】
復号画像情報をメモリに格納するためのフレームメモリの該当アドレスのデータを先読みするデータ先読みスレッドと、前記該当アドレスの先読みと並行して、可変長符号復号を行う並列実行スレッドとからなり、前記データ先読みスレッドが先読みするアドレスは逆直交変換で生成される差分画像と動き補償処理で生成される予測画像とを加算した復号画像情報を格納したフレームメモリのアドレスであるタスクをマルチプロセッサがキャッシュメモリにアクセスして処理する際に、前記データ先読み処理の前記キャッシュメモリへのアクセスを制御するメモリアクセス制御システムであって、
前記並列実行スレッドでの可変長符号復号処理の入力値により変動するデータフローに適応した前記データ先読みスレッドでのデータ先読み処理の間隔を制御するデータ先読み制御手段を有することを特徴とするメモリアクセス制御システム。
【請求項９】
データ先読みを実行するデータ先読みスレッド及び前記データ先読みと並行して実行処理を行う並列実行スレッドからなるタスクをマルチプロセッサがキャッシュメモリにアクセスして処理する際に、前記データ先読み処理の前記キャッシュメモリへのアクセスを制御するメモリアクセス制御システムを構成するコンピュータに、
前記並列実行スレッドでの並列処理の入力値により変動するデータフローに適応した前記データ先読みスレッドでのデータ先読み処理の間隔を制御する機能を実行させることを特徴とするメモリアクセス制御プログラム。
【請求項１０】
前記コンピュータに、
前記並列実行スレッドでの並列処理の入力値に基づいて前記並列処理の所要時間を予測する機能と、
前記予測された所要時間に基づいて前記データ先読み処理の間隔を制御する制御パラメータを決定する機能とを実行させる請求項９記載のメモリアクセス制御プログラム。
【請求項１１】
前記コンピュータに、
前記データ先読みスレッドの処理を実行するプロセッサ以外の他のプロセッサによる処理状況を監視する機能と、
前記監視するプロセッサによる処理状況と前記データ先読みスレッドの処理を実行するプロセッサによる処理状況とを比較して前記データ先読み処理の間隔を制御する機能とを実行させる請求項９に記載のメモリアクセス制御プログラム。
【請求項１２】
前記コンピュータに、
前記並列実行スレッドでの並列処理の入力値に基づいて前記並列処理の所要時間を予測する機能と、
前記データ先読みスレッドの処理を実行するプロセッサ以外の他のプロセッサによる処理状況を監視する機能と、
前記監視するプロセッサによる前記並列実行スレッドでの処理状況と、前記データ先読みスレッドの処理を実行するプロセッサによる処理状況と、前記予測された所要時間とに基づいて前記データ先読み処理の間隔を制御する機能とを実行させる請求項９に記載のメモリアクセス制御プログラム。
【請求項１３】
前記コンピュータに、
前記所要時間の予測値からメモリアクセス競合が最小限であって、前記データ先読み処理の終了時間が前記並列実行処理の終了時間を超えない最大のデータ先読み間隔をもつ前記データ先読み処理の制御パラメータを決定する機能を実行させる請求項１０に記載のメモリアクセス制御プログラム。
【請求項１４】
前記コンピュータに、
初期値として記憶したデータ先読み処理の制御パラメータを、前記監視するプロセッサによる処理状況に応じて再設定する機能を実行させる請求項１１に記載のメモリアクセス制御プログラム。
【請求項１５】
前記コンピュータに、
前記予測された所要時間の予測値に基づいて前記データ先読みスレッドの処理を実行する制御パラメータを決定し、前記制御パラメータを、前記監視するプロセッサによる前記並列実行スレッドでの処理状況に応じて再設定する機能を実行させる請求項１２に記載のメモリアクセス制御プログラム。
【請求項１６】
復号画像情報をメモリに格納するためのフレームメモリの該当アドレスのデータを先読みするデータ先読みスレッドと、前記該当アドレスの先読みと並行して、可変長符号復号を行う並列実行スレッドとからなり、前記データ先読みスレッドが先読みするアドレスは逆直交変換で生成される差分画像と動き補償処理で生成される予測画像とを加算した復号画像情報を格納したフレームメモリのアドレスであるタスクをマルチプロセッサがキャッシュメモリにアクセスして処理する際に、前記データ先読み処理の前記キャッシュメモリへのアクセスを制御するメモリアクセス制御システムを構成するコンピュータに、
前記並列実行スレッドでの可変長符号復号処理の入力値により変動するデータフローに適応した前記データ先読みスレッドでのデータ先読み処理の間隔を制御する機能を実行させることを特徴とするメモリアクセス制御プログラム。
【請求項１７】
データ先読みを実行するデータ先読みスレッド及び前記データ先読みと並列して実行処理を行う並列実行スレッドからなるタスクをマルチプロセッサで処理する際に、データ先読み処理においてキャッシュメモリへのアクセスを制御するメモリアクセス制御方法であって、
前記並列実行スレッドでの並列処理の入力値により変動するデータフローに適応した前記データ先読みスレッドでのデータ先読み処理の間隔を制御することを特徴とするメモリアクセス制御方法。
【請求項１８】
前記並列実行スレッドでの並列処理の入力値に基づいて前記並列処理の所要時間を予測し、
前記予測された所要時間に基づいて前記データ先読み処理の間隔を制御する制御パラメータを決定する請求項１７に記載のメモリアクセス制御方法。
【請求項１９】
前記データ先読みスレッドの処理を実行するプロセッサ以外の他のプロセッサによる処理状況を監視し、
前記監視するプロセッサによる処理状況と前記データ先読みスレッドの処理を実行するプロセッサによる処理状況とを比較して前記データ先読み処理の間隔を制御する請求項１７に記載のメモリアクセス制御方法。
【請求項２０】
前記並列実行スレッドでの並列処理の入力値に基づいて前記並列処理の所要時間を予測し、
前記データ先読みスレッドの処理を実行するプロセッサ以外の他のプロセッサによる処理状況を監視し、
前記監視するプロセッサによる前記並列実行スレッドでの処理状況と、前記データ先読みスレッドの処理を実行するプロセッサによる処理状況と、前記所要時間予測手段が予測した所要時間とに基づいて前記データ先読み処理の間隔を制御する請求項１７に記載のメモリアクセス制御方法。
【請求項２１】
前記所要時間の予測値からメモリアクセス競合が最小限であって、前記データ先読み処理の終了時間が前記並列実行処理の終了時間を超えない最大のデータ先読み間隔をもつ前記データ先読み処理の制御パラメータを決定する請求項１８に記載のメモリアクセス制御方法。
【請求項２２】
初期値として設定したデータ先読み処理の制御パラメータを、前記監視するプロセッサによる処理状況に応じて再設定する請求項１９に記載のメモリアクセス制御方法。
【請求項２３】
前記予測された所要時間の予測値に基づいて前記データ先読みスレッドの処理を実行する制御パラメータを決定し、前記制御パラメータを、前記監視するプロセッサによる前記並列実行スレッドでの処理状況に応じて再設定する請求項２０に記載のメモリアクセス制御方法。
【国際調査報告】
2008108129.tif 000020
2008108129.tif 000021
2008108129.tif 000022
2008108129.tif 000023