JP2006202271A - ストリームプロセッサ及び情報処理装置 - Google Patents

ストリームプロセッサ及び情報処理装置 Download PDF

Info

Publication number
JP2006202271A
JP2006202271A JP2005366182A JP2005366182A JP2006202271A JP 2006202271 A JP2006202271 A JP 2006202271A JP 2005366182 A JP2005366182 A JP 2005366182A JP 2005366182 A JP2005366182 A JP 2005366182A JP 2006202271 A JP2006202271 A JP 2006202271A
Authority
JP
Japan
Prior art keywords
data
command
memory
processing
path unit
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
JP2005366182A
Other languages
English (en)
Inventor
Kenichiro Anjo
健一朗 安生
Katsumi Togawa
勝巳 戸川
Ryoko Sasaki
僚子 佐々木
Taro Fujii
太郎 藤井
Masato Motomura
真人 本村
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
NEC Electronics Corp
Original Assignee
NEC Electronics Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by NEC Electronics Corp filed Critical NEC Electronics Corp
Priority to JP2005366182A priority Critical patent/JP2006202271A/ja
Publication of JP2006202271A publication Critical patent/JP2006202271A/ja
Pending legal-status Critical Current

Links

Images

Abstract

【課題】アレイ型プロセッサの処理効率を向上させることができる、該アレイ型プロセッサを備えたストリームプロセッサ及び情報処理装置を提供する。
【解決手段】メモリに格納されたデータを読み出し、指定された処理を実行するストリームプロセッサであって、処理を実行するデータパス部、及び該データに対して実行する処理を指定するコマンドにしたがってデータパス部の状態を制御する状態管理部を備えたアレイ型プロセッサと、メモリから処理対象のデータ及び該データに対応するコマンドを含む情報をそれぞれ読み出し、該コマンドを状態管理部へ先に送信し、その後、処理対象のデータを前記データパス部へ送信する入力DMA回路とを有する構成とする。
【選択図】図3

Description

