次に本発明について図面を参照して説明する。
まず、本発明のストリームプロセッサを備える情報処理装置について説明する。
図1は本発明のストリームプロセッサを有する情報処理装置の一構成例を示すブロック図である。
図1に示すように、情報処理装置は、ホストプロセッサであるCPU1と、複数の処理を並列に実行可能なストリームプロセッサ2と、CPU1及びストリームプロセッサ2で処理するデータや処理結果データ等が格納されるメモリ3とを有し、CPU1、ストリームプロセッサ2及びメモリ3が、バス4を介して互いにデータの送受信が可能に接続された構成である。メモリ3には、CPU1やストリームプロセッサ2の処理対象となるデータ及び処理後のデータと共に、それらのデータの識別に用いる各種情報から成るディスクリプタが格納される。
ホストプロセッサは、CPUである必要はなく、情報処理装置全体の処理や制御が可能であれば、DSPやその他の処理装置であってもよい。また、メモリ3は、ストリームプロセッサ2からデータを読み出すためのリードコマンドが発行された際にデータを供給するものであればどのようなものでもよく、バス4に繋がる全てのメモリアドレス空間にマッピングされたものを含むものとする。例えばストリームプロセッサ2へは、FIFOメモリを有する不図示の入出力装置を介して情報処理処理装置へ入力されるデータを供給してもよい。
ストリームプロセッサ2は、処理対象のデータをメモリ3から読み出す入力DMA回路21と、ディスクリプタを管理するディスクリプタ管理テーブル22と、複数の処理を並列に実行可能な複数のアレイ型プロセッサ23と、アレイ型プロセッサ23による処理結果(出力データ)をメモリ3へ書き戻すためのメモリアクセス制御回路26とを有する。入力DMA回路21、ディスクリプタ管理テーブル22及びメモリアクセス制御回路26は、例えば論理回路やメモリ等を用いた構成であってもよく、CPU(またはDSP)とメモリとを備え、該メモリに格納されたプログラムにしたがってCPU(またはDSP)により以下に記載するストリームプロセッサ2の各種処理を実現する構成であってもよい。
ストリームプロセッサ2は、格子状に配列された複数のアレイ型プロセッサ23を備え、これら複数のアレイ型プロセッサ23により、処理を実行するためのチャネル(処理経路)が複数形成された構成である。ストリームプロセッサ2へ入力されたデータは入力DMA回路21により何れかのチャネルへ供給され、該データに対して処理が実行される。図1ではストリームプロセッサ2に、4つのチャネルが形成された例を示している。
入力DMA回路21には、各ディスクリプタが格納されたメモリ3のアドレスを示すディスクリプタポインタが格納される。このディスクリプタポインタの値は、例えば情報処理装置に搭載されたCPU1により、メモリ3に格納されたストリームプロセッサを制御するためのプログラムにしたがって設定される。CPU1は、ストリームプロセッサ2に処理を実行させる場合、処理対象となるディスクリプタの先頭アドレスを示すアドレスポインタを入力DMA回路21のディスクリプタポインタにセットする。
入力DMA回路21は、最初にディスクリプタポインタに対応するディスクリプタをメモリ3から読み出し、該ディスクリプタをディスクリプタ管理テーブル22に登録する。また、登録されたディスクリプタの各種情報に基づき処理対象のデータをメモリから読み出し、アレイ型プロセッサ23で実行する処理を指定するコマンドと共にアレイ型プロセッサ23の指定されたチャネルへ供給する。
アレイ型プロセッサ23で処理されたデータは、メモリアクセス制御回路26へ供給される。メモリアクセス制御回路26は、ディスクリプタ管理テーブル22に登録された、対応するディスクリプタの情報に基づきメモリ3の指定されたアドレス領域へ処理後のデータを格納する。
図2は図1に示したストリームプロセッサで用いるディスクリプタのフォーマットを示す模式図である。図2はディスクリプタが128ビットで構成された例を示しているが、ディスクリプタの情報量は、CPU1やアレイ型プロセッサ23の処理ビット幅、あるいはメモリ空間の大きさ等に応じて適宜変更すればよい。なお、図2中のフィールド名が記載されていない領域は予備として用いる空き領域である。
図2に示すように、本実施形態で用いるディスクリプタは、CHSEL(チャネルセレクト)、TID(トランザクション識別子)、CMD(コマンド)、ISIZE(データサイズ)、RADR(リターンデータアドレス(出力アドレス情報))、IADR(入力データアドレス(入力アドレス情報))の各フィールドを備えている。
図2に示すTID(トランザクション識別子)は、ストリームプロセッサ2の処理対象となるデータを識別するための識別子が格納されるフィールドである。TIDの値は、例えば処理対象のデータ(入力データ)と共にアレイ型プロセッサ23へ供給され、処理後のデータ(出力データ)と共にアレイ型プロセッサ23から出力される。そのため、TIDの値によってアレイ型プロセッサ23による処理前のデータと処理後のデータの対応関係を管理でき、例えば複数のデータに対して同一の処理を実行する場合でもTIDの値を用いて判別できる。
CHSEL(チャネルセレクト)は、メモリから読み出したデータを処理するチャネルを指定するためのフィールドであり、処理を並列に実行するチャネル数(アレイ型プロセッサ23の数)に対応するビット数を備えている。
IADR(入力データアドレス)はストリームプロセッサ2による処理対象のデータ(入力データ)のメモリアドレスを示すデータバッファポインタが格納されるフィールドである。RADR(リターンデータアドレス)はストリームプロセッサ2で処理されたデータ(出力データ)の格納先のメモリアドレスを示すデータバッファポインタが格納されるフィールドである。また、ISIZEはストリームプロセッサ2による処理対象のデータのサイズを示す情報が格納されるフィールドである。
ストリームプロセッサ2は、IADRで指定されたアドレスからISIZEで指定されたサイズのデータを読み出し、該データ(入力データ)をCHSELで指定されたアレイ型プロセッサ23へ供給する。また、アレイ型プロセッサ23で処理されたデータ(出力データ)をRADRで指定されたアドレスを開始位置とするアドレス領域へ格納する。
CMD(コマンド)は、アレイ型プロセッサ23に対して処理の種類を指定するフィールドである。アレイ型プロセッサ23は、処理可能な複数のアプリケーション(処理の種類)のうち、CMDフィールドの値にしたがって実行する処理を切り換える。
なお、上述したTIDの値は、コマンド毎にデータを区別するように付与してもよく、コマンドに関係なく各データを区別するように付与してもよい。例えば、コマンド毎にデータを区別する場合は、各コマンドで同じTIDの値を使用してもよい。また、コマンドに関係なく各データを区別する場合は、例えば、処理A用にTID=1を使用したら、処理B用ではTID=1を使用しないようにすればよい。
(第1の実施の形態)
次に図1に示した情報処理装置に適用して好適な本発明のストリームプロセッサの第1の実施の形態について図面を用いて説明する。
図3は本発明のストリームプロセッサの第1の実施の形態の構成を示すブロック図である。
図3に示すように、本実施形態のストリームプロセッサは、入力DMA回路21によりディスクリプタから抽出したコマンドをアレイ型プロセッサ23の状態管理部232へ供給し、ディスクリプタにしたがってメモリ3から読み出された処理対象のデータをデータパス部231へそれぞれ個別に供給する構成である。図3は、一つのアレイ型プロセッサ23から成る一つのチャネルと、入力DMA回路21、ディスクリプタ管理テーブル22及びメモリアクセス制御部26との接続関係のみを示している。他のアレイ型プロセッサ23も、図3と同様に、入力DMA回路21、ディスクリプタ管理テーブル22及びメモリアクセス制御部26がそれぞれ接続されていてもよく、図1に示したように、共通に利用される入力DMA回路21、ディスクリプタ管理テーブル22及びメモリアクセス制御部26にそれぞれ接続されていてもよい。
図4に示すように、入力DMA回路21は、ディスクリプタ、データの順にメモリ3から情報を受信する。また、入力DMA回路21は、アレイ型プロセッサ23に対して、ディスクリプタから抽出したコマンドを先に状態管理部232へ送信し、その後、処理対象のデータをデータパス部231へ送信する。
本実施形態のアレイ型プロセッサ23が備える状態管理部232は、外部からのコマンドを受け付け、該コマンドにしたがってデータパス部231の状態へ遷移させるための機能を備えている。具体的には、入力DMA回路21から送信されたコマンドが格納されるレジスタを備え、状態管理部232がコマンド解析等を実行していない待ち受け状態にあるときに、該レジスタの値に応じた状態番号を生成する論理回路等を備えている。
上述した状態管理部232が外部からのコマンドを受け付ける機能は、特許文献1、2及び非特許文献のいずれにも記載されていない。
なお、本実施形態で使用するCMDフィールドの値は、例えばそのコマンドに対応する処理を実行する際にデータパス部231が最初に遷移すべき状態の状態番号に一致させておくことが望ましい。この「状態」とはデータパス部231の構成要素であるプロセッサエレメント及びスイッチエレメントの状態を示している。状態管理部232は、複数の状態間の遷移ルールが書き込まれた状態遷移テーブルを記憶する状態遷移テーブルメモリ、状態遷移テーブルメモリを用いて複数の状態間の遷移を制御することにより次の状態を決定するシーケンス部及び命令コードを記憶する命令メモリのアドレスである命令コードアドレス(命令ポインタ)をデータパス部231へ出力する制御情報メモリを備え(いずれも不図示。上記特許文献1参照)、現在の状態番号に応じて命令ポインタをデータパス部231へ出力する。状態番号はデータパス部231から送信されるイベントあるいは上述したように外部からのコマンドによって切り換わる。
このようにCMDフィールドの値を最初に遷移すべき状態番号に一致させておけば、状態管理部232はコマンド解析に要する時間を短縮できる。CMDフィールドの値が最初に遷移すべき状態番号と一致していない場合、状態管理部232は、最初に遷移すべき状態番号を、予め備えるコマンドと状態番号の関係が記録されたコマンド参照テーブルを参照することで取得すればよい。
なお、上記説明では、状態管理部232が、状態番号にしたがってデータパス部231の状態を制御する論理回路で構成された例を示したが、状態管理部232は、例えばCPUを備えた構成であってもよい。その場合、上記状態番号に代えてプログラムカウンタを用い、該プログラムカウンタの値を、データパス部231から送信されるイベントあるいは外部から与えられるコマンドによって切り換え可能にすればよい。
本実施形態のストリームプロセッサによれば、入力DMA回路21により、先にデータの処理内容を指示するコマンドをアレイ型プロセッサ23の状態管理部232へ送信し、その後、処理対象のデータをデータパス部231へ送信するため、状態管理部232により先にコマンド解析を実行し、データパス部231が該コマンドに対応した状態に切り換わった後にデータを受信して処理を実行できる。また、状態管理部232は、データパス部231によるデータの処理中に、次に処理すべきコマンドを受信してコマンド解析を先に実行することができる。
したがって、図11に示した従来のアレイ型プロセッサのように、データパス部232によるコマンド解析が不要であり、コマンド解析による処理のオーバーヘッドが低減する。よって、アレイ型プロセッサによるデータの処理効率が向上する。さらに、該アレイ型プロセッサを備えるストリームプロセッサ2及び情報処理装置全体の処理効率も向上する。
(第2の実施の形態)
次に図1に示した情報処理装置に適用して好適な本発明のストリームプロセッサの第2の実施の形態について図面を用いて説明する。
図5は本発明のストリームプロセッサの第2の実施の形態の構成を示すブロック図である。
図5に示すように、第2の実施の形態のストリームプロセッサは、第1の実施の形態で示したストリームプロセッサの構成に加えて、入力DMA回路21からアレイ型プロセッサ23へ供給されるデータ及びコマンド等を一時的に保持する入力FIFO24をさらに有する構成である。なお、図5は、図3と同様に、一つのアレイ型プロセッサ23及びそれに対応する一つの入力FIFO24から成る一つのチャネルと、入力DMA回路21、ディスクリプタ管理テーブル22及びメモリアクセス制御部26との接続関係のみを示している。他のアレイ型プロセッサ23及び入力FIFO24も、図5と同様に、入力DMA回路21、ディスクリプタ管理テーブル22及びメモリアクセス制御部26がそれぞれ接続されていてもよく、図1に示したように、共通に利用される入力DMA回路21、ディスクリプタ管理テーブル22及びメモリアクセス制御部26にそれぞれ接続されていてもよい。
図5に示すように、入力FIFO24は、データパス部231へ供給する処理対象のデータを一時的に保持するデータキュー241と、状態管理部232へ供給するコマンドを一時的に保持するコマンドキュー242とを有する構成である。入力DMA回路21から送信された処理対象のデータはデータキュー241を介してデータパス部231へ供給され、入力DMA回路21から送信されたコマンドはコマンドキュー242を介して状態管理部232へ供給される。
さらに、本実施形態のストリームプロセッサでは、ディスクリプタから抽出した、処理対象のデータに対応するトランザクションID(TID)及び該データのサイズ情報もコマンドと共に入力DMA回路21からコマンドキュー242へそれぞれ送信される。コマンドキュー242は、入力DMA回路21から送信されたコマンド及びTIDをそれぞれ状態管理部232へ供給し、サイズ情報をデータパス部231へ供給する。
このとき、入力DMA回路21は、第1の実施の形態と同様に、ディスクリプタ、データの順にメモリ3から情報を受信し、コマンド及びTIDを先にコマンドキュー242へ送信し、その後、処理対象のデータをデータキュー241へ送信する。
データのサイズ情報は、必ずしもデータパス部231へ供給する必要はない。サイズの情報をデータパス部231へ供給する場合、データパス部231は、該情報を利用することで受信したデータの終了を検出する必要が無くなるため、処理が簡単になる。
アレイ型プロセッサ23のデータパス部231からは、処理後のデータと共に対応するTIDの値がメモリアクセス制御回路26へ送信される。アレイ型プロセッサ23の出力側には、アレイ型プロセッサ23による処理結果(出力データ)を一時的に保持するための出力FIFOを備えていてもよい。出力FIFOを備えている構成では、アレイ型プロセッサ23とメモリアクセス制御回路26のデータ転送レートの違いやクロックレートの差を吸収することが可能になる。
本実施形態のストリームプロセッサによれば、処理対象となるデータ及び該データの処理を指定するコマンドをそれぞれ保持する入力FIFO24を有することで、状態管理部232によるコマンド解析の終了と同時に次に処理すべきコマンドをコマンドキュー242から状態管理部232へ供給することが可能であり、データパス部231による処理の終了と同時に次に処理すべきデータをデータキュー241からデータパス部231へ供給することが可能になる。
したがって、複数の処理を実行する場合に、アレイ型プロセッサ23の動作を停止させることなく、効率よくコマンドやデータをアレイ型プロセッサ23へ連続して供給することができるため、アレイ型プロセッサ23の処理効率が向上する。
また、各処理毎のコマンド解析や対応する処理を実行できる状態に遷移するまでのレイテンシがあっても、その間に他の処理を並行して実行できるため、アレイ型プロセッサ23の処理効率がさらに向上する。よって、該アレイ型プロセッサを備えるストリームプロセッサ及び情報処理装置全体の処理効率が向上する。
(第3の実施の形態)
次に図1に示した情報処理装置に適用して好適な本発明のストリームプロセッサの第3の実施の形態について図面を用いて説明する。
図6は本発明のストリームプロセッサの第3の実施の形態の構成を示すブロック図である。図6は、図3及び図5と同様に、一つのアレイ型プロセッサ23及びそれに対応する一つの入力FIFO24から成る一つのチャネルと、入力DMA回路21、ディスクリプタ管理テーブル22及びメモリアクセス制御部26との接続関係のみを示している。他のアレイ型プロセッサ23及び入力FIFO24も、図6と同様に、入力DMA回路21、ディスクリプタ管理テーブル22及びメモリアクセス制御部26がそれぞれ接続されていてもよく、図1に示した構成ように、共通に利用される入力DMA回路21、ディスクリプタ管理テーブル22及びメモリアクセス制御部26にそれぞれ接続されていてもよい。また、アレイ型プロセッサ23の出力側には、第2の実施の形態と同様に、アレイ型プロセッサ23による処理結果(出力データ)を一時的に保持する出力FIFOを備えていてもよい。
上述したように、アレイ型プロセッサ23は、内部メモリを備えているが、その記憶容量は限定されていることが多いため、処理途中で大きな記憶容量を必要とするテーブルやデータを参照するために、それらが格納されたメモリ3へアクセスする必要がある。
図6に示すように、第3の実施の形態のストリームプロセッサは、第2の実施の形態で示したストリームプロセッサの構成に加えて、メモリアクセス制御回路26に、アレイ型プロセッサ23から出力された処理後のデータをメモリ3へ書き戻す機能に加えて、アレイ型プロセッサ23のデータパス部231からの指示にしたがってメモリ3からデータを読み出す機能及びメモリ3へデータを書き込む機能をそれぞれ備えた構成である。
また、メモリアクセス制御回路26によりメモリ3から読み出されたデータ及びそのサイズ情報や対応するコマンド及びTIDをアレイ型プロセッサ23へ供給できるようにするため、本実施形態では、入力FIFO24に、入力DMA回路21またはメモリアクセス制御回路26からのデータをデータキュー241へ供給する第1のセレクタ243と、入力DMA回路21またはメモリアクセス制御回路26からのサイズ、コマンド及びトランザクション識別子をそれぞれコマンドキュー242へ供給する第2のセレクタ244と、第1及び第2のセレクタによる切換動作を制御するタイミング制御回路245とを備えている。
タイミング制御回路245は、入力DMA回路21及びメモリアクセス制御回路26からデータキュー241へ供給されるデータが競合した場合、あるいは入力DMA回路21及びメモリアクセス制御回路26からコマンドキュー242へ供給されるコマンド及びTIDが競合した場合にそれらを調停する。タイミング制御回路245による調停方法としては、単純に早く到達した信号から優先して処理する方法、あるいは入力DMA回路21またはメモリアクセス制御回路26のいずれか一方からの信号を常に優先する方法等がある。
また、本実施形態のアレイ型プロセッサ23のデータパス部231は、リードコマンドまたはライトコマンドとメモリアクセスするアドレス、並びに対応するTID、データのサイズ及びメモリ3から読み出されたデータの返送時に再開する処理を指定する次処理コマンドをメモリアクセス制御回路26へ発行する機能を備えている。
メモリアクセス制御回路26を通してメモリ3からデータを読み出す場合、データパス部231は、リードコマンド、該データが格納された領域を示すアドレス、そのサイズ情報、TID、及び次処理コマンドをそれぞれ生成し、メモリアクセス制御回路26へ送信する。メモリアクセス制御回路26は、データパス部231から受け取ったアドレス及びサイズ情報に基づきリードコマンドをメモリ3へ送信し、メモリ3から必要なデータを読み出し、該データと共に対応するTID及び次処理コマンドを指定されたチャネルの入力FIFO24へ送信する。メモリアクセス制御回路26を通してメモリ3へデータを書き込む場合、データパス部231は、ライトデータ(処理後のデータ)と共にそれに対応するTIDを出力する。なお、ライトデータにはそのサイズ情報を付加してメモリアクセス制御回路26へ送信してもよい。
図7は図6に示したストリームプロセッサが有するメモリアクセス制御回路の一構成例を示すブロック図である。
図7に示すように、本実施形態のメモリアクセス制御回路26は、メモリ3に対してデータの書き込み用のコマンドまたは読み出し用のコマンドを送信するバスコマンド発行部261と、メモリ3へ書き込むデータを送信するライトデータ送信部262と、メモリ3から読み出されたデータを受信するリードデータ受信部263と、メモリ3から読み出すデータを識別するための情報が蓄積される発行済みバスコマンド管理テーブル264とを有する構成である。メモリアクセス制御回路26とメモリ3とは、例えばバス4によって接続されている。なお、上述したように、本実施形態のメモリアクセス制御回路26は、入力DMA回路21と同様にメモリ3からデータを読み出し、読み出したデータを指定されたチャネルへ供給するための機能も備えている。したがって、入力DMA回路21とメモリアクセス制御回路26とがメモリ3へアクセスする際に競合が生じないように、ストリームプロセッサ2とメモリ3とは、例えばクロスバースイッチ等を用いて接続してもよい。
バスコマンド発行部261は、アレイ型プロセッサ23のデータパス部231からメモリ3に対するアクセスコマンド(リードコマンドまたはライトコマンド)、TID、データのサイズ情報、格納先のアドレス、及びメモリ3から読み出されたデータの返送時に再開する処理を指定する次処理コマンドを受け取ると、バス4を介してメモリ3へアクセスコマンドを送信する。
メモリ3へデータを書き込む場合、バスコマンド発行部261には書き込み先を示すライトアドレスやデータのサイズ情報が蓄積され、ライトデータ送信部262にはメモリ3へ書き込むデータ(ライトデータ)が蓄積される。ライトデータ送信部262に蓄積されたデータは、バスコマンド発行部261から発行されたライトコマンドと共にバスのプロトコルルールにしたがってメモリ3へ送信され、メモリ3のアドレスで指定された領域へ格納される。
なお、メモリ3へデータを書き込む場合、アレイ型プロセッサ23のデータパス部231はTIDを出力する必要はない。一方、メモリ3からデータを読み出す場合、バスコマンド発行部261からは、バスコマンドIDと呼ばれるバス4上でトラフィックを管理するための識別子及びリードコマンドがバス4のプロトコルルールにしたがってメモリ3へ送信される。リードコマンドに付与されるバスコマンドIDは、メモリ3から読み出されたデータと共にリードデータ受信部263へ返信される。そのため、リードデータ受信部263は、どのリードコマンドによって読み出されたデータであるかをバスコマンドIDによって判別できる。バスコマンド発行部261は、発行済みバスコマンド管理テーブル264に、バスコマンドIDをアドレスとするエントリ毎に、対応するサイズ情報、アドレス、TID及び次処理コマンドをそれぞれ関連づけてテーブル形式で格納しておく。リードデータ受信部263は、メモリ3から読み出されたデータの受信時、バスコマンドIDを用いて発行済みバスコマンド管理テーブル264の対応するエントリからサイズ情報、TID及び次処理コマンドをそれぞれ取得し、入力FIFO24へ読み出されたデータと共にそれらの情報を供給する。
本発明では、このようなバスコマンドIDを使うことで、あるリードコマンドに対応するリードデータが返送される前でも、次に発行すべきリードコマンドがある場合は、それを発行することが可能になる。バスコマンドIDは、現在発行中のコマンドを区別するためのものであり、リードコマンドと共にバスコマンドIDが返送されることで、その対応付けが容易である。
本実施形態では、このバスコマンドIDを用いることで、メモリアクセス制御回路26によりメモリ3に対してアクセスコマンドを連続して発行できるため、高いスループットでメモリ3からデータを読み出すことができる。
次に、本実施形態のストリームプロセッサ2の動作について図面を用いて説明する。
図8は図6に示したストリームプロセッサの動作の一例を示すタイミングチャートである。
図8に示す入力DMA回路21の動作は、入力DMA回路21に入力されるディスクリプタ及び処理対象となるデータを時系列で示したものである。また、図8に示す入力FIFO24のうち、コマンドキュー242の動作は各種コマンドが登録されるタイミングを示し、データキュー241の動作は処理対象となるデータが入力されるタイミングを示している。図8に示すアレイ型プロセッサ23の動作のうち、状態管理部232は各種コマンドを受信するタイミング及びそのコマンドの解析結果に応じて処理を起動するタイミングを示し、データパス部231はコマンドに対応した処理対象のデータが入力されて指定された演算処理を実行するタイミングを示している。状態管理部232は、コマンドを解析していない期間はデータパス部231で実行されている処理の制御を行う。
以下では、アレイ型プロセッサ23で2つの処理A,Bを実行する場合を例にして説明する。但し、処理Aはメモリ3へのアクセスが発生するタイミングで分断され、処理A−a、A−b、A−cの3つに分かれて実行されるものとする。処理Aの対象となるデータとしてはデータ1、2の2つのデータがある。また、処理Bは、分かれて実行されるものではないが、処理対象となるデータとしてデータ1〜3の3つのデータがあるものとする。
入力DMA回路21には、最初に処理A−aを実行させるためのコマンドA−a及びデータ1に対する処理であることを示すTID=1を含むディスクリプタA−1が入力され、続いて処理Bを実行させるためのコマンドB及びデータ1に対する処理であることを示すTID=1を含むディスクリプタB−1、処理A−aを実行させるためのコマンドA−a及びデータ2に対する処理であることを示すTID=2を含むディスクリプタA−2、処理Bを実行させるためのコマンドB及びデータ2に対する処理であることを示すTID=2を含むディスクリプタB−2、処理Bを実行させるためのコマンドB及びデータ3に対する処理であることを示すTID=3を含むディスクリプタB−3の順に入力されるものとする。
また、以下では、データのサイズをコマンドキュー242へ送信しない例で説明する。また、以下の記載中で用いる「サイクル」とは、クロックサイクルを意味するのではなく、処理のステップを示すものとする。
(1)図8に示すように、まず入力DMA回路21は、ディスクリプタA−1を受信すると、該ディスクリプタA−1からコマンドA−a及びTID=1をそれぞれ抽出し、それらをコマンドキュー242へ転送する。
アレイ型プロセッサ23の状態管理部232は、コマンドキュー242へ次に処理すべきエントリが格納されたことを認識すると、該エントリ中のコマンドを解析し、次のサイクル(2)でデータパス部231に処理A−aを起動させる。入力DMA回路21は、コマンドA−aを解析している間、ディスクリプタA−1に続いてその処理対象となるデータ1(処理A−a用データ1)を受信する。
(2)入力DMA回路21は、処理A−a用データ1を受信すると、該データをデータキュー241へ転送する。一方、アレイ型プロセッサ23のデータパス部231は、処理A−aを起動すると、データキュー241に格納された処理A−a用データ1を受信し、処理A−a(データ1)を実行する。
入力DMA回路21は、データキュー241に対する処理A−a用データ1の転送終了後、次に処理するディスクリプタB−1を受信し、該ディスクリプタB−1からコマンドB及びTID=1をそれぞれ抽出し、それらをコマンドキュー242へ転送する。
アレイ型プロセッサ23の状態管理部232は、データパス部231に処理A−a(データ1)を実行させつつ、その処理が終わる直前までにコマンドB及びTID=1のコマンド解析を終了しておく。そして、処理A−aが終了した次のサイクル(3)でデータパス部231に処理Bを起動させる。
メモリアクセス制御回路26は、処理A−a(データ1)の終了時にデータパス部231からリードコマンドが発行されると、該リードコマンドと共に送信される、アドレス、TID(=1)及びコマンドA−bをそれぞれ保持し、アドレス、リードコマンド及びそれに対応して付与されるバスコマンドIDをそれぞれメモリ3へ送信する。
(3)入力DMA回路21は、ディスクリプタB−1に続いてその処理対象となるデータ1(処理B用データ1)を受信し、データキュー241によるデータパス部231に対する処理A−a用データ1の転送が終了すると、処理B用データ1をデータキュー241へ転送する。
アレイ型プロセッサ23のデータパス部231は、処理Bを起動すると、データキュー241に格納された処理B用データ1を受信して処理B(データ1)を実行する。
メモリアクセス制御回路26には、上記(2)で発行されたリードコマンドに対してメモリ3から読み出されたデータが返送される。このリードコマンドにはバスコマンドIDが付与されているため、メモリアクセス制御回路26は、そのバスコマンドIDに対応するコマンドA−b及びTID=1をコマンドキュー242へ送信する。
アレイ型プロセッサ23の状態管理部232は、データパス部231に処理B(データ1)を実行させつつ、その処理が終わる直前までにコマンドA−b及びTID=1のコマンド解析を終了しておく。そして、処理B(データ1)が終了した次のサイクル(4)でデータパス部231による処理A−b(データ1)を起動する。
入力DMA回路21は、データキュー241に対する処理B用データ1の転送終了後、次のディスクリプタA−2を受信する。
(4)入力DMA回路は、上記(3)で受信したディスクリプタA−2からコマンドA−a及びTID=2をそれぞれ抽出し、それらをコマンドキュー242へ転送する。
また、入力DMA回路21は、ディスクリプタA−2に続いてその処理対象となるデータ2(処理A−a用データ2)を受信する。
メモリアクセス制御回路26は、データキュー241によるデータパス部231に対する処理B用データ1の転送が終了すると、メモリ3から読み出した処理A−b用データ1をデータキュー241へ送信する。アレイ型プロセッサ23のデータパス部231は、処理A−b(データ1)を起動すると、データキュー241に格納された処理A−b用データ1を受信し、処理A−b(データ1)を実行する。
メモリアクセス制御回路26は、上記(3)で実行されたデータパス部231による処理Bの結果データを受け取ると、該データをメモリ3へ送信し、ディスクリプタB−1で指定されたアドレス領域へ格納する。
アレイ型プロセッサ23の状態管理部232は、データパス部231に処理A−b(データ1)を実行させつつ、その処理が終わる直前までにコマンドA−a及びTID=2のコマンド解析を終了しておく。そして、処理A−b(データ1)が終了した次のサイクル(5)でデータパス部231による処理A−a(データ2)を起動する。
(5)入力DMA回路21は、データキュー241によるデータパス部231に対する処理A−b用データ1の転送が終了すると、処理A−a用データ2をデータキュー241へ転送する。また、処理A−b用データ1に続いて次のディスクリプタB−2を受信し、該ディスクリプタB−2からコマンドB及びTID=2をそれぞれ抽出し、それらをコマンドキュー242へ格納する。
アレイ型プロセッサ23の状態管理部232は、データパス部231で処理A−a(データ2)が起動すると、データパス部231に処理A−a(データ2)を実行させつつ、その処理が終わる直前までにコマンドB及びTID=2のコマンド解析を終了しておく。そして、処理A−a(データ2)が終了した次のサイクル(6)でデータパス部231による処理B(データ2)を起動する。入力DMA回路21は、コマンドBを解析している間、ディスクリプタB−2に続いて処理対象となるデータ2を受信する。
メモリアクセス制御回路26は、処理A−b(データ1)の終了時にデータパス部231からリードコマンドが発行されると、該リードコマンドと共に送信される、アドレス、TID(=1)及びコマンドA−cをそれぞれ保持し、アドレス、リードコマンド及びそれに対応して付与されるバスコマンドIDをそれぞれメモリ3へ送信する。
メモリアクセス制御回路26には、サイクル(5)内で発行されたリードコマンドに対してメモリ3から読み出されたデータが返送される。このリードコマンドにはバスコマンドIDが付与されているため、メモリアクセス制御回路26は、そのバスコマンドIDに対応するコマンドA−c及びTID=1を次のサイクル(6)でコマンドキュー242へ送信する。
(6)入力DMA回路21は、処理B用データ2を受信すると、該データ2をデータキュー241へ転送する。一方、アレイ型プロセッサ23のデータパス部231は、処理Bを起動すると、データキュー241に格納された処理B用データ2を受信し、処理B(データ2)を実行する。
メモリアクセス制御回路26は、処理A−a(データ2)の終了時にデータパス部231からリードコマンドが発行されると、該リードコマンドと共に送信される、アドレス、TID(=2)及びコマンドA−bをそれぞれ保持し、アドレス、リードコマンド及びそれに対応して付与されるバスコマンドIDをそれぞれメモリ3へ送信する。
入力DMA回路21は、データキュー241に対する処理B用データ2の転送終了後、次のディスクリプタB−3を受信する。
(7)入力DMA回路21は、ディスクリプタB−3を受信すると、該ディスクリプタB−3からコマンドB及びTID=3をそれぞれ抽出し、それらをコマンドキュー242へ転送する。
アレイ型プロセッサ23の状態管理部232は、上記サイクル(6)で起動したデータパス部231による処理B(データ2)を実行させつつ、上記サイクル(6)でコマンドキュー242に転送されたコマンドA−c及びTID=1のコマンド解析を終了しておく。そして、処理A−c(データ1)の解析が終了した次のサイクル(8)でデータパス部231による処理A−c(データ1)を起動する。
メモリアクセス制御回路26は、データキュー241によるデータパス部231に対する処理B用データ2の転送が終了すると、メモリ3から読み出した処理A−c用データ1をデータキュー241へ送信する。
メモリアクセス制御回路26には、上記(6)で発行されたリードコマンドに対してメモリ3から読み出されたデータが返送される。このリードコマンドにはバスコマンドIDが付与されているため、メモリアクセス制御回路26は、そのバスコマンドIDに対応するコマンドA−b及びTID=2をコマンドキュー242へ送信する。ここでは、入力DMA回路21によるコマンドキュー242へのアクセスが優先されるため、入力DMA回路21により格納されたコマンドB及びTID=3がアレイ型プロセッサ23の状態管理部232へ転送されるの待って、次のサイクル(8)でコマンドA−b及びTID=2をコマンドキュー242へ送信する。
(8)入力DMA回路21は、ディスクリプタB−3に続いて処理対象となるデータ3を受信し、データキュー241によるデータパス部231に対する処理A−c用データ1の転送が終了すると、処理B用データ3をデータキュー241へ格納する。
アレイ型プロセッサ23のデータパス部231は、処理A−cを起動すると、データキュー241に格納された処理A−c用のデータ1を受信し、処理A−c(データ1)を実行する。
アレイ型プロセッサ23の状態管理部232は、データパス部に処理A−c(データ1)を実行させつつ、その処理が終わるまでにコマンドB及びTID=3のコマンド解析を終了しておく。
メモリアクセス制御回路26は、データパス部231による処理B(データ2)の結果データを受け取ると、該データをメモリ3へ送信し、ディスクリプタB−2で指定されたアドレス領域へ格納する。
(9)入力DMA回路21は、データキュー241がデータパス部231へ処理B用データ3を転送し終えたら、処理A−b用データ2をデータキュー241へ格納する。
アレイ型プロセッサ23の状態管理部232は、データパス部231により処理B(データ3)を実行させつつ、その処理が終わる直前までにコマンドA−b及びTID=2のコマンド解析を終了しておく。そして、処理Bが終了した次のサイクルでデータパス部231による処理A−b(データ2)を起動する。
メモリアクセス制御回路26は、データパス部231による処理A−c(データ1)の結果データを受け取ると、該データをメモリ3へ送信し、ディスクリプタA−1で指定されたアドレス領域へ格納する。
(10)アレイ型プロセッサのデータパス部231は、処理A−bを起動すると、データキューに格納された処理A−b用のデータ2を受信し、処理A−bを実行する。
メモリアクセス制御回路26は、処理A−b(データ2)の終了時にデータパス部231からリードコマンドが発行されると、該リードコマンドと共に送信される、アドレス、TID(=2)及びコマンドA−cをそれぞれ保持し、アドレス、リードコマンド及びそれに対応して付与されるバスコマンドIDをそれぞれメモリ3へ送信する。
以降、上記サイクル(3)、(4)と同様に、メモリアクセス制御回路26は、メモリ3から返送されたバスコマンドIDに対応するコマンドA−c及びTID=2をコマンドキュー242へ送信し、処理A−c用データ2をデータキュー241へ送信する。アレイ型プロセッサ23は、状態管理部232によりコマンドA−c及びTID=2の解析が終了した後、データパス部231により処理A−c(データ2)を実行し、結果データをメモリアクセス制御回路26を介してメモリ3へ格納する。
ここで、本実施形態のストリームプロセッサで用いるTIDの重要性について説明する。
例えば、処理Aが処理A−aと処理A−bとに分断されている場合、処理A−bを開始する際には、メモリ3から読み出されたデータだけでなく、処理A−aの終了時に保持していた中間データと合わせて処理を再開する必要がある。
処理Aの処理対象として複数のデータがあり、それぞれのデータが、処理A−aと処理A−bとにそれぞれ分断されて任意の順序で実行される場合を考える。ここでは、データ1に対する処理A−a、データ2に対する処理A−a、データ1に対する処理A−b、データ2に対する処理A−bの順に実行されるものとする。
このような場合、データ1に対する処理A−bを実行する際には、処理A−aの結果として、データ1に対する中間データとデータ2に対する中間データとがあるため、いずれか一方を読み出す必要がある。
本実施形態のストリームプロセッサでは、データを上記トランザクション識別子(TID)を用いて区別し、TIDに応じてアレイ型プロセッサが備えるデータ記憶領域を分割して使用することで、最適な中間データの読み出しを可能にする。
図9に示すように、アレイ型プロセッサ23のデータパス部231が備えるプロセッサエレメント(PE)は、レジスタファイル(Register File)と呼ばれるデータを保持するためのユニットをそれぞれ少なくとも1つ備えている(上記特許文献2参照)。通常、データパス部231は、状態管理部232から供給される命令ポインタ(IP)によって命令メモリから指定された処理に対応する命令コードを読み出す。その際、命令コードはデコーダによってデコードされ、その一部がレジスタファイルからデータを読み出すためのリードアドレス(リードアドレスフィールド)、またはレジスタファイルへデータを書き込むためのライトアドレス(ライトアドレスフィールド)となる。
本実施形態のアレイ型プロセッサが有するデータパス部231は、このプロセッサエレメントが備えるレジスタファイルを、中間データを保持するためのデータ記憶領域として使用する。また、レジスタファイルへ与える中間データの読み出しアドレスまたは書き込みアドレスとして、状態管理部232から供給されるTIDを使用できるようにする。具体的には、プロセッサエレメントが備えるデコーダからTIDまたはリードアドレスフィールドのいずれか一方を選択するための読み出しアドレス選択フラグを出力させる。また、プロセッサエレメントに、読み出しアドレス選択フラグにしたがってTIDまたはリードアドレスフィールドの値のいずれか一方をレジスタファイルへ与えるセレクタを備える。
同様に、プロセッサエレメントが備えるデコーダからTIDまたはライトアドレスフィールドのいずれか一方を選択するための書き込みアドレス選択フラグを出力させる。さらに、プロセッサエレメントに、書き込みアドレス選択フラグにしたがってTIDまたはライトアドレスフィールドの値のいずれか一方をレジスタファイルへ与えるセレクタを備える。
そして、中間データを読み出す場合、読み出しアドレス選択フラグによりセレクタにTIDの値を選択させ、中間データを保持するレジスタファイルへ供給する。この場合、TIDの値で指定されたレジスタファイルからはスイッチエレメント(SE)を介してリードデータ(中間データ)が読み出される。
また、中間データを書き込む場合、書き込みアドレス選択フラグによりセレクタにTIDの値を選択させ、中間データを保持するレジスタファイルへ供給する。この場合、TIDの値で指定されたレジスタファイルへはスイッチエレメント(SE)を介してライトデータ(中間データ)が書き込まれる。
このような構成では、複数の中間データを重複せずに保存することが可能であり、複数のレジスタファイルにそれぞれ格納された中間データをTIDの値によって特定できる。したがって、分断された処理を再開する際に、TIDの値を用いて適切な中間データをレジスタファイルから読み出すことができる。
中間データを保持する目的で使用されないレジスタファイルでは、読み出しアドレス選択フラグによりセレクタからリードアドレスフィールドの値が出力される。この場合、レジスタファイルからスイッチエレメント(SE)を介して読み出されたリードデータは他の処理で使用される。
同様に、中間データを保持する目的で使用されないプロセッサエレメントあるいはレジスタファイルでは、書き込みアドレス選択フラグによりセレクタでライトアドレスフィールドの値が出力される。この場合、他の処理で使用するライトデータがスイッチエレメント(SE)を介してレジスタファイルへ格納される。
なお、上記説明では、プロセッサエレメントが備えるレジスタファイルを、中間データを保持するためのデータ記憶領域として使用する例を示したが、プロセッサエレメントにレジスタファイル以外の内部メモリを搭載している場合は、該内部メモリに上記と同様の手法を適用することで複数の中間データの中から適切なデータを選択することが可能である。また、上記説明では、TIDをそのままアドレスとして使用する例を示したが、TIDをアドレスの上位ビットとして用いる等、アドレスの一部に含ませることでデータ記憶領域を分割して使用してもよい。
上述したレジスタファイルにTIDの値を用いて中間データを読み書きするための機能は、特許文献1、2及び非特許文献のいずれにも記載されていない。
本実施形態のストリームプロセッサによれば、メモリアクセス制御回路26により、データパス部231で生成されたリードコマンドにしたがってメモリ3からデータを読み出すと共に、メモリ3から読み出されたデータ、及びそれに対応する次処理コマンドやTIDがアレイ型プロセッサ23へ送信されるため、アレイ型プロセッサ23は、分断された処理を再開する際に、その処理に必要なコマンドやデータを得ることが可能であり、メモリアクセスの発生によって処理を一旦中断しても、処理を確実に再開できる。
そのため、従来のアレイ型プロセッサのように、メモリ3へリードコマンドを発行してから読み出されたデータが返送されるまでに、何も処理せずに動作を停止する必要はなく、他の処理を受け付けて実行することができる。よって、アレイ型プロセッサ23の処理効率がさらに向上し、該アレイ型プロセッサを備えるストリームプロセッサ及び情報処理装置全体の処理効率が向上する。
なお、CPUは、一般にメモリからデータを逐次読み出して処理を実行する必要がある。そのため、CPUを備えた情報処理装置では、メモリに対してリードコマンドを発行してから読み出されたデータが返送されるまでの待ち時間が、情報処理装置の処理速度のボトルネックとなっている。
上述した第1の実施の形態〜第3の実施の形態のストリームプロセッサを備えた本発明の情報処理装置では、データを連続して処理する際にアレイ型プロセッサ23のコマンド解析によるオーバーヘッドやメモリアクセスによるオーバーヘッドを実質的に無くすことができるため、CPUよりも高速にデータを処理することが可能であり、かつ従来のアレイ型プロセッサ23と比べても高速にデータを処理できる。
上述した第1の実施の形態〜第3の実施の形態を総括すると、本発明のストリームプロセッサは、図10に示すように入出力制御回路301とアレイ型プロセッサ303とを有する構成である。
図10に示す入出力制御回路301は、図1に示したストリームプロセッサと同様に、入力DMA回路302を備えている。
入力DMA回路302は、外部メモリ(不図示)から処理対象であるデータと、該データに対する処理を指定するコマンドを含む情報とをそれぞれ読み出し、アレイ型プロセッサ303へ転送する。
アレイ型プロセッサ303は、データパス部304と状態管理部305とを備え、入力DMA回路302は、外部メモリから読み出したデータをデータパス部304へ転送し、外部メモリから読み出したコマンドを状態管理部305へ転送する。
データパス部304は、プロセッサエレメント(PE)306及びスイッチエレメント(SE)307をそれぞれ複数備えている。データパス部304は、処理を実行する過程で状態が遷移する。この「状態」とはデータパス部304の構成要素であるプロセッサエレメント306及びスイッチエレメント307の状態を示している。換言すれば、データパス部304の状態とは、データパス部304がある特定の回路構成を備えている状況やある特定の設定値を記憶している状況を示す。データパス部304は、状態を遷移させながら入力DMA回路302から供給されたデータに対して所定の処理を実行する。このとき、データパス部304の状態遷移は状態管理部305によって制御される。データパス部304の各状態には、それぞれに対応する状態番号が割り付けられており、状態管理部305はこの状態番号の遷移を制御する。
状態管理部305は、この状態番号の制御のために上述した状態遷移テーブルメモリ、シーケンス部及び制御情報メモリを備えている。状態管理部305は、状態遷移テーブルメモリに書き込まれた遷移ルール(状態遷移ルール)にしたがって、シーケンス部により次の状態番号を決定し、データパス部304の状態を順次遷移させ、データパス部304に所定の処理を実行させる。制御情報メモリには、状態番号に応じた命令コードを記憶する命令メモリのアドレスである命令ポインタが格納されている。なお、遷移ルールは、データパス部304が処理を開始してから終了するまでの各状態の遷移過程を示す情報である。遷移ルールは、例えば、データパス部304が処理を開始してから終了するまでに遷移するデータパス部304の各状態に対応する状態番号を遷移順に並べた情報であってもよく、ある状態の状態番号とそれに続く状態の状態番号の関係を示す情報であってもよい。
ここで、遷移ルールは本願発明のストリームプロセッサが処理を始める前に予め組み込まれている。また、遷移ルールには、コマンド解析部が解析する複数のコマンドに対応する処理のルールが含まれる。
状態管理部305は、状態番号が次の値に変化すると、該状態番号に対応する命令ポインタを制御情報メモリから読み出し、データパス部304へ出力する。この命令ポインタがデータパス部304の回路構成(すなわち複数のプロセッサエレメント306とスイッチエレメント307の回路構成)を対応する状態に遷移させる。状態が遷移しても命令ポインタが同じであれば回路構成は変わらない。状態管理部305は、遷移ルールにしたがってデータパス部304の状態を遷移させ、データパス部304に処理を実行させる。遷移ルールにしたがって処理の完了を示す遷移番号になったとき、データパス部304は処理を完了している。ここで、ストリームプロセッサは、次に実行すべき処理があれば、その処理に移行する。
図13に示したように、データパス部304は、処理途中の結果により遷移ルールが分岐するような場合、どの状態へ遷移するかを示す情報、すなわち分岐のための制御情報(イベント)を状態管理部305へ通知する。このイベントが状態管理部305へ送付されることにより、状態管理部305はデータパス部304が次に遷移すべき状態を判断し、それに対応する命令ポインタを発行し、データパス部304の状態を遷移させる。
入力DMA回路302によって外部メモリから読み出された、該データに対応する処理を指定するコマンドを含む情報には、前述のディスクリプタに格納された情報が用いられる。このコマンドは、状態管理部305に送信され、状態管理部305のコマンド解析部308で解析される。コマンド解析部308は、該コマンドに対応する状態番号を生成する論理回路等によって構成される。コマンド解析部308は、解析結果を状態管理部305のシーケンサ部へ出力した後、データパス部304で該コマンドに対応する処理が完了するまでに次の処理のコマンドを解析する。コマンド解析部308が出力する、解析結果である状態番号は、データパス部304における処理の最初の状態番号と一致するように設定しておくことが望ましい。
図10に示すストリームプロセッサは、メモリから処理対象となるデータ、及び該データに対する処理を指定するコマンドを含む情報とをそれぞれ読み出す入出力制御回路301と、コマンドにしたがった処理を実行するデータパス部304、及び状態遷移過程情報にしたがってデータパス部304の状態を遷移させる状態管理部305とを備えたアレイ型プロセッサ303とを有する構成である。
入出力制御回路301は、コマンドを状態管理部305に送信後、処理対象のデータをデータパス部304へ送信する入力DMA回路302を備えている。
状態管理部305は、入力DMA回路302から送信されたコマンドからデータパス部304の初期状態を決定するためのコマンド解析を行うコマンド解析部308を備えている。データパス部304が入力DMA回路302から送信されたデータに対する処理を実行している間、入力DMA回路302はメモリから読み出した次の処理のコマンドを状態管理部305へ送信し、コマンド解析部308にてコマンド解析を実行する。
なお、コマンド解析部308が決定する初期状態とは、データパス部304が実行する処理に対応した遷移ルール上の最初の状態である。
状態管理部305は、データパス部304が処理の完了状態になった後、データパス部304をコマンド解析部308が決定した初期状態に遷移させ、データパス部304は次の処理を実行する。
したがって、本発明のストリームプロセッサによれば、データパス部304が処理を実行している間に、次に実行する処理のコマンド解析を並行して実行できる。これによりストリームプロセッサの処理速度及びスループットが向上する。