JP2007034392A - 情報処理装置及びデータ処理方法 - Google Patents
情報処理装置及びデータ処理方法 Download PDFInfo
- Publication number
- JP2007034392A JP2007034392A JP2005212757A JP2005212757A JP2007034392A JP 2007034392 A JP2007034392 A JP 2007034392A JP 2005212757 A JP2005212757 A JP 2005212757A JP 2005212757 A JP2005212757 A JP 2005212757A JP 2007034392 A JP2007034392 A JP 2007034392A
- Authority
- JP
- Japan
- Prior art keywords
- descriptor
- task
- data
- queue
- memory
- 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
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/48—Program initiating; Program switching, e.g. by interrupt
- G06F9/4806—Task transfer initiation or dispatching
- G06F9/4843—Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Stored Programmes (AREA)
- Multi Processors (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
【課題】 ストリームプロセッサによるデータ処理のスループットの低下を抑制して処理能力を向上させることが可能な情報処理装置及びデータ処理方法を提供する。
【解決手段】 ディスクリプタをタスクデータ毎にそれぞれ生成し、同一のタスクコマンドを持つディスクリプタどうしを接続してディスクリプタ列を形成し、ディスクリプタ列どうしを接続してディスクリプタキューを形成するディスクリプタキュー生成装置と、タスクデータ及びディスクリプタキューがそれぞれ格納されるメモリと、メモリからディスクリプタキューの構成にしたがってディスクリプタを順次読み出し、読み出したディスクリプタに対応するタスクデータに対して、該ディスクリプタが持つタスクコマンドで指定されるプログラムによる処理を実行するストリームプロセッサとを有する構成とする。
【選択図】 図1
【解決手段】 ディスクリプタをタスクデータ毎にそれぞれ生成し、同一のタスクコマンドを持つディスクリプタどうしを接続してディスクリプタ列を形成し、ディスクリプタ列どうしを接続してディスクリプタキューを形成するディスクリプタキュー生成装置と、タスクデータ及びディスクリプタキューがそれぞれ格納されるメモリと、メモリからディスクリプタキューの構成にしたがってディスクリプタを順次読み出し、読み出したディスクリプタに対応するタスクデータに対して、該ディスクリプタが持つタスクコマンドで指定されるプログラムによる処理を実行するストリームプロセッサとを有する構成とする。
【選択図】 図1
Description
本発明は各種の処理を実行するストリームプロセッサを備えた情報処理装置及びそのデータ処理方法に関する。
情報処理装置は、その利用範囲が広がり、より高度な演算処理あるいは画像や動画のように大量のデータを高速に処理する能力が要求されている。このような要求を満たすための手法として、従来、ホストプロセッサとは別に特定の演算や処理を実行するDSP(Digital Signal Processor)やASIC(Application Specific Integrated Circuit)等を備え、CPU等のホストプロセッサの処理負荷を軽減することで情報処理装置の処理能力を向上させた構成が知られている。
しかしながら、近年の情報処理装置は、これら画像、動画、音声、音楽等のマルチメディアデータに対して様々な規格の圧縮/伸長処理や演算処理等が必要になり、またインターネット等のネットワークを介して各種データを送受信するための通信処理にも様々なプロトコルが用いられるようになってきている。さらに、ネットワーク上で送受信される情報の安全性が問題となっているため、情報セキュリティのための暗号化処理やそれを解読するための処理も必要となる。そのため、これらの処理に応じて多数のDSPやASIC等を設けていたのでは、情報処理装置の回路規模やコストが膨大なものとなってしまう。
そこで、情報処理装置内にPLD(Programmable Logic Device)を備え、必要に応じてPLD内のプログラムを書き換えることにより、情報処理装置の処理速度を向上させると共に、コストを低減しつつ様々な処理要求への対応を可能にした構成が特許文献1で提案されている。この特許文献1で提案された従来の情報処理装置の構成を図8に示す。
図8は従来の情報処理装置の構成を示すブロック図である。
図8に示すように、従来の情報処理装置は、プログラムにしたがって処理を実行するCPU100と、CPU100に代わって特定の処理を実行するPLD110と、PLD110に実行させるプログラムを書き換える変更部120と、CPU100やPLD110で実行するプログラム及び処理対象となるデータや処理後のデータ等が格納されるメモリ130と、処理後のデータや処理状況等を外部へ出力するための出力部140と、データを外部から入力するための入力部150とを有し、それらがバス160を介して接続された構成である。
CPU100は、メモリ130に格納されたOS(Operating System)プログラムやアプリケーションプログラム等にしたがって処理を実行する。PLD110は、内部にプログラムを格納するためのメモリを備え、CPU100からの指示にしたがって変更部120の制御によりメモリ130に格納されたプログラムを内部のメモリへロードし、ロードしたプログラムにしたがって特定の処理(以下、タスクと称す)を実行する。なお、PLD110は、PLD110自身でタスクを実行するためのプログラム(以下、タスク用プログラムと称す)を内部のメモリへロードすることができないため、PLD110で実行するタスクを切り換える場合は、外部の装置(CPU100や変更部120)の制御によりPLD110の内部のメモリへタスク用プログラムをロードする。
CPU100は、PLD110にタスクを実行させる場合、対応するタスク用プログラムのPLD110へのロード(Load)要求及び該タスク用プログラムを特定するための情報を変更部120へ送信する。また、PLD110に対して処理対象となるデータを送信する。
変更部120は、CPU100からロード要求を受信すると、CPU100が指定するタスク用プログラムをメモリ130から読み出し、該タスク用プログラムをPLD110へ書き込む。PLD110は、タスク用プログラムにしたがって内部回路を変更し、処理対象のデータ(以下、タスクデータと称す)に対して指定されたタスクの処理を実行する。また、タスクが終了すると、割り込み信号等を用いてCPU100へ通知する。CPU100は、PLD110からタスクの終了通知を受け取ると、PLD110に次に実行させるタスクの種類を判断し、前回と同一のタスクを実行させる場合はPLD110に処理対象となる次のタスクデータを送信する。また、前回と異なるタスクを実行させる場合は、上記と同様にそのタスク用プログラムを特定するための情報及びロード要求を変更部120へ送信し、PLD110のタスク用プログラムを書き換える。
このように図8に示した情報処理装置では、PLD110に実行させるタスク用プログラムを変更部120の制御により書き換えることで、コストを低減しつつ様々な処理要求への対応を可能にしている。
特開平11−184718号公報
上記PLDにそのメモリ容量以上の複数のタスク用プログラムを実行させる場合、PLDは、それらの回路を一度に実現できないため、タスク用プログラムを入れ替えながら実行する必要がある。
ここで、図8に示した従来の情報処理装置が有するPLDにより、複数種類のタスク用プログラムを用いて、各々のタスク用プログラムに対応する複数のタスクデータを処理する場合、それらのタスクデータは、必ずしも同一のタスク用プログラムで処理されるタスクデータ毎にまとまって情報処理装置へ供給されるわけではない。そのため、例えば複数のタスクデータを、その到着順に処理していたのでは、PLDに対するタスク用プログラムのロード処理が頻繁に発生するため、PLDによるデータ処理のスループットが低下して情報処理装置の処理能力を十分に向上させることができない問題がある。
ところで、上記PLDに代わるものとして、本出願人は演算処理を実行するデータパスの構成をプログラムによって変更可能なアレイ型プロセッサを既に提案している(例えば、特開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.等を参照)。
上記特開2003−196246号公報では、CPUと、アレイ型プロセッサ及び該アレイ型プロセッサに対するデータの入出力を制御する入出力制御回路を備えたストリームプロセッサと、ストリームプロセッサに対して入出力されるデータを一時的に保持するメモリとを有する情報処理装置を開示している。ストリームプロセッサは、複数のアレイ型プロセッサを備えることで複数の処理を並列に実行することも可能である。
上記特開2003−196246号公報に記載のアレイ型プロセッサは、内部にタスク用プログラムを格納するための命令メモリとタスクで使用するデータ(中間データ)を格納するための内部レジスタとを備えている。このアレイ型プロセッサは、上記PLDと同様にアレイ型プロセッサ自身で外部のメモリに格納されたタスク用プログラムを命令メモリへロードすることができない。このアレイ型プロセッサの命令メモリや内部レジスタは、CPUが管理可能なメモリ空間にマッピングされている。したがって、CPUは、ロード命令やストア命令を用いることで、アレイ型プロセッサの命令メモリや内部レジスタの任意の領域に対してタスク用プログラムや中間データの書き込みや読み出しが可能である。
このようなストリームプロセッサに、複数種類のタスク用プログラムを用いて、各々のタスク用プログラムに対応する複数のタスクデータを処理する場合、上記PLDを備える情報処理装置と同様に、ストリームプロセッサで複数のタスクデータを到着順に処理していたのでは、アレイ型プロセッサに対するタスク用プログラムのロード処理が頻繁に発生するため、ストリームプロセッサによるデータ処理のスループットが低下して、情報処理装置の処理能力を向上させることができない。
本発明は上記したような従来の技術が有する問題点を解決するためになされたものであり、ストリームプロセッサによるデータ処理のスループットの低下を抑制して処理能力を向上させることが可能な情報処理装置及びデータ処理方法を提供することを目的とする。
上記目的を達成するため本発明の情報処理装置は、処理対象であるタスクデータに対して実行するプログラムを指定するタスクコマンドを含むディスクリプタを前記タスクデータ毎にそれぞれ生成し、同一のタスクコマンドを持つ前記ディスクリプタどうしを接続してディスクリプタ列を形成し、前記ディスクリプタ列どうしを接続してディスクリプタキューを形成するディスクリプタキュー生成装置と、
前記タスクデータ及び前記ディスクリプタキューがそれぞれ格納されるメモリと、
前記メモリから前記ディスクリプタキューの構成にしたがって前記ディスクリプタを順次読み出し、読み出したディスクリプタに対応するタスクデータに対して、該ディスクリプタが持つタスクコマンドで指定されるプログラムによる処理を実行するストリームプロセッサと、
を有する構成である。
前記タスクデータ及び前記ディスクリプタキューがそれぞれ格納されるメモリと、
前記メモリから前記ディスクリプタキューの構成にしたがって前記ディスクリプタを順次読み出し、読み出したディスクリプタに対応するタスクデータに対して、該ディスクリプタが持つタスクコマンドで指定されるプログラムによる処理を実行するストリームプロセッサと、
を有する構成である。
一方、本発明のデータ処理方法は、処理対象であるタスクデータを所定のプログラムにしたがってストリームプロセッサで処理するための情報処理装置のデータ処理方法であって、
CPUが、前記タスクデータに対して実行するプログラムを指定するタスクコマンドを含むディスクリプタを前記タスクデータ毎にそれぞれ生成し、同一のタスクコマンドを持つ前記ディスクリプタどうしを接続してディスクリプタ列を形成し、前記ディスクリプタ列どうしを接続してディスクリプタキューを形成してメモリへ格納し、
前記ストリームプロセッサが、前記メモリから前記ディスクリプタキューの構成にしたがって前記ディスクリプタを順次読み出し、読み出したディスクリプタに対応するタスクデータに対して、該ディスクリプタが持つタスクコマンドで指定されるプログラムによる処理を実行する方法である。
CPUが、前記タスクデータに対して実行するプログラムを指定するタスクコマンドを含むディスクリプタを前記タスクデータ毎にそれぞれ生成し、同一のタスクコマンドを持つ前記ディスクリプタどうしを接続してディスクリプタ列を形成し、前記ディスクリプタ列どうしを接続してディスクリプタキューを形成してメモリへ格納し、
前記ストリームプロセッサが、前記メモリから前記ディスクリプタキューの構成にしたがって前記ディスクリプタを順次読み出し、読み出したディスクリプタに対応するタスクデータに対して、該ディスクリプタが持つタスクコマンドで指定されるプログラムによる処理を実行する方法である。
上記のような情報処理装置及びデータ処理方法では、同一のタスクコマンドを持つディスクリプタどうしを接続してディスクリプタ列を形成し、ディスクリプタ列どうしを接続してディスクリプタキューを形成する。このディスクリプタキューをメモリに格納しておき、ストリームプロセッサが該ディスクリプタキューの構成にしたがって各ディスクリプタを順次読み出し、対応するタスクデータを連続して処理すれば、アレイ型プロセッサによるタスク用プログラムのロード処理を最小限に抑制できる。
本発明によれば、同一のタスクコマンドを持つディスクリプタどうしを接続してディスクリプタ列を形成し、ディスクリプタ列どうしを接続してディスクリプタキューを形成しておき、ストリームプロセッサが該ディスクリプタキューの構成にしたがって各ディスクリプタを順次読み出し、対応するタスクデータを連続して処理することで、アレイ型プロセッサによるタスク用プログラムのロード処理を最小限に抑制できる。したがって、ストリームプロセッサによるデータ処理のスループットが向上し、情報処理装置の処理能力を向上させることができる。
次に本発明について図面を参照して説明する。
図1は本発明の情報処理装置の一構成例を示すブロック図である。
図1に示すように、本発明の情報処理装置は、ホストプロセッサであるCPU1と、タスク用プログラムにしたがって処理を実行するアレイ型プロセッサを備えたストリームプロセッサ2と、メモリ3と、不図時の入力装置及び出力装置とのインタフェースである入出力回路4と、各タスクデータに一意に対応するディスクリプタをそれぞれ生成し、それらを同一のタスク用プログラム毎に接続したディスクリプタ列、及びディスクリプタ列どうしを接続したディスクリプタキューを形成するディスクリプタキュー生成装置6とを有し、CPU1、ストリームプロセッサ2、メモリ3、入出力回路4及びディスクリプタキュー生成装置6がバス5を介して相互に接続された構成である。メモリ3には、CPU1で実行するプログラム、ストリームプロセッサ2で実行するタスク用プログラム、ストリームプロセッサ2で処理するタスクデータ、該タスクデータの処理で用いる各種情報から成るディスクリプタ、アレイ型プロセッサで処理されたデータである出力データ、アレイ型プロセッサで使用される中間データが格納される。本発明における中間データは、必要に応じてアレイ型プロセッサから退避される、アレイ型プロセッサの内部レジスタに格納されたデータである。なお、ホストプロセッサは、CPUである必要はなく、情報処理装置全体の処理や制御が可能であればDSPやその他の処理装置であってもよい。
ディスクリプタキュー生成装置6は、例えば論理回路やメモリ等を用いてそれぞれ構成してもよく、CPU(またはDSP)と内部メモリとを備え、該内部メモリに格納されたプログラムにしたがってCPU(またはDSP)により以下に記載する各構成要素の処理を実現する構成であってもよい。
なお、ディスクリプタキュー生成装置6は、必ずしも備えている必要はなく、ディスクリプタキュー生成装置6の処理をメモリ3に格納されたプログラムにしたがってCPU1で実現することも可能である。以下では、ディスクリプタキュー生成装置6に代わってCPU1がディスクリプタ、ディスクリプタ列及びディスクリプタキューを形成する場合を例にして説明する。
ストリームプロセッサ2は、後述するディスクリプタやタスクデータをメモリ3から読み出す入力DMA回路21と、ディスクリプタを管理するためのディスクリプタ管理テーブル22と、タスク用プログラムにしたがって処理を実行するアレイ型プロセッサ23と、アレイ型プロセッサ23へ供給するタスクデータを一時的に保持する入力FIFO24と、アレイ型プロセッサ23で処理された出力データを一時的に保持する出力FIFO25と、出力データをメモリ3へ書き戻すためのメモリアクセス制御回路26と、アレイ型プロセッサ23で実行するタスク用プログラムのロード、及びアレイ型プロセッサ23の内部レジスタに対する中間データの読み出し/書き込みを可能にするための構成情報DMAコントローラ27とを有する構成である。入力DMA回路21、ディスクリプタ管理テーブル22、メモリアクセス制御回路26及び構成情報DMAコントローラ27は、例えば論理回路やメモリ等を用いてそれぞれ構成してもよく、CPU(またはDSP)と内部メモリとを備え、該内部メモリに格納されたプログラムにしたがってCPU(またはDSP)により以下に記載する各構成要素の処理を実現する構成であってもよい。なお、ストリームプロセッサ2は、複数のアレイ型プロセッサ23を備え、これら複数のアレイ型プロセッサ23によって処理を実行するためのチャネル(処理経路)が複数形成されていてもよい。その場合、入力FIFO24及び出力FIFO25は、各チャネルに対応してそれぞれ設けられる。
ストリームプロセッサ2でタスクを実行する場合、ストリームプロセッサ2は、入力DMA回路21によりメモリ3からディスクリプタを読み出し、読み出したディスクリプタの各領域の値にしたがってタスク用プログラムをメモリ3からアレイ型プロセッサ23へロードし、さらにメモリ3からタスクデータを読み出してアレイ型プロセッサ23によりタスクの処理を実行する。アレイ型プロセッサ23で処理した出力データはメモリアクセス制御回路26によりメモリ3へ書き戻される。
ディスクリプタは、ディスクリプタキュー生成装置6あるいはメモリ3に格納されたプログラムにしたがってCPU1がタスクデータ毎に生成し、メモリ3へ格納する。各タスクデータには一意に対応するディスクリプタが必ず作成される。
図2は図1に示した情報処理装置で用いるディスクリプタのフォーマットを示す模式図である。図2ではディスクリプタを128ビットで構成する例を示しているが、ディスクリプタの情報量は、CPU1やアレイ型プロセッサ23の処理ビット幅、あるいはメモリ空間の大きさ等に応じて適宜設定すればよい。
図2に示すように、本実施形態の情報処理装置で用いるディスクリプタは、割り込みフラグ(INT)、タイプ(TYPE)、トランザクション識別子(TID)、タスクコマンド(TASKCMD)、入力データサイズ(ISIZE)、出力データアドレス(RADR)及び入力データアドレス(IADR)の各領域を備えた構成である。
割り込みフラグ(INT)は、ストリームプロセッサ2による処理の終了をCPU1へ通知するための割り込み信号の発生要否に用いるビットである。
タイプ(TYPE)は、メモリ3内に構築する、後述するディスクリプタキューの構造を維持するために用いるビットである。
トランザクション識別子(TID)は、ストリームプロセッサ2で処理するタスクデータを識別するための識別子が格納される領域である。トランザクション識別子の値は、タスクデータと共にアレイ型プロセッサ23へ供給され、対応する出力データ共にアレイ型プロセッサ23から出力される。
タスクコマンド(TASKCMD)は、ストリームプロセッサ2に実行させるタスクを指定するための指示子が格納される領域である。
入力データアドレス(IADR)は、ストリームプロセッサ2で処理するタスクデータの格納元のアドレスを示すデータバッファポインタが設定される領域であり、出力データアドレス(RADR)は、ストリームプロセッサ2で処理された出力データの格納先のアドレスを示すデータバッファポインタが設定される領域である。また、入力データサイズ(ISIZE)はタスクデータの大きさを示す情報が設定される領域である。タスクコマンドの値及び入力データサイズの値はタスクデータと共にアレイ型プロセッサ23へ供給される。
入力DMA回路21は、ディスクリプタが格納されたメモリ3の領域の先頭アドレスを保持するためのディスクリプタポインタを備えている。このディスクリプタポインタの値は、例えばCPU1によりメモリ3に格納されたプログラムにしたがって設定される。CPU1は、ストリームプロセッサ2に処理を実行させる場合、処理対象となるタスクデータに対応するディスクリプタの先頭アドレスを入力DMA回路21のディスクリプタポインタにセットする。
入力DMA回路21は、CPU1によって設定されたディスクリプタポインタの値にしたがってメモリ3から対応するディスクリプタを読み出し、該ディスクリプタのIADRで指定されたアドレスからISIZEで指定された大きさのタスクデータを読み出し、該タスクデータを入力FIFO24へ供給する。また、読み出したディスクリプタからTID、TASKCMD及びISIZEの値をそれぞれ抽出し、入力FIFO24を介してアレイ型プロセッサ23へそれぞれ供給する。
さらに、入力DMA回路21は、読み出したディスクリプタからTID及びRADRの値をそれぞれ抽出し、出力データアドレス(RADR)の値をトランザクション識別子(TID)の値に関連付けてディスクリプタ管理テーブル22へ格納する。
入力FIFO24は、入力DMA回路21から受信したタスクコマンド、トランザクション識別子及びそれに対応付けられたタスクデータを一時的に保持し、アレイ型プロセッサ23によるタスク用プログラムのロード処理または先行するタスクの処理が終了した時点で、保持している次に処理すべきタスクコマンド、トランザクション識別子及びタスクデータをアレイ型プロセッサ23へ供給する。このような入力FIFO24を備えることで、アレイ型プロセッサ23に複数のタスクを実行させる場合に、アレイ型プロセッサ23の動作を停止させることなく、タスクデータをアレイ型プロセッサ23へ効率よく連続して供給することができる。また、アレイ型プロセッサ23がタスク用プログラムや中間データのロード処理あるいはタスク用プログラムを実行しているためにタスクデータを受信できない場合でも、入力DMA回路21は動作を停止することなく入力FIFO24へタスクデータを供給できる。したがって、ストリームプロセッサ2の処理効率が向上する。
アレイ型プロセッサ23は、入力FIFO24から受け取ったタスクコマンドに基づき、構成情報DMAコントローラ27を用いて該タスクコマンドで指定される少なくとも一つのタスク用プログラムをメモリ3からロードし、ロード完了後、タスクデータに対してタスク用プログラムによる処理を実行する。アレイ型プロセッサ23による処理後の出力データは出力FIFO25を介してメモリアクセス制御回路26へ出力される。このとき、アレイ型プロセッサ23は、出力データの先頭データと共に受信したトランザクション識別子を出力FIFO25へ供給する。
出力FIFO25は、アレイ型プロセッサ23から受け取ったトランザクション識別子及び出力データを一時的に保持し、バス5に対するアクセスの競合等によりメモリアクセス制御回路26からメモリ3へ先の出力データが転送できない場合に、そのデータ転送のできない状態が解消された時点で保持している出力データをメモリアクセス制御回路26へ供給する。また、アレイ型プロセッサ23から受け取ったトランザクション識別子を出力データの先頭データと共にメモリアクセス制御回路26へ供給する。このような出力FIFO25を有することで、アレイ型プロセッサ23の動作を停止させることなく、アレイ型プロセッサ23の出力データをメモリ3へ効率よく転送できるため、ストリームプロセッサ2による処理のスループットの低下が抑制される。
メモリアクセス制御回路26は、出力FIFO25からトランザクション識別子及び出力データを受け取ると、該トランザクション識別子をディスクリプタ管理テーブル22へ転送する。ディスクリプタ管理テーブル22は、受け取ったトランザクション識別子に関連付けて保存された出力データアドレス(RADR)を取り出し、メモリアクセス制御回路26へ返送する。メモリアクセス制御回路26は、ディスクリプタ管理テーブル22から受け取った出力データアドレスを開始アドレスとするメモリ3の領域へ出力データを格納する。
ところで、ストリームプロセッサ2を備えた情報処理装置のスループットを向上させるためには、同一のタスク用プログラムで処理されるタスクデータをできるだけまとめ、それらをストリームプロセッサ2に連続して与えることで、アレイ型プロセッサ23に対するタスク用プログラムの入れ替え処理の回数を削減すればよい。このタスク用プログラムの入れ替え処理の回数を削減するための手法として、本実施形態では、同一のタスク用プログラムで処理するタスクデータに対応したディスクリプタ(同一のタスクコマンドを持つディスクリプタ)をそれぞれ接続することでディスクリプタ列を形成する。そして、タスク用プログラム毎に作成されるディスクリプタ列を接続してディスクリプタキューを形成する。
図3は図1に示した情報処理装置で用いるディスクリプタキューの一構成例を示す模式図である。なお、図3に示す各ディスクリプタ内には、図2に示したディスクリプタの各領域のうち、タイプ(TYPE)、タスクコマンド(TASKCMD)、入力データアドレス(IADR)及び入力データサイズ(ISIZE)のみを記載している。
図3に示すように、本実施形態の情報処理装置では、同一のタスクコマンドを持つディスクリプタをそれぞれ接続することでディスクリプタ列を形成する。ここで、ディスクリプタの接続とは、対象となる複数のディスクリプタをメモリ3の連続するアドレス領域へ格納することを言う。
図3は、TASKCMD=Aで指定されるタスク用プログラムで処理するタスクデータA0〜Anに対応するディスクリプタをそれぞれ接続してディスクリプタ列Q0Aを形成し、TASKCMD=Bで指定されるタスク用プログラムで処理するタスクデータB0〜Bmに対応するディスクリプタをそれぞれ接続してディスクリプタ列Q0Bを形成する例を示している。
ストリームプロセッサ2の入力DMA回路21は、ディスクリプタのデータサイズに相当する値(例えば128ビット)だけディスクリプタポインタの値を増加させることで、次に読み出すディスクリプタへアクセスする。したがって、上述したように同一のタスクコマンドを持つ複数のディスクリプタをメモリ3の連続するアドレス領域へ格納しておけば、CPU1によって先頭のディスクリプタポインタがセットされると、以降、入力DMA回路21は、CPU1からの設定が無くてもディスクリプタポインタの値を内部で更新して次のディスクリプタを読み出すことができる。
また、本実施形態では、先行する処理で用いるディスクリプタ列の最終ディスクリプタに、後続の処理で用いるディスクリプタ列の最初のディスクリプタへアクセスするためのリンクポインタ(LinkPointer)を格納し、ディスクリプタ列どうしを接続してディスクリプタキューを構成する。
図2に示したように、各ディスクリプタにはTYPE領域をそれぞれ備えているため、IADRに入力データアドレスとして有効な値を格納した場合は、そのディスクリプタのTYPEを「1」に設定する。また、IADRに次のディスクリプタへアクセスするためのリンクポインタ(LinkPointer)を格納した場合は、そのディスクリプタのTYPEを「0」に設定する。
図3に示す例では、ディスクリプタ列Q0AのタスクデータA0に対応する最初のディスクリプタにTASKCMD=A、TYPE=1、IADR=ptrA0、ISIZE=sizeA0が格納され、次のタスクデータA1に対応する第2のディスクリプタにTASKCMD=A、TYPE=1、IADR=ptrA1、ISIZE=sizeA1が格納され、…、タスクデータAn(nは1以上の整数)に対応する第nのディスクリプタにTASKCMD=A、TYPE=1、IADR=ptrAn、ISIZE=sizeAnが格納されている。また、ディスクリプタ列Q0BのタスクデータB0に対応する最初のディスクリプタにTASKCMD=B、TYPE=1、IADR=ptrB0、ISIZE=sizeB0が格納され、次のタスクデータB1に対応する第2のディスクリプタにTASKCMD=B、TYPE=1、IADR=ptrB1、ISIZE=sizeB1が格納され、…、タスクデータBm(mは1以上の整数)に対応する第mのディスクリプタにTASKCMD=B、IADR=ptrBm、ISIZE=sizeBmが格納されている。
さらに、ディスクリプタ列Q0Bへアクセスするためのリンクポインタ(LinkPointer)として、ディスクリプタ列Q0Aの最終ディスクリプタに、TYPE=0、IADR=ptrQ0B(ディスクリプタ列Q0Bの最初のディスクリプタの先頭アドレス)が格納されている。
このようなディスクリプタキューをCPU1あるいはディスクリプタキュー生成装置6により形成してメモリ3へ格納しておき、ストリームプロセッサ2が該ディスクリプタキューの構成にしたがって各ディスクリプタを順次読み出し、読み出したディスクリプタに対応するタスクデータを連続して処理すれば、アレイ型プロセッサ23に対するタスク用プログラムのロード処理を最小限に抑制できるため、ストリームプロセッサ2のスループットが向上する。さらに、アレイ型プロセッサ23で複数のタスク用プログラムのロード処理が必要になる場合でも、これらの処理をCPU1からの一度のロード要求で連続して実行できるようになる。そのため、従来の情報処理装置のようにタスク用プログラムのロード処理毎にCPU1でPLD(本発明ではストリームプロセッサ2)に次に実行させるタスクを判断していた処理が不要になる。よって、アレイ型プロセッサ23に対するタスク用プログラムのロード処理に要するCPU1の処理負荷が軽減する。
また、本実施形態の情報処理装置では、2つのディスクリプタキューを格納するための領域をメモリ3に用意し、ストリームプロセッサ2が一方のディスクリプタキューにしたがって処理を実行しているとき、CPU1またはディスクリプタキュー生成装置6はストリームプロセッサ2に次に実行させる処理で用いる他方のディスクリプタキューを作成する。例えば、ストリームプロセッサ2がディスクリプタキューQ0にしたがって処理を実行しているとき、CPU1はストリームプロセッサ2に次に実行させるディスクリプタキューQ1を作成してメモリ3へ格納する。一方、ストリームプロセッサ2がディスクリプタキューQ1にしたがって処理を実行しているとき、CPU1はストリームプロセッサ2に次に実行させるディスクリプタキューQ0を作成してメモリ3へ格納する。
本実施形態では、ストリームプロセッサ2が実行しているディスクリプタキューを、メモリ3に備えた不図示のフラグ(本明細書や図面では、Flagと称す)領域の値を用いてCPU1またはディスクリプタキュー生成装置6が判定する。例えば、Flag=0の場合、ストリームプロセッサ2はディスクリプタキューQ1にしたがって処理を実行しているものとする。その場合、CPU1はタスクデータ毎に作成したディスクリプタをそれぞれのタスクコマンドの値にしたがって対応するディスクリプタ列Q0x(x=A,B、C、…)へ振り分け、各ディスクリプタ列Q0xを接続してディスクリプタキューQ0を作成する。また、Flag=1の場合、ストリームプロセッサ2はディスクリプタキューQ0にしたがって処理を実行しているものとする。その場合、CPU1はタスクデータ毎に作成したディスクリプタをそれぞれのタスクコマンドの値にしたがって対応するディスクリプタ列Q1x(x=A,B、C、…)へ振り分け、各ディスクリプタ列Q1xを接続してディスクリプタキューQ1を作成する。Flag領域の値は、例えばストリームプロセッサ2からのタスクの終了を通知する割り込み信号を受けて、CPU1が切り換える。
このように2つのディスクリプタキューを用いることで、CPU1は、タスクデータ毎に作成したディスクリプタを、対応するディスクリプタ列に効率よく振り分けることができる。また、CPU1は、ストリームプロセッサ2が処理を実行中に、次にストリームプロセッサ2に実行させるディスクリプタキューを作成できるため、ストリームプロセッサ2の処理を中断させることなく連続して実行させることができる。したがって、ストリームプロセッサ2のデータ処理のスループットが向上する。
さらに、本実施形態の情報処理装置では、ストリームプロセッサ2が先行する処理で用いるディスクリプタキューと後続の処理で用いるディスクリプタキューとに同一のタスクコマンドを持つディスクリプタ列が存在する場合、先行する処理で用いるディスクリプタキューの最後のディスクリプタ列と後続の処理で用いるディスクリプタキューの最初のディスクリプタ列のタスクコマンドをそれぞれ一致させる。
例えば、先行する処理で用いるディスクリプタキューQ0がTASKCMD=Aを持つディスクリプタ列Q0AとTASKCMD=Bを持つディスクリプタ列Q0Bとによって構成され、後続の処理で用いるディスクリプタキューQ1がTASKCMD=Aを持つディスクリプタ列Q1AとTASKCMD=Bを持つディスクリプタ列Q1Bとによって構成されている場合、CPU1またはディスクリプタキュー生成装置6は、ディスクリプタキューQ0の最後がディスクリプタ列Q0Bであるならば、ディスクリプタキューQ1の最初にディスクリプタ列Q1Bを配置する。また、ディスクリプタキューQ0の最後がディスクリプタ列Q0Aであるならば、ディスクリプタキューQ1の最初にディスクリプタ列Q1Aを配置する。
本実施形態では、先行する処理で用いるディスクリプタキューに含まれる最後のディスクリプタ列のタスクコマンドの値をメモリ3に設けた不図示のラストタスクコマンド(本明細書や図面では、LastTaskcmdと称す)領域の値を用いてCPU1またはディスクリプタキュー生成装置6が判定する。例えば、先行する処理で用いるディスクリプタキューのLastTaskcmd領域の値がAの場合、後続の処理で用いるディスクリプタキューの最初にTASKCMD=Aを持つディスクリプタ列を配置する。
このような規則にしたがって各ディスクリプタ列を配列することで、2つのディスクリプタキューの切り替わり時にタスク用プログラムを入れ替える必要がなくなるため、アレイ型プロセッサ23によるタスク用プログラムの切り替え処理をさらに削減できる。したがって、ストリームプロセッサ2及びそれを備えた情報処理装置のスループットがより向上する。
次に本発明の情報処理装置が有するCPU1(またはディスクリプタキュー生成装置6)の処理について図4〜図6を用いて説明する。
図4は図1に示したCPU1が実行する処理全体の手順を示すフローチャートである。また、図5は図4に示したディスクリプタの振り分け処理の手順を示すフローチャートであり、図6は図4に示したディスクリプタキューの作成処理の手順を示すフローチャートである。
図4に示すように、CPU1は、まずアレイ型プロセッサ23へ各種のタスク用プログラムや中間データを書き込むための情報またはアレイ型プロセッサ23から中間データを読み出すための情報から構成されるDMAコマンドを生成し、構成情報DMAコントローラ27にテーブル形式で格納する(テーブルの設定)。DMAコマンドは、構成情報DMAコントローラ27が実行する各処理に対応して一意に生成され、例えば転送対象となる中間データまたはタスク用プログラムが格納されたメモリ領域の先頭アドレスを示す転送元アドレス(RDADR)、転送対象となる中間データまたはタスク用プログラムを格納するメモリ領域の先頭アドレスを示す転送先アドレス(WRADR)、アレイ型プロセッサ23へロードする中間データまたはタスク用プログラムのデータ長、あるいはアレイ型プロセッサ23から読み出す中間データのデータ長を示す転送データ長(LENGTH)、アレイ型プロセッサ23に対してタスク用プログラムや中間データをロードするためのものであるか、アレイ型プロセッサ23から中間データを読み出すためのものであるかを示すフラグであるリードイネーブル(RE)及びDMAコマンドの処理が終了したときにホストプロセッサ等へ割り込み通知(割り込み信号の発行)が必要であるか否かを指定する割り込みフラグ(DINT)等を備えている。
CPU1は、構成情報DMAコントローラ27に対する各種DMAコマンドのセットが完了すると、アレイ型プロセッサ23にロードタスクのプログラム(ロードタスク用プログラム)を書き込むために、先にセットした対応するDMAコマンドを指定し、構成情報DMAコントローラ27にロードタスク用プログラムのロード処理を要求する(ステップS1)。なお、ロードタスクとは、アレイ型プロセッサ23がタスク用プログラムをロードする際に必要となる処理を指す。ロードタスクには、入力FIFO24から受信したタスクコマンドを用いて新たなタスク用プログラムのロード処理の要否を判定する処理、及び該タスクコマンドから構成情報DMAコントローラ27にセットした対応するDMAコマンドを指定するための処理を含んでいる。
次に、CPU1は、メモリ3にストリームプロセッサ2で処理するタスクデータが存在するか否かを判定し(ステップS2)、タスクデータがメモリ3に存在する場合は、それに対応するディスクリプタ列を作成するために、ディスクリプタの振り分け処理を実行する(ステップS3)。ディスクリプタの振り分け処理は、図5に示す手順にしたがって実行する。なお、このディスクリプタの振り分け処理はディスクリプタキュー生成装置6で実行してもよい。
図5に示すように、ディスクリプタの振り分け処理では、CPU1は、まず図4のステップS2の処理でメモリ3に存在を確認したタスクデータから対応するディスクリプタを生成する(ステップS31)。そして、メモリ3のFlag領域の値が0であるか否かを判定し(ステップS32)、Flag領域の値が0である場合は、生成したディスクリプタを、そのタスクコマンドで指定されるディスクリプタ列Q0xに登録する(ステップS33)。
一方、Flag領域の値が1である場合は、生成したディスクリプタを、そのタスクコマンドで指定されるディスクリプタ列Q1xに登録する(ステップS34)。
CPU1は、図5に示すディスクリプタの振り分け処理を実行している間、ストリームプロセッサ2からのロードタスク用プログラムのロード処理の終了、あるいはタスクの終了を通知する割り込み信号を待ち受け(図4のステップS4)、割り込み信号を受け取ると、それまでに生成したディスクリプタ列Q0xまたはQ1xを用いてディスクリプタキューの作成処理を開始する(ステップS5)。このディスクリプタキューの作成処理は、図6に示す手順にしたがって実行する。なお、このディスクリプタキューの作成処理もディスクリプタキュー生成装置6で実行してもよい。
図6に示すように、ディスクリプタキューの作成処理では、CPU1は、まずメモリ3のFlag領域の値が0であるか否かを判定し(ステップS51)、Flag領域の値が0である場合、メモリ3のLastTaskcmd領域の値をタスクコマンドに持つディスクリプタ列が最初に位置するようにディスクリプタキューQ0を作成してメモリ3へ格納する(ステップS52)。CPU1は、ディスクリプタキューQ0の作成が完了すると、Flag領域の値を1に書き換え、LastTaskcmd領域の値を作成したディスクリプタキューQ0の最後のディスクリプタ列が持つタスクコマンドの値に書き換える(ステップS53)。
一方、Flag領域の値が1である場合、CPU1は、LastTaskcmd領域の値をタスクコマンドに持つディスクリプタ列が最初に位置するようにディスクリプタキューQ1を作成してメモリ3へ格納する(ステップS54)。CPU1は、ディスクリプタキューQ1の作成が完了すると、Flag領域の値を0に書き換え、LastTaskcmd領域の値を作成したディスクリプタキューQ1の最後のディスクリプタ列が持つタスクコマンドの値に書き換える(ステップS55)。
CPU1は、作成したディスクリプタキューQ0またはディスクリプタキューQ1の最初のディスクリプタの先頭アドレスを入力DMA回路21のディスクリプタポインタにセットし、ストリームプロセッサ2にディスクリプタキューQ0またはディスクリプタキューQ1を用いた処理を開始させる(ステップS56)。
CPU1は、図6に示したディスクリプタキューの作成処理が終了すると、ストリームプロセッサ2に実行させる全てのタスクデータの処理が終了したか否かを判定し(図4のステップS6)、全ての処理が終了していない場合はステップS2の処理に戻ってステップS2からステップS6までの処理を繰り返す。ストリームプロセッサ2に実行させる全てのタスクデータの処理が終了した場合は、ストリームプロセッサ2にタスクを実行させるための処理を終了する。
次に本発明の情報処理装置の全体の動作について図7を用いて説明する。
図7は本発明の情報処理装置の処理手順を示すタイミングチャートである。
図7は、ストリームプロセッサ2にタスクA0〜A6及びタスクB0〜B6の処理をそれぞれ実行させる場合のCPU1及びストリームプロセッサ2の動作をそれぞれ示している。タスクA0〜A6はタスクデータA0〜A6対するタスク用プログラムAの処理を示し、タスクB0〜B6はタスクデータB0〜B6に対するタスク用プログラムBの処理を示している。ディスクリプタA0〜A6はタスクデータA0〜A6に対応して生成されたディスクリプタであり、ディスクリプタB0〜B6はタスクデータB0〜B6に対応して生成されたディスクリプタである。
図7に示すように、CPU1は、まずロードタスク用プログラム及びタスク用プログラム(ここでは、タスク用プログラムA,B)をロードするためのDMAコマンドをそれぞれ生成する(サイクル(1))。
続いて、CPU1は、サイクル(1)で生成したDMAコマンドをストリームプロセッサ2の構成情報DMAコントローラ27にテーブル形式で格納する(テーブル設定)。また、構成情報DMAコントローラ27に対してアレイ型プロセッサ23へのロードタスク用プログラムのロード処理を要求する(サイクル(2))。サイクル(1)、(2)は、処理の最初に一度だけ実行すればよい。
構成情報DMAコントローラ27は、CPU1からロードタスク用プログラムのロード要求を受け取ると、CPU1に指定されたDMAコマンドにしたがってメモリ3に格納されたロードタスク用プログラムを読み出し、アレイ型プロセッサ23へロードする。そして、アレイ型プロセッサ23に対するロードタスク用プログラムのロード処理が完了すると、CPU1へロード完了を通知するための割り込み信号を送信する。
CPU1は、構成情報DMAコントローラ27がアレイ型プロセッサ23に対するロードタスク用プログラムのロード処理を実行している間、図5に示した手順にしたがってメモリ3に格納されたタスクデータ毎に対応するディスクリプタをそれぞれ生成し、それらの振り分け処理を実行する。ここでは、メモリ3に格納されたタスクデータA0、A1、B0、B1に対応するディスクリプタA0、A1、B0、B1を生成し、ディスクリプタA0とディスクリプタA1とを接続してディスクリプタ列Q0Aを形成し、ディスクリプタB0とディスクリプタB1とを接続してディスクリプタ列Q0Bを形成する(サイクル(3))。
CPU1は、構成情報DMAコントローラ27からロードタスク用プログラムのロード完了を示す割り込み信号を受け取ると、図6に示した手順にしたがってディスクリプタ列Q0Aとディスクリプタ列Q0Bとを接続し、ディスクリプタキューQ0を形成する。そして、入力DMA回路21のディスクリプタポインタにディスクリプタキューQ0の最初のディスクリプタ列Q0Aの先頭アドレスをセットし、入力DMA回路21にディスクリプタの読み出し処理(データDMA要求)を開始させる(サイクル(4))。
入力DMA回路21は、ディスクリプタポインタの値に基づきメモリ3からディスクリプタA0を読み出し、該ディスクリプタからタスクコマンド(TASKCMD)、トランザクション識別子(TID)及び入力データサイズ(ISIZE)を抽出し、入力FIFO24を介してアレイ型プロセッサ23へ供給する。また、ディスクリプタA0で指定されたタスクデータA0をメモリ3から読み出し、入力FIFO24へ供給する。
アレイ型プロセッサ23は、入力FIFO24からディスクリプタA0のタスクコマンドを受信すると、該タスクコマンドで指定されるタスク用プログラムAがロードされているか否かを確認する。ここでは、タスク用プログラムAがロードされていないため、構成情報DMAコントローラ27へ対応するDMAコマンドを指定する情報を送信してタスク用プログラムAのロードを要求する。
構成情報DMAコントローラ27は、アレイ型プロセッサ23によって指定されたDMAコマンドにしたがってメモリ3からタスク用プログラムAを読み出し、アレイ型プロセッサ23へ転送する。構成情報DMAコントローラ27は、タスク用プログラムAの転送処理が完了すると、アレイ型プロセッサ23へロード完了通知を送信する。
入力DMA回路21は、ディスクリプタA0及びタスクデータA0に続いてディスクリプタA1及びタスクデータA1をメモリ3から読み出し、ディスクリプタA1からタスクコマンド、トランザクション識別子及び入力データサイズを抽出して入力FIFO24へ転送する(サイクル(5))。
アレイ型プロセッサ23は、構成情報DMAコントローラ27からロード完了通知を受け取ると、入力FIFO24からタスクデータA0を受け取り、タスク用プログラムAによりタスクA0の処理を実行する。また、タスクA0の処理が完了すると、入力FIFO24からディスクリプタA1のタスクコマンドを受け取り、該タスクコマンドで指定されるタスク用プログラムAがロードされているか否かを確認する。ここでは、タスク用プログラムAが既にロードされているため、アレイ型プロセッサ23は入力FIFO24からタスクデータA1を受け取り、タスク用プログラムAによりタスクA1の処理を実行する(サイクル(6))。
入力DMA回路21は、ディスクリプタA1及びタスクデータA1をメモリ3から読み出すと、ディスクリプタキューQ0の構成にしたがってメモリ3からディスクリプタB0を読み出し、ディスクリプタB0からタスクコマンド、トランザクション識別子及び入力データサイズを抽出し、入力FIFO24を介してアレイ型プロセッサ23へ供給する。また、ディスクリプタB0で指定されるタスクデータB0をメモリ3から読み出し、入力FIFO24へ供給する。
アレイ型プロセッサ23は、タスクA1の処理が完了すると、入力FIFO24からディスクリプタB0のタスクコマンドを受信し、該タスクコマンドで指定されるタスク用プログラムBがロードされているか否かを確認する。ここでは、タスク用プログラムBがロードされていないため、構成情報DMAコントローラ27へ対応するDMAコマンドを指定する情報を送信してタスク用プログラムBのロードを要求する。
構成情報DMAコントローラ27は、アレイ型プロセッサ23によって指定されたDMAコマンドにしたがってメモリ3からタスク用プログラムBを読み出し、アレイ型プロセッサ23へ転送する。構成情報DMAコントローラ27は、タスク用プログラムBの転送処理が完了すると、アレイ型プロセッサ23へロード完了通知を送信する。
入力DMA回路21は、ディスクリプタB0及びタスクデータB0に続いてディスクリプタB1及びタスクデータB1をメモリ3から読み出し、ディスクリプタB1からタスクコマンド、トランザクション識別子及び入力データサイズを抽出して入力FIFO24へ転送する(サイクル(7))。
アレイ型プロセッサ23は、構成情報DMAコントローラ27からロード完了通知を受け取ると、入力FIFO24からタスクデータB0を受け取り、タスク用プログラムBによるタスクB0の処理を実行する。また、タスクB0の処理が完了すると、入力FIFO24からディスクリプタB1のタスクコマンドを受け取り、該タスクコマンドで指定されるタスク用プログラムBがロードされているか否かを確認する。ここでは、タスク用プログラムBが既にロードされているため、アレイ型プロセッサ23は入力FIFO24からタスクデータB1を受け取り、タスク用プログラムBによりタスクB1の処理を実行する。また、タスクB1の処理が終了すると、割り込み信号によりディスクリプタキューQ0による処理の終了をCPU1へ通知する(サイクル(8))。
CPU1は、ストリームプロセッサ2が上記サイクル(5)からサイクル(8)の処理を実行している間、図5に示した手順にしたがってメモリ3に格納されたタスクデータA2〜A6及びB2〜B6に対応するディスクリプタA2〜A6及びB2〜B6をそれぞれ作成し、それらの振り分け処理を実行する。ここでは、メモリ3に格納されたタスクデータA2〜A6及びB2〜B6に対応するディスクリプタA2〜A6及びB2〜B6を作成し、ディスクリプタA2〜A6を接続してディスクリプタ列Q1Aを生成し、ディスクリプタB2〜B6を接続してディスクリプタ列Q1Bを形成する(サイクル(5)〜(8))。
CPU1は、ストリームプロセッサ2からディスクリプタキューQ0による処理の終了を示す割り込み信号を受信すると、図6に示した手順にしたがってディスクリプタ列Q1Bとディスクリプタ列Q1Aとを接続し、ディスクリプタキューQ1を形成する。そして、入力DMA回路21のディスクリプタポインタにディスクリプタキューQ1の最初のディスクリプタ列Q1Bの先頭アドレスをセットし、入力DMA回路21にディスクリプタの読み出し処理(データDMA要求)を開始させる(サイクル(9))。
以上説明したように本発明の情報処理装置によれば、同一のタスクコマンドを持つディスクリプタどうしを接続してディスクリプタ列を形成し、ディスクリプタ列どうしを接続してディスクリプタキューを形成しておき、ストリームプロセッサ2が該ディスクリプタキューの構成にしたがって各ディスクリプタを順次読み出し、対応するタスクデータを連続して処理するため、アレイ型プロセッサ23に対するタスク用プログラムのロード処理を最小限に抑制できる。したがって、ストリームプロセッサによるデータ処理のスループットが向上し、情報処理装置の処理能力を向上させることができる。
1 CPU
2 ストリームプロセッサ
3 メモリ
4 入出力回路
5 バス
6 ディスクリプタ生成装置
21 入力DMA回路
22 ディスクリプタ管理テーブル
23 アレイ型プロセッサ
24 入力FIFO
25 出力FIFO
26 メモリアクセス制御回路
27 構成情報DMAコントローラ
2 ストリームプロセッサ
3 メモリ
4 入出力回路
5 バス
6 ディスクリプタ生成装置
21 入力DMA回路
22 ディスクリプタ管理テーブル
23 アレイ型プロセッサ
24 入力FIFO
25 出力FIFO
26 メモリアクセス制御回路
27 構成情報DMAコントローラ
Claims (10)
- 処理対象であるタスクデータに対して実行するプログラムを指定するタスクコマンドを含むディスクリプタを前記タスクデータ毎にそれぞれ生成し、同一のタスクコマンドを持つ前記ディスクリプタどうしを接続してディスクリプタ列を形成し、前記ディスクリプタ列どうしを接続してディスクリプタキューを形成するディスクリプタキュー生成装置と、
前記タスクデータ及び前記ディスクリプタキューがそれぞれ格納されるメモリと、
前記メモリから前記ディスクリプタキューの構成にしたがって前記ディスクリプタを順次読み出し、読み出したディスクリプタに対応するタスクデータに対して、該ディスクリプタが持つタスクコマンドで指定されるプログラムによる処理を実行するストリームプロセッサと、
を有する情報処理装置。 - 前記メモリは、
前記ストリームプロセッサの処理で交互に用いる2つのディスクリプタキューを格納するための領域を備え、
前記ディスクリプタキュー生成装置は、
前記ストリームプロセッサが一方のディスクリプタキューを用いて処理を実行しているとき、前記ストリームプロセッサに次に実行させる処理に用いる他方のディスクリプタキューを形成する請求項1記載の情報処理装置。 - 前記ディスクリプタキュー生成装置は、
前記ストリームプロセッサが先行する処理で用いるディスクリプタキューと後続する処理で用いるディスクリプタキューとに同一のタスクコマンドを持つディスクリプタ列が存在する場合、先行する処理で用いるディスクリプタキューの最後のディスクリプタ列と後続する処理で用いるディスクリプタキューの最初のディスクリプタ列のタスクコマンドを一致させる請求項1または2記載の情報処理装置。 - 前記メモリは、
前記ストリームプロセッサが一方のディスクリプタキューを用いて処理を実行しているか他方のディスクリプタキューを用いて処理を実行しているかを示す値が格納されるフラグ領域を有する請求項2記載の情報処理装置。 - 前記メモリは、
先行する処理で用いるディスクリプタキューの最後のディスクリプタ列が持つタスクコマンドの値が格納されるラストタスクコマンド領域を有する請求項3記載の情報処理装置。 - 処理対象であるタスクデータを所定のプログラムにしたがってストリームプロセッサで処理するための情報処理装置のデータ処理方法であって、
CPUが、前記タスクデータに対して実行するプログラムを指定するタスクコマンドを含むディスクリプタを前記タスクデータ毎にそれぞれ生成し、同一のタスクコマンドを持つ前記ディスクリプタどうしを接続してディスクリプタ列を形成し、前記ディスクリプタ列どうしを接続してディスクリプタキューを形成してメモリへ格納し、
前記ストリームプロセッサが、前記メモリから前記ディスクリプタキューの構成にしたがって前記ディスクリプタを順次読み出し、読み出したディスクリプタに対応するタスクデータに対して、該ディスクリプタが持つタスクコマンドで指定されるプログラムによる処理を実行するデータ処理方法。 - 前記メモリに、前記ストリームプロセッサの処理で交互に用いる2つのディスクリプタキューを格納するための領域を備えておき、
前記ストリームプロセッサが一方のディスクリプタキューを用いて処理を実行しているとき、前記CPUが前記ストリームプロセッサに次に実行させる処理に用いる他方のディスクリプタキューを形成する請求項6記載のデータ処理方法。 - 前記ストリームプロセッサが先行する処理で用いるディスクリプタキューと後続する処理で用いるディスクリプタキューとに同一のタスクコマンドを持つディスクリプタ列が存在する場合、前記CPUが先行する処理で用いるディスクリプタキューの最後のディスクリプタ列と後続する処理で用いるディスクリプタキューの最初のディスクリプタ列のタスクコマンドを一致するように前記ディスクリプタキューを形成する請求項6または7記載のデータ処理方法。
- 前記メモリに、前記ストリームプロセッサが実行している処理で用いているディスクリプタキューを示す値が格納されるフラグ領域を備え、
前記CPUが、前記フラグ領域の値を参照して、前記ストリームプロセッサが一方のディスクリプタキューを用いて処理を実行しているか他方のディスクリプタキューを用いて処理を実行しているかを判定する請求項7記載のデータ処理方法。 - 前記メモリに、先行する処理で用いるディスクリプタキューの最後のディスクリプタ列が持つタスクコマンドの値が格納されるラストタスクコマンド領域を備え、
前記CPUが、前記ラストタスクコマンド領域の値を参照して、後続する処理で用いるディスクリプタキューの最初に、先行する処理で用いるディスクリプタキューの最後のディスクリプタ列と同一のタスクコマンドを持つディスクリプタ列を配置する請求項8記載のデータ処理方法。
Priority Applications (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2005212757A JP2007034392A (ja) | 2005-07-22 | 2005-07-22 | 情報処理装置及びデータ処理方法 |
US11/489,610 US20070022249A1 (en) | 2005-07-22 | 2006-07-20 | Information processing apparatus and its data processing method capable of forming descriptor queue |
EP06015235A EP1770519A3 (en) | 2005-07-22 | 2006-07-21 | Information processing apparatus and its data processing method capable of forming descriptor queue |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2005212757A JP2007034392A (ja) | 2005-07-22 | 2005-07-22 | 情報処理装置及びデータ処理方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2007034392A true JP2007034392A (ja) | 2007-02-08 |
Family
ID=37591709
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2005212757A Pending JP2007034392A (ja) | 2005-07-22 | 2005-07-22 | 情報処理装置及びデータ処理方法 |
Country Status (3)
Country | Link |
---|---|
US (1) | US20070022249A1 (ja) |
EP (1) | EP1770519A3 (ja) |
JP (1) | JP2007034392A (ja) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2009134391A (ja) * | 2007-11-29 | 2009-06-18 | Renesas Technology Corp | ストリーム処理装置、ストリーム処理方法及びデータ処理システム |
JP2011512587A (ja) * | 2008-02-14 | 2011-04-21 | インターナショナル・ビジネス・マシーンズ・コーポレーション | 制御装置との通信用に構成されたホスト・コンピュータ・システムにおける入出力(i/o)操作に関する入出力処理を容易にするためのコンピュータ・プログラム、装置、および方法(単一入出力操作内の双方向データ転送) |
Families Citing this family (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP1647894A3 (en) * | 2004-10-12 | 2007-11-21 | NEC Electronics Corporation | Information processing apparatus with parallel DMA processes |
US9921873B2 (en) | 2012-01-31 | 2018-03-20 | Nvidia Corporation | Controlling work distribution for processing tasks |
US20150227586A1 (en) * | 2014-02-07 | 2015-08-13 | Futurewei Technologies, Inc. | Methods and Systems for Dynamically Allocating Resources and Tasks Among Database Work Agents in an SMP Environment |
US10437311B2 (en) * | 2016-09-06 | 2019-10-08 | International Business Machines Corporation | Mitigation of on-chip supply voltage noise by monitoring slope of supply voltage based on time-based sensors |
US11847352B1 (en) * | 2021-09-22 | 2023-12-19 | Ridgeline, Inc. | Parent child request recovery to improve stability |
CN115277607B (zh) * | 2022-07-15 | 2023-12-26 | 天津市滨海新区信息技术创新中心 | 一种异构系统复杂流量情况下的两级拟态判决方法 |
CN114968864B (zh) * | 2022-07-28 | 2022-10-25 | 飞腾信息技术有限公司 | 验证环境的搭建方法、芯片的验证方法及系统 |
Family Cites Families (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP3878307B2 (ja) | 1997-12-19 | 2007-02-07 | 松下電器産業株式会社 | プログラマブルなデータ処理装置 |
US6782465B1 (en) * | 1999-10-20 | 2004-08-24 | Infineon Technologies North America Corporation | Linked list DMA descriptor architecture |
JP3674515B2 (ja) | 2000-02-25 | 2005-07-20 | 日本電気株式会社 | アレイ型プロセッサ |
KR100403620B1 (ko) * | 2001-02-28 | 2003-10-30 | 삼성전자주식회사 | 채널 활용율을 높이는 통신 시스템 및 그 방법 |
US20020144027A1 (en) * | 2001-03-27 | 2002-10-03 | Schmisseur Mark A. | Multi-use data access descriptor |
JP3693013B2 (ja) | 2001-12-26 | 2005-09-07 | 日本電気株式会社 | データ処理システム、アレイ型プロセッサ、データ処理装置、コンピュータプログラム、情報記憶媒体 |
-
2005
- 2005-07-22 JP JP2005212757A patent/JP2007034392A/ja active Pending
-
2006
- 2006-07-20 US US11/489,610 patent/US20070022249A1/en not_active Abandoned
- 2006-07-21 EP EP06015235A patent/EP1770519A3/en not_active Withdrawn
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2009134391A (ja) * | 2007-11-29 | 2009-06-18 | Renesas Technology Corp | ストリーム処理装置、ストリーム処理方法及びデータ処理システム |
JP2011512587A (ja) * | 2008-02-14 | 2011-04-21 | インターナショナル・ビジネス・マシーンズ・コーポレーション | 制御装置との通信用に構成されたホスト・コンピュータ・システムにおける入出力(i/o)操作に関する入出力処理を容易にするためのコンピュータ・プログラム、装置、および方法(単一入出力操作内の双方向データ転送) |
Also Published As
Publication number | Publication date |
---|---|
US20070022249A1 (en) | 2007-01-25 |
EP1770519A3 (en) | 2007-12-26 |
EP1770519A2 (en) | 2007-04-04 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP2007034392A (ja) | 情報処理装置及びデータ処理方法 | |
JP2006338538A (ja) | ストリームプロセッサ | |
JP6633119B2 (ja) | 自律的メモリの方法及びシステム | |
JP2006221645A (ja) | マルチプロセッサシステムにおけるローカルメモリへのデータアクセスを同期化する方法および装置 | |
JP2009134391A (ja) | ストリーム処理装置、ストリーム処理方法及びデータ処理システム | |
WO2011148920A1 (ja) | マルチプロセッサシステム、実行制御方法、実行制御プログラム | |
JP6673202B2 (ja) | 演算装置、演算装置の制御方法、及び、演算装置の制御プログラム | |
JP2008310832A (ja) | 高レベル・データ・リンク・コントローラから多数個のディジタル信号プロセッサ・コアに信号を分配するための装置と方法 | |
JPWO2010016169A1 (ja) | マルチプロセッサシステム及びその制御方法 | |
US11348624B1 (en) | Shared multi-port memory from single port | |
JP4855864B2 (ja) | ダイレクトメモリアクセスコントローラ | |
JP6290761B2 (ja) | データ転送制御システム、データ転送制御方法、及び、データ転送制御プログラム | |
JP6294732B2 (ja) | データ転送制御装置及びメモリ内蔵装置 | |
JP2006202271A (ja) | ストリームプロセッサ及び情報処理装置 | |
JP3799041B2 (ja) | Vliwプロセッサ | |
JP5360594B2 (ja) | Dma転送装置及び方法 | |
JP4170330B2 (ja) | 情報処理装置 | |
JP2006518069A (ja) | プロセッサアレイ | |
JP2005182538A (ja) | データ転送装置 | |
JP2013196509A (ja) | 情報処理装置及びその制御方法 | |
JP7225904B2 (ja) | ベクトル演算処理装置、ベクトル演算処理装置による配列変数初期化方法、及び、ベクトル演算処理装置による配列変数初期化プログラム | |
TWI766891B (zh) | 半導體裝置的處理器與其操作方法 | |
JP2020017043A (ja) | ノード装置、並列計算機システム、及び並列計算機システムの制御方法 | |
JP2011142411A (ja) | 暗号化処理装置 | |
RU2571376C1 (ru) | Способ и устройство для параллельной обработки цифровой информации в вычислительной системе |