本発明は、各種の処理を実現するアレイ型プロセッサを備えたストリームプロセッサ及び該ストリームプロセッサを備えた情報処理装置に関する。
近年の情報処理装置は、その処理性能の向上に伴って利用範囲が広がり、より高度な演算処理あるいは画像や動画のように膨大なデータを高速に処理する能力が要求される。
このような要求を満たすための手法として、ホストプロセッサとは別に画像処理あるいは動画処理等のように所定の演算処理を専用に実行するDSP(Digital Signal Processor)を備えた構成が知られている。しかしながら、DSPは処理の内容が限られているため、より広範な演算処理に対応することを目的として、本出願人は演算処理を実行するデータパスの構成をソフトウェアにより変更可能なアレイ型プロセッサを既に提案している。なお、アレイ型プロセッサについては、特許文献1、特許文献2及び非特許文献1等に記載されている。
アレイ型プロセッサは、例えば、図11に示すように、演算処理を実行するデータパス部105と、データパス部105の動作を制御する状態管理部106とを備えている。データパス部105は、複数のプロセッサエレメントとそれに対応する複数のスイッチエレメントとを備え、ソフトウェアにより各プロセッサエレメント及びスイッチエレメントへ供給する命令コードを切り換えることで各種の処理を実行する。なお、図11は、特許文献2で開示された情報処理装置である。図11に示す情報処理装置は、MPU101と、アレイ型プロセッサ104及び該アレイ型プロセッサ104に対するデータの入出力を制御する入出力制御回路107を備えたストリームプロセッサ102と、ストリームプロセッサ102に対して入出力されるデータを一時的に保持するメモリ103とを有し、それらがバス108で接続された構成である。ストリームプロセッサ102は、複数のアレイ型プロセッサ104を備えることで複数の処理を並列に実行することが可能である。
特開2001−312481号公報 特開2003−196246号公報 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
しかしながら、アレイ型プロセッサは、その構造や動作がCPUやDSP等と根本的に異なっている。アレイ型プロセッサに処理を実行させるためには、処理対象となるデータを渡す前に処理の種類を指定し、その処理を実行できる状態に設定しておく必要がある。すなわち、アレイ型プロセッサでは、処理を指定してから実際にその処理を実行できるまでに時間を要し、その分だけデータの処理効率が低下する問題がある。
例えば、図11に示したアレイ型プロセッサでは、最初にデータパス部により入出力制御回路から処理を指定するコマンドを受け取り、該コマンドをデコードすることでイベントを生成し、該イベントを状態管理部へ送信する。状態管理部は、データパス部から送信されたイベントに対応する命令ポインタ(命令コードが格納された命令コードアドレスを示す)をデータパス部へ返送する。データパス部は、該命令ポインタで指定された命令コードにしたがってプロセッサエレメント及びスイッチエレメントの状態をそれぞれ切り換える(状態遷移する)。そして、データパス部は、状態遷移が完了した後に、入出力制御回路から処理対象のデータを受け取り、指定された処理を開始する。このように図11に示したアレイ型プロセッサでは、データパス部によってコマンドの種類を解析し、状態管理部の制御によりコマンドで指定された処理を実行可能な状態へ遷移するため、入力されたデータを処理するまでに時間を要することになる。
また、上記非特許文献1では、アレイ型プロセッサを用いて4入力4出力のクロスバースイッチを実現した例が示されている。非特許文献1には、このクロスバースイッチの動作として、図12に示すように、初期状態FCから、状態00/10/20/30のうち、状態00へ遷移し、さらに状態01、02または03へ遷移し、処理が終了した後、初期状態FCへ戻る状態遷移図が記載されている。この非特許文献1には、アレイ型プロセッサが、ある状態において次の状態へ遷移するための条件を判定し、その後、所望の回路を起動するまでに数サイクルのレイテンシが必要であることが明示されている。
なお、アレイ型プロセッサで実行可能な処理には様々な種類があり、例えば処理の途中でメモリから他のデータを読み出し、それらのデータを用いて処理を続行することも可能である。
アレイ型プロセッサは、内部メモリを備えているが、その記憶容量は限定されていることが多い。したがって、アレイ型プロセッサによる処理では、処理途中で大きな記憶容量を必要とするテーブルやデータを参照する場合、それらが格納されたメモリへアクセスする必要がある。このメモリとしては、例えば図11に示したメモリ103が相当する。アレイ型プロセッサからメモリへアクセスする際には、データの読み出し/書き込みのためのコマンド及びアドレスを発行すると共に、データを書き込む場合はライトデータを送信し、データを読み出す場合はメモリから読み出されたリードデータを受信すればよい。
例えば、図13に示すようにアレイ型プロセッサで実行する処理A及び処理Bのうち、処理Aをメモリに対するアクセス発生時に対応して処理A−a、A−b、A−cに分断して処理する場合、アレイ型プロセッサは、データが入力されると、最初に該データが処理A用データであるか処理B用データであるかのデータ種を判定する。そして、処理A用データであると判定した場合は、該データに対して処理A−aを実行し、処理A−aが終了するとメモリへアクセスして次の処理A−bで使用するデータを読み出し、処理A−aの結果データと共に処理A−bを実行する。処理A−bが終了すると、メモリへ再びアクセスして次の処理A−cで使用するデータを読み出し、処理A−bの結果データと共に処理A−cを実行する。最後に、処理A−cが終了すると、メモリへアクセスして処理A−cの結果データを書き込み、データ種判定状態に戻る。
ここで、従来のアレイ型プロセッサでは、処理A−a及び処理A−bの終了時に、メモリに対してデータを読み出すためのリードアドレスを発行(メモリアドレス発行)すると、メモリから読み出されたデータを受信(メモリデータ受信)するまで動作を停止(メモリデータ待ち)する。そのため、このことによってもアレイ型プロセッサの処理効率が低下してしまう。
本発明は上記したような従来の技術が有する問題点を解決するためになされたものであり、アレイ型プロセッサの処理効率を向上させることができる、該アレイ型プロセッサを備えたストリームプロセッサ及び情報処理装置を提供することを目的とする。
上記目的を達成するため本発明のストリームプロセッサは、メモリに格納されたデータを読み出し、指定された処理を実行するストリームプロセッサであって、
前記処理を実行するデータパス部、及び該データに対して実行する処理を指定するコマンドにしたがって前記データパス部の状態を制御する状態管理部を備えたアレイ型プロセッサと、
前記メモリから処理対象のデータ及び該データに対応するコマンドを含む情報をそれぞれ読み出し、該コマンドを前記状態管理部へ先に送信し、その後、前記処理対象のデータを前記データパス部へ送信する入力DMA回路と、
を有する。
または、メモリから処理対象であるデータ、及び前記データに対する処理を指定するコマンドを含む情報とをそれぞれ読み出す入出力制御回路と、
前記コマンドにしたがって処理を実行するデータパス部、及び状態遷移過程情報にしたがって前記データパス部の状態を遷移させる状態管理部を備えたアレイ型プロセッサと、
を有するストリームプロセッサであって、
前記入出力制御回路は、
前記コマンドを前記状態管理部に送信後、前記処理対象のデータを前記データパス部に送信する入力DMA回路を有し、
前記状態管理部は、
前記入力DMA回路から送信された前記コマンドから前記データパス部の初期状態を決定するためのコマンド解析を行うコマンド解析部を有し、
前記入力DMA回路は、
前記データパス部が前記入力DMA回路から送信されたデータの処理を実行している間に、前記メモリから次の処理のコマンドを前記状態管理部に送信し、
前記コマンド解析部は、コマンド解析を実行し、
前記状態管理部は、
前記データパス部が前記処理の完了状態になった後、前記データパス部を前記コマンド解析部にて決定した前記初期状態に遷移させ、前記データパス部に次の処理を実行させる構成である。
一方、本発明の情報処理装置は、ホストプロセッサと、上記ストリームプロセッサと、前記ホストプロセッサ及び前記ストリームプロセッサの処理で使用されるデータが格納されるメモリとを有する。
上記のような構成では、入力DMA回路により、先にデータの処理を指定するコマンドをアレイ型プロセッサの状態管理部へ送信し、その後、処理対象のデータをデータパス部へ送信するため、状態管理部により先にコマンド解析を実行し、データパス部が該コマンドに対応した状態に切り換わった後に、処理対象のデータを受信して処理を実行できる。また、状態管理部は、データパス部によるデータの処理中に、次に処理すべきコマンドを受信してコマンド解析を実行できる。
したがって、図11に示した従来のアレイ型プロセッサのようにデータパス部によるコマンド解析が不要であり、コマンド解析による処理のオーバーヘッドが低減してアレイ型プロセッサによるデータの処理効率が向上する。
本発明によれば、アレイ型プロセッサによるデータの処理効率が向上するため、該アレイ型プロセッサを備えるストリームプロセッサ及び情報処理装置全体の処理効率も向上する。
次に本発明について図面を参照して説明する。
まず、本発明のストリームプロセッサを備える情報処理装置について説明する。
図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が処理を実行している間に、次に実行する処理のコマンド解析を並行して実行できる。これによりストリームプロセッサの処理速度及びスループットが向上する。
本発明のストリームプロセッサを有する情報処理装置の一構成例を示すブロック図である。 図1に示したストリームプロセッサで用いるディスクリプタのフォーマットを示す模式図である。 本発明のストリームプロセッサの第1の実施の形態の構成を示すブロック図である。 図1に示した入力DMA回路のデータ送受信タイミングを示すタイミングチャートである。 本発明のストリームプロセッサの第2の実施の形態の構成を示すブロック図である。 本発明のストリームプロセッサの第3の実施の形態の構成を示すブロック図である。 図6に示したストリームプロセッサが有するメモリアクセス制御回路の一構成例を示すブロック図である。 図6に示したストリームプロセッサの動作の一例を示すタイミングチャートである。 図6に示したアレイ型プロセッサの詳細な構成例を示すブロック図である。 本発明のストリームプロセッサの一構成例を示すブロック図である。 従来のストリームプロセッサを備える情報処理装置の構成を示すブロック図である。 従来のアレイ型プロセッサの動作の一例を示す状態遷移図である。 従来のアレイ型プロセッサの動作の他の例を示す状態遷移図である。
符号の説明
1 CPU
2、309 ストリームプロセッサ
3 メモリ
4 バス
21、302 入力DMA回路
22 ディスクリプタ管理テーブル
23、303 アレイ型プロセッサ
24 入力FIFO
25 出力FIFO
26 メモリアクセス制御回路
231、304 データパス部
232 状態管理部
241 データキュー
242 コマンドキュー
243 第1のセレクタ
244 第2のセレクタ
245 タイミング制御回路
261 バスコマンド発行部
262 ライトデータ送信部
263 リードデータ受信部
264 発行済みバスコマンド管理テーブル
301 入出力制御回路
306 プロセッサエレメント
307 スイッチエレメント
308 コマンド解析部

