(57)【要約】【課題】チップ面積の増加を抑制し、短期間で開発することができるストリームデータ処理装置を実現する。【解決手段】本発明のストリームデータ処理装置は、１つのライトポートおよび１つのリードポートを備え、複数のデータが格納されるバンクＡ〜Ｄを備えたデータ格納回路１１と、バンクＡ〜Ｄのうち３個を選択し、クロック信号のサイクルごとに読み出されるデータをそれぞれ異なる３個の出力ポートへ出力するデータ並び替え回路１２と、クロック信号の異なるサイクルで読み出された３個のデータをクロック信号に同期して同時に出力する出力タイミング調整回路１３と、出力タイミング調整回路１３からのデータに基づいて演算を実行し、演算結果１６を生成する演算回路１４と、演算結果１６または入力データ１７をデータ格納回路１１へ書き込むために、バンクＡ〜Ｄのうち１つを選択するデータ格納選択回路１５を有する。【選択図】図１
2008204288.tif 000002
【特許請求の範囲】
【請求項１】
１つのライトポートおよび１つのリードポートを備え、複数のデータが格納されるバンクと、
Ｎ個（Ｎは２以上の整数。）の前記バンクを備えたデータ格納手段と、
前記データ格納手段におけるＮ個の前記リードポートのうちＭ個（Ｍは、２≦Ｍ≦Ｎの整数。）を選択し、当該リードポートからクロック信号のサイクルごとに読み出されるデータをそれぞれ異なるＭ個の出力ポートへ出力するデータ並び替え手段と、
前記データ並び替え手段からのＭ個のデータを前記出力ポートごとに異なる時間保持し、前記クロック信号の異なるサイクルで前記データ格納手段から読み出されたＭ個のデータを前記クロック信号に同期して同時に出力する出力タイミング調整手段と、
前記出力タイミング調整手段からのデータに基づいて演算を実行し、演算結果を生成する演算手段と、
前記演算結果または入力データを前記データ格納手段へ書き込むために、Ｎ個の前記ライトポートのうち１つを選択するデータ格納選択手段を有することを特徴とするストリームデータ処理装置。
【請求項２】
１つのライトポートおよび１つのリードポートを備え、複数のデータが格納されるバンクと、
Ｎ個（Ｎは２以上の整数。）の前記バンクを備えたデータ格納手段と、
前記データ格納手段におけるＮ個の前記リードポートのうち（Ｍ＋１）個（Ｍは、２≦Ｍ＜Ｎの整数。）を選択し、当該リードポートからクロック信号のサイクルごとに読み出されるデータをそれぞれ異なる（Ｍ＋１）個の出力ポートへ出力するデータ並び替え手段と、
前記データ並び替え手段からの（Ｍ＋１）個のデータのうちＭ個のデータを前記出力ポートごとに異なる時間保持し、前記クロック信号の異なるサイクルで前記データ格納手段から読み出されたＭ個のデータを前記クロック信号に同期して同時に出力する出力タイミング調整手段と、
前記出力タイミング調整手段からのデータに基づいて演算を実行し、演算結果を生成する演算手段と、
前記出力タイミング調整手段からの（Ｍ＋１）個のデータのうちテクスチャ参照値を一時保持するデータ保持手段と、
前記データ保持手段からの前記テクスチャ参照値に基づいて、色データを生成するテクスチャフェッチ手段と、
前記演算結果、前記色データ、または入力データを前記データ格納手段へ書き込むために、Ｎ個の前記ライトポートのうち１つを選択するデータ格納選択手段を有することを特徴とするストリームデータ処理装置。
【請求項３】
定数値があらかじめ格納された記憶手段と、
前記出力タイミング調整手段の前記出力ポートごとに、当該出力ポートからのデータまたは前記記憶手段からの定数値を前記演算手段へ出力する選択手段をさらに有することを特徴とする請求項１または請求項２に記載のストリームデータ処理装置。
【請求項４】
前記出力タイミング調整手段は、
ｍ個（ｍは、１≦ｍ≦Ｍの整数。）のシフトレジスタが直列接続され、前記クロック信号によりデータがｍサイクル保持されるシフトレジスタ列と、
前記データ並び替え手段の前記出力ポートのデータビット幅に対応する数の前記シフトレジスタ列で構成され、入力に前記データ並び替え手段の第ｍの出力ポートが接続され、出力が前記演算手段の第ｍの入力に接続されたデータ遅延手段と、
前記データ並び替え手段の前記出力ポート数に対応した数の前記データ遅延手段を有することを特徴とする請求項１または請求項２に記載のストリームデータ処理装置。
【請求項５】
前記データ並び替え手段は、Ｎ個の入力とＭ個の出力を備えたクロスバーであることを特徴とする請求項１または請求項２に記載のストリームデータ処理装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、画像処理などにおけるストリームデータ処理装置に関する。
【背景技術】
【０００２】
近年、画像処理用のマイクロプロセッサ等において、高性能化の要求が大きくなって来ている。この要求を満たす１つの手段として、演算の並列実行による演算速度の高速化がある。このような演算の並列処理を効率良く実現するためには、汎用レジスタとしてマルチポートのメモリ装置が必要となる。例えば、画像処理等で頻繁に使用される積和演算の場合、効率のよい並列処理を実現するためには、１回のアクセスでランダムなアドレスの３つのデータを同時に読み出すことができる３リードポートの汎用レジスタが必要となる。
【０００３】
マルチポートの汎用レジスタ（メモリ装置）とは、同じまたは異なるワードのデータを複数のリードポートで並列に読み出せ、また、同じまたは異なるワードのデータを複数のライトポートから書き込めるものである。（例えば、「特許文献１」を参照。）
しかしながら、従来、マルチポートの汎用レジスタは、１リードポートの汎用レジスタと異なり、一般的に使用頻度が少ないために設計ライブラリにマクロセルとして存在しない場合が多く、製品ごとに最初から開発しなければならないという問題があった。また、マルチポートの汎用レジスタは、１リードポートの汎用レジスタよりもはるかに回路規模が大きく、チップの実装面積を多く消費してしまうという問題があった。
【特許文献１】特開平４−３２４１８９号公報
【発明の開示】
【発明が解決しようとする課題】
【０００４】
本発明は、チップ面積の増加を抑制し、短期間で開発することができるストリームデータ処理装置を提供する。
【課題を解決するための手段】
【０００５】
本発明の一態様によれば、１つのライトポートおよび１つのリードポートを備え、複数のデータが格納されるバンクと、Ｎ個（Ｎは２以上の整数。）の前記バンクを備えたデータ格納手段と、前記データ格納手段におけるＮ個の前記リードポートのうちＭ個（Ｍは、２≦Ｍ≦Ｎの整数。）を選択し、当該リードポートからクロック信号のサイクルごとに読み出されるデータをそれぞれ異なるＭ個の出力ポートへ出力するデータ並び替え手段と、前記データ並び替え手段からのＭ個のデータを前記出力ポートごとに異なる時間保持し、前記クロック信号の異なるサイクルで前記データ格納手段から読み出されたＭ個のデータを前記クロック信号に同期して同時に出力する出力タイミング調整手段と、前記出力タイミング調整手段からのデータに基づいて演算を実行し、演算結果を生成する演算手段と、前記演算結果または入力データを前記データ格納手段へ書き込むために、Ｎ個の前記ライトポートのうち１つを選択するデータ格納選択手段を有することを特徴とするストリームデータ処理装置が提供される。
【０００６】
また、本発明の別の一態様によれば、１つのライトポートおよび１つのリードポートを備え、複数のデータが格納されるバンクと、Ｎ個（Ｎは２以上の整数。）の前記バンクを備えたデータ格納手段と、前記データ格納手段におけるＮ個の前記リードポートのうち（Ｍ＋１）個（Ｍは、２≦Ｍ＜Ｎの整数。）を選択し、当該リードポートからクロック信号のサイクルごとに読み出されるデータをそれぞれ異なる（Ｍ＋１）個の出力ポートへ出力するデータ並び替え手段と、前記データ並び替え手段からの（Ｍ＋１）個のデータのうちＭ個のデータを前記出力ポートごとに異なる時間保持し、前記クロック信号の異なるサイクルで前記データ格納手段から読み出されたＭ個のデータを前記クロック信号に同期して同時に出力する出力タイミング調整手段と、前記出力タイミング調整手段からのデータに基づいて演算を実行し、演算結果を生成する演算手段と、前記出力タイミング調整手段からの（Ｍ＋１）個のデータのうちテクスチャ参照値を一時保持するデータ保持手段と、前記データ保持手段からの前記テクスチャ参照値に基づいて、色データを生成するテクスチャフェッチ手段と、前記演算結果、前記色データ、または入力データを前記データ格納手段へ書き込むために、Ｎ個の前記ライトポートのうち１つを選択するデータ格納選択手段を有することを特徴とするストリームデータ処理装置が提供される。
【発明の効果】
【０００７】
本発明によれば、１リードポートの汎用レジスタを使用しているので、チップ面積の増加を抑えつつ高性能なストリームデータ処理装置を短期間で開発することができる。
【発明を実施するための最良の形態】
【０００８】
以下、図面を参照しながら、本発明の実施例を説明する。
【実施例１】
【０００９】
図１は、本発明の実施例１に係わるストリームデータ処理装置を示す回路ブロック図である。ここでは、主に、並列処理されるデータが格納される汎用レジスタ群とその演算処理にかかわる部分を示した。
【００１０】
本発明の実施例１に係わるストリームデータ処理装置は、汎用レジスタとして使用されるデータ格納回路１１、データ格納回路１１からのデータを並び替えるデータ並び替え回路１２、データ並び替え回路１２からのデータを保持し出力タイミングを調整する出力タイミング調整回路１３、出力タイミング調整回路１３からのデータに基づいて演算を行い演算結果１６を生成する演算回路１４、およびデータ格納回路１１に書き込む演算結果１６または入力データ１７を選択するデータ格納選択回路１５を備えている。
【００１１】
データ格納回路１１は、４つのバンクＡ〜Ｄを備えており、各バンクは、１２８ビット幅のデータを１２８ワード保持することができ、それぞれ、インターフェースとして１つのリードポートと１つのライトポートを有している。
【００１２】
データ格納回路１１のバンクＡの入力にはデータ格納選択回路１５からの第１の書き込みデータ１８ａが入力され、バンクＡの出力は第１の読み出しデータ１９ａとしてデータ並び替え回路１２の第１の入力へ供給されている。
【００１３】
データ格納回路１１のバンクＢの入力にはデータ格納選択回路１５からの第２の書き込みデータ１８ｂが入力され、バンクＢの出力は第２の読み出しデータ１９ｂとしてデータ並び替え回路１２の第２の入力へ供給されている。
【００１４】
データ格納回路１１のバンクＣの入力にはデータ格納選択回路１５からの第３の書き込みデータ１８ｃが入力され、バンクＣの出力は第３の読み出しデータ１９ｃとしてデータ並び替え回路１２の第３の入力へ供給されている。
【００１５】
データ格納回路１１のバンクＤの入力にはデータ格納選択回路１５からの第４の書き込みデータ１８ｄが入力され、バンクＤの出力は第４の読み出しデータ１９ｄとしてデータ並び替え回路１２の第４の入力へ供給されている。
【００１６】
データ並び替え回路１２の第１の出力は並び替えられたデータ２０ａとして出力タイミング調整回路１３の第１の入力に供給され、データ並び替え回路１２の第２の出力は並び替えられたデータ２０ｂとして出力タイミング調整回路１３の第２の入力に供給され、データ並び替え回路１２の第３の出力は並び替えられたデータ２０ｃとして出力タイミング調整回路１３の第３の入力に供給されている。
【００１７】
出力タイミング調整回路１３の第１の出力は同時に演算処理されるデータ２１ａとして演算回路１４の第１の入力に供給され、出力タイミング調整回路１３の第２の出力は同時に演算処理されるデータ２１ｂとして演算回路１４の第２の入力に供給され、出力タイミング調整回路１３の第３の出力は同時に演算処理されるデータ２１ｃとして演算回路１４の第３の入力に供給されている。
【００１８】
データ格納選択回路１５の第１の入力には演算回路１４からの演算結果１６が入力され、第２の入力には入力データ１７が入力されている。
【００１９】
データ並び替え回路１２はクロスバー構成であり、制御回路（図示していない。）からの制御信号に基づいて、データ格納回路１１からの４つの１２８ビット幅の読み出しデータ１９ａ〜１９ｄのうち３つを選択し、それぞれを異なる出力ポートへ並び替えられたデータ２０ａ〜２０ｃとして同時に出力することができる。
【００２０】
出力タイミング調整回路１３は、図１に示したように、データ並び替え回路１２の出力ポートごとに複数の１２８ビット幅のシフトレジスタ列で構成されている。
【００２１】
すなわち、データ２０ａが入力される第１のシフトレジスタ列は、３段のシフトレジスタが従属接続された１２８組で構成され、データ２０ｂが入力される第２のシフトレジスタ列は、２段のシフトレジスタが従属接続された１２８組で構成され、データ２０ｃが入力される第３のシフトレジスタ列は、１段のシフトレジスタが１２８組で構成されている。
【００２２】
図１では、各段の１２８組のシフトレジスタを、第１のシフトレジスタ列ではｓ００、ｓ０１、およびｓ０２で示し、第２のシフトレジスタ列ではｓ１０およびｓ１１で示し、第３のシフトレジスタ列ではｓ２０で示した。
【００２３】
各シフトレジスタ列は、データ並び替え回路１２からの１２８ビット幅のデータ２０ａ〜２０ｃをクロック信号のサイクルごとにそれぞれ次段へ転送する。
【００２４】
したがって、入力されたデータ２０ａは出力タイミング調整回路１３で一時保持され、クロック信号の３サイクル目でデータ２１ａとして演算回路１４へ出力される。同様に、データ２０ｂは２サイクル目でデータ２１ｂとして出力され、データ２０ｃは次のクロックサイクルでデータ２１ｃ出力される。
【００２５】
すなわち、データ並び替え回路１２の各出力ポートごとにクロック信号の異なるサイクルで入力された３つのデータ２０ａ〜２０ｃが、ｓ０２、ｓ１１、およびｓ２０からクロック信号に同期してデータ２１ａ〜２１ｃとして同時に出力される。
【００２６】
データ格納選択回路１５はクロスバー構成であり、制御回路（図示していない。）からの制御信号およびレジスタアドレスに基づいて、本装置外部からの１２８ビット幅の入力データ１７と演算回路１４からの１２８ビット幅の演算結果１６をデータ格納回路１１にある４つのバンクＡ〜Ｄのいずれかへ書き込みデータ１８ａ〜１８ｄとして同時に出力することができる。
【００２７】
図２は、本発明の実施例１に係わるストリームデータ処理装置における演算回路１４を示す回路ブロック図である。  
本発明の実施例１に係わるストリームデータ処理装置における演算回路１４は、４つの３２ビット演算器Ａ〜Ｄを備えている。
【００２８】
演算器Ａ〜Ｄは、それぞれ、３２ビットの３つの入力と３２ビットの出力を備えており、ｓ０２、ｓ１１、ｓ２０からの１２８ビット幅のデータは３２ビット幅のデータ４つに分割され、それぞれの演算器に入力されている。
【００２９】
演算器Ａの第１の入力にはデータ２１ａの第０ビット〜第３１ビットが入力され、演算器Ａの第２の入力にはデータ２１ｂの第０ビット〜第３１ビットが入力され、演算器Ａの第３の入力にはデータ２１ｃの第０ビット〜第３１ビットが入力され、演算器Ａの出力は検算結果の第０ビット〜第３１ビットとしてデータ格納選択回路１５の第１の入力および本装置の外部へ供給されている。
【００３０】
演算器Ｂの第１の入力にはデータ２１ａの第３２ビット〜第６３ビットが入力され、演算器Ｂの第２の入力にはデータ２１ｂの第３２ビット〜第６３ビットが入力され、演算器Ｂの第３の入力にはデータ２１ｃの第３２ビット〜第６３ビットが入力され、演算器Ｂの出力は検算結果の第３２ビット〜第６３ビットとしてデータ格納選択回路１５の第１の入力および本装置の外部へ供給されている。
【００３１】
演算器Ｃの第１の入力にはデータ２１ａの第６４ビット〜第９５ビットが入力され、演算器Ｃの第２の入力にはデータ２１ｂの第６４ビット〜第９５ビットが入力され、演算器Ｃの第３の入力にはデータ２１ｃの第６４ビット〜第９５ビットが入力され、演算器Ｃの出力は検算結果の第６４ビット〜第９５ビットとしてデータ格納選択回路１５の第１の入力および本装置の外部へ供給されている。
【００３２】
演算器Ｄの第１の入力にはデータ２１ａの第９６ビット〜第１２７ビットが入力され、演算器Ｄの第２の入力にはデータ２１ｂの第９６ビット〜第１２７ビットが入力され、演算器Ｄの第３の入力にはデータ２１ｃの第９６ビット〜第１２７ビットが入力され、演算器Ｄの出力は検算結果の第９６ビット〜第１２７ビットとしてデータ格納選択回路１５の第１の入力および本装置の外部へ供給されている。
【００３３】
演算器Ａ〜Ｄは、それぞれ、３つのオペランドを取る命令（例えば、積和演算や比較演算など。）、２つのオペランドを取る命令（例えば、加算など。）、および１つのオペランドを取る命令（例えば、ｌｏｇ演算など。）を処理できる。
【００３４】
次に、上述した構成を持つストリームデータ処理装置の動作について説明する。  
まず、本装置を使用する前にデータ格納回路１１へ演算で使用するデータを格納するために、データ格納選択回路１５によって入力データ１７を処理単位ごとにバンクＡ〜Ｄへ格納するように書き込み先のバンクを決定する。処理単位とは、１つの演算命令において入力データ１７がすべて同じバンクに格納されていることを意味する。すなわち、例えば、積和演算を行う場合は３つの入力オペランドが必要になるが、３つのデータはすべて同じバンクに格納されている。
【００３５】
バンクＡ〜Ｄに格納されたデータは、制御回路からの読み出し要求があった場合に読み出しデータ１９ａ〜１９ｄとしてデータ並び替え回路１２に渡される。データ並び替え回路１２は、同じ処理単位のデータが出力タイミング調整回路１３の各シフトレジスタ列に１つずつ入力されるように、バンクインタリーブによって読み出されたデータ１９ａ〜１９ｄを並び替えていく。
【００３６】
出力タイミング調整回路１３にはデータ並び替え回路１２で並び替えられたデータ２０ａ〜２０ｃが次々に入力され、内部のシフトレジスタを移動し、レジスタの最終段（ｓ０２、ｓ１０、およびｓ２０）で同時に処理されるデータ２１ａ〜２１ｃがすべて揃う。揃ったデータ２１ａ〜２１ｃは、演算回路１４で実行される命令のオペランドとなる。
【００３７】
演算回路１４による出力結果は、本装置の外部へ毎サイクル処理単位に出力されると同時に、データ格納選択回路１５にも入力され、処理単位に指定されたバンクへ書き戻される。
【００３８】
図３は、本発明の実施例１に係わるストリームデータ処理装置における出力タイミング調整回路１３の動作を示すイメージ図である。ここでは、一例として、バンクＡに格納されたデータに対して積和演算（ｍａｄ ｒ３,ｒ０,ｒ１,ｒ２）を実行する場合のサイクルごとのｓ００−ｓ２０の変化を示した。
【００３９】
図３に示したｐ００は、処理単位を意味する名前である。データ並び替え回路１２によって０サイクル目では、ｓ００に、第１のオペランドであるｒ０が入力され、１サイクル目では、ｓ１０に、第２のオペランドであるｒ１が入力され、２サイクル目では、ｓ２０に、第３のオペランドであるｒ２が入力される。
【００４０】
３サイクル目で処理ｐ００の３つのオペランドが揃い、演算回路１４へ同時に出力できることが確認できる。バンクＡ〜Ｄに処理単位ごとに格納されたデータを出力タイミング調整回路１３へ毎サイクル入力することで、積和演算のような３入力演算を毎サイクル実行できる。
【００４１】
３つのオペランド（データ２１ａ〜２１ｃ）を入力とする積和演算（ｍａｄ）を多用するストリーミング処理の場合、１リードポートの汎用レジスタを複数使用してバンク化することで、回路面積が大きい３リードポートの汎用レジスタを使用せずにデータ格納回路１１を構成でき、バンクコンフリクト無しの演算が毎サイクル可能となる。
【００４２】
また、バンクコンフリクトが発生しないため演算器Ａ〜Ｄの使用効率が向上し、ストリームデータ処理装置の性能が大幅に改善する。
【００４３】
上記実施例１によれば、１リードポートの汎用レジスタ（バンクＡ〜Ｄ）を使用しているので、一般的なセルライブラリを利用することができ、チップ面積の増加を抑えつつ高性能なストリームデータ処理装置を短期間で開発することができる。
【実施例２】
【００４４】
図４は、本発明の実施例２に係わるストリームデータ処理装置を示す回路ブロック図である。ここでは、主に、並列処理されるデータが格納される汎用レジスタ群とその演算処理にかかわる部分を示した。
【００４５】
本発明の実施例２に係わるストリームデータ処理装置は、汎用レジスタとして使用されるデータ格納回路１１、データ格納回路１１からのデータを並び替えるデータ並び替え回路１２、データ並び替え回路１２からのデータを保持し出力タイミングを調整する出力タイミング調整回路１３、演算を行い演算結果１６を生成する演算回路１４、データ格納回路１１に書き込む演算結果１６または入力データ１７を選択するデータ格納選択回路１５、定数値を格納しておくＳＲＡＭ４１（Static Random Access Memory）、および出力タイミング調整回路１３からのデータまたはＳＲＡＭ４１からの定数値データ４３を選択するマルチプレクサ４２ａ〜４２ｃを備えている。
【００４６】
ＳＲＡＭ４１およびマルチプレクサ４２ａ〜４２ｃを除く回路ブロックの構成、機能、および動作は実施例１と同様であるので、実施例１と同じ符号を使用し詳しい説明は省略する。
【００４７】
マルチプレクサ４２ａの第１の入力には出力タイミング調整回路１３からの第１のデータ２１ａが入力され、第２の入力にはＳＲＡＭ４１からの定数値データ４３が入力され、マルチプレクサ４２ａの出力は演算回路１４の第１の入力に供給されている。
【００４８】
マルチプレクサ４２ｂの第１の入力には出力タイミング調整回路１３からの第２のデータ２１ｂが入力され、第２の入力にはＳＲＡＭ４１からの定数値データ４３が入力され、マルチプレクサ４２ｂの出力は演算回路１４の第２の入力に供給されている。
【００４９】
マルチプレクサ４２ｃの第１の入力には出力タイミング調整回路１３からの第３のデータ２１ｃが入力され、第２の入力にはＳＲＡＭ４１からの定数値データ４３が入力され、マルチプレクサ４２ｃの出力は演算回路１４の第３の入力に供給されている。
【００５０】
ＳＲＡＭ４１には、１２８ビット幅のデータを２５６ワード格納でき、本装置を使用する前に演算で使用する定数値があらかじめ格納されている。そして、制御回路（図示していない。）からの制御信号に基づいて、必要な定数値データ４３が読み出される。
【００５１】
マルチプレクサ４２ａ〜４２ｃは、それぞれが１２８個の２入力１出力選択回路で構成され、制御回路からの制御信号に基づいて出力タイミング調整回路１３からのデータ２１ａ〜２１ｃまたは定数値データ４３を選択し、演算回路１４へ出力する。
【００５２】
上述した構成を持つストリームデータ処理装置の動作については、マルチプレクサ４２ａ〜４２ｃで定数値データ４３を選択することを除いて実施例１と同様であるので、詳しい説明は省略する。
【００５３】
上記実施例２によれば、実施例１と同様の効果を得られるばかりでなく、演算回路１４の前に定数値データ４３とバンクＡ〜Ｄからのデータ２１ａ〜２１ｃのマルチプレクサ４２ａ〜４２ｃを置くことで、定数値を含んだ演算が可能となる。
【００５４】
上述の実施例２では、定数値データ４３の格納にはＳＲＡＭ４１を用いるとしたが、本発明はこれに限られるものではなく、ＤＲＡＭ（Dynamic Random Access Memory）やＥＥＰＲＯＭ（Electrical Erasable PROM）など他のメモリマクロを用いてもよい。
【実施例３】
【００５５】
図５は、本発明の実施例３に係わるストリームデータ処理装置を示す回路ブロック図である。ここでは、主に、並列処理されるデータが格納される汎用レジスタ群とその演算処理にかかわる部分を示した。
【００５６】
本発明の実施例３に係わるストリームデータ処理装置は、汎用レジスタとして使用されるデータ格納回路１１、データ格納回路１１からのデータを並び替えるデータ並び替え回路１２、データ並び替え回路１２からのデータを保持し出力タイミングを調整する出力タイミング調整回路１３、演算を行い演算結果１６を生成する演算回路１４、データ格納回路１１に書き込む演算結果１６または入力データ１７を選択するデータ格納選択回路１５、定数値を格納しておくＳＲＡＭ４１（Static Random Access Memory）、出力タイミング調整回路１３からのデータまたはＳＲＡＭ４１からの定数値データ４３を選択するマルチプレクサ４２ａ〜４２ｃ、出力タイミング調整回路１３からのデータを一時保持するレジスタ（以下、「ｔｓ００」という。）、およびテクスチャ参照値５２から色データ５３を生成するテクスチャフェッチ回路５１を備えている。
【００５７】
ｔｓ００、およびテクスチャフェッチ回路５１を除く回路ブロックの構成、機能、および動作は実施例１および実施例２と同様であるので、それらと同じ符号を使用し詳しい説明は省略する。
【００５８】
ｔｓ００の入力にはデータ並び替え回路１２からのテクスチャ参照値５２が入力され、ｔｓ００の出力はテクスチャフェッチ回路５１の入力へ供給されている。テクスチャフェッチ回路５１の出力は色データ５３としてデータ格納選択回路１５の第３の入力へ供給されている。
【００５９】
データ並び替え回路１２の実施例１との違いは、出力ポートが実施例１より１つ多いことである。すなわち、データ格納回路１１からの４つの１２８ビット幅の読み出しデータ１９ａ〜１９ｄをそれぞれを異なる出力ポートへ並び替えられたデータ２０ａ〜２０ｃおよびテクスチャ参照値５２として同時に出力することである。
【００６０】
データ２０ａ〜２０ｃは出力タイミング調整回路１３へ供給され、テクスチャ参照値５２はｔｓ００へ供給される。
【００６１】
ｔｓ００は、１段のシフトレジスタであり、データ並び替え回路１２からのテクスチャ参照値５２を一時保持し、クロック信号に同期してテクスチャフェッチ回路５１へ出力する。
【００６２】
テクスチャフェッチ回路５１は、ｔｓ００から渡されたデータを参照値としてあらかじめ回路内に格納されているテクスチャデータを読み出し、適宜加工して色データ５３としてデータ格納選択回路１５へ出力する。
【００６３】
データ格納選択回路１５の実施例１との違いは、入力される３つのデータ（演算結果１６、入力データ１７、および色データ５３）をデータ格納回路１１にある４つのバンクＡ〜Ｄのいずれかへ書き込みデータ１８ａ〜１８ｄとして同時に出力することである。
【００６４】
次に、上述した構成を持つストリームデータ処理装置の動作について説明する。  
本実施例における動作は、テクスチャフェッチ回路５１に関わる部分を除いて、実施例１および実施例２と同様であるので、詳細な説明は省略する。
【００６５】
データ並び替え回路１２において、制御回路からの制御信号に基づいてデータ格納回路１１のバンクＡ〜Ｄから読み出されたデータがテクスチャフェッチを行う命令（例えば、ｔｅｘｌｄなど）のオペランドの場合、データ並び替え回路１２は、ｔｓ００にデータを格納するよう動作し、テクスチャフェッチを行うためにテクスチャフェッチ回路５１へデータが渡される。
【００６６】
テクスチャフェッチ回路５１は、渡されたデータを参照値として、テクスチャデータを読み出し、適宜加工して色データ５３として出力する。色データ５３は、データ格納選択回路１５に入力されて指定されたバンクへ書き戻される。
【００６７】
データがテクスチャフェッチを行う命令以外のオペランドの場合、実施例１と同様に、データ並び替え回路１２は、同じ処理単位のデータが出力タイミング調整回路１３の各シフトレジスタに１つずつ格納されるように読み出されたデータ１９ａ〜１９ｄを並び替えていく。
【００６８】
図６および図７は、本発明の実施例３に係わるストリームデータ処理装置における出力タイミング調整回路１３およびｔｓ００の動作の一例を説明するためのイメージ図である。ここでは、一例として、バンクＡ〜Ｄに格納されたデータに対して積和演算（ｍａｄ ｒ３,ｒ０,ｒ１,ｒ２）およびテクスチャフェッチ命令（ｔｅｘｌｄ ｒ３,ｒ０,ｓ０）を実行する場合を示した。
【００６９】
図６に示したｐ００〜ｐ１３は、処理単位を意味する名前である。また、スレッド０とスレッド１は、それぞれ複数のデータに同じ命令を実行する単位を意味する。すなわち、ｐ００、ｐ０１、ｐ０２、ｐ０３はすべて積和演算（ｍａｄ ｒ３,ｒ０,ｒ１,ｒ２）が実行され、ｐ１０、ｐ１１、ｐ１２、ｐ１３はすべてテクスチャフェッチ命令（ｔｅｘｌｄ ｒ３,ｒ０,ｓ０）が実行される。
【００７０】
一般に、ストリーミング処理では、複数のデータを塊（スレッドという名前の４つの処理単位の塊）として扱い、同じ演算処理を施すことが多い。スレッド０の演算は、データ格納回路１１からデータを３つ必要とする命令（ｍａｄ）、スレッド１の演算は、データ格納回路１１からのデータを１つ必要とするテクスチャフェッチ命令（ｔｅｘｌｄ）である。
【００７１】
図７は、各処理を実行した際のｔｓ００とｓ００−ｓ２０の変化を示している。データ並び替え回路１２によって０サイクル目では、ｔｓ００にスレッド１のｐ１０の演算で使用するｒ０が入力される。
【００７２】
１サイクル目では、ｔｓ００にスレッド１のｐ１１の演算で使用するｒ０が入力され、ｓ００に、スレッド０のｐ００の演算で使用するｒ０が入力される。２サイクル目では、ｔｓ００にスレッド１のｐ１２の演算で使用するｒ０が入力され、ｓ００に、スレッド０のｐ０１の演算で使用するｒ０が入力され、ｓ１０に、スレッド０のｐ００の演算で使用するｒ１が入力される。
【００７３】
３サイクル目では、ｔｓ００にスレッド１のｐ１３の演算で使用するｒ０が入力され、ｓ００に、スレッド０のｐ０２の演算で使用するｒ０が入力され、ｓ１０に、スレッド０のｐ０１の演算で使用するｒ１が入力され、ｓ２０に、スレッド０のｐ００の演算で使用するｒ２が入力される。
【００７４】
４サイクル目でスレッド０の処理ｐ００の３つのオペランドが揃い、演算回路１４へ同時に出力できることが確認できる。１サイクル目からスレッド１のテクスチャ命令はテクスチャキャッシュミスがない場合、毎サイクル実行できる。
【００７５】
４サイクル目から毎サイクル３つのオペランドが出力することが確認できる。よって、各バンクに処理単位に格納されたデータを出力タイミング調整回路１３へ毎サイクル入力することで、積和演算のような３入力演算を毎サイクル実行できる。
【００７６】
このように、本装置は、リードポートが１つのバンクを４つ持ち、それぞれをバンクとして処理単位ごとにインタリーブを行うため、テクスチャフェッチの処理で使用するデータと他の演算命令で使用するオペランドの数のデータを同時に読み出すことができる。
【００７７】
上記実施例３によれば、実施例１および実施例２と同様の効果を得られるばかりでなく、テクスチャフェッチの処理とそれ以外の演算回路１４を使用する処理を並列して実行できる。
【００７８】
上述の実施例１〜３の説明では、データ格納回路１１のバンク数は４つであるとしたが、本発明はこれに限られるものではなく、２以上の整数であれば、原理的には適用可能である。
【００７９】
また、上述の実施例１〜３の説明では、データ並び替え回路１２のシフトレジスタ列の数は３つであるとしたが、本発明はこれに限られるものではなく、２以上の整数であれば、原理的には適用可能である。
【００８０】
さらに、上述の実施例１〜３の説明では、演算回路１４は４つ演算器Ａ〜Ｄで構成されるとしたが、本発明はこれに限られるものではなく、２以上の整数であれば、原理的には適用可能である。
【００８１】
さらに、上述の実施例１〜３の説明では、データのビット幅は１２８ビットであるとしたが、本発明はこれに限られるものではない。また、データ格納回路の各バンクは１２８ビット幅であるとしたが、本発明はこれに限られるものではなく、例えば、３２ビット幅のマクロを４つ並べて１２８ビット幅のバンクを実現することもできる。
【図面の簡単な説明】
【００８２】
【図１】本発明の実施例１に係わるストリームデータ処理装置を示す回路ブロック図。
【図２】本発明の実施例１に係わるストリームデータ処理装置における演算回路１４を示す回路ブロック図。
【図３】本発明の実施例１に係わるストリームデータ処理装置における出力タイミング調整回路１３の動作を示すイメージ図。
【図４】本発明の実施例２に係わるストリームデータ処理装置を示す回路ブロック図。
【図５】本発明の実施例３に係わるストリームデータ処理装置を示す回路ブロック図。
【図６】本発明の実施例３に係わるストリームデータ処理装置におけるバンクＡ〜Ｄの一例を示すイメージ図。
【図７】本発明の実施例３に係わるストリームデータ処理装置における出力タイミング調整回路１３およびｔｓ００の動作を示すイメージ図。
【符号の説明】
【００８３】
１１  データ格納回路
１２  データ並び替え回路
１３  出力タイミング調整回路
１４  演算回路
１５  データ格納選択回路
１６  演算結果
１７  入力データ
ｓ００〜ｓ２０  シフトレジスタ
【図１】
2008204288.tif 000003
【図２】
2008204288.tif 000004
【図３】
2008204288.tif 000005
【図４】
2008204288.tif 000006
【図５】
2008204288.tif 000007
【図６】
2008204288.tif 000008
【図７】
2008204288.tif 000009