(57)【要約】【課題】  ストリームプロセッサによるデータ処理のスループットの低下を抑制して処理能力を向上させることが可能な情報処理装置及びデータ処理方法を提供する。【解決手段】  ディスクリプタをタスクデータ毎にそれぞれ生成し、同一のタスクコマンドを持つディスクリプタどうしを接続してディスクリプタ列を形成し、ディスクリプタ列どうしを接続してディスクリプタキューを形成するディスクリプタキュー生成装置と、タスクデータ及びディスクリプタキューがそれぞれ格納されるメモリと、メモリからディスクリプタキューの構成にしたがってディスクリプタを順次読み出し、読み出したディスクリプタに対応するタスクデータに対して、該ディスクリプタが持つタスクコマンドで指定されるプログラムによる処理を実行するストリームプロセッサとを有する構成とする。【選択図】  図１
2007034392.tif 000002
【特許請求の範囲】
【請求項１】
処理対象であるタスクデータに対して実行するプログラムを指定するタスクコマンドを含むディスクリプタを前記タスクデータ毎にそれぞれ生成し、同一のタスクコマンドを持つ前記ディスクリプタどうしを接続してディスクリプタ列を形成し、前記ディスクリプタ列どうしを接続してディスクリプタキューを形成するディスクリプタキュー生成装置と、
前記タスクデータ及び前記ディスクリプタキューがそれぞれ格納されるメモリと、
前記メモリから前記ディスクリプタキューの構成にしたがって前記ディスクリプタを順次読み出し、読み出したディスクリプタに対応するタスクデータに対して、該ディスクリプタが持つタスクコマンドで指定されるプログラムによる処理を実行するストリームプロセッサと、
を有する情報処理装置。
【請求項２】
前記メモリは、
前記ストリームプロセッサの処理で交互に用いる２つのディスクリプタキューを格納するための領域を備え、
前記ディスクリプタキュー生成装置は、
前記ストリームプロセッサが一方のディスクリプタキューを用いて処理を実行しているとき、前記ストリームプロセッサに次に実行させる処理に用いる他方のディスクリプタキューを形成する請求項１記載の情報処理装置。
【請求項３】
前記ディスクリプタキュー生成装置は、
前記ストリームプロセッサが先行する処理で用いるディスクリプタキューと後続する処理で用いるディスクリプタキューとに同一のタスクコマンドを持つディスクリプタ列が存在する場合、先行する処理で用いるディスクリプタキューの最後のディスクリプタ列と後続する処理で用いるディスクリプタキューの最初のディスクリプタ列のタスクコマンドを一致させる請求項１または２記載の情報処理装置。
【請求項４】
前記メモリは、
前記ストリームプロセッサが一方のディスクリプタキューを用いて処理を実行しているか他方のディスクリプタキューを用いて処理を実行しているかを示す値が格納されるフラグ領域を有する請求項２記載の情報処理装置。
【請求項５】
前記メモリは、
先行する処理で用いるディスクリプタキューの最後のディスクリプタ列が持つタスクコマンドの値が格納されるラストタスクコマンド領域を有する請求項３記載の情報処理装置。
【請求項６】
処理対象であるタスクデータを所定のプログラムにしたがってストリームプロセッサで処理するための情報処理装置のデータ処理方法であって、
ＣＰＵが、前記タスクデータに対して実行するプログラムを指定するタスクコマンドを含むディスクリプタを前記タスクデータ毎にそれぞれ生成し、同一のタスクコマンドを持つ前記ディスクリプタどうしを接続してディスクリプタ列を形成し、前記ディスクリプタ列どうしを接続してディスクリプタキューを形成してメモリへ格納し、
前記ストリームプロセッサが、前記メモリから前記ディスクリプタキューの構成にしたがって前記ディスクリプタを順次読み出し、読み出したディスクリプタに対応するタスクデータに対して、該ディスクリプタが持つタスクコマンドで指定されるプログラムによる処理を実行するデータ処理方法。
【請求項７】
前記メモリに、前記ストリームプロセッサの処理で交互に用いる２つのディスクリプタキューを格納するための領域を備えておき、
前記ストリームプロセッサが一方のディスクリプタキューを用いて処理を実行しているとき、前記ＣＰＵが前記ストリームプロセッサに次に実行させる処理に用いる他方のディスクリプタキューを形成する請求項６記載のデータ処理方法。
【請求項８】
前記ストリームプロセッサが先行する処理で用いるディスクリプタキューと後続する処理で用いるディスクリプタキューとに同一のタスクコマンドを持つディスクリプタ列が存在する場合、前記ＣＰＵが先行する処理で用いるディスクリプタキューの最後のディスクリプタ列と後続する処理で用いるディスクリプタキューの最初のディスクリプタ列のタスクコマンドを一致するように前記ディスクリプタキューを形成する請求項６または７記載のデータ処理方法。
【請求項９】
前記メモリに、前記ストリームプロセッサが実行している処理で用いているディスクリプタキューを示す値が格納されるフラグ領域を備え、
前記ＣＰＵが、前記フラグ領域の値を参照して、前記ストリームプロセッサが一方のディスクリプタキューを用いて処理を実行しているか他方のディスクリプタキューを用いて処理を実行しているかを判定する請求項７記載のデータ処理方法。
【請求項１０】
前記メモリに、先行する処理で用いるディスクリプタキューの最後のディスクリプタ列が持つタスクコマンドの値が格納されるラストタスクコマンド領域を備え、
前記ＣＰＵが、前記ラストタスクコマンド領域の値を参照して、後続する処理で用いるディスクリプタキューの最初に、先行する処理で用いるディスクリプタキューの最後のディスクリプタ列と同一のタスクコマンドを持つディスクリプタ列を配置する請求項８記載のデータ処理方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は各種の処理を実行するストリームプロセッサを備えた情報処理装置及びそのデータ処理方法に関する。
【背景技術】
【０００２】
情報処理装置は、その利用範囲が広がり、より高度な演算処理あるいは画像や動画のように大量のデータを高速に処理する能力が要求されている。このような要求を満たすための手法として、従来、ホストプロセッサとは別に特定の演算や処理を実行するＤＳＰ（Digital Signal Processor）やＡＳＩＣ（Application Specific Integrated Circuit）等を備え、ＣＰＵ等のホストプロセッサの処理負荷を軽減することで情報処理装置の処理能力を向上させた構成が知られている。
【０００３】
しかしながら、近年の情報処理装置は、これら画像、動画、音声、音楽等のマルチメディアデータに対して様々な規格の圧縮／伸長処理や演算処理等が必要になり、またインターネット等のネットワークを介して各種データを送受信するための通信処理にも様々なプロトコルが用いられるようになってきている。さらに、ネットワーク上で送受信される情報の安全性が問題となっているため、情報セキュリティのための暗号化処理やそれを解読するための処理も必要となる。そのため、これらの処理に応じて多数のＤＳＰやＡＳＩＣ等を設けていたのでは、情報処理装置の回路規模やコストが膨大なものとなってしまう。
【０００４】
そこで、情報処理装置内にＰＬＤ（Programmable Logic Device）を備え、必要に応じてＰＬＤ内のプログラムを書き換えることにより、情報処理装置の処理速度を向上させると共に、コストを低減しつつ様々な処理要求への対応を可能にした構成が特許文献１で提案されている。この特許文献１で提案された従来の情報処理装置の構成を図８に示す。
【０００５】
図８は従来の情報処理装置の構成を示すブロック図である。
【０００６】
図８に示すように、従来の情報処理装置は、プログラムにしたがって処理を実行するＣＰＵ１００と、ＣＰＵ１００に代わって特定の処理を実行するＰＬＤ１１０と、ＰＬＤ１１０に実行させるプログラムを書き換える変更部１２０と、ＣＰＵ１００やＰＬＤ１１０で実行するプログラム及び処理対象となるデータや処理後のデータ等が格納されるメモリ１３０と、処理後のデータや処理状況等を外部へ出力するための出力部１４０と、データを外部から入力するための入力部１５０とを有し、それらがバス１６０を介して接続された構成である。
【０００７】
ＣＰＵ１００は、メモリ１３０に格納されたＯＳ（Operating System）プログラムやアプリケーションプログラム等にしたがって処理を実行する。ＰＬＤ１１０は、内部にプログラムを格納するためのメモリを備え、ＣＰＵ１００からの指示にしたがって変更部１２０の制御によりメモリ１３０に格納されたプログラムを内部のメモリへロードし、ロードしたプログラムにしたがって特定の処理（以下、タスクと称す）を実行する。なお、ＰＬＤ１１０は、ＰＬＤ１１０自身でタスクを実行するためのプログラム（以下、タスク用プログラムと称す）を内部のメモリへロードすることができないため、ＰＬＤ１１０で実行するタスクを切り換える場合は、外部の装置（ＣＰＵ１００や変更部１２０）の制御によりＰＬＤ１１０の内部のメモリへタスク用プログラムをロードする。
【０００８】
ＣＰＵ１００は、ＰＬＤ１１０にタスクを実行させる場合、対応するタスク用プログラムのＰＬＤ１１０へのロード（Load）要求及び該タスク用プログラムを特定するための情報を変更部１２０へ送信する。また、ＰＬＤ１１０に対して処理対象となるデータを送信する。
【０００９】
変更部１２０は、ＣＰＵ１００からロード要求を受信すると、ＣＰＵ１００が指定するタスク用プログラムをメモリ１３０から読み出し、該タスク用プログラムをＰＬＤ１１０へ書き込む。ＰＬＤ１１０は、タスク用プログラムにしたがって内部回路を変更し、処理対象のデータ（以下、タスクデータと称す）に対して指定されたタスクの処理を実行する。また、タスクが終了すると、割り込み信号等を用いてＣＰＵ１００へ通知する。ＣＰＵ１００は、ＰＬＤ１１０からタスクの終了通知を受け取ると、ＰＬＤ１１０に次に実行させるタスクの種類を判断し、前回と同一のタスクを実行させる場合はＰＬＤ１１０に処理対象となる次のタスクデータを送信する。また、前回と異なるタスクを実行させる場合は、上記と同様にそのタスク用プログラムを特定するための情報及びロード要求を変更部１２０へ送信し、ＰＬＤ１１０のタスク用プログラムを書き換える。
【００１０】
このように図８に示した情報処理装置では、ＰＬＤ１１０に実行させるタスク用プログラムを変更部１２０の制御により書き換えることで、コストを低減しつつ様々な処理要求への対応を可能にしている。
【特許文献１】特開平１１−１８４７１８号公報
【発明の開示】
【発明が解決しようとする課題】
【００１１】
上記ＰＬＤにそのメモリ容量以上の複数のタスク用プログラムを実行させる場合、ＰＬＤは、それらの回路を一度に実現できないため、タスク用プログラムを入れ替えながら実行する必要がある。
【００１２】
ここで、図８に示した従来の情報処理装置が有するＰＬＤにより、複数種類のタスク用プログラムを用いて、各々のタスク用プログラムに対応する複数のタスクデータを処理する場合、それらのタスクデータは、必ずしも同一のタスク用プログラムで処理されるタスクデータ毎にまとまって情報処理装置へ供給されるわけではない。そのため、例えば複数のタスクデータを、その到着順に処理していたのでは、ＰＬＤに対するタスク用プログラムのロード処理が頻繁に発生するため、ＰＬＤによるデータ処理のスループットが低下して情報処理装置の処理能力を十分に向上させることができない問題がある。
【００１３】
ところで、上記ＰＬＤに代わるものとして、本出願人は演算処理を実行するデータパスの構成をプログラムによって変更可能なアレイ型プロセッサを既に提案している（例えば、特開２００１−３１２４８１号公報、特開２００３−１９６２４６号公報、Hideharu Amano, Akiya Jouraku, Kenichiro Anjo, "A dynamically adaptive switch fabric on a multicontext reconfigurable device", Proceeding of International Field programmable Logic and Application Conference, September 2003, p161-170.等を参照）。
【００１４】
上記特開２００３−１９６２４６号公報では、ＣＰＵと、アレイ型プロセッサ及び該アレイ型プロセッサに対するデータの入出力を制御する入出力制御回路を備えたストリームプロセッサと、ストリームプロセッサに対して入出力されるデータを一時的に保持するメモリとを有する情報処理装置を開示している。ストリームプロセッサは、複数のアレイ型プロセッサを備えることで複数の処理を並列に実行することも可能である。
【００１５】
上記特開２００３−１９６２４６号公報に記載のアレイ型プロセッサは、内部にタスク用プログラムを格納するための命令メモリとタスクで使用するデータ（中間データ）を格納するための内部レジスタとを備えている。このアレイ型プロセッサは、上記ＰＬＤと同様にアレイ型プロセッサ自身で外部のメモリに格納されたタスク用プログラムを命令メモリへロードすることができない。このアレイ型プロセッサの命令メモリや内部レジスタは、ＣＰＵが管理可能なメモリ空間にマッピングされている。したがって、ＣＰＵは、ロード命令やストア命令を用いることで、アレイ型プロセッサの命令メモリや内部レジスタの任意の領域に対してタスク用プログラムや中間データの書き込みや読み出しが可能である。
【００１６】
このようなストリームプロセッサに、複数種類のタスク用プログラムを用いて、各々のタスク用プログラムに対応する複数のタスクデータを処理する場合、上記ＰＬＤを備える情報処理装置と同様に、ストリームプロセッサで複数のタスクデータを到着順に処理していたのでは、アレイ型プロセッサに対するタスク用プログラムのロード処理が頻繁に発生するため、ストリームプロセッサによるデータ処理のスループットが低下して、情報処理装置の処理能力を向上させることができない。
【００１７】
本発明は上記したような従来の技術が有する問題点を解決するためになされたものであり、ストリームプロセッサによるデータ処理のスループットの低下を抑制して処理能力を向上させることが可能な情報処理装置及びデータ処理方法を提供することを目的とする。
【課題を解決するための手段】
【００１８】
上記目的を達成するため本発明の情報処理装置は、処理対象であるタスクデータに対して実行するプログラムを指定するタスクコマンドを含むディスクリプタを前記タスクデータ毎にそれぞれ生成し、同一のタスクコマンドを持つ前記ディスクリプタどうしを接続してディスクリプタ列を形成し、前記ディスクリプタ列どうしを接続してディスクリプタキューを形成するディスクリプタキュー生成装置と、
前記タスクデータ及び前記ディスクリプタキューがそれぞれ格納されるメモリと、
前記メモリから前記ディスクリプタキューの構成にしたがって前記ディスクリプタを順次読み出し、読み出したディスクリプタに対応するタスクデータに対して、該ディスクリプタが持つタスクコマンドで指定されるプログラムによる処理を実行するストリームプロセッサと、
を有する構成である。
【００１９】
一方、本発明のデータ処理方法は、処理対象であるタスクデータを所定のプログラムにしたがってストリームプロセッサで処理するための情報処理装置のデータ処理方法であって、
ＣＰＵが、前記タスクデータに対して実行するプログラムを指定するタスクコマンドを含むディスクリプタを前記タスクデータ毎にそれぞれ生成し、同一のタスクコマンドを持つ前記ディスクリプタどうしを接続してディスクリプタ列を形成し、前記ディスクリプタ列どうしを接続してディスクリプタキューを形成してメモリへ格納し、
前記ストリームプロセッサが、前記メモリから前記ディスクリプタキューの構成にしたがって前記ディスクリプタを順次読み出し、読み出したディスクリプタに対応するタスクデータに対して、該ディスクリプタが持つタスクコマンドで指定されるプログラムによる処理を実行する方法である。
【００２０】
上記のような情報処理装置及びデータ処理方法では、同一のタスクコマンドを持つディスクリプタどうしを接続してディスクリプタ列を形成し、ディスクリプタ列どうしを接続してディスクリプタキューを形成する。このディスクリプタキューをメモリに格納しておき、ストリームプロセッサが該ディスクリプタキューの構成にしたがって各ディスクリプタを順次読み出し、対応するタスクデータを連続して処理すれば、アレイ型プロセッサによるタスク用プログラムのロード処理を最小限に抑制できる。
【発明の効果】
【００２１】
本発明によれば、同一のタスクコマンドを持つディスクリプタどうしを接続してディスクリプタ列を形成し、ディスクリプタ列どうしを接続してディスクリプタキューを形成しておき、ストリームプロセッサが該ディスクリプタキューの構成にしたがって各ディスクリプタを順次読み出し、対応するタスクデータを連続して処理することで、アレイ型プロセッサによるタスク用プログラムのロード処理を最小限に抑制できる。したがって、ストリームプロセッサによるデータ処理のスループットが向上し、情報処理装置の処理能力を向上させることができる。
【発明を実施するための最良の形態】
【００２２】
次に本発明について図面を参照して説明する。
【００２３】
図１は本発明の情報処理装置の一構成例を示すブロック図である。
【００２４】
図１に示すように、本発明の情報処理装置は、ホストプロセッサであるＣＰＵ１と、タスク用プログラムにしたがって処理を実行するアレイ型プロセッサを備えたストリームプロセッサ２と、メモリ３と、不図時の入力装置及び出力装置とのインタフェースである入出力回路４と、各タスクデータに一意に対応するディスクリプタをそれぞれ生成し、それらを同一のタスク用プログラム毎に接続したディスクリプタ列、及びディスクリプタ列どうしを接続したディスクリプタキューを形成するディスクリプタキュー生成装置６とを有し、ＣＰＵ１、ストリームプロセッサ２、メモリ３、入出力回路４及びディスクリプタキュー生成装置６がバス５を介して相互に接続された構成である。メモリ３には、ＣＰＵ１で実行するプログラム、ストリームプロセッサ２で実行するタスク用プログラム、ストリームプロセッサ２で処理するタスクデータ、該タスクデータの処理で用いる各種情報から成るディスクリプタ、アレイ型プロセッサで処理されたデータである出力データ、アレイ型プロセッサで使用される中間データが格納される。本発明における中間データは、必要に応じてアレイ型プロセッサから退避される、アレイ型プロセッサの内部レジスタに格納されたデータである。なお、ホストプロセッサは、ＣＰＵである必要はなく、情報処理装置全体の処理や制御が可能であればＤＳＰやその他の処理装置であってもよい。
【００２５】
ディスクリプタキュー生成装置６は、例えば論理回路やメモリ等を用いてそれぞれ構成してもよく、ＣＰＵ（またはＤＳＰ）と内部メモリとを備え、該内部メモリに格納されたプログラムにしたがってＣＰＵ（またはＤＳＰ）により以下に記載する各構成要素の処理を実現する構成であってもよい。
【００２６】
なお、ディスクリプタキュー生成装置６は、必ずしも備えている必要はなく、ディスクリプタキュー生成装置６の処理をメモリ３に格納されたプログラムにしたがってＣＰＵ１で実現することも可能である。以下では、ディスクリプタキュー生成装置６に代わってＣＰＵ１がディスクリプタ、ディスクリプタ列及びディスクリプタキューを形成する場合を例にして説明する。
【００２７】
ストリームプロセッサ２は、後述するディスクリプタやタスクデータをメモリ３から読み出す入力ＤＭＡ回路２１と、ディスクリプタを管理するためのディスクリプタ管理テーブル２２と、タスク用プログラムにしたがって処理を実行するアレイ型プロセッサ２３と、アレイ型プロセッサ２３へ供給するタスクデータを一時的に保持する入力ＦＩＦＯ２４と、アレイ型プロセッサ２３で処理された出力データを一時的に保持する出力ＦＩＦＯ２５と、出力データをメモリ３へ書き戻すためのメモリアクセス制御回路２６と、アレイ型プロセッサ２３で実行するタスク用プログラムのロード、及びアレイ型プロセッサ２３の内部レジスタに対する中間データの読み出し／書き込みを可能にするための構成情報ＤＭＡコントローラ２７とを有する構成である。入力ＤＭＡ回路２１、ディスクリプタ管理テーブル２２、メモリアクセス制御回路２６及び構成情報ＤＭＡコントローラ２７は、例えば論理回路やメモリ等を用いてそれぞれ構成してもよく、ＣＰＵ（またはＤＳＰ）と内部メモリとを備え、該内部メモリに格納されたプログラムにしたがってＣＰＵ（またはＤＳＰ）により以下に記載する各構成要素の処理を実現する構成であってもよい。なお、ストリームプロセッサ２は、複数のアレイ型プロセッサ２３を備え、これら複数のアレイ型プロセッサ２３によって処理を実行するためのチャネル（処理経路）が複数形成されていてもよい。その場合、入力ＦＩＦＯ２４及び出力ＦＩＦＯ２５は、各チャネルに対応してそれぞれ設けられる。
【００２８】
ストリームプロセッサ２でタスクを実行する場合、ストリームプロセッサ２は、入力ＤＭＡ回路２１によりメモリ３からディスクリプタを読み出し、読み出したディスクリプタの各領域の値にしたがってタスク用プログラムをメモリ３からアレイ型プロセッサ２３へロードし、さらにメモリ３からタスクデータを読み出してアレイ型プロセッサ２３によりタスクの処理を実行する。アレイ型プロセッサ２３で処理した出力データはメモリアクセス制御回路２６によりメモリ３へ書き戻される。
【００２９】
ディスクリプタは、ディスクリプタキュー生成装置６あるいはメモリ３に格納されたプログラムにしたがってＣＰＵ１がタスクデータ毎に生成し、メモリ３へ格納する。各タスクデータには一意に対応するディスクリプタが必ず作成される。
【００３０】
図２は図１に示した情報処理装置で用いるディスクリプタのフォーマットを示す模式図である。図２ではディスクリプタを１２８ビットで構成する例を示しているが、ディスクリプタの情報量は、ＣＰＵ１やアレイ型プロセッサ２３の処理ビット幅、あるいはメモリ空間の大きさ等に応じて適宜設定すればよい。
【００３１】
図２に示すように、本実施形態の情報処理装置で用いるディスクリプタは、割り込みフラグ（ＩＮＴ）、タイプ（ＴＹＰＥ）、トランザクション識別子（ＴＩＤ）、タスクコマンド（ＴＡＳＫＣＭＤ）、入力データサイズ（ＩＳＩＺＥ）、出力データアドレス（ＲＡＤＲ）及び入力データアドレス（ＩＡＤＲ）の各領域を備えた構成である。
【００３２】
割り込みフラグ（ＩＮＴ）は、ストリームプロセッサ２による処理の終了をＣＰＵ１へ通知するための割り込み信号の発生要否に用いるビットである。
【００３３】
タイプ（ＴＹＰＥ）は、メモリ３内に構築する、後述するディスクリプタキューの構造を維持するために用いるビットである。
【００３４】
トランザクション識別子（ＴＩＤ）は、ストリームプロセッサ２で処理するタスクデータを識別するための識別子が格納される領域である。トランザクション識別子の値は、タスクデータと共にアレイ型プロセッサ２３へ供給され、対応する出力データ共にアレイ型プロセッサ２３から出力される。
【００３５】
タスクコマンド（ＴＡＳＫＣＭＤ）は、ストリームプロセッサ２に実行させるタスクを指定するための指示子が格納される領域である。
【００３６】
入力データアドレス（ＩＡＤＲ）は、ストリームプロセッサ２で処理するタスクデータの格納元のアドレスを示すデータバッファポインタが設定される領域であり、出力データアドレス（ＲＡＤＲ）は、ストリームプロセッサ２で処理された出力データの格納先のアドレスを示すデータバッファポインタが設定される領域である。また、入力データサイズ（ＩＳＩＺＥ）はタスクデータの大きさを示す情報が設定される領域である。タスクコマンドの値及び入力データサイズの値はタスクデータと共にアレイ型プロセッサ２３へ供給される。
【００３７】
入力ＤＭＡ回路２１は、ディスクリプタが格納されたメモリ３の領域の先頭アドレスを保持するためのディスクリプタポインタを備えている。このディスクリプタポインタの値は、例えばＣＰＵ１によりメモリ３に格納されたプログラムにしたがって設定される。ＣＰＵ１は、ストリームプロセッサ２に処理を実行させる場合、処理対象となるタスクデータに対応するディスクリプタの先頭アドレスを入力ＤＭＡ回路２１のディスクリプタポインタにセットする。
【００３８】
入力ＤＭＡ回路２１は、ＣＰＵ１によって設定されたディスクリプタポインタの値にしたがってメモリ３から対応するディスクリプタを読み出し、該ディスクリプタのＩＡＤＲで指定されたアドレスからＩＳＩＺＥで指定された大きさのタスクデータを読み出し、該タスクデータを入力ＦＩＦＯ２４へ供給する。また、読み出したディスクリプタからＴＩＤ、ＴＡＳＫＣＭＤ及びＩＳＩＺＥの値をそれぞれ抽出し、入力ＦＩＦＯ２４を介してアレイ型プロセッサ２３へそれぞれ供給する。
【００３９】
さらに、入力ＤＭＡ回路２１は、読み出したディスクリプタからＴＩＤ及びＲＡＤＲの値をそれぞれ抽出し、出力データアドレス（ＲＡＤＲ）の値をトランザクション識別子（ＴＩＤ）の値に関連付けてディスクリプタ管理テーブル２２へ格納する。
【００４０】
入力ＦＩＦＯ２４は、入力ＤＭＡ回路２１から受信したタスクコマンド、トランザクション識別子及びそれに対応付けられたタスクデータを一時的に保持し、アレイ型プロセッサ２３によるタスク用プログラムのロード処理または先行するタスクの処理が終了した時点で、保持している次に処理すべきタスクコマンド、トランザクション識別子及びタスクデータをアレイ型プロセッサ２３へ供給する。このような入力ＦＩＦＯ２４を備えることで、アレイ型プロセッサ２３に複数のタスクを実行させる場合に、アレイ型プロセッサ２３の動作を停止させることなく、タスクデータをアレイ型プロセッサ２３へ効率よく連続して供給することができる。また、アレイ型プロセッサ２３がタスク用プログラムや中間データのロード処理あるいはタスク用プログラムを実行しているためにタスクデータを受信できない場合でも、入力ＤＭＡ回路２１は動作を停止することなく入力ＦＩＦＯ２４へタスクデータを供給できる。したがって、ストリームプロセッサ２の処理効率が向上する。
【００４１】
アレイ型プロセッサ２３は、入力ＦＩＦＯ２４から受け取ったタスクコマンドに基づき、構成情報ＤＭＡコントローラ２７を用いて該タスクコマンドで指定される少なくとも一つのタスク用プログラムをメモリ３からロードし、ロード完了後、タスクデータに対してタスク用プログラムによる処理を実行する。アレイ型プロセッサ２３による処理後の出力データは出力ＦＩＦＯ２５を介してメモリアクセス制御回路２６へ出力される。このとき、アレイ型プロセッサ２３は、出力データの先頭データと共に受信したトランザクション識別子を出力ＦＩＦＯ２５へ供給する。
【００４２】
出力ＦＩＦＯ２５は、アレイ型プロセッサ２３から受け取ったトランザクション識別子及び出力データを一時的に保持し、バス５に対するアクセスの競合等によりメモリアクセス制御回路２６からメモリ３へ先の出力データが転送できない場合に、そのデータ転送のできない状態が解消された時点で保持している出力データをメモリアクセス制御回路２６へ供給する。また、アレイ型プロセッサ２３から受け取ったトランザクション識別子を出力データの先頭データと共にメモリアクセス制御回路２６へ供給する。このような出力ＦＩＦＯ２５を有することで、アレイ型プロセッサ２３の動作を停止させることなく、アレイ型プロセッサ２３の出力データをメモリ３へ効率よく転送できるため、ストリームプロセッサ２による処理のスループットの低下が抑制される。
【００４３】
メモリアクセス制御回路２６は、出力ＦＩＦＯ２５からトランザクション識別子及び出力データを受け取ると、該トランザクション識別子をディスクリプタ管理テーブル２２へ転送する。ディスクリプタ管理テーブル２２は、受け取ったトランザクション識別子に関連付けて保存された出力データアドレス（ＲＡＤＲ）を取り出し、メモリアクセス制御回路２６へ返送する。メモリアクセス制御回路２６は、ディスクリプタ管理テーブル２２から受け取った出力データアドレスを開始アドレスとするメモリ３の領域へ出力データを格納する。
【００４４】
ところで、ストリームプロセッサ２を備えた情報処理装置のスループットを向上させるためには、同一のタスク用プログラムで処理されるタスクデータをできるだけまとめ、それらをストリームプロセッサ２に連続して与えることで、アレイ型プロセッサ２３に対するタスク用プログラムの入れ替え処理の回数を削減すればよい。このタスク用プログラムの入れ替え処理の回数を削減するための手法として、本実施形態では、同一のタスク用プログラムで処理するタスクデータに対応したディスクリプタ（同一のタスクコマンドを持つディスクリプタ）をそれぞれ接続することでディスクリプタ列を形成する。そして、タスク用プログラム毎に作成されるディスクリプタ列を接続してディスクリプタキューを形成する。
【００４５】
図３は図１に示した情報処理装置で用いるディスクリプタキューの一構成例を示す模式図である。なお、図３に示す各ディスクリプタ内には、図２に示したディスクリプタの各領域のうち、タイプ（ＴＹＰＥ）、タスクコマンド（ＴＡＳＫＣＭＤ）、入力データアドレス（ＩＡＤＲ）及び入力データサイズ（ＩＳＩＺＥ）のみを記載している。
【００４６】
図３に示すように、本実施形態の情報処理装置では、同一のタスクコマンドを持つディスクリプタをそれぞれ接続することでディスクリプタ列を形成する。ここで、ディスクリプタの接続とは、対象となる複数のディスクリプタをメモリ３の連続するアドレス領域へ格納することを言う。
【００４７】
図３は、ＴＡＳＫＣＭＤ＝Ａで指定されるタスク用プログラムで処理するタスクデータＡ０〜Ａｎに対応するディスクリプタをそれぞれ接続してディスクリプタ列Ｑ０Ａを形成し、ＴＡＳＫＣＭＤ＝Ｂで指定されるタスク用プログラムで処理するタスクデータＢ０〜Ｂｍに対応するディスクリプタをそれぞれ接続してディスクリプタ列Ｑ０Ｂを形成する例を示している。
【００４８】
ストリームプロセッサ２の入力ＤＭＡ回路２１は、ディスクリプタのデータサイズに相当する値（例えば１２８ビット）だけディスクリプタポインタの値を増加させることで、次に読み出すディスクリプタへアクセスする。したがって、上述したように同一のタスクコマンドを持つ複数のディスクリプタをメモリ３の連続するアドレス領域へ格納しておけば、ＣＰＵ１によって先頭のディスクリプタポインタがセットされると、以降、入力ＤＭＡ回路２１は、ＣＰＵ１からの設定が無くてもディスクリプタポインタの値を内部で更新して次のディスクリプタを読み出すことができる。
【００４９】
また、本実施形態では、先行する処理で用いるディスクリプタ列の最終ディスクリプタに、後続の処理で用いるディスクリプタ列の最初のディスクリプタへアクセスするためのリンクポインタ（LinkPointer）を格納し、ディスクリプタ列どうしを接続してディスクリプタキューを構成する。
【００５０】
図２に示したように、各ディスクリプタにはＴＹＰＥ領域をそれぞれ備えているため、ＩＡＤＲに入力データアドレスとして有効な値を格納した場合は、そのディスクリプタのＴＹＰＥを「１」に設定する。また、ＩＡＤＲに次のディスクリプタへアクセスするためのリンクポインタ（LinkPointer）を格納した場合は、そのディスクリプタのＴＹＰＥを「０」に設定する。
【００５１】
図３に示す例では、ディスクリプタ列Ｑ０ＡのタスクデータＡ０に対応する最初のディスクリプタにＴＡＳＫＣＭＤ＝Ａ、ＴＹＰＥ＝１、ＩＡＤＲ＝ｐｔｒＡ０、ＩＳＩＺＥ＝ｓｉｚｅＡ０が格納され、次のタスクデータＡ１に対応する第２のディスクリプタにＴＡＳＫＣＭＤ＝Ａ、ＴＹＰＥ＝１、ＩＡＤＲ＝ｐｔｒＡ１、ＩＳＩＺＥ＝ｓｉｚｅＡ１が格納され、…、タスクデータＡｎ（ｎは１以上の整数）に対応する第ｎのディスクリプタにＴＡＳＫＣＭＤ＝Ａ、ＴＹＰＥ＝１、ＩＡＤＲ＝ｐｔｒＡｎ、ＩＳＩＺＥ＝ｓｉｚｅＡｎが格納されている。また、ディスクリプタ列Ｑ０ＢのタスクデータＢ０に対応する最初のディスクリプタにＴＡＳＫＣＭＤ＝Ｂ、ＴＹＰＥ＝１、ＩＡＤＲ＝ｐｔｒＢ０、ＩＳＩＺＥ＝ｓｉｚｅＢ０が格納され、次のタスクデータＢ１に対応する第２のディスクリプタにＴＡＳＫＣＭＤ＝Ｂ、ＴＹＰＥ＝１、ＩＡＤＲ＝ｐｔｒＢ１、ＩＳＩＺＥ＝ｓｉｚｅＢ１が格納され、…、タスクデータＢｍ（ｍは１以上の整数）に対応する第ｍのディスクリプタにＴＡＳＫＣＭＤ＝Ｂ、ＩＡＤＲ＝ｐｔｒＢｍ、ＩＳＩＺＥ＝ｓｉｚｅＢｍが格納されている。
【００５２】
さらに、ディスクリプタ列Ｑ０Ｂへアクセスするためのリンクポインタ（LinkPointer）として、ディスクリプタ列Ｑ０Ａの最終ディスクリプタに、ＴＹＰＥ＝０、ＩＡＤＲ＝ｐｔｒＱ０Ｂ（ディスクリプタ列Ｑ０Ｂの最初のディスクリプタの先頭アドレス）が格納されている。
【００５３】
このようなディスクリプタキューをＣＰＵ１あるいはディスクリプタキュー生成装置６により形成してメモリ３へ格納しておき、ストリームプロセッサ２が該ディスクリプタキューの構成にしたがって各ディスクリプタを順次読み出し、読み出したディスクリプタに対応するタスクデータを連続して処理すれば、アレイ型プロセッサ２３に対するタスク用プログラムのロード処理を最小限に抑制できるため、ストリームプロセッサ２のスループットが向上する。さらに、アレイ型プロセッサ２３で複数のタスク用プログラムのロード処理が必要になる場合でも、これらの処理をＣＰＵ１からの一度のロード要求で連続して実行できるようになる。そのため、従来の情報処理装置のようにタスク用プログラムのロード処理毎にＣＰＵ１でＰＬＤ（本発明ではストリームプロセッサ２）に次に実行させるタスクを判断していた処理が不要になる。よって、アレイ型プロセッサ２３に対するタスク用プログラムのロード処理に要するＣＰＵ１の処理負荷が軽減する。
【００５４】
また、本実施形態の情報処理装置では、２つのディスクリプタキューを格納するための領域をメモリ３に用意し、ストリームプロセッサ２が一方のディスクリプタキューにしたがって処理を実行しているとき、ＣＰＵ１またはディスクリプタキュー生成装置６はストリームプロセッサ２に次に実行させる処理で用いる他方のディスクリプタキューを作成する。例えば、ストリームプロセッサ２がディスクリプタキューＱ０にしたがって処理を実行しているとき、ＣＰＵ１はストリームプロセッサ２に次に実行させるディスクリプタキューＱ１を作成してメモリ３へ格納する。一方、ストリームプロセッサ２がディスクリプタキューＱ１にしたがって処理を実行しているとき、ＣＰＵ１はストリームプロセッサ２に次に実行させるディスクリプタキューＱ０を作成してメモリ３へ格納する。
【００５５】
本実施形態では、ストリームプロセッサ２が実行しているディスクリプタキューを、メモリ３に備えた不図示のフラグ（本明細書や図面では、Ｆｌａｇと称す）領域の値を用いてＣＰＵ１またはディスクリプタキュー生成装置６が判定する。例えば、Ｆｌａｇ＝０の場合、ストリームプロセッサ２はディスクリプタキューＱ１にしたがって処理を実行しているものとする。その場合、ＣＰＵ１はタスクデータ毎に作成したディスクリプタをそれぞれのタスクコマンドの値にしたがって対応するディスクリプタ列Ｑ０ｘ（ｘ＝Ａ，Ｂ、Ｃ、…）へ振り分け、各ディスクリプタ列Ｑ０ｘを接続してディスクリプタキューＱ０を作成する。また、Ｆｌａｇ＝１の場合、ストリームプロセッサ２はディスクリプタキューＱ０にしたがって処理を実行しているものとする。その場合、ＣＰＵ１はタスクデータ毎に作成したディスクリプタをそれぞれのタスクコマンドの値にしたがって対応するディスクリプタ列Ｑ１ｘ（ｘ＝Ａ，Ｂ、Ｃ、…）へ振り分け、各ディスクリプタ列Ｑ１ｘを接続してディスクリプタキューＱ１を作成する。Ｆｌａｇ領域の値は、例えばストリームプロセッサ２からのタスクの終了を通知する割り込み信号を受けて、ＣＰＵ１が切り換える。
【００５６】
このように２つのディスクリプタキューを用いることで、ＣＰＵ１は、タスクデータ毎に作成したディスクリプタを、対応するディスクリプタ列に効率よく振り分けることができる。また、ＣＰＵ１は、ストリームプロセッサ２が処理を実行中に、次にストリームプロセッサ２に実行させるディスクリプタキューを作成できるため、ストリームプロセッサ２の処理を中断させることなく連続して実行させることができる。したがって、ストリームプロセッサ２のデータ処理のスループットが向上する。
【００５７】
さらに、本実施形態の情報処理装置では、ストリームプロセッサ２が先行する処理で用いるディスクリプタキューと後続の処理で用いるディスクリプタキューとに同一のタスクコマンドを持つディスクリプタ列が存在する場合、先行する処理で用いるディスクリプタキューの最後のディスクリプタ列と後続の処理で用いるディスクリプタキューの最初のディスクリプタ列のタスクコマンドをそれぞれ一致させる。
【００５８】
例えば、先行する処理で用いるディスクリプタキューＱ０がＴＡＳＫＣＭＤ＝Ａを持つディスクリプタ列Ｑ０ＡとＴＡＳＫＣＭＤ＝Ｂを持つディスクリプタ列Ｑ０Ｂとによって構成され、後続の処理で用いるディスクリプタキューＱ１がＴＡＳＫＣＭＤ＝Ａを持つディスクリプタ列Ｑ１ＡとＴＡＳＫＣＭＤ＝Ｂを持つディスクリプタ列Ｑ１Ｂとによって構成されている場合、ＣＰＵ１またはディスクリプタキュー生成装置６は、ディスクリプタキューＱ０の最後がディスクリプタ列Ｑ０Ｂであるならば、ディスクリプタキューＱ１の最初にディスクリプタ列Ｑ１Ｂを配置する。また、ディスクリプタキューＱ０の最後がディスクリプタ列Ｑ０Ａであるならば、ディスクリプタキューＱ１の最初にディスクリプタ列Ｑ１Ａを配置する。
【００５９】
本実施形態では、先行する処理で用いるディスクリプタキューに含まれる最後のディスクリプタ列のタスクコマンドの値をメモリ３に設けた不図示のラストタスクコマンド（本明細書や図面では、LastTaskcmdと称す）領域の値を用いてＣＰＵ１またはディスクリプタキュー生成装置６が判定する。例えば、先行する処理で用いるディスクリプタキューのLastTaskcmd領域の値がＡの場合、後続の処理で用いるディスクリプタキューの最初にＴＡＳＫＣＭＤ＝Ａを持つディスクリプタ列を配置する。
【００６０】
このような規則にしたがって各ディスクリプタ列を配列することで、２つのディスクリプタキューの切り替わり時にタスク用プログラムを入れ替える必要がなくなるため、アレイ型プロセッサ２３によるタスク用プログラムの切り替え処理をさらに削減できる。したがって、ストリームプロセッサ２及びそれを備えた情報処理装置のスループットがより向上する。
【００６１】
次に本発明の情報処理装置が有するＣＰＵ１（またはディスクリプタキュー生成装置６）の処理について図４〜図６を用いて説明する。
【００６２】
図４は図１に示したＣＰＵ１が実行する処理全体の手順を示すフローチャートである。また、図５は図４に示したディスクリプタの振り分け処理の手順を示すフローチャートであり、図６は図４に示したディスクリプタキューの作成処理の手順を示すフローチャートである。
【００６３】
図４に示すように、ＣＰＵ１は、まずアレイ型プロセッサ２３へ各種のタスク用プログラムや中間データを書き込むための情報またはアレイ型プロセッサ２３から中間データを読み出すための情報から構成されるＤＭＡコマンドを生成し、構成情報ＤＭＡコントローラ２７にテーブル形式で格納する（テーブルの設定）。ＤＭＡコマンドは、構成情報ＤＭＡコントローラ２７が実行する各処理に対応して一意に生成され、例えば転送対象となる中間データまたはタスク用プログラムが格納されたメモリ領域の先頭アドレスを示す転送元アドレス（ＲＤＡＤＲ）、転送対象となる中間データまたはタスク用プログラムを格納するメモリ領域の先頭アドレスを示す転送先アドレス（ＷＲＡＤＲ）、アレイ型プロセッサ２３へロードする中間データまたはタスク用プログラムのデータ長、あるいはアレイ型プロセッサ２３から読み出す中間データのデータ長を示す転送データ長（ＬＥＮＧＴＨ）、アレイ型プロセッサ２３に対してタスク用プログラムや中間データをロードするためのものであるか、アレイ型プロセッサ２３から中間データを読み出すためのものであるかを示すフラグであるリードイネーブル（ＲＥ）及びＤＭＡコマンドの処理が終了したときにホストプロセッサ等へ割り込み通知（割り込み信号の発行）が必要であるか否かを指定する割り込みフラグ（ＤＩＮＴ）等を備えている。
【００６４】
ＣＰＵ１は、構成情報ＤＭＡコントローラ２７に対する各種ＤＭＡコマンドのセットが完了すると、アレイ型プロセッサ２３にロードタスクのプログラム（ロードタスク用プログラム）を書き込むために、先にセットした対応するＤＭＡコマンドを指定し、構成情報ＤＭＡコントローラ２７にロードタスク用プログラムのロード処理を要求する（ステップＳ１）。なお、ロードタスクとは、アレイ型プロセッサ２３がタスク用プログラムをロードする際に必要となる処理を指す。ロードタスクには、入力ＦＩＦＯ２４から受信したタスクコマンドを用いて新たなタスク用プログラムのロード処理の要否を判定する処理、及び該タスクコマンドから構成情報ＤＭＡコントローラ２７にセットした対応するＤＭＡコマンドを指定するための処理を含んでいる。
【００６５】
次に、ＣＰＵ１は、メモリ３にストリームプロセッサ２で処理するタスクデータが存在するか否かを判定し（ステップＳ２）、タスクデータがメモリ３に存在する場合は、それに対応するディスクリプタ列を作成するために、ディスクリプタの振り分け処理を実行する（ステップＳ３）。ディスクリプタの振り分け処理は、図５に示す手順にしたがって実行する。なお、このディスクリプタの振り分け処理はディスクリプタキュー生成装置６で実行してもよい。
【００６６】
図５に示すように、ディスクリプタの振り分け処理では、ＣＰＵ１は、まず図４のステップＳ２の処理でメモリ３に存在を確認したタスクデータから対応するディスクリプタを生成する（ステップＳ３１）。そして、メモリ３のＦｌａｇ領域の値が０であるか否かを判定し（ステップＳ３２）、Ｆｌａｇ領域の値が０である場合は、生成したディスクリプタを、そのタスクコマンドで指定されるディスクリプタ列Ｑ０ｘに登録する（ステップＳ３３）。
【００６７】
一方、Ｆｌａｇ領域の値が１である場合は、生成したディスクリプタを、そのタスクコマンドで指定されるディスクリプタ列Ｑ１ｘに登録する（ステップＳ３４）。
【００６８】
ＣＰＵ１は、図５に示すディスクリプタの振り分け処理を実行している間、ストリームプロセッサ２からのロードタスク用プログラムのロード処理の終了、あるいはタスクの終了を通知する割り込み信号を待ち受け（図４のステップＳ４）、割り込み信号を受け取ると、それまでに生成したディスクリプタ列Ｑ０ｘまたはＱ１ｘを用いてディスクリプタキューの作成処理を開始する（ステップＳ５）。このディスクリプタキューの作成処理は、図６に示す手順にしたがって実行する。なお、このディスクリプタキューの作成処理もディスクリプタキュー生成装置６で実行してもよい。
【００６９】
図６に示すように、ディスクリプタキューの作成処理では、ＣＰＵ１は、まずメモリ３のＦｌａｇ領域の値が０であるか否かを判定し（ステップＳ５１）、Ｆｌａｇ領域の値が０である場合、メモリ３のLastTaskcmd領域の値をタスクコマンドに持つディスクリプタ列が最初に位置するようにディスクリプタキューＱ０を作成してメモリ３へ格納する（ステップＳ５２）。ＣＰＵ１は、ディスクリプタキューＱ０の作成が完了すると、Ｆｌａｇ領域の値を１に書き換え、LastTaskcmd領域の値を作成したディスクリプタキューＱ０の最後のディスクリプタ列が持つタスクコマンドの値に書き換える（ステップＳ５３）。
【００７０】
一方、Ｆｌａｇ領域の値が１である場合、ＣＰＵ１は、LastTaskcmd領域の値をタスクコマンドに持つディスクリプタ列が最初に位置するようにディスクリプタキューＱ１を作成してメモリ３へ格納する（ステップＳ５４）。ＣＰＵ１は、ディスクリプタキューＱ１の作成が完了すると、Ｆｌａｇ領域の値を０に書き換え、LastTaskcmd領域の値を作成したディスクリプタキューＱ１の最後のディスクリプタ列が持つタスクコマンドの値に書き換える（ステップＳ５５）。
【００７１】
ＣＰＵ１は、作成したディスクリプタキューＱ０またはディスクリプタキューＱ１の最初のディスクリプタの先頭アドレスを入力ＤＭＡ回路２１のディスクリプタポインタにセットし、ストリームプロセッサ２にディスクリプタキューＱ０またはディスクリプタキューＱ１を用いた処理を開始させる（ステップＳ５６）。
【００７２】
ＣＰＵ１は、図６に示したディスクリプタキューの作成処理が終了すると、ストリームプロセッサ２に実行させる全てのタスクデータの処理が終了したか否かを判定し（図４のステップＳ６）、全ての処理が終了していない場合はステップＳ２の処理に戻ってステップＳ２からステップＳ６までの処理を繰り返す。ストリームプロセッサ２に実行させる全てのタスクデータの処理が終了した場合は、ストリームプロセッサ２にタスクを実行させるための処理を終了する。
【００７３】
次に本発明の情報処理装置の全体の動作について図７を用いて説明する。
【００７４】
図７は本発明の情報処理装置の処理手順を示すタイミングチャートである。
【００７５】
図７は、ストリームプロセッサ２にタスクＡ０〜Ａ６及びタスクＢ０〜Ｂ６の処理をそれぞれ実行させる場合のＣＰＵ１及びストリームプロセッサ２の動作をそれぞれ示している。タスクＡ０〜Ａ６はタスクデータＡ０〜Ａ６対するタスク用プログラムＡの処理を示し、タスクＢ０〜Ｂ６はタスクデータＢ０〜Ｂ６に対するタスク用プログラムＢの処理を示している。ディスクリプタＡ０〜Ａ６はタスクデータＡ０〜Ａ６に対応して生成されたディスクリプタであり、ディスクリプタＢ０〜Ｂ６はタスクデータＢ０〜Ｂ６に対応して生成されたディスクリプタである。
【００７６】
図７に示すように、ＣＰＵ１は、まずロードタスク用プログラム及びタスク用プログラム（ここでは、タスク用プログラムＡ，Ｂ）をロードするためのＤＭＡコマンドをそれぞれ生成する（サイクル（１））。
【００７７】
続いて、ＣＰＵ１は、サイクル（１）で生成したＤＭＡコマンドをストリームプロセッサ２の構成情報ＤＭＡコントローラ２７にテーブル形式で格納する（テーブル設定）。また、構成情報ＤＭＡコントローラ２７に対してアレイ型プロセッサ２３へのロードタスク用プログラムのロード処理を要求する（サイクル（２））。サイクル（１）、（２）は、処理の最初に一度だけ実行すればよい。
【００７８】
構成情報ＤＭＡコントローラ２７は、ＣＰＵ１からロードタスク用プログラムのロード要求を受け取ると、ＣＰＵ１に指定されたＤＭＡコマンドにしたがってメモリ３に格納されたロードタスク用プログラムを読み出し、アレイ型プロセッサ２３へロードする。そして、アレイ型プロセッサ２３に対するロードタスク用プログラムのロード処理が完了すると、ＣＰＵ１へロード完了を通知するための割り込み信号を送信する。
【００７９】
ＣＰＵ１は、構成情報ＤＭＡコントローラ２７がアレイ型プロセッサ２３に対するロードタスク用プログラムのロード処理を実行している間、図５に示した手順にしたがってメモリ３に格納されたタスクデータ毎に対応するディスクリプタをそれぞれ生成し、それらの振り分け処理を実行する。ここでは、メモリ３に格納されたタスクデータＡ０、Ａ１、Ｂ０、Ｂ１に対応するディスクリプタＡ０、Ａ１、Ｂ０、Ｂ１を生成し、ディスクリプタＡ０とディスクリプタＡ１とを接続してディスクリプタ列Ｑ０Ａを形成し、ディスクリプタＢ０とディスクリプタＢ１とを接続してディスクリプタ列Ｑ０Ｂを形成する（サイクル（３））。
【００８０】
ＣＰＵ１は、構成情報ＤＭＡコントローラ２７からロードタスク用プログラムのロード完了を示す割り込み信号を受け取ると、図６に示した手順にしたがってディスクリプタ列Ｑ０Ａとディスクリプタ列Ｑ０Ｂとを接続し、ディスクリプタキューＱ０を形成する。そして、入力ＤＭＡ回路２１のディスクリプタポインタにディスクリプタキューＱ０の最初のディスクリプタ列Ｑ０Ａの先頭アドレスをセットし、入力ＤＭＡ回路２１にディスクリプタの読み出し処理（データＤＭＡ要求）を開始させる（サイクル（４））。
【００８１】
入力ＤＭＡ回路２１は、ディスクリプタポインタの値に基づきメモリ３からディスクリプタＡ０を読み出し、該ディスクリプタからタスクコマンド（ＴＡＳＫＣＭＤ）、トランザクション識別子（ＴＩＤ）及び入力データサイズ（ＩＳＩＺＥ）を抽出し、入力ＦＩＦＯ２４を介してアレイ型プロセッサ２３へ供給する。また、ディスクリプタＡ０で指定されたタスクデータＡ０をメモリ３から読み出し、入力ＦＩＦＯ２４へ供給する。
【００８２】
アレイ型プロセッサ２３は、入力ＦＩＦＯ２４からディスクリプタＡ０のタスクコマンドを受信すると、該タスクコマンドで指定されるタスク用プログラムＡがロードされているか否かを確認する。ここでは、タスク用プログラムＡがロードされていないため、構成情報ＤＭＡコントローラ２７へ対応するＤＭＡコマンドを指定する情報を送信してタスク用プログラムＡのロードを要求する。
【００８３】
構成情報ＤＭＡコントローラ２７は、アレイ型プロセッサ２３によって指定されたＤＭＡコマンドにしたがってメモリ３からタスク用プログラムＡを読み出し、アレイ型プロセッサ２３へ転送する。構成情報ＤＭＡコントローラ２７は、タスク用プログラムＡの転送処理が完了すると、アレイ型プロセッサ２３へロード完了通知を送信する。
【００８４】
入力ＤＭＡ回路２１は、ディスクリプタＡ０及びタスクデータＡ０に続いてディスクリプタＡ１及びタスクデータＡ１をメモリ３から読み出し、ディスクリプタＡ１からタスクコマンド、トランザクション識別子及び入力データサイズを抽出して入力ＦＩＦＯ２４へ転送する（サイクル（５））。
【００８５】
アレイ型プロセッサ２３は、構成情報ＤＭＡコントローラ２７からロード完了通知を受け取ると、入力ＦＩＦＯ２４からタスクデータＡ０を受け取り、タスク用プログラムＡによりタスクＡ０の処理を実行する。また、タスクＡ０の処理が完了すると、入力ＦＩＦＯ２４からディスクリプタＡ１のタスクコマンドを受け取り、該タスクコマンドで指定されるタスク用プログラムＡがロードされているか否かを確認する。ここでは、タスク用プログラムＡが既にロードされているため、アレイ型プロセッサ２３は入力ＦＩＦＯ２４からタスクデータＡ１を受け取り、タスク用プログラムＡによりタスクＡ１の処理を実行する（サイクル（６））。
【００８６】
入力ＤＭＡ回路２１は、ディスクリプタＡ１及びタスクデータＡ１をメモリ３から読み出すと、ディスクリプタキューＱ０の構成にしたがってメモリ３からディスクリプタＢ０を読み出し、ディスクリプタＢ０からタスクコマンド、トランザクション識別子及び入力データサイズを抽出し、入力ＦＩＦＯ２４を介してアレイ型プロセッサ２３へ供給する。また、ディスクリプタＢ０で指定されるタスクデータＢ０をメモリ３から読み出し、入力ＦＩＦＯ２４へ供給する。
【００８７】
アレイ型プロセッサ２３は、タスクＡ１の処理が完了すると、入力ＦＩＦＯ２４からディスクリプタＢ０のタスクコマンドを受信し、該タスクコマンドで指定されるタスク用プログラムＢがロードされているか否かを確認する。ここでは、タスク用プログラムＢがロードされていないため、構成情報ＤＭＡコントローラ２７へ対応するＤＭＡコマンドを指定する情報を送信してタスク用プログラムＢのロードを要求する。
【００８８】
構成情報ＤＭＡコントローラ２７は、アレイ型プロセッサ２３によって指定されたＤＭＡコマンドにしたがってメモリ３からタスク用プログラムＢを読み出し、アレイ型プロセッサ２３へ転送する。構成情報ＤＭＡコントローラ２７は、タスク用プログラムＢの転送処理が完了すると、アレイ型プロセッサ２３へロード完了通知を送信する。
【００８９】
入力ＤＭＡ回路２１は、ディスクリプタＢ０及びタスクデータＢ０に続いてディスクリプタＢ１及びタスクデータＢ１をメモリ３から読み出し、ディスクリプタＢ１からタスクコマンド、トランザクション識別子及び入力データサイズを抽出して入力ＦＩＦＯ２４へ転送する（サイクル（７））。
【００９０】
アレイ型プロセッサ２３は、構成情報ＤＭＡコントローラ２７からロード完了通知を受け取ると、入力ＦＩＦＯ２４からタスクデータＢ０を受け取り、タスク用プログラムＢによるタスクＢ０の処理を実行する。また、タスクＢ０の処理が完了すると、入力ＦＩＦＯ２４からディスクリプタＢ１のタスクコマンドを受け取り、該タスクコマンドで指定されるタスク用プログラムＢがロードされているか否かを確認する。ここでは、タスク用プログラムＢが既にロードされているため、アレイ型プロセッサ２３は入力ＦＩＦＯ２４からタスクデータＢ１を受け取り、タスク用プログラムＢによりタスクＢ１の処理を実行する。また、タスクＢ１の処理が終了すると、割り込み信号によりディスクリプタキューＱ０による処理の終了をＣＰＵ１へ通知する（サイクル（８））。
【００９１】
ＣＰＵ１は、ストリームプロセッサ２が上記サイクル（５）からサイクル（８）の処理を実行している間、図５に示した手順にしたがってメモリ３に格納されたタスクデータＡ２〜Ａ６及びＢ２〜Ｂ６に対応するディスクリプタＡ２〜Ａ６及びＢ２〜Ｂ６をそれぞれ作成し、それらの振り分け処理を実行する。ここでは、メモリ３に格納されたタスクデータＡ２〜Ａ６及びＢ２〜Ｂ６に対応するディスクリプタＡ２〜Ａ６及びＢ２〜Ｂ６を作成し、ディスクリプタＡ２〜Ａ６を接続してディスクリプタ列Ｑ１Ａを生成し、ディスクリプタＢ２〜Ｂ６を接続してディスクリプタ列Ｑ１Ｂを形成する（サイクル（５）〜（８））。
【００９２】
ＣＰＵ１は、ストリームプロセッサ２からディスクリプタキューＱ０による処理の終了を示す割り込み信号を受信すると、図６に示した手順にしたがってディスクリプタ列Ｑ１Ｂとディスクリプタ列Ｑ１Ａとを接続し、ディスクリプタキューＱ１を形成する。そして、入力ＤＭＡ回路２１のディスクリプタポインタにディスクリプタキューＱ１の最初のディスクリプタ列Ｑ１Ｂの先頭アドレスをセットし、入力ＤＭＡ回路２１にディスクリプタの読み出し処理（データＤＭＡ要求）を開始させる（サイクル（９））。
【００９３】
以上説明したように本発明の情報処理装置によれば、同一のタスクコマンドを持つディスクリプタどうしを接続してディスクリプタ列を形成し、ディスクリプタ列どうしを接続してディスクリプタキューを形成しておき、ストリームプロセッサ２が該ディスクリプタキューの構成にしたがって各ディスクリプタを順次読み出し、対応するタスクデータを連続して処理するため、アレイ型プロセッサ２３に対するタスク用プログラムのロード処理を最小限に抑制できる。したがって、ストリームプロセッサによるデータ処理のスループットが向上し、情報処理装置の処理能力を向上させることができる。
【図面の簡単な説明】
【００９４】
【図１】本発明の情報処理装置の一構成例を示すブロック図である。
【図２】図１に示した情報処理装置で用いるディスクリプタのフォーマットを示す模式図である。
【図３】図１に示した情報処理装置で用いるディスクリプタキューの一構成例を示す模式図である。
【図４】図１に示したＣＰＵが実行する処理全体の手順を示すフローチャートである。
【図５】図４に示したディスクリプタの振り分け処理の手順を示すフローチャートである。
【図６】図４に示したディスクリプタキューの作成処理の手順を示すフローチャートである。
【図７】本発明の情報処理装置の処理手順を示すタイミングチャートである。
【図８】従来の情報処理装置の構成を示すブロック図である。
【符号の説明】
【００９５】
１    ＣＰＵ
２    ストリームプロセッサ
３    メモリ
４    入出力回路
５    バス
６    ディスクリプタ生成装置
２１    入力ＤＭＡ回路
２２    ディスクリプタ管理テーブル
２３    アレイ型プロセッサ
２４    入力ＦＩＦＯ
２５    出力ＦＩＦＯ
２６    メモリアクセス制御回路
２７    構成情報ＤＭＡコントローラ
【図１】
2007034392.tif 000003
【図２】
2007034392.tif 000004
【図３】
2007034392.tif 000005
【図４】
2007034392.tif 000006
【図５】
2007034392.tif 000007
【図６】
2007034392.tif 000008
【図７】
2007034392.tif 000009
【図８】
2007034392.tif 000010