Claims (15)

  1. メモリに格納されたデータを読み出し、指定された処理を実行するストリームプロセッサであって、
    前記処理を実行するデータパス部、及び該データに対して実行する処理を指定するコマンドにしたがって前記データパス部の状態を制御する状態管理部を備えたアレイ型プロセッサと、
    前記メモリから処理対象のデータ及び該データに対応するコマンドを含む情報をそれぞれ読み出し、該コマンドを前記状態管理部へ先に送信し、その後、前記処理対象のデータを前記データパス部へ送信する入力DMA回路と、
    を有するストリームプロセッサ。
  2. 前記データパス部から出力された処理後のデータを前記メモリへ書き戻すためのメモリアクセス制御回路を有する請求項1記載のストリームプロセッサ。
  3. 前記入力DMA回路から前記データパス部へ供給する前記処理対象のデータを一時的に保持するデータキュー、並びに前記入力DMA回路から前記状態管理部へ供給する前記コマンド及び前記処理対象のデータを識別するためのトランザクション識別子を一時的に保持するコマンドキューを備えた入力FIFOをさらに有する請求項2記載のストリームプロセッサ。
  4. 前記入力DMA回路は、
    前記処理対象のデータのサイズ情報を前記コマンドキューへ供給し、
    前記コマンドキューは、
    前記サイズ情報を前記データパス部へ供給する請求項3記載のストリームプロセッサ。
  5. 前記データパス部は、
    前記処理の途中で前記メモリからデータを読み出す場合、該データを前記メモリから読み出すためのリードコマンド、該データが格納された領域を示すアドレス、該データのトランザクション識別子及び前記リードコマンドによって前記メモリから読み出されたデータの返送時に再開する処理を指定するコマンドを出力し、
    前記メモリアクセス制御回路は、
    前記データパス部から受信した前記リードコマンド、前記アドレス、前記トランザクション識別子及び前記コマンドをそれぞれ保持し、前記アドレスで示される前記メモリの領域からデータを読み出し、読み出したデータを前記データキューへ送信し、該リードコマンドに対応する前記コマンド及び前記トランザクション識別子をそれぞれ前記コマンドキューへ送信する請求項3または4記載のストリームプロセッサ。
  6. 前記メモリアクセス制御回路は、
    前記処理対象のデータのサイズを前記コマンドキューへ供給し、
    前記コマンドキューは、
    前記サイズをデータパス部へ供給する請求項5記載のストリームプロセッサ。
  7. 前記メモリアクセス制御回路は、
    前記データパス部から受信した前記トランザクション識別子及び前記コマンドを、前記リードコマンドに対応して付与される識別子であるバスコマンドIDと関連付けて保持するための発行済みコマンド管理テーブルを有する請求項5記載のストリームプロセッサ。
  8. 前記データパス部は、
    前記リードコマンドを発行すると前記処理を中断し、
    前記リードコマンドによって前記メモリから読み出されたデータを前記データキューから受け取ると、該中断した処理を再開する請求項5記載のストリームプロセッサ。
  9. 前記入力FIFOは、
    前記入力DMA回路またはメモリアクセス制御回路から出力されるデータのいずれか一方を前記データキューに供給する第1のセレクタと、
    前記入力DMA回路またはメモリアクセス制御回路から出力される前記コマンド及び前記トランザクション識別子のいずれか一方を前記コマンドキューに供給する第2のセレクタと、
    前記入力DMA回路またはメモリアクセス制御回路から出力されるデータの競合、並びに前記入力DMA回路またはメモリアクセス制御回路から出力される前記コマンド及び前記トランザクション識別子の競合を調停するタイミング制御回路と、
    を有する請求項3記載のストリームプロセッサ。
  10. 前記データパス部は、
    前記トランザクション識別子を用いて、前記処理の途中のデータである中間データの読み出し及び前記中間データの書き込みが可能な、前記中間データを一時的に保持するレジスタファイルを有する請求項6記載のストリームプロセッサ。
  11. 前記コマンドが、
    前記データパス部が最初に遷移すべき状態の番号である状態番号に一致している請求項1記載のストリームプロセッサ。
  12. 前記状態管理部は、
    前記コマンドと前記データパス部が遷移すべき状態の番号である状態番号の関係が予め記録されたコマンド参照テーブルを有する請求項1記載のストリームプロセッサ。
  13. 前記アレイ型プロセッサから出力される処理後のデータを一時的に保持し、前記メモリアクセス制御回路へ送信する出力FIFOを有する請求項2記載のストリームプロセッサ。
  14. メモリから処理対象であるデータ、及び前記データに対する処理を指定するコマンドを含む情報とをそれぞれ読み出す入出力制御回路と、
    前記コマンドにしたがって処理を実行するデータパス部、及び状態遷移過程情報にしたがって前記データパス部の状態を遷移させる状態管理部を備えたアレイ型プロセッサと、
    を有するストリームプロセッサであって、
    前記入出力制御回路は、
    前記コマンドを前記状態管理部に送信後、前記処理対象のデータを前記データパス部に送信する入力DMA回路を有し、
    前記状態管理部は、
    前記入力DMA回路から送信された前記コマンドから前記データパス部の初期状態を決定するためのコマンド解析を行うコマンド解析部を有し、
    前記入力DMA回路は、
    前記データパス部が前記入力DMA回路から送信されたデータの処理を実行している間に、前記メモリから次の処理のコマンドを前記状態管理部に送信し、
    前記コマンド解析部は、コマンド解析を実行し、
    前記状態管理部は、
    前記データパス部が前記処理の完了状態になった後、前記データパス部を前記コマンド解析部にて決定した前記初期状態に遷移させ、前記データパス部に次の処理を実行させるストリームプロセッサ。
  15. ホストプロセッサと、
    請求項1または14記載のストリームプロセッサと、
    前記ホストプロセッサ及び前記ストリームプロセッサの処理で使用されるデータが格納されるメモリと、
    を有する情報処理装置。
