(57)【要約】【課題】アレイ型プロセッサの処理効率を向上させることができる、該アレイ型プロセッサを備えたストリームプロセッサ及び情報処理装置を提供する。【解決手段】メモリに格納されたデータを読み出し、指定された処理を実行するストリームプロセッサであって、処理を実行するデータパス部、及び該データに対して実行する処理を指定するコマンドにしたがってデータパス部の状態を制御する状態管理部を備えたアレイ型プロセッサと、メモリから処理対象のデータ及び該データに対応するコマンドを含む情報をそれぞれ読み出し、該コマンドを状態管理部へ先に送信し、その後、処理対象のデータを前記データパス部へ送信する入力ＤＭＡ回路とを有する構成とする。【選択図】図３
2006202271.tif 000002
【特許請求の範囲】
【請求項１】
メモリに格納されたデータを読み出し、指定された処理を実行するストリームプロセッサであって、
前記処理を実行するデータパス部、及び該データに対して実行する処理を指定するコマンドにしたがって前記データパス部の状態を制御する状態管理部を備えたアレイ型プロセッサと、
前記メモリから処理対象のデータ及び該データに対応するコマンドを含む情報をそれぞれ読み出し、該コマンドを前記状態管理部へ先に送信し、その後、前記処理対象のデータを前記データパス部へ送信する入力ＤＭＡ回路と、
を有するストリームプロセッサ。
【請求項２】
前記データパス部から出力された処理後のデータを前記メモリへ書き戻すためのメモリアクセス制御回路を有する請求項１記載のストリームプロセッサ。
【請求項３】
前記入力ＤＭＡ回路から前記データパス部へ供給する前記処理対象のデータを一時的に保持するデータキュー、並びに前記入力ＤＭＡ回路から前記状態管理部へ供給する前記コマンド及び前記処理対象のデータを識別するためのトランザクション識別子を一時的に保持するコマンドキューを備えた入力ＦＩＦＯをさらに有する請求項２記載のストリームプロセッサ。
【請求項４】
前記入力ＤＭＡ回路は、
前記処理対象のデータのサイズ情報を前記コマンドキューへ供給し、
前記コマンドキューは、
前記サイズ情報を前記データパス部へ供給する請求項３記載のストリームプロセッサ。
【請求項５】
前記データパス部は、
前記処理の途中で前記メモリからデータを読み出す場合、該データを前記メモリから読み出すためのリードコマンド、該データが格納された領域を示すアドレス、該データのトランザクション識別子及び前記リードコマンドによって前記メモリから読み出されたデータの返送時に再開する処理を指定するコマンドを出力し、
前記メモリアクセス制御回路は、
前記データパス部から受信した前記リードコマンド、前記アドレス、前記トランザクション識別子及び前記コマンドをそれぞれ保持し、前記アドレスで示される前記メモリの領域からデータを読み出し、読み出したデータを前記データキューへ送信し、該リードコマンドに対応する前記コマンド及び前記トランザクション識別子をそれぞれ前記コマンドキューへ送信する請求項３または４記載のストリームプロセッサ。
【請求項６】
前記メモリアクセス制御回路は、
前記処理対象のデータのサイズを前記コマンドキューへ供給し、
前記コマンドキューは、
前記サイズをデータパス部へ供給する請求項５記載のストリームプロセッサ。
【請求項７】
前記メモリアクセス制御回路は、
前記データパス部から受信した前記トランザクション識別子及び前記コマンドを、前記リードコマンドに対応して付与される識別子であるバスコマンドＩＤと関連付けて保持するための発行済みコマンド管理テーブルを有する請求項５記載のストリームプロセッサ。
【請求項８】
前記データパス部は、
前記リードコマンドを発行すると前記処理を中断し、
前記リードコマンドによって前記メモリから読み出されたデータを前記データキューから受け取ると、該中断した処理を再開する請求項５記載のストリームプロセッサ。
【請求項９】
前記入力ＦＩＦＯは、
前記入力ＤＭＡ回路またはメモリアクセス制御回路から出力されるデータのいずれか一方を前記データキューに供給する第１のセレクタと、
前記入力ＤＭＡ回路またはメモリアクセス制御回路から出力される前記コマンド及び前記トランザクション識別子のいずれか一方を前記コマンドキューに供給する第２のセレクタと、
前記入力ＤＭＡ回路またはメモリアクセス制御回路から出力されるデータの競合、並びに前記入力ＤＭＡ回路またはメモリアクセス制御回路から出力される前記コマンド及び前記トランザクション識別子の競合を調停するタイミング制御回路と、
を有する請求項３記載のストリームプロセッサ。
【請求項１０】
前記データパス部は、
前記トランザクション識別子を用いて、前記処理の途中のデータである中間データの読み出し及び前記中間データの書き込みが可能な、前記中間データを一時的に保持するレジスタファイルを有する請求項６記載のストリームプロセッサ。
【請求項１１】
前記コマンドが、
前記データパス部が最初に遷移すべき状態の番号である状態番号に一致している請求項１記載のストリームプロセッサ。
【請求項１２】
前記状態管理部は、
前記コマンドと前記データパス部が遷移すべき状態の番号である状態番号の関係が予め記録されたコマンド参照テーブルを有する請求項１記載のストリームプロセッサ。
【請求項１３】
前記アレイ型プロセッサから出力される処理後のデータを一時的に保持し、前記メモリアクセス制御回路へ送信する出力ＦＩＦＯを有する請求項２記載のストリームプロセッサ。
【請求項１４】
メモリから処理対象であるデータ、及び前記データに対する処理を指定するコマンドを含む情報とをそれぞれ読み出す入出力制御回路と、
前記コマンドにしたがって処理を実行するデータパス部、及び状態遷移過程情報にしたがって前記データパス部の状態を遷移させる状態管理部を備えたアレイ型プロセッサと、
を有するストリームプロセッサであって、
前記入出力制御回路は、
前記コマンドを前記状態管理部に送信後、前記処理対象のデータを前記データパス部に送信する入力ＤＭＡ回路を有し、
前記状態管理部は、
前記入力ＤＭＡ回路から送信された前記コマンドから前記データパス部の初期状態を決定するためのコマンド解析を行うコマンド解析部を有し、
前記入力ＤＭＡ回路は、
前記データパス部が前記入力ＤＭＡ回路から送信されたデータの処理を実行している間に、前記メモリから次の処理のコマンドを前記状態管理部に送信し、
前記コマンド解析部は、コマンド解析を実行し、
前記状態管理部は、
前記データパス部が前記処理の完了状態になった後、前記データパス部を前記コマンド解析部にて決定した前記初期状態に遷移させ、前記データパス部に次の処理を実行させるストリームプロセッサ。
【請求項１５】
ホストプロセッサと、
請求項１または１４記載のストリームプロセッサと、
前記ホストプロセッサ及び前記ストリームプロセッサの処理で使用されるデータが格納されるメモリと、
を有する情報処理装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、各種の処理を実現するアレイ型プロセッサを備えたストリームプロセッサ及び該ストリームプロセッサを備えた情報処理装置に関する。
【背景技術】
【０００２】
近年の情報処理装置は、その処理性能の向上に伴って利用範囲が広がり、より高度な演算処理あるいは画像や動画のように膨大なデータを高速に処理する能力が要求される。
【０００３】
このような要求を満たすための手法として、ホストプロセッサとは別に画像処理あるいは動画処理等のように所定の演算処理を専用に実行するＤＳＰ（Digital Signal Processor）を備えた構成が知られている。しかしながら、ＤＳＰは処理の内容が限られているため、より広範な演算処理に対応することを目的として、本出願人は演算処理を実行するデータパスの構成をソフトウェアにより変更可能なアレイ型プロセッサを既に提案している。なお、アレイ型プロセッサについては、特許文献１、特許文献２及び非特許文献１等に記載されている。
【０００４】
アレイ型プロセッサは、例えば、図１１に示すように、演算処理を実行するデータパス部１０５と、データパス部１０５の動作を制御する状態管理部１０６とを備えている。データパス部１０５は、複数のプロセッサエレメントとそれに対応する複数のスイッチエレメントとを備え、ソフトウェアにより各プロセッサエレメント及びスイッチエレメントへ供給する命令コードを切り換えることで各種の処理を実行する。なお、図１１は、特許文献２で開示された情報処理装置である。図１１に示す情報処理装置は、ＭＰＵ１０１と、アレイ型プロセッサ１０４及び該アレイ型プロセッサ１０４に対するデータの入出力を制御する入出力制御回路１０７を備えたストリームプロセッサ１０２と、ストリームプロセッサ１０２に対して入出力されるデータを一時的に保持するメモリ１０３とを有し、それらがバス１０８で接続された構成である。ストリームプロセッサ１０２は、複数のアレイ型プロセッサ１０４を備えることで複数の処理を並列に実行することが可能である。
【特許文献１】特開２００１−３１２４８１号公報
【特許文献２】特開２００３−１９６２４６号公報
【非特許文献１】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
【発明の開示】
【発明が解決しようとする課題】
【０００５】
しかしながら、アレイ型プロセッサは、その構造や動作がＣＰＵやＤＳＰ等と根本的に異なっている。アレイ型プロセッサに処理を実行させるためには、処理対象となるデータを渡す前に処理の種類を指定し、その処理を実行できる状態に設定しておく必要がある。すなわち、アレイ型プロセッサでは、処理を指定してから実際にその処理を実行できるまでに時間を要し、その分だけデータの処理効率が低下する問題がある。
【０００６】
例えば、図１１に示したアレイ型プロセッサでは、最初にデータパス部により入出力制御回路から処理を指定するコマンドを受け取り、該コマンドをデコードすることでイベントを生成し、該イベントを状態管理部へ送信する。状態管理部は、データパス部から送信されたイベントに対応する命令ポインタ（命令コードが格納された命令コードアドレスを示す）をデータパス部へ返送する。データパス部は、該命令ポインタで指定された命令コードにしたがってプロセッサエレメント及びスイッチエレメントの状態をそれぞれ切り換える（状態遷移する）。そして、データパス部は、状態遷移が完了した後に、入出力制御回路から処理対象のデータを受け取り、指定された処理を開始する。このように図１１に示したアレイ型プロセッサでは、データパス部によってコマンドの種類を解析し、状態管理部の制御によりコマンドで指定された処理を実行可能な状態へ遷移するため、入力されたデータを処理するまでに時間を要することになる。
【０００７】
また、上記非特許文献１では、アレイ型プロセッサを用いて４入力４出力のクロスバースイッチを実現した例が示されている。非特許文献１には、このクロスバースイッチの動作として、図１２に示すように、初期状態ＦＣから、状態００／１０／２０／３０のうち、状態００へ遷移し、さらに状態０１、０２または０３へ遷移し、処理が終了した後、初期状態ＦＣへ戻る状態遷移図が記載されている。この非特許文献１には、アレイ型プロセッサが、ある状態において次の状態へ遷移するための条件を判定し、その後、所望の回路を起動するまでに数サイクルのレイテンシが必要であることが明示されている。
【０００８】
なお、アレイ型プロセッサで実行可能な処理には様々な種類があり、例えば処理の途中でメモリから他のデータを読み出し、それらのデータを用いて処理を続行することも可能である。
【０００９】
アレイ型プロセッサは、内部メモリを備えているが、その記憶容量は限定されていることが多い。したがって、アレイ型プロセッサによる処理では、処理途中で大きな記憶容量を必要とするテーブルやデータを参照する場合、それらが格納されたメモリへアクセスする必要がある。このメモリとしては、例えば図１１に示したメモリ１０３が相当する。アレイ型プロセッサからメモリへアクセスする際には、データの読み出し／書き込みのためのコマンド及びアドレスを発行すると共に、データを書き込む場合はライトデータを送信し、データを読み出す場合はメモリから読み出されたリードデータを受信すればよい。
【００１０】
例えば、図１３に示すようにアレイ型プロセッサで実行する処理Ａ及び処理Ｂのうち、処理Ａをメモリに対するアクセス発生時に対応して処理Ａ−ａ、Ａ−ｂ、Ａ−ｃに分断して処理する場合、アレイ型プロセッサは、データが入力されると、最初に該データが処理Ａ用データであるか処理Ｂ用データであるかのデータ種を判定する。そして、処理Ａ用データであると判定した場合は、該データに対して処理Ａ−ａを実行し、処理Ａ−ａが終了するとメモリへアクセスして次の処理Ａ−ｂで使用するデータを読み出し、処理Ａ−ａの結果データと共に処理Ａ−ｂを実行する。処理Ａ−ｂが終了すると、メモリへ再びアクセスして次の処理Ａ−ｃで使用するデータを読み出し、処理Ａ−ｂの結果データと共に処理Ａ−ｃを実行する。最後に、処理Ａ−ｃが終了すると、メモリへアクセスして処理Ａ−ｃの結果データを書き込み、データ種判定状態に戻る。
【００１１】
ここで、従来のアレイ型プロセッサでは、処理Ａ−ａ及び処理Ａ−ｂの終了時に、メモリに対してデータを読み出すためのリードアドレスを発行（メモリアドレス発行）すると、メモリから読み出されたデータを受信（メモリデータ受信）するまで動作を停止（メモリデータ待ち）する。そのため、このことによってもアレイ型プロセッサの処理効率が低下してしまう。
【００１２】
本発明は上記したような従来の技術が有する問題点を解決するためになされたものであり、アレイ型プロセッサの処理効率を向上させることができる、該アレイ型プロセッサを備えたストリームプロセッサ及び情報処理装置を提供することを目的とする。
【課題を解決するための手段】
【００１３】
上記目的を達成するため本発明のストリームプロセッサは、メモリに格納されたデータを読み出し、指定された処理を実行するストリームプロセッサであって、
前記処理を実行するデータパス部、及び該データに対して実行する処理を指定するコマンドにしたがって前記データパス部の状態を制御する状態管理部を備えたアレイ型プロセッサと、
前記メモリから処理対象のデータ及び該データに対応するコマンドを含む情報をそれぞれ読み出し、該コマンドを前記状態管理部へ先に送信し、その後、前記処理対象のデータを前記データパス部へ送信する入力ＤＭＡ回路と、
を有する。
【００１４】
または、メモリから処理対象であるデータ、及び前記データに対する処理を指定するコマンドを含む情報とをそれぞれ読み出す入出力制御回路と、
前記コマンドにしたがって処理を実行するデータパス部、及び状態遷移過程情報にしたがって前記データパス部の状態を遷移させる状態管理部を備えたアレイ型プロセッサと、
を有するストリームプロセッサであって、
前記入出力制御回路は、
前記コマンドを前記状態管理部に送信後、前記処理対象のデータを前記データパス部に送信する入力ＤＭＡ回路を有し、
前記状態管理部は、
前記入力ＤＭＡ回路から送信された前記コマンドから前記データパス部の初期状態を決定するためのコマンド解析を行うコマンド解析部を有し、
前記入力ＤＭＡ回路は、
前記データパス部が前記入力ＤＭＡ回路から送信されたデータの処理を実行している間に、前記メモリから次の処理のコマンドを前記状態管理部に送信し、
前記コマンド解析部は、コマンド解析を実行し、
前記状態管理部は、
前記データパス部が前記処理の完了状態になった後、前記データパス部を前記コマンド解析部にて決定した前記初期状態に遷移させ、前記データパス部に次の処理を実行させる構成である。
【００１５】
一方、本発明の情報処理装置は、ホストプロセッサと、上記ストリームプロセッサと、前記ホストプロセッサ及び前記ストリームプロセッサの処理で使用されるデータが格納されるメモリとを有する。
【００１６】
上記のような構成では、入力ＤＭＡ回路により、先にデータの処理を指定するコマンドをアレイ型プロセッサの状態管理部へ送信し、その後、処理対象のデータをデータパス部へ送信するため、状態管理部により先にコマンド解析を実行し、データパス部が該コマンドに対応した状態に切り換わった後に、処理対象のデータを受信して処理を実行できる。また、状態管理部は、データパス部によるデータの処理中に、次に処理すべきコマンドを受信してコマンド解析を実行できる。
【００１７】
したがって、図１１に示した従来のアレイ型プロセッサのようにデータパス部によるコマンド解析が不要であり、コマンド解析による処理のオーバーヘッドが低減してアレイ型プロセッサによるデータの処理効率が向上する。
【発明の効果】
【００１８】
本発明によれば、アレイ型プロセッサによるデータの処理効率が向上するため、該アレイ型プロセッサを備えるストリームプロセッサ及び情報処理装置全体の処理効率も向上する。
【発明を実施するための最良の形態】
【００１９】
次に本発明について図面を参照して説明する。
【００２０】
まず、本発明のストリームプロセッサを備える情報処理装置について説明する。
【００２１】
図１は本発明のストリームプロセッサを有する情報処理装置の一構成例を示すブロック図である。
【００２２】
図１に示すように、情報処理装置は、ホストプロセッサであるＣＰＵ１と、複数の処理を並列に実行可能なストリームプロセッサ２と、ＣＰＵ１及びストリームプロセッサ２で処理するデータや処理結果データ等が格納されるメモリ３とを有し、ＣＰＵ１、ストリームプロセッサ２及びメモリ３が、バス４を介して互いにデータの送受信が可能に接続された構成である。メモリ３には、ＣＰＵ１やストリームプロセッサ２の処理対象となるデータ及び処理後のデータと共に、それらのデータの識別に用いる各種情報から成るディスクリプタが格納される。
【００２３】
ホストプロセッサは、ＣＰＵである必要はなく、情報処理装置全体の処理や制御が可能であれば、ＤＳＰやその他の処理装置であってもよい。また、メモリ３は、ストリームプロセッサ２からデータを読み出すためのリードコマンドが発行された際にデータを供給するものであればどのようなものでもよく、バス４に繋がる全てのメモリアドレス空間にマッピングされたものを含むものとする。例えばストリームプロセッサ２へは、ＦＩＦＯメモリを有する不図示の入出力装置を介して情報処理処理装置へ入力されるデータを供給してもよい。
【００２４】
ストリームプロセッサ２は、処理対象のデータをメモリ３から読み出す入力ＤＭＡ回路２１と、ディスクリプタを管理するディスクリプタ管理テーブル２２と、複数の処理を並列に実行可能な複数のアレイ型プロセッサ２３と、アレイ型プロセッサ２３による処理結果（出力データ）をメモリ３へ書き戻すためのメモリアクセス制御回路２６とを有する。入力ＤＭＡ回路２１、ディスクリプタ管理テーブル２２及びメモリアクセス制御回路２６は、例えば論理回路やメモリ等を用いた構成であってもよく、ＣＰＵ（またはＤＳＰ）とメモリとを備え、該メモリに格納されたプログラムにしたがってＣＰＵ（またはＤＳＰ）により以下に記載するストリームプロセッサ２の各種処理を実現する構成であってもよい。
【００２５】
ストリームプロセッサ２は、格子状に配列された複数のアレイ型プロセッサ２３を備え、これら複数のアレイ型プロセッサ２３により、処理を実行するためのチャネル（処理経路）が複数形成された構成である。ストリームプロセッサ２へ入力されたデータは入力ＤＭＡ回路２１により何れかのチャネルへ供給され、該データに対して処理が実行される。図１ではストリームプロセッサ２に、４つのチャネルが形成された例を示している。
【００２６】
入力ＤＭＡ回路２１には、各ディスクリプタが格納されたメモリ３のアドレスを示すディスクリプタポインタが格納される。このディスクリプタポインタの値は、例えば情報処理装置に搭載されたＣＰＵ１により、メモリ３に格納されたストリームプロセッサを制御するためのプログラムにしたがって設定される。ＣＰＵ１は、ストリームプロセッサ２に処理を実行させる場合、処理対象となるディスクリプタの先頭アドレスを示すアドレスポインタを入力ＤＭＡ回路２１のディスクリプタポインタにセットする。
【００２７】
入力ＤＭＡ回路２１は、最初にディスクリプタポインタに対応するディスクリプタをメモリ３から読み出し、該ディスクリプタをディスクリプタ管理テーブル２２に登録する。また、登録されたディスクリプタの各種情報に基づき処理対象のデータをメモリから読み出し、アレイ型プロセッサ２３で実行する処理を指定するコマンドと共にアレイ型プロセッサ２３の指定されたチャネルへ供給する。
【００２８】
アレイ型プロセッサ２３で処理されたデータは、メモリアクセス制御回路２６へ供給される。メモリアクセス制御回路２６は、ディスクリプタ管理テーブル２２に登録された、対応するディスクリプタの情報に基づきメモリ３の指定されたアドレス領域へ処理後のデータを格納する。
【００２９】
図２は図１に示したストリームプロセッサで用いるディスクリプタのフォーマットを示す模式図である。図２はディスクリプタが１２８ビットで構成された例を示しているが、ディスクリプタの情報量は、ＣＰＵ１やアレイ型プロセッサ２３の処理ビット幅、あるいはメモリ空間の大きさ等に応じて適宜変更すればよい。なお、図２中のフィールド名が記載されていない領域は予備として用いる空き領域である。
【００３０】
図２に示すように、本実施形態で用いるディスクリプタは、ＣＨＳＥＬ（チャネルセレクト）、ＴＩＤ（トランザクション識別子）、ＣＭＤ（コマンド）、ＩＳＩＺＥ（データサイズ）、ＲＡＤＲ（リターンデータアドレス（出力アドレス情報））、ＩＡＤＲ（入力データアドレス（入力アドレス情報））の各フィールドを備えている。
【００３１】
図２に示すＴＩＤ（トランザクション識別子）は、ストリームプロセッサ２の処理対象となるデータを識別するための識別子が格納されるフィールドである。ＴＩＤの値は、例えば処理対象のデータ（入力データ）と共にアレイ型プロセッサ２３へ供給され、処理後のデータ（出力データ）と共にアレイ型プロセッサ２３から出力される。そのため、ＴＩＤの値によってアレイ型プロセッサ２３による処理前のデータと処理後のデータの対応関係を管理でき、例えば複数のデータに対して同一の処理を実行する場合でもＴＩＤの値を用いて判別できる。
【００３２】
ＣＨＳＥＬ（チャネルセレクト）は、メモリから読み出したデータを処理するチャネルを指定するためのフィールドであり、処理を並列に実行するチャネル数（アレイ型プロセッサ２３の数）に対応するビット数を備えている。
【００３３】
ＩＡＤＲ（入力データアドレス）はストリームプロセッサ２による処理対象のデータ（入力データ）のメモリアドレスを示すデータバッファポインタが格納されるフィールドである。ＲＡＤＲ（リターンデータアドレス）はストリームプロセッサ２で処理されたデータ（出力データ）の格納先のメモリアドレスを示すデータバッファポインタが格納されるフィールドである。また、ＩＳＩＺＥはストリームプロセッサ２による処理対象のデータのサイズを示す情報が格納されるフィールドである。
【００３４】
ストリームプロセッサ２は、ＩＡＤＲで指定されたアドレスからＩＳＩＺＥで指定されたサイズのデータを読み出し、該データ（入力データ）をＣＨＳＥＬで指定されたアレイ型プロセッサ２３へ供給する。また、アレイ型プロセッサ２３で処理されたデータ（出力データ）をＲＡＤＲで指定されたアドレスを開始位置とするアドレス領域へ格納する。
【００３５】
ＣＭＤ（コマンド）は、アレイ型プロセッサ２３に対して処理の種類を指定するフィールドである。アレイ型プロセッサ２３は、処理可能な複数のアプリケーション（処理の種類）のうち、ＣＭＤフィールドの値にしたがって実行する処理を切り換える。
【００３６】
なお、上述したＴＩＤの値は、コマンド毎にデータを区別するように付与してもよく、コマンドに関係なく各データを区別するように付与してもよい。例えば、コマンド毎にデータを区別する場合は、各コマンドで同じＴＩＤの値を使用してもよい。また、コマンドに関係なく各データを区別する場合は、例えば、処理Ａ用にＴＩＤ＝１を使用したら、処理Ｂ用ではＴＩＤ＝１を使用しないようにすればよい。
【００３７】
（第１の実施の形態）
次に図１に示した情報処理装置に適用して好適な本発明のストリームプロセッサの第１の実施の形態について図面を用いて説明する。
【００３８】
図３は本発明のストリームプロセッサの第１の実施の形態の構成を示すブロック図である。
【００３９】
図３に示すように、本実施形態のストリームプロセッサは、入力ＤＭＡ回路２１によりディスクリプタから抽出したコマンドをアレイ型プロセッサ２３の状態管理部２３２へ供給し、ディスクリプタにしたがってメモリ３から読み出された処理対象のデータをデータパス部２３１へそれぞれ個別に供給する構成である。図３は、一つのアレイ型プロセッサ２３から成る一つのチャネルと、入力ＤＭＡ回路２１、ディスクリプタ管理テーブル２２及びメモリアクセス制御部２６との接続関係のみを示している。他のアレイ型プロセッサ２３も、図３と同様に、入力ＤＭＡ回路２１、ディスクリプタ管理テーブル２２及びメモリアクセス制御部２６がそれぞれ接続されていてもよく、図１に示したように、共通に利用される入力ＤＭＡ回路２１、ディスクリプタ管理テーブル２２及びメモリアクセス制御部２６にそれぞれ接続されていてもよい。
【００４０】
図４に示すように、入力ＤＭＡ回路２１は、ディスクリプタ、データの順にメモリ３から情報を受信する。また、入力ＤＭＡ回路２１は、アレイ型プロセッサ２３に対して、ディスクリプタから抽出したコマンドを先に状態管理部２３２へ送信し、その後、処理対象のデータをデータパス部２３１へ送信する。
【００４１】
本実施形態のアレイ型プロセッサ２３が備える状態管理部２３２は、外部からのコマンドを受け付け、該コマンドにしたがってデータパス部２３１の状態へ遷移させるための機能を備えている。具体的には、入力ＤＭＡ回路２１から送信されたコマンドが格納されるレジスタを備え、状態管理部２３２がコマンド解析等を実行していない待ち受け状態にあるときに、該レジスタの値に応じた状態番号を生成する論理回路等を備えている。
【００４２】
上述した状態管理部２３２が外部からのコマンドを受け付ける機能は、特許文献１、２及び非特許文献のいずれにも記載されていない。
【００４３】
なお、本実施形態で使用するＣＭＤフィールドの値は、例えばそのコマンドに対応する処理を実行する際にデータパス部２３１が最初に遷移すべき状態の状態番号に一致させておくことが望ましい。この「状態」とはデータパス部２３１の構成要素であるプロセッサエレメント及びスイッチエレメントの状態を示している。状態管理部２３２は、複数の状態間の遷移ルールが書き込まれた状態遷移テーブルを記憶する状態遷移テーブルメモリ、状態遷移テーブルメモリを用いて複数の状態間の遷移を制御することにより次の状態を決定するシーケンス部及び命令コードを記憶する命令メモリのアドレスである命令コードアドレス（命令ポインタ）をデータパス部２３１へ出力する制御情報メモリを備え（いずれも不図示。上記特許文献１参照）、現在の状態番号に応じて命令ポインタをデータパス部２３１へ出力する。状態番号はデータパス部２３１から送信されるイベントあるいは上述したように外部からのコマンドによって切り換わる。
【００４４】
このようにＣＭＤフィールドの値を最初に遷移すべき状態番号に一致させておけば、状態管理部２３２はコマンド解析に要する時間を短縮できる。ＣＭＤフィールドの値が最初に遷移すべき状態番号と一致していない場合、状態管理部２３２は、最初に遷移すべき状態番号を、予め備えるコマンドと状態番号の関係が記録されたコマンド参照テーブルを参照することで取得すればよい。
【００４５】
なお、上記説明では、状態管理部２３２が、状態番号にしたがってデータパス部２３１の状態を制御する論理回路で構成された例を示したが、状態管理部２３２は、例えばＣＰＵを備えた構成であってもよい。その場合、上記状態番号に代えてプログラムカウンタを用い、該プログラムカウンタの値を、データパス部２３１から送信されるイベントあるいは外部から与えられるコマンドによって切り換え可能にすればよい。
【００４６】
本実施形態のストリームプロセッサによれば、入力ＤＭＡ回路２１により、先にデータの処理内容を指示するコマンドをアレイ型プロセッサ２３の状態管理部２３２へ送信し、その後、処理対象のデータをデータパス部２３１へ送信するため、状態管理部２３２により先にコマンド解析を実行し、データパス部２３１が該コマンドに対応した状態に切り換わった後にデータを受信して処理を実行できる。また、状態管理部２３２は、データパス部２３１によるデータの処理中に、次に処理すべきコマンドを受信してコマンド解析を先に実行することができる。
【００４７】
したがって、図１１に示した従来のアレイ型プロセッサのように、データパス部２３２によるコマンド解析が不要であり、コマンド解析による処理のオーバーヘッドが低減する。よって、アレイ型プロセッサによるデータの処理効率が向上する。さらに、該アレイ型プロセッサを備えるストリームプロセッサ２及び情報処理装置全体の処理効率も向上する。
【００４８】
（第２の実施の形態）
次に図１に示した情報処理装置に適用して好適な本発明のストリームプロセッサの第２の実施の形態について図面を用いて説明する。
【００４９】
図５は本発明のストリームプロセッサの第２の実施の形態の構成を示すブロック図である。
【００５０】
図５に示すように、第２の実施の形態のストリームプロセッサは、第１の実施の形態で示したストリームプロセッサの構成に加えて、入力ＤＭＡ回路２１からアレイ型プロセッサ２３へ供給されるデータ及びコマンド等を一時的に保持する入力ＦＩＦＯ２４をさらに有する構成である。なお、図５は、図３と同様に、一つのアレイ型プロセッサ２３及びそれに対応する一つの入力ＦＩＦＯ２４から成る一つのチャネルと、入力ＤＭＡ回路２１、ディスクリプタ管理テーブル２２及びメモリアクセス制御部２６との接続関係のみを示している。他のアレイ型プロセッサ２３及び入力ＦＩＦＯ２４も、図５と同様に、入力ＤＭＡ回路２１、ディスクリプタ管理テーブル２２及びメモリアクセス制御部２６がそれぞれ接続されていてもよく、図１に示したように、共通に利用される入力ＤＭＡ回路２１、ディスクリプタ管理テーブル２２及びメモリアクセス制御部２６にそれぞれ接続されていてもよい。
【００５１】
図５に示すように、入力ＦＩＦＯ２４は、データパス部２３１へ供給する処理対象のデータを一時的に保持するデータキュー２４１と、状態管理部２３２へ供給するコマンドを一時的に保持するコマンドキュー２４２とを有する構成である。入力ＤＭＡ回路２１から送信された処理対象のデータはデータキュー２４１を介してデータパス部２３１へ供給され、入力ＤＭＡ回路２１から送信されたコマンドはコマンドキュー２４２を介して状態管理部２３２へ供給される。
【００５２】
さらに、本実施形態のストリームプロセッサでは、ディスクリプタから抽出した、処理対象のデータに対応するトランザクションＩＤ（ＴＩＤ）及び該データのサイズ情報もコマンドと共に入力ＤＭＡ回路２１からコマンドキュー２４２へそれぞれ送信される。コマンドキュー２４２は、入力ＤＭＡ回路２１から送信されたコマンド及びＴＩＤをそれぞれ状態管理部２３２へ供給し、サイズ情報をデータパス部２３１へ供給する。
【００５３】
このとき、入力ＤＭＡ回路２１は、第１の実施の形態と同様に、ディスクリプタ、データの順にメモリ３から情報を受信し、コマンド及びＴＩＤを先にコマンドキュー２４２へ送信し、その後、処理対象のデータをデータキュー２４１へ送信する。
【００５４】
データのサイズ情報は、必ずしもデータパス部２３１へ供給する必要はない。サイズの情報をデータパス部２３１へ供給する場合、データパス部２３１は、該情報を利用することで受信したデータの終了を検出する必要が無くなるため、処理が簡単になる。
【００５５】
アレイ型プロセッサ２３のデータパス部２３１からは、処理後のデータと共に対応するＴＩＤの値がメモリアクセス制御回路２６へ送信される。アレイ型プロセッサ２３の出力側には、アレイ型プロセッサ２３による処理結果（出力データ）を一時的に保持するための出力ＦＩＦＯを備えていてもよい。出力ＦＩＦＯを備えている構成では、アレイ型プロセッサ２３とメモリアクセス制御回路２６のデータ転送レートの違いやクロックレートの差を吸収することが可能になる。
【００５６】
本実施形態のストリームプロセッサによれば、処理対象となるデータ及び該データの処理を指定するコマンドをそれぞれ保持する入力ＦＩＦＯ２４を有することで、状態管理部２３２によるコマンド解析の終了と同時に次に処理すべきコマンドをコマンドキュー２４２から状態管理部２３２へ供給することが可能であり、データパス部２３１による処理の終了と同時に次に処理すべきデータをデータキュー２４１からデータパス部２３１へ供給することが可能になる。
【００５７】
したがって、複数の処理を実行する場合に、アレイ型プロセッサ２３の動作を停止させることなく、効率よくコマンドやデータをアレイ型プロセッサ２３へ連続して供給することができるため、アレイ型プロセッサ２３の処理効率が向上する。
【００５８】
また、各処理毎のコマンド解析や対応する処理を実行できる状態に遷移するまでのレイテンシがあっても、その間に他の処理を並行して実行できるため、アレイ型プロセッサ２３の処理効率がさらに向上する。よって、該アレイ型プロセッサを備えるストリームプロセッサ及び情報処理装置全体の処理効率が向上する。
【００５９】
（第３の実施の形態）
次に図１に示した情報処理装置に適用して好適な本発明のストリームプロセッサの第３の実施の形態について図面を用いて説明する。
【００６０】
図６は本発明のストリームプロセッサの第３の実施の形態の構成を示すブロック図である。図６は、図３及び図５と同様に、一つのアレイ型プロセッサ２３及びそれに対応する一つの入力ＦＩＦＯ２４から成る一つのチャネルと、入力ＤＭＡ回路２１、ディスクリプタ管理テーブル２２及びメモリアクセス制御部２６との接続関係のみを示している。他のアレイ型プロセッサ２３及び入力ＦＩＦＯ２４も、図６と同様に、入力ＤＭＡ回路２１、ディスクリプタ管理テーブル２２及びメモリアクセス制御部２６がそれぞれ接続されていてもよく、図１に示した構成ように、共通に利用される入力ＤＭＡ回路２１、ディスクリプタ管理テーブル２２及びメモリアクセス制御部２６にそれぞれ接続されていてもよい。また、アレイ型プロセッサ２３の出力側には、第２の実施の形態と同様に、アレイ型プロセッサ２３による処理結果（出力データ）を一時的に保持する出力ＦＩＦＯを備えていてもよい。
【００６１】
上述したように、アレイ型プロセッサ２３は、内部メモリを備えているが、その記憶容量は限定されていることが多いため、処理途中で大きな記憶容量を必要とするテーブルやデータを参照するために、それらが格納されたメモリ３へアクセスする必要がある。
【００６２】
図６に示すように、第３の実施の形態のストリームプロセッサは、第２の実施の形態で示したストリームプロセッサの構成に加えて、メモリアクセス制御回路２６に、アレイ型プロセッサ２３から出力された処理後のデータをメモリ３へ書き戻す機能に加えて、アレイ型プロセッサ２３のデータパス部２３１からの指示にしたがってメモリ３からデータを読み出す機能及びメモリ３へデータを書き込む機能をそれぞれ備えた構成である。
【００６３】
また、メモリアクセス制御回路２６によりメモリ３から読み出されたデータ及びそのサイズ情報や対応するコマンド及びＴＩＤをアレイ型プロセッサ２３へ供給できるようにするため、本実施形態では、入力ＦＩＦＯ２４に、入力ＤＭＡ回路２１またはメモリアクセス制御回路２６からのデータをデータキュー２４１へ供給する第１のセレクタ２４３と、入力ＤＭＡ回路２１またはメモリアクセス制御回路２６からのサイズ、コマンド及びトランザクション識別子をそれぞれコマンドキュー２４２へ供給する第２のセレクタ２４４と、第１及び第２のセレクタによる切換動作を制御するタイミング制御回路２４５とを備えている。
【００６４】
タイミング制御回路２４５は、入力ＤＭＡ回路２１及びメモリアクセス制御回路２６からデータキュー２４１へ供給されるデータが競合した場合、あるいは入力ＤＭＡ回路２１及びメモリアクセス制御回路２６からコマンドキュー２４２へ供給されるコマンド及びＴＩＤが競合した場合にそれらを調停する。タイミング制御回路２４５による調停方法としては、単純に早く到達した信号から優先して処理する方法、あるいは入力ＤＭＡ回路２１またはメモリアクセス制御回路２６のいずれか一方からの信号を常に優先する方法等がある。
【００６５】
また、本実施形態のアレイ型プロセッサ２３のデータパス部２３１は、リードコマンドまたはライトコマンドとメモリアクセスするアドレス、並びに対応するＴＩＤ、データのサイズ及びメモリ３から読み出されたデータの返送時に再開する処理を指定する次処理コマンドをメモリアクセス制御回路２６へ発行する機能を備えている。
【００６６】
メモリアクセス制御回路２６を通してメモリ３からデータを読み出す場合、データパス部２３１は、リードコマンド、該データが格納された領域を示すアドレス、そのサイズ情報、ＴＩＤ、及び次処理コマンドをそれぞれ生成し、メモリアクセス制御回路２６へ送信する。メモリアクセス制御回路２６は、データパス部２３１から受け取ったアドレス及びサイズ情報に基づきリードコマンドをメモリ３へ送信し、メモリ３から必要なデータを読み出し、該データと共に対応するＴＩＤ及び次処理コマンドを指定されたチャネルの入力ＦＩＦＯ２４へ送信する。メモリアクセス制御回路２６を通してメモリ３へデータを書き込む場合、データパス部２３１は、ライトデータ（処理後のデータ）と共にそれに対応するＴＩＤを出力する。なお、ライトデータにはそのサイズ情報を付加してメモリアクセス制御回路２６へ送信してもよい。
【００６７】
図７は図６に示したストリームプロセッサが有するメモリアクセス制御回路の一構成例を示すブロック図である。
【００６８】
図７に示すように、本実施形態のメモリアクセス制御回路２６は、メモリ３に対してデータの書き込み用のコマンドまたは読み出し用のコマンドを送信するバスコマンド発行部２６１と、メモリ３へ書き込むデータを送信するライトデータ送信部２６２と、メモリ３から読み出されたデータを受信するリードデータ受信部２６３と、メモリ３から読み出すデータを識別するための情報が蓄積される発行済みバスコマンド管理テーブル２６４とを有する構成である。メモリアクセス制御回路２６とメモリ３とは、例えばバス４によって接続されている。なお、上述したように、本実施形態のメモリアクセス制御回路２６は、入力ＤＭＡ回路２１と同様にメモリ３からデータを読み出し、読み出したデータを指定されたチャネルへ供給するための機能も備えている。したがって、入力ＤＭＡ回路２１とメモリアクセス制御回路２６とがメモリ３へアクセスする際に競合が生じないように、ストリームプロセッサ２とメモリ３とは、例えばクロスバースイッチ等を用いて接続してもよい。
【００６９】
バスコマンド発行部２６１は、アレイ型プロセッサ２３のデータパス部２３１からメモリ３に対するアクセスコマンド（リードコマンドまたはライトコマンド）、ＴＩＤ、データのサイズ情報、格納先のアドレス、及びメモリ３から読み出されたデータの返送時に再開する処理を指定する次処理コマンドを受け取ると、バス４を介してメモリ３へアクセスコマンドを送信する。
【００７０】
メモリ３へデータを書き込む場合、バスコマンド発行部２６１には書き込み先を示すライトアドレスやデータのサイズ情報が蓄積され、ライトデータ送信部２６２にはメモリ３へ書き込むデータ（ライトデータ）が蓄積される。ライトデータ送信部２６２に蓄積されたデータは、バスコマンド発行部２６１から発行されたライトコマンドと共にバスのプロトコルルールにしたがってメモリ３へ送信され、メモリ３のアドレスで指定された領域へ格納される。
【００７１】
なお、メモリ３へデータを書き込む場合、アレイ型プロセッサ２３のデータパス部２３１はＴＩＤを出力する必要はない。一方、メモリ３からデータを読み出す場合、バスコマンド発行部２６１からは、バスコマンドＩＤと呼ばれるバス４上でトラフィックを管理するための識別子及びリードコマンドがバス４のプロトコルルールにしたがってメモリ３へ送信される。リードコマンドに付与されるバスコマンドＩＤは、メモリ３から読み出されたデータと共にリードデータ受信部２６３へ返信される。そのため、リードデータ受信部２６３は、どのリードコマンドによって読み出されたデータであるかをバスコマンドＩＤによって判別できる。バスコマンド発行部２６１は、発行済みバスコマンド管理テーブル２６４に、バスコマンドＩＤをアドレスとするエントリ毎に、対応するサイズ情報、アドレス、ＴＩＤ及び次処理コマンドをそれぞれ関連づけてテーブル形式で格納しておく。リードデータ受信部２６３は、メモリ３から読み出されたデータの受信時、バスコマンドＩＤを用いて発行済みバスコマンド管理テーブル２６４の対応するエントリからサイズ情報、ＴＩＤ及び次処理コマンドをそれぞれ取得し、入力ＦＩＦＯ２４へ読み出されたデータと共にそれらの情報を供給する。
【００７２】
本発明では、このようなバスコマンドＩＤを使うことで、あるリードコマンドに対応するリードデータが返送される前でも、次に発行すべきリードコマンドがある場合は、それを発行することが可能になる。バスコマンドＩＤは、現在発行中のコマンドを区別するためのものであり、リードコマンドと共にバスコマンドＩＤが返送されることで、その対応付けが容易である。
【００７３】
本実施形態では、このバスコマンドＩＤを用いることで、メモリアクセス制御回路２６によりメモリ３に対してアクセスコマンドを連続して発行できるため、高いスループットでメモリ３からデータを読み出すことができる。
【００７４】
次に、本実施形態のストリームプロセッサ２の動作について図面を用いて説明する。
【００７５】
図８は図６に示したストリームプロセッサの動作の一例を示すタイミングチャートである。
【００７６】
図８に示す入力ＤＭＡ回路２１の動作は、入力ＤＭＡ回路２１に入力されるディスクリプタ及び処理対象となるデータを時系列で示したものである。また、図８に示す入力ＦＩＦＯ２４のうち、コマンドキュー２４２の動作は各種コマンドが登録されるタイミングを示し、データキュー２４１の動作は処理対象となるデータが入力されるタイミングを示している。図８に示すアレイ型プロセッサ２３の動作のうち、状態管理部２３２は各種コマンドを受信するタイミング及びそのコマンドの解析結果に応じて処理を起動するタイミングを示し、データパス部２３１はコマンドに対応した処理対象のデータが入力されて指定された演算処理を実行するタイミングを示している。状態管理部２３２は、コマンドを解析していない期間はデータパス部２３１で実行されている処理の制御を行う。
【００７７】
以下では、アレイ型プロセッサ２３で２つの処理Ａ，Ｂを実行する場合を例にして説明する。但し、処理Ａはメモリ３へのアクセスが発生するタイミングで分断され、処理Ａ−ａ、Ａ−ｂ、Ａ−ｃの３つに分かれて実行されるものとする。処理Ａの対象となるデータとしてはデータ１、２の２つのデータがある。また、処理Ｂは、分かれて実行されるものではないが、処理対象となるデータとしてデータ１〜３の３つのデータがあるものとする。
【００７８】
入力ＤＭＡ回路２１には、最初に処理Ａ−ａを実行させるためのコマンドＡ−ａ及びデータ１に対する処理であることを示すＴＩＤ＝１を含むディスクリプタＡ−１が入力され、続いて処理Ｂを実行させるためのコマンドＢ及びデータ１に対する処理であることを示すＴＩＤ＝１を含むディスクリプタＢ−１、処理Ａ−ａを実行させるためのコマンドＡ−ａ及びデータ２に対する処理であることを示すＴＩＤ＝２を含むディスクリプタＡ−２、処理Ｂを実行させるためのコマンドＢ及びデータ２に対する処理であることを示すＴＩＤ＝２を含むディスクリプタＢ−２、処理Ｂを実行させるためのコマンドＢ及びデータ３に対する処理であることを示すＴＩＤ＝３を含むディスクリプタＢ−３の順に入力されるものとする。
【００７９】
また、以下では、データのサイズをコマンドキュー２４２へ送信しない例で説明する。また、以下の記載中で用いる「サイクル」とは、クロックサイクルを意味するのではなく、処理のステップを示すものとする。
【００８０】
（１）図８に示すように、まず入力ＤＭＡ回路２１は、ディスクリプタＡ−１を受信すると、該ディスクリプタＡ−１からコマンドＡ−ａ及びＴＩＤ＝１をそれぞれ抽出し、それらをコマンドキュー２４２へ転送する。
【００８１】
アレイ型プロセッサ２３の状態管理部２３２は、コマンドキュー２４２へ次に処理すべきエントリが格納されたことを認識すると、該エントリ中のコマンドを解析し、次のサイクル（２）でデータパス部２３１に処理Ａ−ａを起動させる。入力ＤＭＡ回路２１は、コマンドＡ−ａを解析している間、ディスクリプタＡ−１に続いてその処理対象となるデータ１（処理Ａ−ａ用データ１）を受信する。
【００８２】
（２）入力ＤＭＡ回路２１は、処理Ａ−ａ用データ１を受信すると、該データをデータキュー２４１へ転送する。一方、アレイ型プロセッサ２３のデータパス部２３１は、処理Ａ−ａを起動すると、データキュー２４１に格納された処理Ａ−ａ用データ１を受信し、処理Ａ−ａ（データ１）を実行する。
【００８３】
入力ＤＭＡ回路２１は、データキュー２４１に対する処理Ａ−ａ用データ１の転送終了後、次に処理するディスクリプタＢ−１を受信し、該ディスクリプタＢ−１からコマンドＢ及びＴＩＤ＝１をそれぞれ抽出し、それらをコマンドキュー２４２へ転送する。
【００８４】
アレイ型プロセッサ２３の状態管理部２３２は、データパス部２３１に処理Ａ−ａ（データ１）を実行させつつ、その処理が終わる直前までにコマンドＢ及びＴＩＤ＝１のコマンド解析を終了しておく。そして、処理Ａ−ａが終了した次のサイクル（３）でデータパス部２３１に処理Ｂを起動させる。
【００８５】
メモリアクセス制御回路２６は、処理Ａ−ａ（データ１）の終了時にデータパス部２３１からリードコマンドが発行されると、該リードコマンドと共に送信される、アドレス、ＴＩＤ（＝１）及びコマンドＡ−ｂをそれぞれ保持し、アドレス、リードコマンド及びそれに対応して付与されるバスコマンドＩＤをそれぞれメモリ３へ送信する。
【００８６】
（３）入力ＤＭＡ回路２１は、ディスクリプタＢ−１に続いてその処理対象となるデータ１（処理Ｂ用データ１）を受信し、データキュー２４１によるデータパス部２３１に対する処理Ａ−ａ用データ１の転送が終了すると、処理Ｂ用データ１をデータキュー２４１へ転送する。
【００８７】
アレイ型プロセッサ２３のデータパス部２３１は、処理Ｂを起動すると、データキュー２４１に格納された処理Ｂ用データ１を受信して処理Ｂ（データ１）を実行する。
【００８８】
メモリアクセス制御回路２６には、上記（２）で発行されたリードコマンドに対してメモリ３から読み出されたデータが返送される。このリードコマンドにはバスコマンドＩＤが付与されているため、メモリアクセス制御回路２６は、そのバスコマンドＩＤに対応するコマンドＡ−ｂ及びＴＩＤ＝１をコマンドキュー２４２へ送信する。
【００８９】
アレイ型プロセッサ２３の状態管理部２３２は、データパス部２３１に処理Ｂ（データ１）を実行させつつ、その処理が終わる直前までにコマンドＡ−ｂ及びＴＩＤ＝１のコマンド解析を終了しておく。そして、処理Ｂ（データ１）が終了した次のサイクル（４）でデータパス部２３１による処理Ａ−ｂ（データ１）を起動する。
【００９０】
入力ＤＭＡ回路２１は、データキュー２４１に対する処理Ｂ用データ１の転送終了後、次のディスクリプタＡ−２を受信する。
【００９１】
（４）入力ＤＭＡ回路は、上記（３）で受信したディスクリプタＡ−２からコマンドＡ−ａ及びＴＩＤ＝２をそれぞれ抽出し、それらをコマンドキュー２４２へ転送する。
【００９２】
また、入力ＤＭＡ回路２１は、ディスクリプタＡ−２に続いてその処理対象となるデータ２（処理Ａ−ａ用データ２）を受信する。
【００９３】
メモリアクセス制御回路２６は、データキュー２４１によるデータパス部２３１に対する処理Ｂ用データ１の転送が終了すると、メモリ３から読み出した処理Ａ−ｂ用データ１をデータキュー２４１へ送信する。アレイ型プロセッサ２３のデータパス部２３１は、処理Ａ−ｂ（データ１）を起動すると、データキュー２４１に格納された処理Ａ−ｂ用データ１を受信し、処理Ａ−ｂ（データ１）を実行する。
【００９４】
メモリアクセス制御回路２６は、上記（３）で実行されたデータパス部２３１による処理Ｂの結果データを受け取ると、該データをメモリ３へ送信し、ディスクリプタＢ−１で指定されたアドレス領域へ格納する。
【００９５】
アレイ型プロセッサ２３の状態管理部２３２は、データパス部２３１に処理Ａ−ｂ（データ１）を実行させつつ、その処理が終わる直前までにコマンドＡ−ａ及びＴＩＤ＝２のコマンド解析を終了しておく。そして、処理Ａ−ｂ（データ１）が終了した次のサイクル（５）でデータパス部２３１による処理Ａ−ａ（データ２）を起動する。
【００９６】
（５）入力ＤＭＡ回路２１は、データキュー２４１によるデータパス部２３１に対する処理Ａ−ｂ用データ１の転送が終了すると、処理Ａ−ａ用データ２をデータキュー２４１へ転送する。また、処理Ａ−ｂ用データ１に続いて次のディスクリプタＢ−２を受信し、該ディスクリプタＢ−２からコマンドＢ及びＴＩＤ＝２をそれぞれ抽出し、それらをコマンドキュー２４２へ格納する。
【００９７】
アレイ型プロセッサ２３の状態管理部２３２は、データパス部２３１で処理Ａ−ａ（データ２）が起動すると、データパス部２３１に処理Ａ−ａ（データ２）を実行させつつ、その処理が終わる直前までにコマンドＢ及びＴＩＤ＝２のコマンド解析を終了しておく。そして、処理Ａ−ａ（データ２）が終了した次のサイクル（６）でデータパス部２３１による処理Ｂ（データ２）を起動する。入力ＤＭＡ回路２１は、コマンドＢを解析している間、ディスクリプタＢ−２に続いて処理対象となるデータ２を受信する。
【００９８】
メモリアクセス制御回路２６は、処理Ａ−ｂ（データ１）の終了時にデータパス部２３１からリードコマンドが発行されると、該リードコマンドと共に送信される、アドレス、ＴＩＤ（＝１）及びコマンドＡ−ｃをそれぞれ保持し、アドレス、リードコマンド及びそれに対応して付与されるバスコマンドＩＤをそれぞれメモリ３へ送信する。
【００９９】
メモリアクセス制御回路２６には、サイクル（５）内で発行されたリードコマンドに対してメモリ３から読み出されたデータが返送される。このリードコマンドにはバスコマンドＩＤが付与されているため、メモリアクセス制御回路２６は、そのバスコマンドＩＤに対応するコマンドＡ−ｃ及びＴＩＤ＝１を次のサイクル（６）でコマンドキュー２４２へ送信する。
【０１００】
（６）入力ＤＭＡ回路２１は、処理Ｂ用データ２を受信すると、該データ２をデータキュー２４１へ転送する。一方、アレイ型プロセッサ２３のデータパス部２３１は、処理Ｂを起動すると、データキュー２４１に格納された処理Ｂ用データ２を受信し、処理Ｂ（データ２）を実行する。
【０１０１】
メモリアクセス制御回路２６は、処理Ａ−ａ（データ２）の終了時にデータパス部２３１からリードコマンドが発行されると、該リードコマンドと共に送信される、アドレス、ＴＩＤ（＝２）及びコマンドＡ−ｂをそれぞれ保持し、アドレス、リードコマンド及びそれに対応して付与されるバスコマンドＩＤをそれぞれメモリ３へ送信する。
【０１０２】
入力ＤＭＡ回路２１は、データキュー２４１に対する処理Ｂ用データ２の転送終了後、次のディスクリプタＢ−３を受信する。
【０１０３】
（７）入力ＤＭＡ回路２１は、ディスクリプタＢ−３を受信すると、該ディスクリプタＢ−３からコマンドＢ及びＴＩＤ＝３をそれぞれ抽出し、それらをコマンドキュー２４２へ転送する。
【０１０４】
アレイ型プロセッサ２３の状態管理部２３２は、上記サイクル（６）で起動したデータパス部２３１による処理Ｂ（データ２）を実行させつつ、上記サイクル（６）でコマンドキュー２４２に転送されたコマンドＡ−ｃ及びＴＩＤ＝１のコマンド解析を終了しておく。そして、処理Ａ−ｃ（データ１）の解析が終了した次のサイクル（８）でデータパス部２３１による処理Ａ−ｃ（データ１）を起動する。
【０１０５】
メモリアクセス制御回路２６は、データキュー２４１によるデータパス部２３１に対する処理Ｂ用データ２の転送が終了すると、メモリ３から読み出した処理Ａ−ｃ用データ１をデータキュー２４１へ送信する。
【０１０６】
メモリアクセス制御回路２６には、上記（６）で発行されたリードコマンドに対してメモリ３から読み出されたデータが返送される。このリードコマンドにはバスコマンドＩＤが付与されているため、メモリアクセス制御回路２６は、そのバスコマンドＩＤに対応するコマンドＡ−ｂ及びＴＩＤ＝２をコマンドキュー２４２へ送信する。ここでは、入力ＤＭＡ回路２１によるコマンドキュー２４２へのアクセスが優先されるため、入力ＤＭＡ回路２１により格納されたコマンドＢ及びＴＩＤ＝３がアレイ型プロセッサ２３の状態管理部２３２へ転送されるの待って、次のサイクル（８）でコマンドＡ−ｂ及びＴＩＤ＝２をコマンドキュー２４２へ送信する。
【０１０７】
（８）入力ＤＭＡ回路２１は、ディスクリプタＢ−３に続いて処理対象となるデータ３を受信し、データキュー２４１によるデータパス部２３１に対する処理Ａ−ｃ用データ１の転送が終了すると、処理Ｂ用データ３をデータキュー２４１へ格納する。
【０１０８】
アレイ型プロセッサ２３のデータパス部２３１は、処理Ａ−ｃを起動すると、データキュー２４１に格納された処理Ａ−ｃ用のデータ１を受信し、処理Ａ−ｃ（データ１）を実行する。
【０１０９】
アレイ型プロセッサ２３の状態管理部２３２は、データパス部に処理Ａ−ｃ（データ１）を実行させつつ、その処理が終わるまでにコマンドＢ及びＴＩＤ＝３のコマンド解析を終了しておく。
【０１１０】
メモリアクセス制御回路２６は、データパス部２３１による処理Ｂ（データ２）の結果データを受け取ると、該データをメモリ３へ送信し、ディスクリプタＢ−２で指定されたアドレス領域へ格納する。
【０１１１】
（９）入力ＤＭＡ回路２１は、データキュー２４１がデータパス部２３１へ処理Ｂ用データ３を転送し終えたら、処理Ａ−ｂ用データ２をデータキュー２４１へ格納する。
【０１１２】
アレイ型プロセッサ２３の状態管理部２３２は、データパス部２３１により処理Ｂ（データ３）を実行させつつ、その処理が終わる直前までにコマンドＡ−ｂ及びＴＩＤ＝２のコマンド解析を終了しておく。そして、処理Ｂが終了した次のサイクルでデータパス部２３１による処理Ａ−ｂ（データ２）を起動する。
【０１１３】
メモリアクセス制御回路２６は、データパス部２３１による処理Ａ−ｃ（データ１）の結果データを受け取ると、該データをメモリ３へ送信し、ディスクリプタＡ−１で指定されたアドレス領域へ格納する。
【０１１４】
（１０）アレイ型プロセッサのデータパス部２３１は、処理Ａ−ｂを起動すると、データキューに格納された処理Ａ−ｂ用のデータ２を受信し、処理Ａ−ｂを実行する。
【０１１５】
メモリアクセス制御回路２６は、処理Ａ−ｂ（データ２）の終了時にデータパス部２３１からリードコマンドが発行されると、該リードコマンドと共に送信される、アドレス、ＴＩＤ（＝２）及びコマンドＡ−ｃをそれぞれ保持し、アドレス、リードコマンド及びそれに対応して付与されるバスコマンドＩＤをそれぞれメモリ３へ送信する。
【０１１６】
以降、上記サイクル（３）、（４）と同様に、メモリアクセス制御回路２６は、メモリ３から返送されたバスコマンドＩＤに対応するコマンドＡ−ｃ及びＴＩＤ＝２をコマンドキュー２４２へ送信し、処理Ａ−ｃ用データ２をデータキュー２４１へ送信する。アレイ型プロセッサ２３は、状態管理部２３２によりコマンドＡ−ｃ及びＴＩＤ＝２の解析が終了した後、データパス部２３１により処理Ａ−ｃ（データ２）を実行し、結果データをメモリアクセス制御回路２６を介してメモリ３へ格納する。
【０１１７】
ここで、本実施形態のストリームプロセッサで用いるＴＩＤの重要性について説明する。
【０１１８】
例えば、処理Ａが処理Ａ−ａと処理Ａ−ｂとに分断されている場合、処理Ａ−ｂを開始する際には、メモリ３から読み出されたデータだけでなく、処理Ａ−ａの終了時に保持していた中間データと合わせて処理を再開する必要がある。
【０１１９】
処理Ａの処理対象として複数のデータがあり、それぞれのデータが、処理Ａ−ａと処理Ａ−ｂとにそれぞれ分断されて任意の順序で実行される場合を考える。ここでは、データ１に対する処理Ａ−ａ、データ２に対する処理Ａ−ａ、データ１に対する処理Ａ−ｂ、データ２に対する処理Ａ−ｂの順に実行されるものとする。
【０１２０】
このような場合、データ１に対する処理Ａ−ｂを実行する際には、処理Ａ−ａの結果として、データ１に対する中間データとデータ２に対する中間データとがあるため、いずれか一方を読み出す必要がある。
【０１２１】
本実施形態のストリームプロセッサでは、データを上記トランザクション識別子（ＴＩＤ）を用いて区別し、ＴＩＤに応じてアレイ型プロセッサが備えるデータ記憶領域を分割して使用することで、最適な中間データの読み出しを可能にする。
【０１２２】
図９に示すように、アレイ型プロセッサ２３のデータパス部２３１が備えるプロセッサエレメント（ＰＥ）は、レジスタファイル（Register File）と呼ばれるデータを保持するためのユニットをそれぞれ少なくとも１つ備えている（上記特許文献２参照）。通常、データパス部２３１は、状態管理部２３２から供給される命令ポインタ（ＩＰ）によって命令メモリから指定された処理に対応する命令コードを読み出す。その際、命令コードはデコーダによってデコードされ、その一部がレジスタファイルからデータを読み出すためのリードアドレス（リードアドレスフィールド）、またはレジスタファイルへデータを書き込むためのライトアドレス（ライトアドレスフィールド）となる。
【０１２３】
本実施形態のアレイ型プロセッサが有するデータパス部２３１は、このプロセッサエレメントが備えるレジスタファイルを、中間データを保持するためのデータ記憶領域として使用する。また、レジスタファイルへ与える中間データの読み出しアドレスまたは書き込みアドレスとして、状態管理部２３２から供給されるＴＩＤを使用できるようにする。具体的には、プロセッサエレメントが備えるデコーダからＴＩＤまたはリードアドレスフィールドのいずれか一方を選択するための読み出しアドレス選択フラグを出力させる。また、プロセッサエレメントに、読み出しアドレス選択フラグにしたがってＴＩＤまたはリードアドレスフィールドの値のいずれか一方をレジスタファイルへ与えるセレクタを備える。
【０１２４】
同様に、プロセッサエレメントが備えるデコーダからＴＩＤまたはライトアドレスフィールドのいずれか一方を選択するための書き込みアドレス選択フラグを出力させる。さらに、プロセッサエレメントに、書き込みアドレス選択フラグにしたがってＴＩＤまたはライトアドレスフィールドの値のいずれか一方をレジスタファイルへ与えるセレクタを備える。
【０１２５】
そして、中間データを読み出す場合、読み出しアドレス選択フラグによりセレクタにＴＩＤの値を選択させ、中間データを保持するレジスタファイルへ供給する。この場合、ＴＩＤの値で指定されたレジスタファイルからはスイッチエレメント（ＳＥ）を介してリードデータ（中間データ）が読み出される。
【０１２６】
また、中間データを書き込む場合、書き込みアドレス選択フラグによりセレクタにＴＩＤの値を選択させ、中間データを保持するレジスタファイルへ供給する。この場合、ＴＩＤの値で指定されたレジスタファイルへはスイッチエレメント（ＳＥ）を介してライトデータ（中間データ）が書き込まれる。
【０１２７】
このような構成では、複数の中間データを重複せずに保存することが可能であり、複数のレジスタファイルにそれぞれ格納された中間データをＴＩＤの値によって特定できる。したがって、分断された処理を再開する際に、ＴＩＤの値を用いて適切な中間データをレジスタファイルから読み出すことができる。
【０１２８】
中間データを保持する目的で使用されないレジスタファイルでは、読み出しアドレス選択フラグによりセレクタからリードアドレスフィールドの値が出力される。この場合、レジスタファイルからスイッチエレメント（ＳＥ）を介して読み出されたリードデータは他の処理で使用される。
【０１２９】
同様に、中間データを保持する目的で使用されないプロセッサエレメントあるいはレジスタファイルでは、書き込みアドレス選択フラグによりセレクタでライトアドレスフィールドの値が出力される。この場合、他の処理で使用するライトデータがスイッチエレメント（ＳＥ）を介してレジスタファイルへ格納される。
【０１３０】
なお、上記説明では、プロセッサエレメントが備えるレジスタファイルを、中間データを保持するためのデータ記憶領域として使用する例を示したが、プロセッサエレメントにレジスタファイル以外の内部メモリを搭載している場合は、該内部メモリに上記と同様の手法を適用することで複数の中間データの中から適切なデータを選択することが可能である。また、上記説明では、ＴＩＤをそのままアドレスとして使用する例を示したが、ＴＩＤをアドレスの上位ビットとして用いる等、アドレスの一部に含ませることでデータ記憶領域を分割して使用してもよい。
【０１３１】
上述したレジスタファイルにＴＩＤの値を用いて中間データを読み書きするための機能は、特許文献１、２及び非特許文献のいずれにも記載されていない。
【０１３２】
本実施形態のストリームプロセッサによれば、メモリアクセス制御回路２６により、データパス部２３１で生成されたリードコマンドにしたがってメモリ３からデータを読み出すと共に、メモリ３から読み出されたデータ、及びそれに対応する次処理コマンドやＴＩＤがアレイ型プロセッサ２３へ送信されるため、アレイ型プロセッサ２３は、分断された処理を再開する際に、その処理に必要なコマンドやデータを得ることが可能であり、メモリアクセスの発生によって処理を一旦中断しても、処理を確実に再開できる。
【０１３３】
そのため、従来のアレイ型プロセッサのように、メモリ３へリードコマンドを発行してから読み出されたデータが返送されるまでに、何も処理せずに動作を停止する必要はなく、他の処理を受け付けて実行することができる。よって、アレイ型プロセッサ２３の処理効率がさらに向上し、該アレイ型プロセッサを備えるストリームプロセッサ及び情報処理装置全体の処理効率が向上する。
【０１３４】
なお、ＣＰＵは、一般にメモリからデータを逐次読み出して処理を実行する必要がある。そのため、ＣＰＵを備えた情報処理装置では、メモリに対してリードコマンドを発行してから読み出されたデータが返送されるまでの待ち時間が、情報処理装置の処理速度のボトルネックとなっている。
【０１３５】
上述した第１の実施の形態〜第３の実施の形態のストリームプロセッサを備えた本発明の情報処理装置では、データを連続して処理する際にアレイ型プロセッサ２３のコマンド解析によるオーバーヘッドやメモリアクセスによるオーバーヘッドを実質的に無くすことができるため、ＣＰＵよりも高速にデータを処理することが可能であり、かつ従来のアレイ型プロセッサ２３と比べても高速にデータを処理できる。
【０１３６】
上述した第１の実施の形態〜第３の実施の形態を総括すると、本発明のストリームプロセッサは、図１０に示すように入出力制御回路３０１とアレイ型プロセッサ３０３とを有する構成である。
【０１３７】
図１０に示す入出力制御回路３０１は、図１に示したストリームプロセッサと同様に、入力ＤＭＡ回路３０２を備えている。
【０１３８】
入力ＤＭＡ回路３０２は、外部メモリ（不図示）から処理対象であるデータと、該データに対する処理を指定するコマンドを含む情報とをそれぞれ読み出し、アレイ型プロセッサ３０３へ転送する。
【０１３９】
アレイ型プロセッサ３０３は、データパス部３０４と状態管理部３０５とを備え、入力ＤＭＡ回路３０２は、外部メモリから読み出したデータをデータパス部３０４へ転送し、外部メモリから読み出したコマンドを状態管理部３０５へ転送する。
【０１４０】
データパス部３０４は、プロセッサエレメント（ＰＥ）３０６及びスイッチエレメント（ＳＥ）３０７をそれぞれ複数備えている。データパス部３０４は、処理を実行する過程で状態が遷移する。この「状態」とはデータパス部３０４の構成要素であるプロセッサエレメント３０６及びスイッチエレメント３０７の状態を示している。換言すれば、データパス部３０４の状態とは、データパス部３０４がある特定の回路構成を備えている状況やある特定の設定値を記憶している状況を示す。データパス部３０４は、状態を遷移させながら入力ＤＭＡ回路３０２から供給されたデータに対して所定の処理を実行する。このとき、データパス部３０４の状態遷移は状態管理部３０５によって制御される。データパス部３０４の各状態には、それぞれに対応する状態番号が割り付けられており、状態管理部３０５はこの状態番号の遷移を制御する。
【０１４１】
状態管理部３０５は、この状態番号の制御のために上述した状態遷移テーブルメモリ、シーケンス部及び制御情報メモリを備えている。状態管理部３０５は、状態遷移テーブルメモリに書き込まれた遷移ルール（状態遷移ルール）にしたがって、シーケンス部により次の状態番号を決定し、データパス部３０４の状態を順次遷移させ、データパス部３０４に所定の処理を実行させる。制御情報メモリには、状態番号に応じた命令コードを記憶する命令メモリのアドレスである命令ポインタが格納されている。なお、遷移ルールは、データパス部３０４が処理を開始してから終了するまでの各状態の遷移過程を示す情報である。遷移ルールは、例えば、データパス部３０４が処理を開始してから終了するまでに遷移するデータパス部３０４の各状態に対応する状態番号を遷移順に並べた情報であってもよく、ある状態の状態番号とそれに続く状態の状態番号の関係を示す情報であってもよい。
【０１４２】
ここで、遷移ルールは本願発明のストリームプロセッサが処理を始める前に予め組み込まれている。また、遷移ルールには、コマンド解析部が解析する複数のコマンドに対応する処理のルールが含まれる。
【０１４３】
状態管理部３０５は、状態番号が次の値に変化すると、該状態番号に対応する命令ポインタを制御情報メモリから読み出し、データパス部３０４へ出力する。この命令ポインタがデータパス部３０４の回路構成（すなわち複数のプロセッサエレメント３０６とスイッチエレメント３０７の回路構成）を対応する状態に遷移させる。状態が遷移しても命令ポインタが同じであれば回路構成は変わらない。状態管理部３０５は、遷移ルールにしたがってデータパス部３０４の状態を遷移させ、データパス部３０４に処理を実行させる。遷移ルールにしたがって処理の完了を示す遷移番号になったとき、データパス部３０４は処理を完了している。ここで、ストリームプロセッサは、次に実行すべき処理があれば、その処理に移行する。
【０１４４】
図１３に示したように、データパス部３０４は、処理途中の結果により遷移ルールが分岐するような場合、どの状態へ遷移するかを示す情報、すなわち分岐のための制御情報（イベント）を状態管理部３０５へ通知する。このイベントが状態管理部３０５へ送付されることにより、状態管理部３０５はデータパス部３０４が次に遷移すべき状態を判断し、それに対応する命令ポインタを発行し、データパス部３０４の状態を遷移させる。
【０１４５】
入力ＤＭＡ回路３０２によって外部メモリから読み出された、該データに対応する処理を指定するコマンドを含む情報には、前述のディスクリプタに格納された情報が用いられる。このコマンドは、状態管理部３０５に送信され、状態管理部３０５のコマンド解析部３０８で解析される。コマンド解析部３０８は、該コマンドに対応する状態番号を生成する論理回路等によって構成される。コマンド解析部３０８は、解析結果を状態管理部３０５のシーケンサ部へ出力した後、データパス部３０４で該コマンドに対応する処理が完了するまでに次の処理のコマンドを解析する。コマンド解析部３０８が出力する、解析結果である状態番号は、データパス部３０４における処理の最初の状態番号と一致するように設定しておくことが望ましい。
【０１４６】
図１０に示すストリームプロセッサは、メモリから処理対象となるデータ、及び該データに対する処理を指定するコマンドを含む情報とをそれぞれ読み出す入出力制御回路３０１と、コマンドにしたがった処理を実行するデータパス部３０４、及び状態遷移過程情報にしたがってデータパス部３０４の状態を遷移させる状態管理部３０５とを備えたアレイ型プロセッサ３０３とを有する構成である。
【０１４７】
入出力制御回路３０１は、コマンドを状態管理部３０５に送信後、処理対象のデータをデータパス部３０４へ送信する入力ＤＭＡ回路３０２を備えている。
【０１４８】
状態管理部３０５は、入力ＤＭＡ回路３０２から送信されたコマンドからデータパス部３０４の初期状態を決定するためのコマンド解析を行うコマンド解析部３０８を備えている。データパス部３０４が入力ＤＭＡ回路３０２から送信されたデータに対する処理を実行している間、入力ＤＭＡ回路３０２はメモリから読み出した次の処理のコマンドを状態管理部３０５へ送信し、コマンド解析部３０８にてコマンド解析を実行する。
【０１４９】
なお、コマンド解析部３０８が決定する初期状態とは、データパス部３０４が実行する処理に対応した遷移ルール上の最初の状態である。
【０１５０】
状態管理部３０５は、データパス部３０４が処理の完了状態になった後、データパス部３０４をコマンド解析部３０８が決定した初期状態に遷移させ、データパス部３０４は次の処理を実行する。
【０１５１】
したがって、本発明のストリームプロセッサによれば、データパス部３０４が処理を実行している間に、次に実行する処理のコマンド解析を並行して実行できる。これによりストリームプロセッサの処理速度及びスループットが向上する。
【図面の簡単な説明】
【０１５２】
【図１】本発明のストリームプロセッサを有する情報処理装置の一構成例を示すブロック図である。
【図２】図１に示したストリームプロセッサで用いるディスクリプタのフォーマットを示す模式図である。
【図３】本発明のストリームプロセッサの第１の実施の形態の構成を示すブロック図である。
【図４】図１に示した入力ＤＭＡ回路のデータ送受信タイミングを示すタイミングチャートである。
【図５】本発明のストリームプロセッサの第２の実施の形態の構成を示すブロック図である。
【図６】本発明のストリームプロセッサの第３の実施の形態の構成を示すブロック図である。
【図７】図６に示したストリームプロセッサが有するメモリアクセス制御回路の一構成例を示すブロック図である。
【図８】図６に示したストリームプロセッサの動作の一例を示すタイミングチャートである。
【図９】図６に示したアレイ型プロセッサの詳細な構成例を示すブロック図である。
【図１０】本発明のストリームプロセッサの一構成例を示すブロック図である。
【図１１】従来のストリームプロセッサを備える情報処理装置の構成を示すブロック図である。
【図１２】従来のアレイ型プロセッサの動作の一例を示す状態遷移図である。
【図１３】従来のアレイ型プロセッサの動作の他の例を示す状態遷移図である。
【符号の説明】
【０１５３】
１    ＣＰＵ
２、３０９    ストリームプロセッサ
３    メモリ
４    バス
２１、３０２    入力ＤＭＡ回路
２２    ディスクリプタ管理テーブル
２３、３０３    アレイ型プロセッサ
２４    入力ＦＩＦＯ
２５    出力ＦＩＦＯ
２６    メモリアクセス制御回路
２３１、３０４    データパス部
２３２    状態管理部
２４１    データキュー
２４２    コマンドキュー
２４３    第１のセレクタ
２４４    第２のセレクタ
２４５    タイミング制御回路
２６１    バスコマンド発行部
２６２    ライトデータ送信部
２６３    リードデータ受信部
２６４    発行済みバスコマンド管理テーブル
３０１    入出力制御回路
３０６    プロセッサエレメント
３０７    スイッチエレメント
３０８    コマンド解析部
【図１】
2006202271.tif 000003
【図２】
2006202271.tif 000004
【図３】
2006202271.tif 000005
【図４】
2006202271.tif 000006
【図５】
2006202271.tif 000007
【図６】
2006202271.tif 000008
【図７】
2006202271.tif 000009
【図８】
2006202271.tif 000010
【図９】
2006202271.tif 000011
【図１０】
2006202271.tif 000012
【図１１】
2006202271.tif 000013
【図１２】
2006202271.tif 000014
【図１３】
2006202271.tif 000015