(57)【要約】      （修正有）【課題】主メモリ上のデータをＤＭＡ処理で局所メモリに転送する情報処理装置およびプログラムにおいて、ＤＭＡ処理の同期処理を軽減し全体として処理速度を向上すること。【解決手段】局所メモリに移行先アドレス格納部を設け、マイクロプロセッサによる第１のＤＭＡコマンドの発行で実行される，マイクロプロセッサの制御移行先のデータの主メモリから局所メモリへの転送を行う第１のＤＭＡ処理の完了前は、あらかじめ移行先アドレス格納部に、第１のＤＭＡコマンドに対応する第１のＤＭＡ処理が完了していない場合にマイクロプロセッサの制御が移行すべき処理の先頭アドレスを書き込み、第１のＤＭＡコマンドに対応する第１のＤＭＡ処理の完了に続いて完了される第２のＤＭＡ処理として、第１のＤＭＡ処理が完了している場合にマイクロプロセッサの制御が移行する処理の先頭アドレスを移行先アドレス格納部に上書きする。【選択図】図２
2005190293.tif 000002
【特許請求の範囲】
【請求項１】
マイクロプロセッサと、
前記マイクロプロセッサがアクセス可能な局所メモリと、
前記局所メモリへ転送するべきデータおよび／またはコードを保持する主メモリと、
前記マイクロプロセッサによるＤＭＡコマンドの発行により前記局所メモリへ前記主メモリからデータおよび／またはコードを転送するように制御するＤＭＡ制御部とを具備し、
前記局所メモリが移行先アドレス格納部を有し、
前記マイクロプロセッサによる第１のＤＭＡコマンドの発行で実行される第１のＤＭＡ処理の完了前において、あらかじめ前記移行先アドレス格納部に、前記第１のＤＭＡコマンドに対応する前記第１のＤＭＡ処理が完了しなかった場合に前記マイクロプロセッサの制御が移行する処理の先頭アドレスを書き込み、
前記第１のＤＭＡコマンドに対応する前記第１のＤＭＡ処理の完了に続いて完了される第２のＤＭＡ処理として、前記主メモリが保持する、前記第１のＤＭＡ処理が完了している場合に前記マイクロプロセッサの制御が移行する処理の先頭アドレスを前記局所メモリに転送しかつ前記移行先アドレス格納部に上書きするように前記マイクロプロセッサが第２のＤＭＡコマンドを発行し、
前記マイクロプロセッサが、前記第１および第２のＤＭＡコマンドの発行後、前記移行先アドレス格納部に格納されたアドレスを参照して制御を移行すること
を特徴とする情報処理装置。
【請求項２】
前記第１のＤＭＡ処理が完了している場合に前記マイクロプロセッサの制御が移行する前記処理の先頭アドレスが、前記第１のＤＭＡ処理によって前記主メモリから前記局所メモリに転送されたコードの格納される前記局所メモリの先頭アドレスであることを特徴とする請求項１記載の情報処理装置。
【請求項３】
前記局所メモリがウエイトキューをさらに有し、
前記マイクロプロセッサが、前記第１のＤＭＡコマンドが発行されたときに前記第１のＤＭＡ処理を前記ウエイトキューに登録し、前記第１のＤＭＡ処理の結果を用いる処理のときに前記ウエイトキューの前記登録を削除すること
を特徴とする請求項１記載の情報処理装置。
【請求項４】
前記マイクロプロセッサがマルチスレッド対応であり、
前記マイクロプロセッサの各スレッドで前記移行先アドレス格納部が共有されていること
を特徴とする請求項１記載の情報処理装置。
【請求項５】
マイクロプロセッサと、前記マイクロプロセッサがアクセス可能な局所メモリと、前記局所メモリへ転送するべきデータおよび／またはコードを保持する主メモリと、前記マイクロプロセッサによるＤＭＡコマンドの発行により前記局所メモリへ前記主メモリからデータおよび／またはコードを転送するように制御するＤＭＡ制御部とを具備する情報処理装置で実行される情報処理プログラムであって、
前記局所メモリに移行先アドレス格納部を設定するステップと、
前記マイクロプロセッサによる第１のＤＭＡコマンドの発行で実行される第１のＤＭＡ処理の完了前において、あらかじめ前記移行先アドレス格納部に、前記第１のＤＭＡコマンドに対応する前記第１のＤＭＡ処理が完了しなかった場合に前記マイクロプロセッサの制御が移行する処理の先頭アドレスを書き込むステップと、
前記第１のＤＭＡコマンドに対応する前記第１のＤＭＡ処理の完了に続いて完了される第２のＤＭＡ処理として、前記主メモリが保持する、前記第１のＤＭＡ処理が完了している場合に前記マイクロプロセッサの制御が移行する処理の先頭アドレスを前記局所メモリに転送しかつ前記移行先アドレス格納部に上書きするように前記マイクロプロセッサが第２のＤＭＡコマンドを発行するステップと、
前記マイクロプロセッサが、前記第１および第２のＤＭＡコマンドの発行後、前記移行先アドレス格納部に格納されたアドレスを参照して制御を移行するステップと
を前記情報処理装置に実行させる情報処理プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、メインメモリ（主メモリ）上に展開されたデータやコードにより情報処理を行う情報処理装置および情報処理プログラムに係り、特に、マイクロプロセッサの処理速度向上に適する情報処理装置および情報処理プログラムに関する。
【背景技術】
【０００２】
例えばパソコンのような情報処理装置の分野では、マイクロプロセッサのクロック周波数が高くなるにしたがって、メモリアクセスのレイテンシがプロセッサの性能向上の妨げになってきている。従来、高速小容量のキャッシュメモリをマイクロプロセッサに搭載することで、この遅れを回避してきたが、プロセッサのクロック周波数が、相対的に高くなるにつれて、キャッシュミスによるメモリアクセスのレイテンシが、プログラムの実行性能のボトルネックになってきている。また、マルチメディア処理や大規模データの検索処理など、プログラムの扱うデータサイズが大きくなってきているため、キャッシュミスヒットの頻度も高くなる傾向にある。
【０００３】
このような場合の処理速度の低下を防止する方法として、例えば特開２０００−１２２８８０号公報に記載されたような、ＤＭＡ（direct memory access）を利用してキャッシュメモリを活用するものがある。この技術はキャッシュメモリを用いる意味では従来のやり方を踏襲したものである。また、このほかには、アクセスするデータをあらかじめキャッシュメモリにロードするプリフェッチ命令を実装する方法もある。さらに、１つのプロセッサに複数のレジスタセットを実装して、メモリアクセスでパイプラインがストールしている間に、他のレジスタセットを使って、別のスレッドを実行するハイパーマルチスレッドなどの技術もある。
【特許文献１】特開２０００−１２２８８０号公報
【発明の開示】
【発明が解決しようとする課題】
【０００４】
ＤＭＡを利用する場合に、キャッシュのデータ入れ替えをソフトウェアで制御し、メインメモリからキャッシュへ、または、キャッシュからメインメモリへのデータ転送をＤＭＡコマンドによって行うことで、高速なデータアクセスを実現することが可能である。この場合、プログラムはＤＭＡを意識するため、転送先がキャッシュメモリである必要はなく、ある限られたアドレスに配置されたローカルメモリ（局所メモリ）が転送先となる構成を採用し得る。
【０００５】
ＤＭＡコマンドによるデータ転送は、マイクロプロセッサにおけるプログラムの処理と非同期に行うため、通常、マイクロプロセッサにおける処理においてＤＭＡ処理が完了したかどうかをチェックしなければならない。ＤＭＡ処理の完了チェックは、ＤＭＡコントローラが完了通知を行うためマイクロプロセッサへ割り込む方法と、マイクロプロセッサからＤＭＡコントローラへアクセスして終了したかどうかのステータスを読み取る方法（ポーリング）の２通りがある。これらは、通常、アプリケーションやシステムプログラムが用途に応じて使い分けている。このようなＤＭＡ処理の完了チェックや、それに伴う待ち合わせ処理はＩＯ（input/output）処理の基本的なテクニックでもあり、組み合わせて使用することもできる。
【０００６】
割り込みによるＤＭＡ処理の同期方法は、ＤＭＡコントローラへ問い合わせる手間が必要ないが、ＤＭＡ処理完了のたびに、割り込みを処理するためのオーバーヘッド（負担）が生じてしまう。また、ポーリングによる方法は、完了を問い合わせる手間のほかに、問い合わせた時点でＤＭＡ処理が完了していない場合に、その場でスピンループして待つか、あるいは、別の処理への切り替える処理が必要である。
【０００７】
通常のＩＯ処理であれば、ある程度まとまった単位でリード／ライトするようにプログラムを書けば、ＤＭＡ処理完了での待ち合わせ頻度も低くなり、そのオーバーヘッドは、全体性能からみてごく小さいものにすることができる。しかし、メモリアクセス遅延の問題を解決するために行うＤＭＡ処理は、アクセスパターンがランダムで、実行頻度が高くなる場合があり、ＤＭＡ処理完了での待ち合わせのオーバーヘッドは無視できなくなる。さらに、細かい単位でＤＭＡ処理を行う場合には、ポーリングにおける問い合わせ処理も、無視できないオーバーヘッドになってくる。
【０００８】
また、ＤＭＡ処理で転送される先が、キャッシュメモリではなく、限られた容量のローカルメモリである構成の場合、プログラムデータのみでなくプログラムコードもＤＭＡ処理して入れ替える必要があり、ＤＭＡ処理の頻度はさらに高くなる。そして、このような小さなローカルメモリの場合は、プログラムコードを小さく分割して実行することになり、分割したコードをスケジュールするための手間が必要になる。
【０００９】
本発明は、上記した事情を考慮してなされたもので、メインメモリ上に展開されたデータやコードをＤＭＡ処理でローカルメモリに転送しこのローカルメモリ上のデータやコードにアクセスすることにより情報処理を行う情報処理装置および情報処理プログラムにおいて、ＤＭＡ処理の同期処理を軽減し全体として処理速度を向上することが可能な情報処理装置および情報処理プログラム提供することを目的とする。
【課題を解決するための手段】
【００１０】
上記の課題を解決するため、本発明に係る情報処理装置は、マイクロプロセッサと、前記マイクロプロセッサがアクセス可能な局所メモリと、前記局所メモリへ転送するべきデータおよび／またはコードを保持する主メモリと、前記マイクロプロセッサによるＤＭＡコマンドの発行により前記局所メモリへ前記主メモリからデータおよび／またはコードを転送するように制御するＤＭＡ制御部とを具備し、前記局所メモリが移行先アドレス格納部を有し、前記マイクロプロセッサによる第１のＤＭＡコマンドの発行で実行される第１のＤＭＡ処理の完了前において、あらかじめ前記移行先アドレス格納部に、前記第１のＤＭＡコマンドに対応する前記第１のＤＭＡ処理が完了しなかった場合に前記マイクロプロセッサの制御が移行する処理の先頭アドレスを書き込み、前記第１のＤＭＡコマンドに対応する前記第１のＤＭＡ処理の完了に続いて完了される第２のＤＭＡ処理として、前記主メモリが保持する、前記第１のＤＭＡ処理が完了している場合に前記マイクロプロセッサの制御が移行する処理の先頭アドレスを前記局所メモリに転送しかつ前記移行先アドレス格納部に上書きするように前記マイクロプロセッサが第２のＤＭＡコマンドを発行し、前記マイクロプロセッサが、前記第１および第２のＤＭＡコマンドの発行後、前記移行先アドレス格納部に格納されたアドレスを参照して制御を移行することを特徴とする。
【００１１】
この情報処理装置は、上記のように、マイクロプロセッサがアクセス可能な局所メモリを有し、かつ、マイクロプロセッサによるＤＭＡコマンドの発行により局所メモリへ主メモリからデータおよび／またはコードを転送するように制御するＤＭＡ制御部が介在する構成であることを前提とする。
【００１２】
局所メモリには移行先アドレス格納部があり、マイクロプロセッサがＤＭＡ制御部にＤＭＡ（第１のＤＭＡ）処理を命ずるＤＭＡコマンドを発行するときまたはそのＤＭＡ処理の完了の前に、この格納部に、あらかじめこの処理が終了しなかったときに移行する処理の先頭アドレスを書き込んでおく。また、このＤＭＡ処理に付帯するＤＭＡ（第２のＤＭＡ）処理を命ずるコマンドも発行する。第１のＤＭＡの完了に続いて第２のＤＭＡの完了するようにＤＭＡ制御部が動作するようにしておき、第２のＤＭＡ処理は、第１のＤＭＡ処理が完了している場合にマイクロプロセッサの制御が移行する処理の先頭アドレスを主メモリから局所メモリに転送して上記移行先アドレス格納部に上書きする、というものにする。
【００１３】
このような構成により、マイクロプロセッサが、第１および第２のＤＭＡコマンドの発行後、移行先アドレス格納部に格納されたアドレスを参照して制御を移行すると、自動的に、その時点で第１のＤＭＡ処理が完了していなければ当初書き込みのアドレスに、第１のＤＭＡ処理が完了していれば上書きされたアドレスに飛ぶ（ディスパッチする）ことができる。すなわち、マイクロプロセッサ側からＤＭＡ制御部に第１のＤＭＡ処理の完了を問い合わせることも、ＤＭＡ制御部からマイクロプロセッサ側に第１のＤＭＡ処理の完了通知割り込みをすることも必要なく、円滑な制御の移行がなされる。したがって、ＤＭＡ処理の同期処理を軽減し全体としての処理速度を向上することができる。
【００１４】
また、見方を変えると、従来は必要であった、ＤＭＡ処理の完了／未完了に応じたマイクロプロセッサにおける分岐処理が、分岐処理ではなく通常の縦続処理になるので、例えばマイクロプロセッサがパイプライン処理を行う場合にも有利である。すなわち、分岐先がはずれたために先読みしたコードを無駄に捨てる可能性が激減し処理速度の低下防止に資するからである。
【００１５】
また、本発明に係る情報処理プログラムは、マイクロプロセッサと、前記マイクロプロセッサがアクセス可能な局所メモリと、前記局所メモリへ転送するべきデータおよび／またはコードを保持する主メモリと、前記マイクロプロセッサによるＤＭＡコマンドの発行により前記局所メモリへ前記主メモリからデータおよび／またはコードを転送するように制御するＤＭＡ制御部とを具備する情報処理装置で実行される情報処理プログラムであって、前記局所メモリに移行先アドレス格納部を設定するステップと、前記マイクロプロセッサによる第１のＤＭＡコマンドの発行で実行される第１のＤＭＡ処理の完了前において、あらかじめ前記移行先アドレス格納部に、前記第１のＤＭＡコマンドに対応する前記第１のＤＭＡ処理が完了しなかった場合に前記マイクロプロセッサの制御が移行する処理の先頭アドレスを書き込むステップと、前記第１のＤＭＡコマンドに対応する前記第１のＤＭＡ処理の完了に続いて完了される第２のＤＭＡ処理として、前記主メモリが保持する、前記第１のＤＭＡ処理が完了している場合に前記マイクロプロセッサの制御が移行する処理の先頭アドレスを前記局所メモリに転送しかつ前記移行先アドレス格納部に上書きするように前記マイクロプロセッサが第２のＤＭＡコマンドを発行するステップと、前記マイクロプロセッサが、前記第１および第２のＤＭＡコマンドの発行後、前記移行先アドレス格納部に格納されたアドレスを参照して制御を移行するステップとを前記情報処理装置に実行させる。
【００１６】
この情報処理プログラムの作用は、ほぼ上記の情報処理装置での作用と同じである。
【発明の効果】
【００１７】
本発明によれば、マイクロプロセッサ側からＤＭＡ制御部にＤＭＡ処理の完了を問い合わせることも、ＤＭＡ制御部からマイクロプロセッサ側にＤＭＡ処理の完了通知割り込みをすることも必要ないので、ＤＭＡ処理の同期処理を軽減し全体としての処理速度を向上することができる。パイプライン処理を行うときにはさらに有利である。
【発明を実施するための最良の形態】
【００１８】
本発明の実施態様として、前記第１のＤＭＡ処理が完了している場合に前記マイクロプロセッサの制御が移行する前記処理の先頭アドレスが、前記第１のＤＭＡ処理によって前記主メモリから前記局所メモリに転送されたコードの格納される前記局所メモリの先頭アドレスであるようにしてもよい。このようにすれば、近い将来に実行するコードを主メモリから局所メモリにＤＭＡ処理により転送するようにして、プログラムのオーバーレイ処理が可能になる。
【００１９】
また、実施態様として、前記局所メモリがウエイトキューをさらに有し、前記マイクロプロセッサが、前記第１のＤＭＡコマンドが発行されたときに前記第１のＤＭＡ処理を前記ウエイトキューに登録し、前記第１のＤＭＡ処理の結果を用いる処理のときに前記ウエイトキューの前記登録を削除する、としてもよい。このようにウエイトキューを設けて処理途上のＤＭＡ処理を管理することにより、例えば多重的にＤＭＡ処理がなされる場合にもＤＭＡ処理の結果を用いる処理についてのスケジュールを管理することができる。
【００２０】
また、実施態様として、前記マイクロプロセッサがマルチスレッド対応であり、前記マイクロプロセッサの各スレッドで前記移行先アドレス格納部が共有されているとしてもよい。このようにすると、各スレッドでなされたＤＭＡ処理の結果を他のスレッドが融通・使用することができ、より柔軟性の高い処理ができる。ここでも、ウエイトキューへの登録を第１のＤＭＡコマンドが発行されたときにし、その削除は、第１のＤＭＡ処理が完了している場合にマイクロプロセッサの制御が移行する処理の先頭アドレスが参照されて、マイクロプロセッサの制御が移行したときにすることができる。
【００２１】
以上を踏まえ、以下では本発明の実施形態を図面を参照しながら説明する。図１は、本発明の一実施形態に係る情報処理装置の構成を示すブロック図である。同図に示すように、この情報処理装置は、マイクロプロセッサ１１、ローカルメモリ１２、ＤＭＡ制御部１３、バス１４、メインメモリ１５、Ｉ／Ｏインターフェース１６、ネットワークインターフェース１７を有する。図示するように、マイクロプロセッサ１１、ローカルメモリ１２、ＤＭＡ制御部１３については、他のマイクロプロセッサ１１１、ローカルメモリ１２１、ＤＭＡ制御部１３１の組が複数存在してもよい（マルチプロセッサ構成）。以下では、説明簡単化のためマイクロプロセッサ１１、ローカルメモリ１２、ＤＭＡ制御部１３が単一の組として存在する場合を説明する。
【００２２】
マイクロプロセッサ１１は、ローカルメモリ１２上に転送されたデータ（プログラムデータ）やコード（プログラムコード）を用いて各種の処理を行うものである。ローカルメモリ１２に対してはソフトウエアでアドレッシングが可能である。この意味でローカルメモリ１２は、メインメモリ１５のアドレスと特定の対応づけがなされるキャッシュメモリと異なる。マイクロプロセッサ１１の処理としては、高速処理のため周知の種々の技術が適用され得るものと考え得る。例えば、ＧＨｚ帯の高速クロック、多段（例えば２０段）のパイプライン処理、マルチスレッド処理（マルチスレッド処理に関しては切り離して別図面でも言及する。）などである。
【００２３】
マイクロプロセッサ１１は、ＤＭＡ制御部１３に対してはＤＭＡコマンドを発行する。これによりＤＭＡ制御部１３は、そのコマンドに対応するＤＭＡ処理を行う。ＤＭＡ処理は、マイクロプロセッサ１１の動作とは非同期になされ、メインメモリ１５からバス１４を介して必要なデータやコードをローカルメモリ１２の所定の領域に転送する。あるいはその転送方向が反対の処理を行う。マイクロプロセッサ１１は、バス１４を介して直接にメインメモリ１５にアクセスすることに代えて、ＤＭＡコマンド発行の結果ローカルメモリ１２に転送されるデータやコードへアクセスすることにより、高速のメモリアクセスを実現する。ハードウエアとしてローカルメモリ１２はメインメモリ１５に比べてアクセス速度が数段高速である。
【００２４】
ローカルメモリ１２は、マイクロプロセッサ１１が行う処理の直接のデータ格納領域、コード格納領域となるメモリである。それらの必要なデータやコードはバス１４を介してＤＭＡ制御部１３の制御動作によりメインメモリ１５から転送され得、かつ処理により得られたデータはまたＤＭＡ処理によりメインメモリ１５にバス１４を介して転送され得る。ＤＭＡ制御部１３は、マイクロプロセッサ１１が行う処理のひとつであるＤＭＡコマンドの発行に応じて、対応するＤＭＡ処理を行うものである。ここで、ＤＭＡコマンドの発行は、例えば、リスト形式により複数のＤＭＡ処理を指定してなされるようにすることができる。いずれにしてもＤＭＡ制御部１３はマイクロプロセッサ１１の動作とは非同期なので、ＤＭＡコマンドに対してＤＭＡ制御部１３の動作をいかようにするかには融通性がある。
【００２５】
融通性のひとつとして、ここでは、指令（マイクロプロセッサ１１からの）により、ＤＭＡコマンドが発行された順序（リスト形式であればＤＭＡコマンドが記述された順序）に、対応するＤＭＡ処理を完了するように動作する機能を有するものとする。マイクロプロセッサ１１がこのようなＤＭＡ制御部１３の機能を利用するとき、ＤＭＡ処理の結果を利用するマイクロプロセッサ１１の処理において、完了順序が保証されていることによるある種の利点を得ることができる。詳しくは後述する。
【００２６】
Ｉ／Ｏインターフェース１６は、キーボードやマウスなどの入力機器や表示装置やプリンタなどの出力機器とのインターフェースである。ネットワークインターフェース１７は、イントラネットやインターネットなどの各種のネットワークとのインターフェースである。これらのインターフェース１６、１７はバス１４に接続されている。
【００２７】
図１について補足すると、この図は本発明の一実施形態として動作を説明するのに必要十分な範囲で示したものであり、マイクロプロセッサ１１がメモリアクセスという意味でローカルメモリ１２、ＤＭＡ制御部１３を介してバス１４に接続されている関係を記述している。しかしながら実際には、例えば、マイクロプロセッサ１１は、割り込み処理を行うため割り込みコントローラを介してバス１４に接続されるという関係などもあり得る。
【００２８】
次に図１に示した実施形態たる情報処理装置の動作を図２に示す流れ図をも参照して説明する。図２は、図１に示した情報処理装置の基本的動作フローを、動作フローの比較例と対比して示す流れ図である。図２（ａ）が図１に示した情報処理装置の基本的動作フローであり、図２（ｂ）が比較例としての動作フローである。両者ともマイクロプロセッサ１１の能動的動作として記述している（点線部分を除く）。
【００２９】
説明の都合上、図２（ｂ）から説明を始める。一般にマイクロプロセッサ１１がＤＭＡコマンドαを発行する場合には、そのコマンドαに対応するＤＭＡ処理ａの結果を用いるマイクロプロセッサ１１における処理がそのあとになされるはずである。コマンドαが発行されてからこれがＤＭＡ制御部１３の動作により完了するまでにはある程度の時間がかかる。そこで一般的には、その間にまた別の処理Ｋをマイクロプロセッサ１１が実行するようにプログラムが組まれる。
【００３０】
これを踏まえると、処理の流れとしては、図２（ｂ）に示すように、ＤＭＡコマンドαの発行（ステップ３１）、処理Ｋの実行（ステップ３２）、コマンドαに対応するＤＭＡ処理ａの完了チェック（ステップ３３）、ＤＭＡ処理ａが完了していればＤＭＡ処理ａの結果を用いる処理Ａの実行（ステップ３４）、ＤＭＡ処理ａが完了していなければまた別の処理Ｘ（単にＤＭＡ処理ａの完了を待つ場合を含む）の実行（ステップ３５）、という一般的な流れになる。このような処理は、すでに述べたように、完了を問い合わせる手間、完了を待つ負担や無駄があり、高速処理化のネックになる。
【００３１】
そこで、本実施形態では、図２（ａ）に示すように処理を行う。まず、ＤＭＡコマンドα、βを発行する（ステップ２１）。コマンドαは上記でも述べた本来ここで目的とするＤＭＡ処理ａに対応するものである。コマンドβは、ＤＭＡ処理ａに付随するＤＭＡ処理ｂを行うためのものであり、コマンドαとコマンドβとはここで、それらの対応するＤＭＡ処理ａ、ｂがその発行された（リスト記載された）順に（すなわち、ＤＭＡ処理ａ、ＤＭＡ処理ｂの順に）完了するようにＤＭＡ制御部１３に指令される。ＤＭＡ処理ｂの内容は後述する。
【００３２】
次に、処理Ｘ（すなわち処理Ｋの実行後の時点でＤＭＡ処理ａが完了しない場合に移行する処理）の先頭アドレスを、ローカルメモリ１２にある移行先アドレス格納部に書き込む（ステップ２２）。なお、移行先アドレス格納部は、ローカルメモリ１２にそのための領域をあらかじめ設定しておく。この書き込みのあと処理Ｋを実行する（ステップ２３）。
【００３３】
処理Ｋの実行中に、ＤＭＡ制御部１３はＤＭＡ処理ａ、ＤＭＡ処理ｂを順に完了させるべく動作する。ＤＭＡ処理ｂは、メインメモリ１５が保持する、処理Ａ（すなわちＤＭＡ処理ａの結果を用いる処理）の先頭アドレスをローカルメモリ１２に転送し、これを上記移行先アドレス格納部に上書きするというごく低負担のＤＭＡ処理である。よってＤＭＡ処理ａが完了すると直ちにＤＭＡ処理ｂが完了するため、ＤＭＡ処理ａが処理Ｋの実行中に完了した場合には、ステップ２４に示されるように、移行先アドレス格納部には処理Ａの先頭アドレスが上書きされることになる（当然、処理Ｋの実行中にＤＭＡ処理ａが完了しなかった場合にはステップ２４の動作は生じない）。なお、処理Ａの先頭アドレスをメインメモリ１５が保持している、という前提は、そのようにメインメモリ１５上にあらかじめ書き込まれていることを要する。その意味で、転送元メインメモリ領域１５ａとメインメモリ領域１５ｂとは特定の関連付けのされたメモリ領域である。
【００３４】
マイクロプロセッサ１１は、処理Ｋの実行後、ローカルメモリ１２の移行先アドレス格納部の内容をロードして参照し、かつロード後に移行先アドレス格納部をクリアする（ステップ２５）。そして、ロードされた内容のアドレスに移行（ディスパッチ）して処理を続ける（ステップ２６）。このような一連の処理によれば、その流れは実質的に図２（ｂ）に示すものと同じになる。すなわち、処理Ｋの実行の間にＤＭＡ処理ａが完了していれば処理Ａにディスパッチし、完了していなければ処理Ｘにディスパッチする。よって、マイクロプロセッサ１１側からＤＭＡ制御部１３にＤＭＡ処理ａの完了を問い合わせることも、もちろんＤＭＡ制御部１３からマイクロプロセッサ１１側にＤＭＡ処理ａの完了通知割り込みをすることも必要ない。したがって、ＤＭＡ処理の同期処理を軽減し全体としての処理速度を向上することができる。
【００３５】
また、図２（ｂ）に示すようなＤＭＡ処理ａに伴う分岐処理が、図２（ａ）に示すような単なる縦続処理になったことから、マイクロプロセッサ１１がパイプライン処理を行う場合にはさらに処理速度向上の点で有利になる。これは、分岐先予測ミスで、先読みしたコードを無駄に捨てる可能性がこの場合にはなくなるからである。
【００３６】
図３は、図２に示した基本的動作フローに即して示す図１の情報処理装置の主要部構成を示すブロック図である。図３において、図１に示した構成と同一のものには同一符号を付してある。
【００３７】
説明が重複的ではあるが、動作の流れに沿って一応説明すると、マイクロプロセッサ１１はＤＭＡ制御部１３に本来のＤＭＡコマンドαのほかにこれに付随してＤＭＡコマンドβを発行する（丸１）。また、マイクロプロセッサ１１は、ローカルメモリ１２に設定された移行先アドレス格納部１２ａに、ＤＭＡ処理ａが完了していない場合に移行するアドレス（処理Ｘの先頭アドレス）を書き込む（丸２）。
【００３８】
ＤＭＡ制御部１３は、ＤＭＡ処理ａとして、メインメモリ１５の所定の転送元メインメモリ領域１５ａにあるデータまたはコードをローカルメモリ１２の所定の転送先ローカルメモリ領域１２ｂに転送する（丸３）。ＤＭＡ処理ａの完了後、ＤＭＡ処理ｂとして、転送元メインメモリ領域１５ａに付随するメインメモリ領域１５ｂに保持された処理Ａの先頭アドレスをローカルメモリ１２の移行先アドレス格納部１２ａに転送・上書きする（丸４）。
【００３９】
マイクロプロセッサ１１は、ＤＭＡコマンドα、βの発行後、処理Ｋを実行し、次にローカルメモリ１２の移行先アドレス格納部１２ａの内容をロードして参照し、その内容が示すアドレスに制御を移行する。このとき、自動的に、ＤＭＡ処理ａが完了していれば処理Ａに移行し、完了していなければ処理Ｘに移行することになる。
【００４０】
なお、以上の図１ないし図３を参照する説明においては、処理Ａを、単に「ＤＭＡ処理ａの結果を用いる処理」として説明しているが、これは、ＤＭＡ処理ａで転送されるものがデータである場合とコードである場合の一方または両方が考えられる。データである場合はマイクロプロセッサ１１の処理で用いられるデータがメインメモリ１５からローカルメモリ１２に転送される。
【００４１】
コードである場合は、近い将来（ＤＭＡ処理ａが完了するくらいの時点）に実行すべきプログラムコードをメインメモリ１５からローカルメモリ１２へタイミングよく転送しておくという目的を達することができる。換言するとプログラムコードのローカルメモリ１２への入れ替えに伴う同期処理を円滑に行うことができる。この場合には、ＤＭＡ処理ａが完了している場合の処理Ａのローカルメモリ１２内での先頭アドレスが、ＤＭＡ処理ａによってメインメモリ１５からローカルメモリ１２に転送されたコードの格納される転送先ローカルメモリ領域１２ｂの先頭アドレスと同一となる。
【００４２】
また、上記の説明では、ＤＭＡ処理ａとしてこれが単一のＤＭＡ処理であるものとして説明しているが、複数のＤＭＡ処理の集合であってもよいことは当然である。複数のＤＭＡ処理である場合には、それらのうち最後に完了するＤＭＡ処理の完了のあとでＤＭＡコマンドβに対応するＤＭＡ処理が完了するように完了順序の保証をしておく。
【００４３】
図４は、図２に示した基本的動作フローに即して示す図１の情報処理装置の主要部構成における、図３に示すものとは別の態様を示すブロック図である。図４においてすでに説明した構成要素には同一符号を付してある。この態様は、マイクロプロセッサがマルチスレッド対応のマイクロプロセッサ１１Ａになっており、図示するようにスレッドＡとスレッドＢが並行して処理を行う点が上記実施形態と異なる。スレッド数は２に限らずともよい。マルチスレッドの前提となるマルチタスクシステムでは、同時に実行される他のプログラムとその相互作用を意識する必要がない。その中でもマルチスレッドシステムは、スレッド間の通信が低負荷で可能にされているという特徴がある。
【００４４】
したがって、このようなマルチスレッド対応のマイクロプロセッサ１１Ａでは、それぞれのスレッドごとに図１ないし図３を参照して説明した動作が可能である。このことを図４は示しており、すなわちそれぞれのスレッドＡ、スレッドＢ、…ごとに他のスレッドの存在を意識せずにすでに説明した動作を行うことができる。
【００４５】
図５は、図２に示した基本的動作フローの変形例を示す流れ図である。この例では、上記説明の動作を行うことを前提として、さらに、その結果がまだ利用されないＤＭＡ処理はウエイトキューに登録（エンキュー）して管理するようにする。その結果がまだ利用されないＤＭＡ処理のウエイトキューへの登録は、したがって、対応するＤＭＡコマンドの発行時であり、ウエイトキューからの削除（デキュー）はそのＤＭＡ処理の結果を用いる処理がなされるときである。
【００４６】
なお、これに加えて、レディキューを設け、例えば、ＤＭＡコマンドを発行してその結果を用いることができない場合に処理Ｘに制御が移行したときに、レディキューから実行可能な他の処理を知得するようにしてその処理を行うようにしてもよい。このようにすれば、ＤＭＡ処理の完了を待つ間に実行可能になっている他の処理を行うことができる。なお、レディキューおよびウエイトキューはローカルメモリ１２の所定の領域に設定しておき、キューとしての性質として登録された順序で各処理を管理する。
【００４７】
図５を参照して説明するに、この図では、すでに図２（ａ）において説明したステップと同一相当のものには同一符号を付してある。その部分の説明を省略すると、まず加えられているのはステップ５１であり、ステップ５１では、ＤＭＡ処理ａをウエイトキューに登録する。この登録は、例えば、ＤＭＡ処理が多重的に行われひとつのみ用意された移行先アドレス格納部１２ａの内容があとのＤＭＡ処理完了により上書きされたときにも最終的には先のＤＭＡ処理ａの結果を用いる処理がなされるようにするためのものである。したがって、この登録は、ＤＡＭ処理ａの結果を用いる処理（すなわち処理Ａ）が実行されるときにその処理の一部として削除される（ステップ５２）。
【００４８】
図５においてステップ２４は、記述の位置が異なるが図２（ａ）に示したものと同じである。ステップ２６のあとのステップ４２は、処理Ｘに移行した場合の処理例を示している。この場合は、レディキューを参照し、実行可能な処理を順に知得し、この知得した処理を順に実行開始し、かつレディキューからこの知得した処理を順に削除（デキュー）する。レディキューに実行可能な処理が登録されていない場合には、その場でＤＭＡ処理ａの完了を待つことにする。
【００４９】
この待ち合わせは、例えばプログラム的にあらかじめ設定しておく。なお、ステップ２６のあと処理Ｘに移行せずの場合（すなわち直接処理Ａに移行した場合）は、その時点でＤＭＡ処理ａが完了しているのでその結果を用いる処理（すなわち処理Ａ）が実行可能である。
【００５０】
以上のようなウエイトキューへの登録、削除を行うことにより、例えば、移行先でもＤＭＡ処理がなされひとつのみ用意された移行先アドレス格納部１２ａの内容があとのＤＭＡ処理完了により上書きされるような場合にも最終的には先のＤＭＡ処理の結果を用いる処理が行われ得る。すなわち、全体として、ＤＭＡ処理の結果を用いる処理の適切なスケジューリングがなされることになる。
【００５１】
図６は、図２に示した基本的動作フローの別の変形例を示す流れ図である。この例は、ウエイトキュー（およびレディキュー）については上記図５における説明と同様である。この図でも、既出の図において説明したステップと同一相当のものには同一符号を付してある。その部分の説明は省略する。
【００５２】
この例では、図６に示すように、移行先アドレス格納部に処理Ｘの先頭アドレスを書き込むタイミングが図５に示した場合と異なる。すなわち、移行先アドレス格納部に処理Ｘの先頭アドレスを書き込んだ状態をデフォルト状態（通常状態）とする。そのため、プログラムの起動時などにおいてまず処理Ｘの先頭アドレスを移行先アドレス格納部に書き込む（ステップ２２）。また、処理途上において移行先アドレス格納部の内容をロードし参照する場合にも、ロード後の移行先アドレス格納部には処理Ｘの先頭アドレスを書き込む（ステップ２５Ａ）。
【００５３】
このような処理によれば、処理Ｘについての設計を画一化してプログラムの単純化に資することができる。特に、移行先でもＤＭＡ処理がなされひとつのみ用意された移行先アドレス格納部１２ａの内容があとのＤＭＡ処理完了により上書きされるような場合にはこの効果がより大きい。
【００５４】
図７は、図５、図６に示した動作フローに即して示す図１の情報処理装置の主要部構成を示すブロック図である。図７において、図１、図２に示した構成と同一のものには同一符号を付してある。
【００５５】
説明が一部重複するが、動作の流れに沿って一応説明すると、マイクロプロセッサ１１はＤＭＡ制御部１３に本来のＤＭＡコマンドαのほかにこれに付随してＤＭＡコマンドβを発行する。また、マイクロプロセッサ１１は、ローカルメモリ１２に設定された移行先アドレス格納部１２ａに、ＤＭＡ処理ａが完了していない場合に移行するアドレス（処理Ｘの先頭アドレス）を書き込む（またはあらかじめ起動時などに書き込んでおく）。さらに、ＤＭＡ処理ａをウエイトキュー１２ｄに登録する。
【００５６】
ＤＭＡ制御部１３は、ＤＭＡ処理ａとして、メインメモリ１５の所定の転送元メインメモリ領域１５ａにあるデータまたはコードをローカルメモリ１２の所定の転送先ローカルメモリ領域１２ｂに転送する。ＤＭＡ処理ａの完了後、ＤＭＡ処理ｂとして、転送元メインメモリ領域１５ａに付随するメインメモリ領域１５ｂに保持された処理Ａの先頭アドレスをローカルメモリ１２の移行先アドレス格納部１２ａに転送・上書きする。
【００５７】
マイクロプロセッサ１１は、ＤＭＡコマンドα、βの発行後、処理Ｋを実行し、次にローカルメモリ１２の移行先アドレス格納部１２ａの内容をロードして参照しかつロード後に移行先アドレス格納部１２ａをクリアする（または移行先アドレス格納部１２ａに処理Ｘの先頭アドレスを書き込む。）。そしてロードされた内容が示すアドレスに制御を移行する。このとき、自動的に、ＤＭＡ処理ａが完了していれば処理Ａに移行し、完了していなければ処理Ｘに移行することになる。処理Ｘに移行の場合には、レディキュー１２ｃに登録された他の処理を開始しその登録を削除する。処理Ａに移行の場合には、その処理の一部としてＤＭＡａをウエイトキュー１２ｄから削除する。
【００５８】
なお、図５、図６、図７の説明に共通するレディーキューについては、これを定義する結果として、上記の説明以外にも多様な活用を考えることができる。例えば、あるＤＭＡ処理が完了していることが例えばポーリングにより知得されているがすぐには実行しない場合にはこれをレディキューに登録しあとで（すなわち処理Ｘの中で）実行することに利用することもできる。
【００５９】
図８は、図３、図４、図７に示したものとは異なる、図１の情報処理装置の主要部構成を示すブロック図ブロック図である。図８において、すでに説明した構成要素には同一符号を付してある。この態様は、図４に示したものと同様にマルチスレッド対応のマイクロプロセッサ１１Ａを用いるが、各スレッドがローカルメモリ１２内に設定された移行先アドレス格納部１２ａを共有するように構成されている点が図４に示したものと異なる。なお、ウエイトキュー（およびレディキュー）についても、各スレッドに共有にローカルメモリ１２に設定される。
【００６０】
このような構成によれば、あるスレッドでなされたＤＭＡ処理の結果を他のスレッドが融通・使用することができるようになるので、より柔軟性の高い処理ができる。なお、共有にされる各構成に対する各スレッドのアクセスは互いに排他的になるようにしてアクセスが競合しないようにしておく。
【図面の簡単な説明】
【００６１】
【図１】本発明の一実施形態に係る情報処理装置の構成を示すブロック図。
【図２】図１に示した情報処理装置の基本的動作フローを、動作フローの比較例と対比して示す流れ図。
【図３】図２に示した基本的動作フローに即して示す図１の情報処理装置の主要部構成を示すブロック図。
【図４】図２に示した基本的動作フローに即して示す図１の情報処理装置の主要部構成における、図３に示すものとは別の態様を示すブロック図。
【図５】図２に示した基本的動作フローの変形例を示す流れ図。
【図６】図２に示した基本的動作フローの別の変形例を示す流れ図。
【図７】図５、図６に示した動作フローに即して示す図１の情報処理装置の主要部構成を示すブロック図。
【図８】図３、図４、図７に示したものとは異なる、図１の情報処理装置の主要部構成を示すブロック図。
【符号の説明】
【００６２】
１１…マイクロプロセッサ、１１Ａ…マルチスレッド対応マイクロプロセッサ、１２…ローカル（局所）メモリ、１２ａ…移行先アドレス格納部、１２ｂ…転送先ローカルメモリ領域、１２ｃ…レディキュー、１２ｄ…ウエイトキュー、１３…ＤＭＡ制御部、１４…バス、１５…メイン（主）メモリ、１５ａ…転送元メインメモリ領域、１５ｂ…転送元メインメモリ領域に付随するメインメモリ領域、１６…Ｉ／Ｏインターフェース、１７…ネットワークインターフェース、１１１…マイクロプロセッサ、１２１…ローカル（局所）メモリ、１３１…ＤＭＡ制御部。
【図１】
2005190293.tif 000003
【図２】
2005190293.tif 000004
【図３】
2005190293.tif 000005
【図４】
2005190293.tif 000006
【図５】
2005190293.tif 000007
【図６】
2005190293.tif 000008
【図７】
2005190293.tif 000009
【図８】
2005190293.tif 000010