JP2005366182A 2004-12-22 2005-12-20 ストリームプロセッサ及び情報処理装置 Pending JP2006202271A (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2005366182A JP2006202271A (ja) 2004-12-22 2005-12-20 ストリームプロセッサ及び情報処理装置

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
JP2004371654 2004-12-22
JP2005366182A JP2006202271A (ja) 2004-12-22 2005-12-20 ストリームプロセッサ及び情報処理装置

Publications (1)

Publication Number Publication Date
JP2006202271A true JP2006202271A (ja) 2006-08-03

Family

ID=36960183

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2005366182A Pending JP2006202271A (ja) 2004-12-22 2005-12-20 ストリームプロセッサ及び情報処理装置

Country Status (1)

Country Link
JP (1) JP2006202271A (ja)

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2006338538A (ja) * 2005-06-03 2006-12-14 Nec Electronics Corp ストリームプロセッサ
JP2009134391A (ja) * 2007-11-29 2009-06-18 Renesas Technology Corp ストリーム処理装置、ストリーム処理方法及びデータ処理システム
JP2020027612A (ja) * 2018-08-10 2020-02-20 ベイジン バイドゥ ネットコム サイエンス アンド テクノロジー カンパニー リミテッド データ処理装置、人工知能チップ及び電子機器
JP2021064270A (ja) * 2019-10-16 2021-04-22 ルネサスエレクトロニクス株式会社 半導体装置およびその制御方法
CN116188247A (zh) * 2023-02-06 2023-05-30 格兰菲智能科技有限公司 寄存器信息处理方法、装置、计算机设备、存储介质

Cited By (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2006338538A (ja) * 2005-06-03 2006-12-14 Nec Electronics Corp ストリームプロセッサ
JP2009134391A (ja) * 2007-11-29 2009-06-18 Renesas Technology Corp ストリーム処理装置、ストリーム処理方法及びデータ処理システム
JP2020027612A (ja) * 2018-08-10 2020-02-20 ベイジン バイドゥ ネットコム サイエンス アンド テクノロジー カンパニー リミテッド データ処理装置、人工知能チップ及び電子機器
CN110825312A (zh) * 2018-08-10 2020-02-21 北京百度网讯科技有限公司 数据处理装置、人工智能芯片及电子设备
CN110825312B (zh) * 2018-08-10 2023-06-23 昆仑芯(北京)科技有限公司 数据处理装置、人工智能芯片及电子设备
JP2021064270A (ja) * 2019-10-16 2021-04-22 ルネサスエレクトロニクス株式会社 半導体装置およびその制御方法
JP7346235B2 (ja) 2019-10-16 2023-09-19 ルネサスエレクトロニクス株式会社 半導体装置
CN116188247A (zh) * 2023-02-06 2023-05-30 格兰菲智能科技有限公司 寄存器信息处理方法、装置、计算机设备、存储介质
CN116188247B (zh) * 2023-02-06 2024-04-12 格兰菲智能科技有限公司 寄存器信息处理方法、装置、计算机设备、存储介质

Similar Documents

Publication Publication Date Title
EP1675014B1 (en) Data stream processor and information processing apparatus
TWI251750B (en) An apparatus and method for selectable hardware accelerators in a data driven architecture
KR100543887B1 (ko) 파이프라인 방식의 메모리 컨트롤러
US20090300324A1 (en) Array type processor and data processing system
US7162556B2 (en) Matrix type bus connection system and power reduction method therefor
US7724984B2 (en) Image processing apparatus
EP1365321A2 (en) Multiprocessor system
JP5131188B2 (ja) データ処理装置
JP2006501586A (ja) スケーラブル・マルチチャネル・メモリアクセスのための方法、及びメモリコントローラ
JP2007133456A (ja) 半導体装置
JP2006338538A (ja) ストリームプロセッサ
US20070022249A1 (en) Information processing apparatus and its data processing method capable of forming descriptor queue
JP4388005B2 (ja) コンテキスト切替え装置
JP2006202271A (ja) ストリームプロセッサ及び情報処理装置
US20070156937A1 (en) Data transfer in multiprocessor system
JP3693013B2 (ja) データ処理システム、アレイ型プロセッサ、データ処理装置、コンピュータプログラム、情報記憶媒体
JP2009252128A (ja) メモリ制御装置及びその制御方法
US20100318707A1 (en) External device access apparatus, control method thereof, and system lsi
JP2010532540A (ja) トークンプロトコル
TWI324755B (en) Processing modules with multilevel cache architecture
JP3505728B2 (ja) 記憶制御装置
US20050135402A1 (en) Data transfer apparatus
JP2004005710A (ja) 情報処置装置
JP2009037639A (ja) ストリーミングidメソッドによるdmac発行メカニズム
JP2002175265A (ja) 直接メモリ・アクセス・コントローラを有するディジタル信号プロセッサにおける複数の構成素子間での信号群交換装置および方法

Legal Events

Date Code Title Description
A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20070914

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20070926

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20071122

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20080924

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20081125

A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20091104