説明

データ形式変換方法、集積装置

【課題】回路規模と性能のトレードオフをより高次元に両立するデータ形式変換方法を提供すること。
【解決手段】処理回数をs、ラインの一方をH、他方をL、HとLの2つの記憶装置を1カラムとしてカラムの端から各カラムの番号をkとし、各記憶装置をH[k],L[k]で表す場合、s回目の処理では、L[s-1]とH[n/2-s]内のデータはカラム方向へ(S1,S3)、L[s]乃至L[n/2-s]及びH[s-1]乃至H[n/2-s-1]内のデータはライン方向へ移動し(S4)、その他の記憶装置はデータ移動を行わず(S5)、L[k]内のデータがライン方向へ移動する場合はL[k-1]へ、カラム方向へ移動する場合はH[k]へ移動し、H[k]内のデータがライン方向へ移動する場合はH[k+1]へ、カラム方向へ移動する場合はL[k]へ移動し、処理数がn/4になるまで前記s回目の処理を繰り返す、ことを特徴とする。

【発明の詳細な説明】
【技術分野】
【0001】
本発明はマイクロプロセッサに搭載されるデータ形式変換方法に関し、特に、パラレルデータとシリアルデータを相互に変換可能なデータ形式変換方法等に関する。
【背景技術】
【0002】
画像処理専用マイクロプロセッサでは、SIMD(Single Instruction-stream Multiple Data-stream)型を採用することが多い。1つの命令で複数のデータに対して同時に同じ演算処理が実行可能であるSIMD型プロセッサは画像処理に適しているためである。SIMD型プロセッサは、プロセッサエレメント(以下PE)と呼ばれる単位で演算器とレジスタを備えており、SIMD型プロセッサはそのPEを複数個備える。各PEは、1個の画素の画像処理を担当し、複数個のPEが同時に演算処理を行うことで、複数の画素に同時に同じ演算を施すことができ、画像処理の効率を高めている。
【0003】
画像処理専用マイクロプロセッサには、フィルター演算など隣接画素を参照して演算する画像処理に対応するために、隣接PEのレジスタを参照できるものがある(例えば、特許文献1参照。)。特許文献1には、隣接PEのレジスタに格納された画素データを参照するSIMD型プロセッサが示されている。PEが隣接したPEのレジスタを参照するということは、隣接する画素データを隣接するPEのレジスタに格納しておくということを意味しており、画素データの並びをPEの並びに対応させて配置することを意味する。このため、PEを1次元的に配置するSIMD型プロセッサの場合、2次元で表現される画素データの1次元方向が、PEの並びに合わせて配置される。例えば、64個のPEを備えるSIMD型プロセッサでは、64個の連続した画素データをPEの並びに合わせて配置する。
また、SIMD型プロセッサにおいてさらに画像処理の並列度を上げる技術が提案されている(例えば、特許文献2参照。)。特許文献2には、1PEに対し2個以上の画像データを配置するSIMD型プロセッサが開示されており、その中で5通りの配置方法が示されている。このうち、特許文献2の図8、図9、図10で示される3通りについては処理対象の画像データからの切り出し方法が異なるが、切り出し方法の違いに関係なくSIMD型プロセッサ上の配置は同一であるので、実質的に3通りの配置方法(以下、画素データフォーマットという)があると考えられる。
【0004】
便宜上、3通りの画素データフォーマットにそれぞれαフォーマット、βフォーマット、γフォーマットと名前を付ける。そして、32個のPEを備えるSIMD型プロセッサに画素データを2個ずつ配置する場合を例にして、画素データフォーマットの特徴を説明する。
【0005】
図1は、αフォーマットのデータ配置例を示す。64個の連続した画素データD0〜D63が対象で、画素データの順番にPEに配置されるデータ配置例となる。よって、D0,D1がPE0に、D2,D3がPE1に、D4,D5がPE2に、・・・、D62,D63がPE31に、それぞれ配置される。
図2は、βフォーマットのデータ配置例を示す。64個の連続した画素データD0〜D63が対象で、画素データの半分が順番にPEの上位に配置され、画素データの残りの半分が順番にPEの下位に配置される。よって、D0,D32がPE0に、D1,D33がPE1に、D2,D34がPE2に、・・・、D31,D63がPE31に、それぞれ配置される。
図3は、γフォーマットのデータ配置例を示す。32個の連続した画素データDa0〜Da31と32個の連続した画素データDb0〜Db31とが対象で、前半の画素データがPEの下位側に、後半の画素データがPEの上位側にそれぞれ配置される。よって、Da0,Db0がPE0に、Da1,Db1がPE1に、Da2,Db2がPE2に、・・・、Da31,Db31がPE31に、それぞれ配置される。
各画素データフォーマットには特徴があり、開発者は、画像処理の種類、SIMD型プロセッサへの画像データ出力装置の構成などの要因から最適な画素データフォーマットを選択し、選択した画素データフォーマットを前提としたシステムを構築すればよい。
【0006】
これらの複数の画素データフォーマットを取り扱うSIMD型プロセッサも実現可能であり、画素データフォーマットの違いによる動作の違いは、モード切替による命令の解釈を変えることで対応する手法、又は、命令そのものを画素データフォーマット毎に用意する手法などが、考えられる。
【発明の概要】
【発明が解決しようとする課題】
【0007】
ところで、PE上のレジスタと外部のメモリの間で画素データを転送する入出力装置も、SIMD型プロセッサ上の画素データフォーマットに従う必要がある。また、SIMD型プロセッサが得意としないシリアル画像処理を専用に実行する外部画像処理装置も、SIMD型プロセッサと接続されるため、SIMD型プロセッサ上の画素データフォーマットに対応する必要がある。このようなプロセッサ周辺装置の場合、過去の設計資産であるIP(Intellectual Property)を再利用する方法が多用される。
【0008】
図4は、周辺装置の一例を示す。SIMD型プロセッサ10が周辺装置20と接続されている。図に示す周辺装置20が入出力装置又は外部画像処理装置である。開発時に存在するIPが、目的の画素データフォーマットに対応していれば問題はないが、異なる画素データフォーマットにしか対応していない場合には、開発者は直接的にはIPを使うことができない。
【0009】
周辺装置側で対応するには、IPの改造か、又は、IPを諦めて新規設計する必要が生じる。目的の画素データフォーマットと目的の周辺装置ではアルゴリズムとして相性が悪く、IPを新規設計する場合であっても、回路規模の増大や処理性能のダウンなど、開発工数以外に不都合がある可能性も考えられる。
【0010】
同様のことがソフトウエアでも考えられ、開発者が既存の画像処理ソフトウエアを再利用する際において、ソフトウエアの前提とする画素データフォーマットと、SIMD型プロセッサで予定している画素データフォーマットが異なる場合が考えられる。ソフトウエアで対応するには、ソフトウエアを改造するか、又は、元のソフトウエアを諦めて新規プログラミングする必要が生じる。
【0011】
目的の画素データフォーマットと目的のソフトウエアではアルゴリズムとして相性が悪く、新規プログラミングする場合でも、プログラムコードサイズの増大や処理性能のダウンなど、プログラミング工数以外に不都合がある可能性も考えられる。
【0012】
このような状況に対応するには、複数の画素データフォーマットをSIMD型プロセッサ側で異なる画素データフォーマットに変換することが要請される。
【0013】
図5は、フォーマット変換のために、SIMD型プロセッサ10の外部に装備されたフォーマット変換装置40の一例を示す。SIMD型プロセッサ10とフォーマット変換装置40が接続されている。フォーマット変換装置40は、PE上のレジスタに展開する画素データを、一度、外部RAM50に読み出し、再び外部RAM50からPE上のレジスタに所望の画素データフォーマットで書き込むという動作を行う。
【0014】
この装置を利用できれば、画素データフォーマット相互間の変換が可能になり、異なる画素データフォーマットに対応した周辺装置やソフトウエアであっても、SIMD型プロセッサに接続可能となる。
【0015】
しかし、フォーマット変換装置や画素データの一時記憶用のRAMが別途必要となるなど、相応の負荷が発生することなる。このため、SIMD型プロセッサの外部にフォーマット変換装置を持つことなく、SIMD型プロセッサ内部で画素データフォーマットの変換が可能な技術が求められている。
【0016】
SIMD型プロセッサ内部で画素データフォーマットの変換を実現する比較的、単純な方法は、変換に必要なすべての経路を備えることである。
図6は、βフォーマットからαフォーマットへの変換する際の経路を示す図の一例である。図6の上側がβフォーマットで配置された変換前のレジスタで、ここでは転送元レジスタとなる。図6の下方がαフォーマットで配置された変換後のレジスタで、ここでは転送先レジスタとなる。
【0017】
中央部に示された矢印が転送経路であり、黒丸印が転送元のレジスタ、矢先が転送先のレジスタを示す。実線の経路は D00〜D31のデータ経路で、破線の経路はD32〜D63のデータ経路を示している。例えば、D01はPE0の下位ビットに、D02はPE1の上位ビットに…転送され、D32はPE16の上位ビットに、D33はPE16の下位ビットに…転送される。
【0018】
なお、図6はβフォーマットからαフォーマットへの変換例であるが、逆の変換であるαフォーマットからβフォーマットへの変換も、同じ経路をデータが逆方向に転送されればよいので、回路規模としては同等である。
【0019】
しかし、この変換を一度に行う場合は図6に示す経路すべてが必要となり、回路規模が増大するという不都合が生じる。
【0020】
回路規模を抑える方法として、ひとつの万能転送経路を用意し、転送を64ステップに分けて実行する方法がある。
【0021】
図7は、万能転送経路30の一例を示す。すべての転送元レジスタが万能転送経路30に接続されているので、すべての転送元レジスタが画素データを出力でき、すべての転送先レジスタへ入力できる。上側が転送元のβフォーマットのレジスタを、下側が転送先のαフォーマットのレジスタをそれぞれ示す。転送元のD0は転送先のD0に、転送元のD32は転送先のD32に、転送元のD01は転送先のD01に、転送元のD33は転送先のD33に、…転送元のD31は転送先のD31に、転送元のD63は転送先のD63に、それぞれ転送される。
【0022】
このような出力、入力の制御は、制御装置60が一元的に行う。しかし、1回で1個のデータを所望の位置へ転送することになるので64個のデータを転送するには、64ステップが必要となる。
【0023】
この万能転送経路30を2重に配置し、1回の転送時間で2個の画素データを転送するという手段を用いれば、必要な回路規模は倍増するが、全転送が終了するために必要なステップ数が半減できる。
【0024】
これは回路規模と得られる性能にはトレードオフが成立していることを示しており、回路規模と性能のどちらを優先するかはSIMD型プロセッサの特徴に合わせて決定すべきと考えられる。しかし、回路規模と性能のうちどちらかを優先しても、他方が優先されないことによる不利益を低減することが望まれる。
【0025】
本発明は、上記課題に鑑み、回路規模と性能のトレードオフをより高次元に両立するデータ形式変換方法を提供することを目的とする。
【課題を解決するための手段】
【0026】
上記課題に鑑み、本発明は、2ラインで2次元に配置されたn個(nは4以上の偶数)の記憶装置が、パラレルデータをシリアルデータに変換するデータ形式変換方法において、
処理回数をs(s=1,2,3...)、
ラインの一方をH、他方をL、
HとLの2つの記憶装置を1カラムとしてカラムの端から各カラムの番号をk(k=0,1,2...n/2-1)とし、各記憶装置を H[k] , L[k] で表す場合、
s回目の処理では、
L[s-1] と H[n/2-s] 内のデータはカラム方向へ、L[s] 乃至 L[n/2-s]及びH[s-1] 乃至 H[n/2-s-1] 内のデータはライン方向へ移動し、その他の記憶装置はデータ移動を行わず、L[k]内のデータがライン方向へ移動する場合はL[k-1]へ、カラム方向へ移動する場合はH[k]へ移動し、H[k]内のデータがライン方向へ移動する場合はH[k+1]へ、カラム方向へ移動する場合はL[k]へ移動し、処理数が n/4 になるまで前記s回目の処理を繰り返す、ことを特徴とする。
【発明の効果】
【0027】
回路規模と性能のトレードオフをより高次元に両立するデータ形式変換方法を提供することができる。
【図面の簡単な説明】
【0028】
【図1】αフォーマットのデータ配置例を示す図の一例である。
【図2】βフォーマットのデータ配置例を示す図の一例である。
【図3】γフォーマットのデータ配置例を示す図の一例である。
【図4】周辺装置の一例を示す図である。
【図5】フォーマット変換のために、SIMD型プロセッサの外部に装備されたフォーマット変換装置の一例を示す図である。
【図6】βフォーマットからαフォーマットへの変換する際の経路を示す図の一例である。
【図7】万能転送経路の一例を示す図である。
【図8】PEの構成例を示す図の一例である。
【図9】図8で示されたPE00乃至PE31と、転送経路L121と転送経路H122に注目して説明する図の一例である。
【図10】フォーマット変換の各ステップの模式的表現の一例を示す図である。
【図11】フォーマット変換の手順をフローチャートにて表す図の一例である。
【図12】デコーダが入力信号N[4:0]から生成するステップごとの制御信号の一覧の一例を示す図である。
【図13】デコーダが入力信号N[4:0]から生成するステップごとの制御信号の一覧の一例を示す図である。
【図14】デコーダが入力信号N[4:0]から生成するステップごとの制御信号の一覧の一例を示す図である。
【図15】フォーマット変換の各ステップの模式的表現の一例を示す図である。
【図16】フォーマット変換の手順をフローチャートにて表す図の一例である。
【図17】1PEの構成図の一例である(実施例2)。
【図18】128PEで行われるデータ形式変換を示す図の一例である。
【図19】フォーマット変換の各ステップの模式的表現の一例を示す図である。
【図20】デコーダBが入力信号M[1:0]から生成するステップごとの制御信号の一覧を表す図の一例である。
【図21】フォーマット変換の手順をフローチャートにて表す図の一例である。
【図22】αフォーマットデータからβフォーマットデータへの複数シフト動作のシフト例を説明する図の一例である。
【図23】デコーダBが入力信号M[1:0]から生成するステップごとの制御信号の一覧を表す図の一例である。
【図24】フォーマット変換の手順をフローチャートにて表す図の一例である。
【発明を実施するための形態】
【0029】
以下、本発明を実施するための形態について図面を参照しながら実施例を挙げて説明する。
【実施例1】
【0030】
図8は、SIMD型プロセッサ10の構成例を示す図の一例である。SIMD型プロセッサ10はPE(プロセッサエレメント)100と、PE100を制御するPEコントロール部200とを有する。図8のPE100が実際には複数個、実装されており、そのうちの1つを代表として図示している。PEコントロール部200は不図示のグローバルプロセッサ内に設けられ、グローバルプロセッサとほぼ一体とみなせるか、又は、PEコントロール部200をグローバルプロセッサと称してもよい。
【0031】
SIMD型プロセッサ10は、いわゆるSISD(Single Instruction-stream, Single Data-stream)型のマイクロプロセッサであり、1つの集積回路(IC)として実装される。PEコントロール部200はプログラムRAMとデータRAM(いずれも不図示)を内蔵し、プログラムの実行結果に応じてPE100に制御信号を供給する。PE100は制御信号により処理のシーケンスが制御され、各PE100は、後述するレジスタに記憶されている画素のデータに対してほぼ同時に同じ処理を行う。
【0032】
PE(以下、符号は省略する)は、内部レジスタとして、汎用レジスタ142、汎用レジスタ143、結果レジスタ144、変換レジスタL101、変換レジスタH102、を備えており、それらのレジスタは、内部データバス131と内部データバス132に対してデータの入出力が可能である。
【0033】
PEは演算器141を備えており、演算器141は内部データバス131と内部データバス132からそれぞれデータを入力し、演算を実行し、その結果を結果レジスタ144に格納する。図中では省略しているが、PEコントロール部200からは、PEを含むすべてのPEの動作をコントロールする制御信号201を発信しており、PEはその制御信号201に従って動作する。
【0034】
マルチプレクサL111とマルチプレクサH112はそれぞれ2系統の入力を持ち、出力側はそれぞれ変換レジスタL101と変換レジスタH102へと接続されている。マルチプレクサH112とマルチプレクサL111には転送経路L121と転送経路H122が接続されている。この転送経路L121と転送経路H122は隣接するPEへも接続されている。この転送経路L121と転送経路H122のうち、隣接するPEからの入力を、それぞれ転送経路L121aと転送経路H122a、内部の変換レジスタ101からマルチプレクサ112への入力を転送経路L121、内部の変換レジスタ102からマルチプレクサ111への入力を転送経路H122、と呼び分けることとする。
【0035】
変換レジスタL101は、転送経路L121と接続されている。変換レジスタH102は、転送経路H122と接続されている。変換レジスタL101、変換レジスタH102、マルチプレクサL111及びマルチプレクサH112は、PEコントロール部200と接続され、PEコントロール部200から制御信号201を受けて制御される。
【0036】
PEコントロール部200は内部に信号N202を生成する機構を備え、PEコントロール部200ではこの信号N202をデコードし、変換レジスタL101、変換レジスタH102、マルチプレクサL111、マルチプレクサH112の制御信号201を生成する。この信号N202を入力情報として、入力情報に対して制御信号201を生成する関係式については、フォーマット変換動作の説明とともに後述する。
【0037】
次に転送経路L121と転送経路H122の全体の構成を、図9を用いて説明する。
図9は、図8で示されたPEであるPE00乃至PE31と、転送経路L121と転送経路H122に注目して図示している。PEは、PE00を1番目に、PE01を2番目に、PE02を3番目に、…、PE31を最右方となるよう配置しているが、中間のPEの一部は、紙面の関係で省略している。
【0038】
各PEにおいても、ここでの説明に必要な、変換レジスタ101、102、マルチプレクサL111、H112、転送経路L121、H122を除いて省略している。変換レジスタL101、H102は矩形で表示され、下から、変換レジスタL101、変換レジスタH102の順に表示する。マルチプレクサL111、H112は台形で表示され、下から、マルチプレクサL111、マルチプレクサH112の順に表示する。
【0039】
各PE内の変換レジスタL101の出力は転送経路L121に接続され、同じPE内のマルチプレクサH112と左隣のPEのマルチプレクサL111に入力されている。各PE内の変換レジスタH102の出力は転送経路H122に接続され、同じPE内のマルチプレクサL111と右隣のPEのマルチプレクサH112に入力されている。
【0040】
PE00はPE群の左端にあるため、マルチプレクサH112の一方の入力に接続すべき転送経路が無い。この空いた入力には同じPE内の転送経路L121を接続する。つまり、PE00のマルチプレクサH112の2つの入力には両方とも転送経路L121が接続される。
【0041】
PE31はPE群の右端にあるため、マルチプレクサL111の一方の入力に接続すべき転送経路が無い。この空いた入力には同じPE内の転送経路H122を接続する。つまり、PE31のマルチプレクサL111の2つの入力には両方とも転送経路H122が接続される。
【0042】
なお、変換レジスタ内に括弧付きで表示されている文字は、格納されるデータを表しており、それは後述の動作説明の中で述べる。マルチプレクサ内に表示されている数字は、マルチプレクサの入力端子を表しており、それは後述の動作説明の中で述べる。
【0043】
・β→α
次に図8、図9で示されたSIMD型プロセッサのPE部において、フォーマット変換の動作説明を行う。図2に示したβフォーマットから、図1に示すαフォーマットへの変換を例にして説明する。
【0044】
64個の連続した画素データをD00〜D63とし、PEコントロール部200はそれぞれを変換レジスタL又は変換レジスタHに格納する。したがって、PE[00]の変換レジスタLにはD00、PE[01]の変換レジスタLにはD01、PE[02]の変換レジスタLにはD02、・・・、PE[30]の変換レジスタLにはD30、PE[31]の変換レジスタLにはD31、PE[00]の変換レジスタHにはD32、PE[01]の変換レジスタHにはD33、・・・、PE[30]の変換レジスタHにはD62、PE[31]の変換レジスタHにはD63、が格納される。これが変換前のβフォーマットのデータである。
【0045】
この後、17ステップに分けてデータフォーマットの変換を行う。
図10は、このフォーマット変換のステップの模式的表現の一例を示す図である。PEの配置は図9と同様になっている。図の上側の変換レジスタL1,H1は、D00〜D63を変換前のβフォーマットで格納している。中央の破線内の矢印は、各ステップにおけるデータの転送を示している。1つの破線で囲まれた矢印が同時に動作するステップを意味する。上から第1のステップ、第2のステップ、・・・、第17のステップの順である。黒丸印が転送元、矢先が転送先を示す。また、左の目盛はステップ数を確認する指標として表示している。
【0046】
図の下側の変換レジスタL2,H2は、D00〜D63を変換後のαフォーマットで格納している。
【0047】
第1のステップ:
・PE[00]のマルチプレクサHは入力端子0の画素データを変換レジスタHに出力し、PE31のマルチプレクサLは入力端子0の画素データを変換レジスタLに出力する。上記を除く全てのマルチプレクサは、入力端子1の画素データを変換レジスタに出力する。
・PE[00]乃至PE[31]の変換レジスタL、Hは、マルチプレクサL、Hから入力された画素データを取り込む。
第2のステップ:
・PE[01]のマルチプレクサHは入力端子0の画素データを変換レジスタHに出力し、PE[30]のマルチプレクサLは入力端子0の画素データを変換レジスタLに出力する。上記を除く全てのマルチプレクサL,Hは、入力端子1の画素データを変換レジスタL,Hに出力する。
・PE[01]乃至PE[30]の変換レジスタL,Hは、マルチプレクサL,Hから入力された画素データを取り込む。上記を除く全ての変換レジスタは、マルチプレクサから入力された画素データを取り込まず、元のデータを保持する。
第3のステップ:
・PE[02]のマルチプレクサHは入力端子0の画素データを変換レジスタHに出力し、PE[29]のマルチプレクサLは入力端子0の画素データを変換レジスタLに出力する。上記を除く全てのマルチプレクサL,Hは、入力端子1の画素データを変換レジスタL,Hに出力する。
・PE[02]乃至PE[29]の変換レジスタL,Hは、マルチプレクサL,Hから入力された画素データを取り込む。上記を除く全ての変換レジスタは、マルチプレクサから入力された画素データを取り込まず、元のデータを保持する。
第4のステップ:
・PE[03]のマルチプレクサHは入力端子0の画素データを変換レジスタHに出力し、PE[28]のマルチプレクサLは入力端子0の画素データを変換レジスタLに出力する。上記を除く全てのマルチプレクサは、入力端子1の画素データを変換レジスタに出力する。
・PE[03]乃至PE[28]の変換レジスタは、マルチプレクサから入力された画素データを取り込む。上記を除く全ての変換レジスタは、マルチプレクサから入力された画素データを取り込まず、元のデータを保持する。
第5のステップ:
PE[04]のマルチプレクサHは入力端子0の画素データを変換レジスタHに出力し、PE[27]のマルチプレクサLは入力端子0の画素データを変換レジスタLに出力する。上記を除く全てのマルチプレクサは、入力端子1の画素データを変換レジスタに出力する。
・PE[04]乃至PE[27]の変換レジスタは、マルチプレクサから入力された画素データを取り込む。上記を除く全ての変換レジスタは、マルチプレクサから入力された画素データを取り込まず、元のデータを保持する。
第6のステップ:
・PE[05]のマルチプレクサHは入力端子0の画素データを変換レジスタHに出力し、PE[26]のマルチプレクサLは入力端子0の画素データを変換レジスタHに出力する。上記を除く全てのマルチプレクサは、入力端子1の画素データを変換レジスタに出力する。
・PE[05]乃至PE[26]の変換レジスタは、マルチプレクサから入力された画素データを取り込む。上記を除く全ての変換レジスタは、マルチプレクサから入力された画素データを取り込まず、元のデータを保持する。
第7のステップ:
・PE[06]のマルチプレクサHは入力端子0の画素データを変換レジスタHに出力し、PE[25]のマルチプレクサLは入力端子0の画素データを変換レジスタLに出力する。上記を除く全てのマルチプレクサは、入力端子1の画素データを変換レジスタに出力する。
・PE[06]乃至PE[25]の変換レジスタは、マルチプレクサから入力された画素データを取り込む。上記を除く全ての変換レジスタは、マルチプレクサから入力された画素データを取り込まず、元のデータを保持する。
第8のステップ:
・PE[07]のマルチプレクサHは入力端子0の画素データを変換レジスタに出力し、PE[24]のマルチプレクサLは入力端子0の画素データを変換レジスタに出力する。上記を除く全てのマルチプレクサは、入力端子1の画素データを変換レジスタに出力する。
・PE[07]乃至PE[24]の変換レジスタは、マルチプレクサから入力された画素データを取り込む。上記を除く全ての変換レジスタは、マルチプレクサから入力された画素データを取り込まず、元のデータを保持する。
第9のステップ:
・PE[08]のマルチプレクサHは入力端子0の画素データを変換レジスタに出力し、PE[23]のマルチプレクサLは入力端子0の画素データを変換レジスタLに出力する。上記を除く全てのマルチプレクサは、入力端子1の画素データを変換レジスタに出力する。
・PE[08]乃至PE[23]の変換レジスタは、マルチプレクサから入力された画素データを取り込む。上記を除く全ての変換レジスタは、マルチプレクサから入力された画素データを取り込まず、元のデータを保持する。
第10のステップ:
・PE[09]のマルチプレクサHは入力端子0の画素データを変換レジスタHに出力し、PE[22]のマルチプレクサLは入力端子0の画素データを変換レジスタHに出力する。上記を除く全てのマルチプレクサは、入力端子1の画素データを変換レジスタに出力する。
・PE[09]乃至PE[22]の変換レジスタは、マルチプレクサから入力された画素データを取り込む。上記を除く全ての変換レジスタは、マルチプレクサから入力された画素データを取り込まず、元のデータを保持する。
第11のステップ:
・PE[10]のマルチプレクサHは入力端子0の画素データを変換レジスタHに出力し、PE[21]のマルチプレクサLは入力端子0の画素データを変換レジスタLに出力する。上記を除く全てのマルチプレクサは、入力端子1の画素データを変換レジスタに出力する。
・PE[10]乃至PE[21]の変換レジスタは、マルチプレクサから入力された画素データを取り込む。上記を除く全ての変換レジスタは、マルチプレクサから入力された画素データを取り込まず、元のデータを保持する。
第12のステップ:
・PE[11]のマルチプレクサHは入力端子0の画素データを変換レジスタに出力し、PE[20]のマルチプレクサLは入力端子0の画素データを変換レジスタに出力する。上記を除く全てのマルチプレクサは、入力端子1の画素データを変換レジスタに出力する。
・PE[11]乃至PE[20]の変換レジスタは、マルチプレクサから入力された画素データを取り込む。上記を除く全ての変換レジスタは、マルチプレクサから入力された画素データを取り込まず、元のデータを保持する。
第13のステップ:
・PE[12]のマルチプレクサHは入力端子0の画素データを変換レジスタに出力し、PE[19]のマルチプレクサLは入力端子0の画素データを変換レジスタに出力する。上記を除く全てのマルチプレクサは、入力端子1の画素データを変換レジスタに出力する。
・PE[12]乃至PE[19]の変換レジスタは、マルチプレクサから入力された画素データを取り込む。上記を除く全ての変換レジスタは、マルチプレクサから入力された画素データを取り込まず、元のデータを保持する。
第14のステップ:
・PE[13]のマルチプレクサHは入力端子0の画素データを変換レジスタに出力し、PE[18]のマルチプレクサLは入力端子0の画素データを変換レジスタに出力する。上記を除く全てのマルチプレクサは、入力端子1の画素データを変換レジスタに出力する。
・PE[13]乃至PE[18]の変換レジスタは、マルチプレクサから入力された画素データを取り込む。上記を除く全ての変換レジスタは、マルチプレクサから入力された画素データを取り込まず、元のデータを保持する。
第15のステップ:
・PE[14]のマルチプレクサHは入力端子0の画素データを変換レジスタに出力し、PE[17]のマルチプレクサLは入力端子0の画素データを変換レジスタに出力する。上記を除く全てのマルチプレクサは、入力端子1の画素データを変換レジスタに出力する。
・PE[14]乃至PE[17]の変換レジスタは、マルチプレクサから入力された画素データを取り込む。上記を除く全ての変換レジスタは、マルチプレクサから入力された画素データを取り込まず、元のデータを保持する。
第16のステップ:
・PE[15]のマルチプレクサHは入力端子0の画素データを変換レジスタに出力し、PE[16]のマルチプレクサLは入力端子0の画素データを変換レジスタに出力する。上記を除く全てのマルチプレクサは、入力端子1の画素データを変換レジスタに出力する。
・PE[15]乃至PE[16]の変換レジスタは、マルチプレクサから入力された画素データを取り込む。上記を除く全ての変換レジスタは、マルチプレクサから入力された画素データを取り込まず、元のデータを保持する。なお、ここまでの処理でパラレルデータがシリアルデータに変換されている点に注意されたい。
第17のステップ:
・全てのPEのマルチプレクサは入力端子0の画素データを変換レジスタに出力する。全てのPEの変換レジスタは、マルチプレクサから入力された画素データを取り込む。
【0048】
この結果、D00がPE[00]の変換レジスタLに、D01がPE[00]の変換レジスタHに、D02がPE[01]の変換レジスタLに、D03がPE[01]の変換レジスタHに、D04がPE[02]の変換レジスタLに、D05がPE[02]の変換レジスタHに、・・・、D62がPE[31]の変換レジスタLに、D63がPE[31]の変換レジスタHにそれぞれ格納される。これはαフォーマットのデータ配置である。
【0049】
図10により、βフォーマットからαフォーマットへ変換するための全経路が1PE以内の距離に収まっていることがわかる。また、PE間の転送経路は2組であるが、32ステップを要することなく、(16+1)ステップで実現できている。
【0050】
図11は、このフォーマット変換の手順をフローチャートにて表す図の一例である。処理ステップをs(s=1,2,3,...,17)で表し、変換レジスタLをL、変換レジスタHをH、左端から各PEの順番をk(k=0,1,2,...,31)とし、各変換レジスタを H[k]、L[k]で表している。この変換のフローチャートに従い各変換レジスタが同時に処理を行う。
【0051】
この変換のフローチャートには1つのメインルーチンと2つのサブルーチンがある。
メインルーチンではステップ1からステップ16まで繰り返し処理をした後、ステップ17の処理を行う。
【0052】
ステップ1の繰り返し処理では、最初にそのステップにおいて各変換レジスタが更新を行うか否かを判断する。条件式は「s-1≦k≦32-s」で表され、Yes(真)なら更新を行い、No(偽)なら更新を行わず元のデータを保持する(ステップ5)。
【0053】
ステップ1で更新を行うと判定された場合、マルチプレクサによる画素データの選択が行われる(ステップ2)。条件は「自身の変換レジスタがL[s-1]またはH[32-s]である」により表され、真なら「入力選択0」サブルーチンが処理され(ステップ3)、偽なら「入力選択1」サブルーチンが処理される(ステップ4)。すなわち、L側のマルチプレクサは処理ステップs-1の場合、H側のマルチプレクサは処理ステップ32-sの場合に、「入力選択0」サブルーチンを実行し、それ以外は「入力選択1」のサブルーチンを実行する。
【0054】
「入力選択0」サブルーチンでは、ステップ3−1で各PEのうち変換レジスタLか変換レジスタHかが判断される。変換レジスタLは同じPE内の変換レジスタHからの画素データを取り込み(ステップ3−2)、変換レジスタHは同じPE内の変換レジスタLからの画素データを取り込む(ステップ3−3)。この処理は、図9においてはマルチプレクサが入力端子0を選択することを表し、図10においては画素データが縦方向の矢印のように移動したことを表している。
【0055】
「入力選択1」サブルーチンでは、ステップ4−1で各PEのうち変換レジスタLか変換レジスタHかが判断される。変換レジスタLは自身のPE番号kよりも1つ若い番号を持つPE内の変換レジスタLから画素データを取り込み(ステップ4−2)、変換レジスタHは自身のPE番号kよりも1つ次のPE番号を持つPE内の変換レジスタHから画素データを取り込む(ステップ4−3)。この処理は、図9においてはマルチプレクサが入力端子1を選択することを表し、図10においては画素データが横方向の矢印のように移動したことを表している。このフローチャートで、変換動作をすべて表現できている。
【0056】
次にこのような動作を行うための制御方法について説明する。
最初の第1のステップs1から、最後の第17のステップs17まで説明したように、各PEに対する指示は3つの要素を含んでいる。
すなわち、
[1]各PEに対する、変換レジスタが画素データを更新するか又は元の画素データを保持するかの指示
[2]各PEに対する、マルチプレクサLに入力端子0か又は入力端子1を選択させる指示
[3]各PEに対する、マルチプレクサHに入力端子0か又は入力端子1を選択させる指示
の3つである。
【0057】
これらの指示は図8におけるPEコントロール部200から制御信号201として発信される。PEは32個あるため、それぞれのPEにおいて1つの指示を行うには32bit必要となる。
【0058】
前述の通り指示は3つあるので、合計96bitの制御信号201があればPEコントロール部200から全PEの制御が可能である。
【0059】
本実施例では、図8にて説明したように、PEコントロール部200にデコーダ210が備えられており、デコーダ210は信号N202を入力情報とし、出力情報として制御信号201を生成する。各PEではデコーダ210から出力される制御信号201により変換レジスタL101、変換レジスタH102、マルチプレクサL111、及び、マルチプレクサH112が制御される。
【0060】
本実施例において、PEコントロール部200が、βフォーマットからαフォーマットに変換する動作を実行するためには、ステップ数17をカバーする5bitで全PEを制御する制御信号201を生成することが可能である。また、複数のPEで制御信号201を共有することにより、33bitの制御信号201で各PEにおいて上記の3つの指定が可能である。
【0061】
デコーダ210への入力信号Nを5bitの信号N[4:0]で表現する。また、PEコントロール部200から出力される32bitの制御信号をA[31:0]で、1bitの制御信号をBで表現する。
【0062】
デコーダ210は、このN[4:0]を入力情報として、前述の制御信号Aと制御信号Bを出力情報とする装置である。
入力情報と出力情報の関係式は次の通りである。
【0063】
N[4]|{N[3]~&N[2]~&N[1]~&N[0]~}=A[0]=A[31]
N[4]|{N[3]~&N[2]~&N[1]~}=A[1]=A[30]
N[4]|{N[3]~&N[2]~&(N[1]&N[0])~}=A[2]=A[29]
N[4]|{N[3]~&N[2]~}=A[3]=A[28]
N[4]|{(N[3]~&N[2]~)| (N[3]~&N[1]~&N[0]~)}=A[4]=A[27]
N[4]|{(N[3]~&N[2]~)| (N[3]~&N[1]~)}=A[5]=A[26]
N[4]|{(N[3]~&N[2]~)| (N[3]~&(N[1]&N[0])~)}=A[6]=A[25]
N[4]|{N[3]~}=A[7]=A[24]
N[4]|{N[3]~| (N[2]~&N[1]~&N[0]~)}=A[8]=A[23]
N[4]|{N[3]~| (N[2]~&N[1]~)}=A[9]=A[22]
N[4]|{N[3]~| (N[2]~&(N[1]&N[0])~)}=A[10]=A[21]
N[4]|{N[3]~| N[2]~}=A[11]=A[20]
N[4]|{N[3]~| N[2]~|(N[1]~&N[0]~)}=A[12]=A[19]
N[4]|{N[3]~| N[2]~| N[1]~}=A[13]=A[18]
N[4]|{N[3]~| N[2]~| N[1]~|N[0]~}=A[14]=A[17]
{1}=A[15]=A[16]
N[4]~=B
なお、"|"、"~"、"&"はビット演算子で、順番に"or""not""and"を意味する。
従って、例えば、"N[4]|{N[3]~&N[2]~&N[1]~&N[0]~}=A[0]=A[31]"は、N[4]が"1"又はN[3:0]が全て"0"ならば、A[0]=A[31]が"1"であること、及び、N[4]が"0"かつN[3:0]のうち少なくとも1bitが"0"でないならば、A[0]=A[31]が"0"であること、を表す。
【0064】
また、"{1}=A[15]=A[16]"は、A[15]=A[16]が"1"があること(その他は"0")を表している。また、"N[4]~=B"は、N[4]が"0"ならばBが"1"であること、及び、N[4]が"1"ならばBが"0"であること、を表している。
【0065】
左端からのPEの順番をk(k=0,1,2,…,31)とし各PEをPE[k]で表すとき、PE[k]には制御信号201としてA[k-1],A[k],A[k+1],Bが入力され、各PEは次の通り処理を行う。(但し、kが0、またはkが31のときはそれぞれA[k-1]またはA[k+1]が存在しないため、代わりとして0を入力する。)
[1]PE[k]においてA[k]=1なら変換レジスタが画素データの更新を行い、A[k]=0なら元のデータを保持する。
[2]PE[k]において、マルチプレクサLで選択される入力端子の番号はB&A[k+1]
[3]PE[k]において、マルチプレクサHで選択される入力端子の番号はB&A[k-1]
図12は、この関係式を用いて、デコーダ210が入力信号N[4:0]から生成したステップごとの制御信号201の一覧の一例を示す図である。図12では、左より、ステップ(番号)、入力信号Nのbit4、同bit3、同bit2、同bit1、同bit0、デコーダの出力信号A[31:0]、デコーダの出力信号B、[1]変換レジスタが更新を行うPE、[2]マルチプレクサLが入力端子0を選択するPE(その他のPEは入力端子1を選択する)、[3]マルチプレクサHが入力端子0を選択するPE(その他のPEは入力端子1を選択する)、である。この表で、変換動作をすべて表現できている。
【0066】
・α→β
次に、図1に示したαフォーマットから図2に示したβフォーマットへの変換について説明する。64個の連続した画素データをD00〜D63とし、それぞれを変換レジスタL又は変換レジスタHに格納する。
【0067】
例えば図10に示したように、D00をPE[00]の変換レジスタLに、D01をPE[00]の変換レジスタHに、D02をPE[01]の変換レジスタLに、D03をPE[01]の変換レジスタHに、D04をPE[02]の変換レジスタLに、D05をPE[02]の変換レジスタHに、・・・、D62をPE[31]の変換レジスタLに、D63をPE[31]の変換レジスタHに格納するフォーマットが、変換前のαフォーマットのデータである。
【0068】
αフォーマットからβフォーマットへの変換の場合、デコーダ210の動作する関係式は次の通りである。
【0069】
N[4]|{N[3]&N[2]&N[1]&N[0]}=A[0]=A[31]
N[4]|{N[3]&N[2]&N[1]}=A[1]=A[30]
N[4]|{N[3]&N[2]&(N[1]|N[0])}=A[2]=A[29]
N[4]|{N[3]&N[2]}=A[3]=A[28]
N[4]|{(N[3]&N[2])| (N[3]&N[1]&N[0])}=A[4]=A[27]
N[4]|{(N[3]&N[2])| (N[3]&N[1])}=A[5]=A[26]
N[4]|{(N[3]&N[2])| (N[3]&(N[1]|N[0]))}=A[6]=A[25]
N[4]|{N[3]}=A[7]=A[24]
N[4]|{N[3]| (N[2]&N[1]&N[0])}=A[8]=A[23]
N[4]|{N[3]| (N[2]&N[1])}=A[9]=A[22]
N[4]|{N[3]| (N[2]&(N[1]|N[0]))}=A[10]=A[21]
N[4]|{N[3]| N[2]}=A[11]=A[20]
N[4]|{N[3]| N[2]|(N[1]&N[0])}=A[12]=A[19]
N[4]|{N[3]| N[2]| N[1]}=A[13]=A[18]
N[4]|{N[3]| N[2]| N[1]|N[0]}=A[14]=A[17]
{1}=A[15]=A[16]
N[4]~=B
左端からのPEの順番をk(k=0,1,2,…,31)とし各PEをPE[k]で表すとき、PE[k]には制御信号201としてA[k-1],A[k],A[k+1],Bが入力され、各PEは次の通り処理を行う。(但し、kが0、またはkが31のときはそれぞれA[k-1]またはA[k+1]が存在しないため、代わりとして0を入力する。)
[1]PE[k]においてA[k]=1なら変換レジスタが画素データの更新を行い、A[k]=0なら元のデータを保持する。
[2]PE[k]において、マルチプレクサLで選択される入力端子の番号はB&A[k+1]
[3]PE[k]において、マルチプレクサHで選択される入力端子の番号はB&A[k-1]
図13は、この関係式で、デコーダ210が入力信号N[4:0]から生成するステップごとの制御信号201の一覧の一例を示す図である。図12と同様に、左より、ステップ、入力信号Nのbit4、同bit3、同bit2、同bit1、同bit0、デコーダの出力信号A[31:0]、デコーダの出力信号B、[1]変換レジスタが取り込みを行うPE、[2]マルチプレクサLが入力端子0を選択するPE(その他のPEは入力端子1を選択する)、[3] マルチプレクサHが入力端子0を選択するPE(その他のPEは入力端子1を選択する)、である。
【0070】
また、関係式はβフォーマットからαフォーマットへ変換する場合と同じまま、入力信号NをN=01111b(2進数)からステップ毎に-1してもよい。図12と図13のA[31:0]を比較すると、ステップ番号の昇順と降順に切り替えれば、A[31:0]は同じになることが分かる。すなわち、デコーダ210の動作する関係式は次の通りである。
【0071】
N[4]|{N[3]~&N[2]~&N[1]~&N[0]~}=A[0]=A[31]
N[4]|{N[3]~&N[2]~&N[1]~}=A[1]=A[30]
N[4]|{N[3]~&N[2]~&(N[1]&N[0])~}=A[2]=A[29]
N[4]|{N[3]~&N[2]~}=A[3]=A[28]
N[4]|{(N[3]~&N[2]~)| (N[3]~&N[1]~&N[0]~)}=A[4]=A[27]
N[4]|{(N[3]~&N[2]~)| (N[3]~&N[1]~)}=A[5]=A[26]
N[4]|{(N[3]~&N[2]~)| (N[3]~&(N[1]&N[0])~)}=A[6]=A[25]
N[4]|{N[3]~}=A[7]=A[24]
N[4]|{N[3]~| (N[2]~&N[1]~&N[0]~)}=A[8]=A[23]
N[4]|{N[3]~| (N[2]~&N[1]~)}=A[9]=A[22]
N[4]|{N[3]~| (N[2]~&(N[1]&N[0])~)}=A[10]=A[21]
N[4]|{N[3]~| N[2]~}=A[11]=A[20]
N[4]|{N[3]~| N[2]~|(N[1]~&N[0]~)}=A[12]=A[19]
N[4]|{N[3]~| N[2]~| N[1]~}=A[13]=A[18]
N[4]|{N[3]~| N[2]~| N[1]~|N[0]~}=A[14]=A[17]
{1}=A[15]=A[16]
N[4]~=B
左端からのPEの順番をk(k=0,1,2,…,31)とし各PEをPE[k]で表すとき、PE[k]には制御信号201としてA[k-1],A[k],A[k+1],Bが入力され、各PEは次の通り処理を行う。(但し、kが0、またはkが31のときはそれぞれA[k-1]またはA[k+1]が存在しないため、代わりとして0を入力する。)
[1]PE[k]においてA[k]=1なら変換レジスタが画素データの更新を行い、A[k]=0なら元のデータを保持する。
[2]PE[k]において、マルチプレクサLで選択される入力端子の番号はB&A[k+1]
[3]PE[k]において、マルチプレクサHで選択される入力端子の番号はB&A[k-1]
図14は、デコーダ210が入力信号N[4:0]から生成するステップごとの制御信号201の一覧を示す図の一例である。図12と同様に、左より、ステップ、入力信号Nのbit4、同bit3、同bit2、同bit1、同bit0、デコーダの出力信号A[31:0]、デコーダの出力信号B、[1]変換レジスタが取り込みを行うPE、[2]マルチプレクサLが入力端子0を選択するPE(その他のPEは入力端子1を選択する)、[3]マルチプレクサHが入力端子0を選択するPE(その他のPEは入力端子1を選択する)、である。
【0072】
図15は、このフォーマット変換の各ステップの模式的表現の一例を示す図である。
例えば、ステップ1では、PE[15]にA[14],A[15],A[16],B={0,1,1,B}が入力され、PE[16]にはA[15],A[16],A[17],B={1,1,0,B}が入力される。このため、
[1]PE[15]、PE[16]は、A[15]=A[16]=1なので、変換レジスタが画素データの更新を行う。
[2]PE[15]のマルチプレクサLで選択される入力端子の番号はB&A[16]=1なので、PE[16]の変換レジスタLのD32が、PE[15]の変換レジスタLに格納される。PE[16]のマルチプレクサLで選択される入力端子の番号はB&A[17]=0なので、PE[16]の変換レジスタHのD33が、PE[16]の変換レジスタLに格納される。
[3]PE[15]のマルチプレクサHで選択される入力端子の番号はB&A[14]=0なので、PE15の変換レジスタLのD30が、PE15の変換レジスタHに格納される。PE[16]のマルチプレクサHで選択される入力端子の番号はB&A[15]=1なので、PE[15]の変換レジスタHのD31が、PE[16]の変換レジスタHに格納される。
【0073】
このように、ステップ番号N[4:0]に従いデコーダ210がA[31:0]とBを出力することで、α→β変換が行われる。
【0074】
図16はこれらの動作を表すフローチャート図の一例である。処理ステップをs(s=1,2,3,...,17)で表し、変換レジスタLをL、変換レジスタHをH、左端から各PEの順番をk(k=0,1,2,...,31)とし、各変換レジスタの番号をH[k]、L[k]で表している。この変換のフローチャートに従い各変換レジスタが同時に処理を行う。
【0075】
この変換のフローチャートには1つのメインルーチンと2つのサブルーチンがある。サブルーチンは図11と同じなので説明を省略する。メインルーチンではステップ1からステップ16まで繰り返し処理をした後、ステップ17の処理を行う。
【0076】
ステップ1の繰り返し処理では、最初にそのステップにおいて各変換レジスタが更新を行うか判断する。条件式は「16-s≦k≦15+s」で表され、Yes(真)なら更新を行い、No(偽)なら更新を行わず元のデータを保持する(ステップ5)。
【0077】
ステップ1で更新を行うと判定された場合、マルチプレクサにより画素データの選択が行われる(ステップ2)。条件は「自身の変換レジスタがL[16-s]orH[15+s]である」で表され、Yes(真)なら「入力選択0」サブルーチンが実行され(ステップ3)、No(偽)なら「入力選択1」サブルーチンに入る(ステップ4)。すなわち、L側のマルチプレクサは処理ステップ16-sの場合、H側のマルチプレクサは処理ステップ15+sの場合に、「入力選択0」サブルーチンに入り、それ以外は「入力選択1」のサブルーチンに入る。このフローチャートで、変換動作をすべて表現できている。
【0078】
この結果、PE[00]の変換レジスタLにはD00、PE[01]の変換レジスタLにはD01、PE[02]の変換レジスタLにはD02、・・・、PE[30]の変換レジスタLにはD30、PE[31]の変換レジスタLにはD31、PE[00]の変換レジスタHにはD32、PE[01]の変換レジスタHにはD33、・・・、PE[30]の変換レジスタHにはD62、PE[31]の変換レジスタHにはD63、が配置されている。これはβフォーマットのデータ配置である。
【0079】
ただし、D0乃至D31とD32乃至D63が別の独立したデータ列と考えても支障がない場合は、変換後のフォーマットをγフォーマットのデータ配置として考えることもできる。
【0080】
したがって、本実施例のデータ形式変換方法によれば、βからα、αからβ、及び、αからγへのデータフォーマットの変換を、PE間の転送経路は2組とした場合に32ステップを要することなく、17ステップで実現できることがわかる。これにより、回路規模と性能のトレードオフをより高次元に両立することが達成できる。
【実施例2】
【0081】
図17は、本実施例の1PEの構成図の一例を示す。図17において図8と同一部には同一の符号を付しその説明は省略する。
【0082】
図17はPE内部に複数シフトレジスタL151と、複数シフトレジスタH152と、PEコントロール部内部にデコードB211を備えている点で図8と異なる。複数シフトレジスタ151、152は、内部バス131及び132でデータ変換レジスタ101乃至102と接続されている。また、複数シフトレジスタ152は複数シフト経路154を介して自身のPE番号より16若い番号を持つPEの複数シフトレジスタと、複数シフトレジスタ151は複数シフト経路153を介して自身のPE番号より16大きい番号を持つPEの複数シフトレジスタと、それぞれ接続され相互にデータを移動することが可能となっている。
【0083】
図中では省略しているが、PEコントロール部200は内部に信号M204を生成する機構を備え、デコーダB211はこの信号M204をデコードし、複数シフトレジスタの制御信号203を生成する。
【0084】
この信号M204を入力情報として、入力情報に対し制御信号203を生成する関係式については、複数シフト動作の説明とともに後述する。
【0085】
図18は、128PEが行うデータ形式の変換を模式的に示す図の一例である。矩形が各PEの変換レジスタ101、102を示し、実線で表した矢印は変換レジスタ間のデータ転送経路である。紙面の都合で、図では一部PEを省略しているが、これら省略された部分には同じ構成のPEが配置される。
【0086】
図9ではPE全体でデータ形式を変換する転送経路を有していたのに対し、図18は全体を4つのPE群に分割し、各部分内でデータ形式を変換する転送経路を有する点が異なる。
【0087】
点線で表した矢印は複数シフトレジスタにおけるデータの移動経路を示している。上記のように16PE間隔でデータが移動する。
【0088】
〔β→α〕
本実施例において、βフォーマットからαフォーマットに変換する動作を説明する。
各PE群における制御方法は第1の実施例と同じである。PEコントロール部200は、各PEに対し、データ変換レジスタ内の画素データを17ステップでβフォーマットからαフォーマットに変換し、内部バス131、132を介して複数シフトレジスタ151、152に画素データを複写する。
【0089】
図19は、このフォーマット変換の各ステップの模式的表現の一例を示す図である。複数シフトレジスタに画素データを複写した後のβフォーマットのデータ配列を図19の上方に示す。上側より複数シフトレジスタH152と複数シフトレジスタL151を示している。
【0090】
図19の下方には、各PE群内でデータフォーマット変換動作を行った後の複数シフトレジスタL151、H152が示され、その内部にはD00〜D255のαフォーマットのデータ配列が示されてている。
【0091】
中央の表示は、次述の各ステップにおける複数シフト動作でのデータの移動を示している。破線で囲まれた矢印は同時に動作するステップを意味している。上から第1のステップ、第2のステップ、第3のステップの順である。矢印で示されたPE間でデータが相互に複数シフトし、データの交換が行われることを示す。また、左の目盛はステップ数を確認する指標として表示している。
【0092】
PE[0]からPE[15]、PE[16]からPE[31]、PE[32]からPE[47]、PE[48]からPE[63]、PE[64]からPE[79]、PE[80]からPE[95]、PE[96]からPE[111]、PE[112]からPE[127]がそれぞれ1領域に区分される。
【0093】
複写の後、PEコントロール部200は3ステップに分けて複数シフト動作を行う。
第1のステップ:
・PE[16]からPE[31]と、PE[32]からPE[47]の複数シフトレジスタ内の画素データを複数シフトを用いて交換する。
・PE[48]からPE[63]と、PE[64]からPE[79]の複数シフトレジスタ内の画素データを複数シフトを用いて交換する。
・PE[80]からPE[95]と、PE[96]からPE[111]の複数シフトレジスタ内の画素データを複数シフトを用いて交換する。
上記を除く全ての複数シフトレジスタは元のデータを保持する。
第2のステップ:
・PE[32]からPE[47]と、PE[48]からPE[63]の複数シフトレジスタ内の画素データを複数シフトを用いて交換する。
・PE[64]からPE[79]と、PE[80]からPE[95]の複数シフトレジスタ内の画素データを複数シフトを用いて交換する。
【0094】
上記を除く全ての複数シフトレジスタは元のデータを保持する。
第3のステップ:
・PE[48]からPE[63]とPE[64]からPE[79]の複数シフトレジスタ内の画素データを複数シフトを用いて交換する。
上記を除く全ての複数シフトレジスタは元のデータを保持する。
【0095】
変換の結果、D00がPE[00]の複数シフトレジスタLに、D01がPE[00]の複数シフトレジスタHに、D02がPE[01]の複数シフトレジスタLに、D03がPE[01]の複数シフトレジスタHに、D04がPE[02]の複数シフトレジスタLに、D05がPE[02]の複数シフトレジスタHに、・・・、D254がPE[127]の複数シフトレジスタLに、D255がPE[127]の複数シフトレジスタHにそれぞれ格納されており、これはαフォーマットのデータ配置である。
【0096】
この図19より、データフォーマットの変換が128ステップを要することなく、17ステップのデータフォーマット変換動作と3ステップの複数シフト動作で実現できていることがわかる。
【0097】
次に、信号Mのデコードについて説明する。デコーダBの入力情報である信号Mはステップ数を示す2bitの信号で、M[1:0]と表現する。またデコーダBの出力情報である制御信号203は8bitの信号が2つあり、それぞれ制御信号C[7:0]、制御信号D[7:0]と表現する。
デコーダBにおける入力情報と出力情報の関係式は次の通りである。
・{0}=C[0]=C[7] : C[0]=C[7]は常に"0"
・M[0]~&M[1]~=C[1]=C[6]
・M[1]~=C[2]=C[5]
・{1}=C[3]=C[4] :C[3]=C[4]は常に"1"
・M[0]~=D[0]=D[2]=D[4]=D[6]
・M[0]=D[1]=D[3]=D[5]= D[7]
左端からの16PE毎に領域を設定し、各領域の左端からの順番をk(k=0,1,2,…,7)とし、各領域をG[k]で表すとき、G[k]には制御信号203としてC[k],D[k]が入力され、各PEは次の通り処理を行う。
[1]G[k]において、C[k]=0ならば複数シフト動作を行わず、元の画素データを保持する
[2]G[k]において、C[k]=1,D[k]=0ならば、G[k+1]の画素データを取り込む
[3]G[k]において、C[k]=1,D[k]=1ならば、G[k-1]の画素データを取り込む
図20は、この関係式でデコーダB211が入力信号M[1:0]から生成するステップごとの制御信号203の一覧を表す図の一例である。左より、ステップ、入力信号Mのbit1、同bit0、デコーダの出力信号C[7:0]、デコーダの出力信号D[7:0]、[1]画素データを保持する領域、[2]右隣のグループのG[k+1]から画素データを取り込む領域、[3]左隣のグループのG[k-1]から画素データを取り込む領域、がある。
【0098】
図21はこれらの動作を表すフローチャート図の一例である。処理ステップをs(s=1,2,3)で表し、左端から各領域Gの順番をk(k=0,1,2,...,7)とし、iは整数(0,1,2…)とする。
【0099】
ステップ1の繰り返し処理では、最初にそのステップにおいて各領域が更新を行うか判断する。条件式は「s ≦ k ≦ 7-s」で表され、Yes(真)なら更新を行い、No(偽)なら更新を行わず元のデータを保持する(ステップ5)。
【0100】
ステップ1で更新を行うと判定された場合、領域の各PEは移動方向を選択する(ステップ2)。条件は「H[k=s+1+2i] or L[k=s+2i]」で表される。なお「k=s+1+2i、k=s+2i」のkは「7-s」を超えない。
【0101】
H[k=s+1+2i]を満たす領域Gの各H[k]は、16PE小さいPEの複数シフトレジスタからデータを取り込む(ステップ3)。
【0102】
L[k=s+2i]の条件を満たす領域Gの各L[k]は、16PE大きいPEの複数シフトレジスタからデータを取り込む(ステップ4)。これにより、図20の矢印で示されるデータ移動が実行される。
【0103】
〔α→β〕
次に、図1のαフォーマットから図2のβフォーマットへの変換について説明する。
本実施例においてαフォーマットからβフォーマットに変換する場合、PEコントロール部200は、先ず複数シフト動作を行い画素データの交換を行った後に、変換レジスタ内にデータを複写し、各PE群でαフォーマットからβフォーマットに変換する。
【0104】
図22は、αフォーマットデータからβフォーマットデータへの複数シフト動作のシフト例を説明する図の一例である。
PEコントロール部200は、3ステップに分けて複数シフト動作を行い画素データの交換を行う。
第1のステップ:
PE[48]からPE[63]とPE[64]からPE[79]の複数シフトレジスタ内の画素データを交換する。上記を除く全ての変換レジスタは元のデータを保持する。
第2のステップ:
PE[32]からPE[47]とPE[48]からPE[63]の複数シフトレジスタ内の画素データを交換する。同時に、PE[64]からPE[79]とPE[80]からPE[95]の複数シフトレジスタ内の画素データを交換する。上記を除く全ての複数シフトレジスタは元のデータを保持する。
第3のステップ:
PE[15]からPE[31]とPE[32]からPE[47]の複数シフトレジスタ内の画素データを交換する。同時に、PE[48]からPE[63]とPE[64]からPE[79]の複数シフトレジスタ内の画素データを交換する。同時に、PE[80]からPE[95]とPE[96]からPE[111]の複数シフトレジスタ内の画素データを交換する。上記を除く全ての複数シフトレジスタは元のデータを保持する。
【0105】
この処理後のデータ配置は図22の下方に示す配置となる。
この後、各PE群で第一の実施例と同じようにしてαフォーマットからβフォーマットへ変換する。各PE群におけるフォーマット変換の制御方法は第1の実施例と同じである。
【0106】
この結果、PE[00]の変換レジスタLにはD00、PE[01]の変換レジスタLにはD01、PE[02]の変換レジスタLにはD02、・・・、PE[126]の変換レジスタLにはD126、PE[127]の変換レジスタLにはD127、PE[00]の変換レジスタHにはD128、PE[01]の変換レジスタHにはD129、・・・、PE[126]の変換レジスタHにはD254、PE[127]の変換レジスタHにはD255、が配置される。これはβフォーマットのデータ配置である。
【0107】
ただし、D0乃至D127とD128乃至D255が別の独立したデータ列と考えても支障がない場合は、変換後のフォーマットをγフォーマットのデータ配置として考えることもできる。
【0108】
この図22より、データフォーマットの変換が、128ステップを要することなく、3ステップの複数シフト動作と17ステップのデータフォーマット変換動作で実現できていることがわかる。
【0109】
デコーダBの入力情報である信号Mはステップ数を示す2bitの信号で、M[1:0]と表現する。またデコーダBの出力情報である制御信号203は8bitの信号が2つあり、それぞれ制御信号C[7:0]、制御信号D[7:0]と表現する。
デコーダBにおける入力情報と出力情報の関係式は次の通りである。
{0}=C[0]=C[7]
M[1]=C[1]=C[6]
M[1]|M[0]=C[2]=C[5]
{1}=C[3]=C[4]
M[0]~=D[0]=D[2]=D[4]=D[6]
M[0]=D[1]=D[3]=D[5]=D[7]
左端からの16PE毎に領域を設定し、各領域の左端からの順番をk(k=0,1,2,…,7)とし各領域をG[k]で表すとき、G[k]には制御信号203としてC[k],D[k]が入力され、各PEは次の通り処理を行う。
[1]G[k]において、C[k]=0ならば複数シフト動作を行わず、元の画素データを保持する
[2]G[k]において、C[k]=1,D[k]=0ならば、G[k+1]の画素データを取り込む
[3]G[k]において、C[k]=1,D[k]=1ならば、G[k-1]の画素データを取り込む
図23は、この関係式でデコーダB211が入力信号M[1:0]から生成するステップごとの制御信号203の一覧を示す図である。各項目は図20と同じである。
【0110】
図24はこれらの動作を表すフローチャート図の一例である。処理ステップをs(s=1,2,3)で表し、左端から各領域Gの順番をk(k=0,1,2,...,7)とし、iは整数(0,1,2…)とする。
【0111】
ステップ1の繰り返し処理では、最初にそのステップにおいて各領域が更新を行うか判断する。条件式は「4-s≦k≦3+s」で表され、Yes(真)なら更新を行い、No(偽)なら更新を行わず元のデータを保持する。
【0112】
ステップ1で更新を行うと判定された場合、領域の各PEは移動方向を選択する(ステップ2)。条件は「H[k=5-s+2i] or L[k=4-s+2i]」で表される。なお「k=5-s+2i、k=4-s+2i」のkは「3+s」を超えない。
【0113】
H[k=5-s+2i]を満たす領域Gの各H[k]は、16PE小さいPEの複数シフトレジスタからデータを取り込む(ステップ3)。
【0114】
L[k=4-s+2i]の条件を満たす領域Gの各L[k]は、16PE大きいPEの複数シフトレジスタからデータを取り込む(ステップ4)。これにより、図22の矢印で示されるデータ移動が実行される。
【0115】
以上説明したように、本実施例のデータ変換方法では、記憶装置の数(256)に対しデータフォーマットの変換が128ステップを要することなく、17ステップのデータフォーマット変換動作と3ステップの複数シフト動作で実現できる。
【符号の説明】
【0116】
10 SIMD型プロセッサ
100 PE(プロセッサエレメント)
101 変換レジスタL
102 変換レジスタH
111、112、141 マルチプレクサ
142,143 汎用レジスタ
144 結果レジスタ
151 複数シフトレジスタL
152 複数シフトレジスタH
200 PEコントロール部
201 制御信号
202 信号N
204 信号M
210 デコーダ、デコーダA
211 デコーダB
【先行技術文献】
【特許文献】
【0117】
【特許文献1】特開2002−298135号公報
【特許文献2】特開2006−260479号公報

【特許請求の範囲】
【請求項1】
2ラインで2次元に配置されたn個(nは4以上の偶数)の記憶装置が、パラレルデータをシリアルデータに変換するデータ形式変換方法において、
処理回数をs(s=1,2,3...)、
ラインの一方をH、他方をL、
HとLの2つの記憶装置を1カラムとしてカラムの端から各カラムの番号をk(k=0,1,2...n/2-1)とし、各記憶装置をH[k],L[k]で表す場合、
s回目の処理では、
L[s-1]とH[n/2-s]内のデータはカラム方向へ、L[s]乃至L[n/2-s]及びH[s-1]乃至H[n/2-s-1]内のデータはライン方向へ移動し、その他の記憶装置はデータ移動を行わず、
L[k]内のデータがライン方向へ移動する場合はL[k-1]へ、カラム方向へ移動する場合はH[k]へ移動し、H[k]内のデータがライン方向へ移動する場合はH[k+1]へ、カラム方向へ移動する場合はL[k]へ移動し、
処理数がn/4になるまで前記s回目の処理を繰り返す、
ことを特徴とするデータ形式変換方法。
【請求項2】
2ラインで2次元に配置されたn個(nは4以上の偶数)の記憶装置が、パラレルデータをシリアルデータに変換するデータ形式変換方法において、
処理回数をs(s=1,2,3...)、
ラインの一方をH、他方をL、
HとLの2つの記憶装置を1カラムとしてカラムの端から各カラムの番号をk(k=0,1,2...n/2-1)とし、各記憶装置をH[k],L[k]で表す場合、
s回目の処理では、
L[n/4-s]とH[n/4-1+s]内のデータ内のデータはカラム方向へ、L[n/4-s+1]乃至L[n/4-1+s]とH[n/4-s]乃至H[n/4-2+s]のデータはライン方向へデータを移動し、その他の記憶装置はデータ移動を行わず、
L[k]内のデータがライン方向へ移動する場合はL[k-1]へ、カラム方向へ移動する場合はH[k]へ移動し、
H[k]内のデータがライン方向へ移動する場合はH[k+1]へ、カラム方向へ移動する場合はL[k]へ移動し、
前記処理数がn/4になるまで前記s回目の処理を繰り返す、
ことを特徴とするデータ形式変換方法。
【請求項3】
全ての記憶装置のデータをカラム方向に交換する処理をさらに有する、
ことを特徴とする請求項1又は2記載のデータ形式変換方法。
【請求項4】
各カラムの記憶装置がw(2以上の偶数かつn/4の約数)離れたカラムの前記記憶装置と接続されており、
前記s回目の処理をn/4回行う前、又は、n/4回行った後に、w離れた記憶装置間で互いにライン方向にデータを交換する、
ことを特徴とする請求項1又は2記載のデータ形式変換方法。
【請求項5】
ライン方向に連続した所定数毎に記憶装置を区分し各区分をG、区分Gの番号を(0,1,2…n/32-1)、iを整数とした場合、
w離れた記憶装置間で互いにデータをライン方向に交換する処理は、
m回目の処理にて、
G[m]乃至G[7-m]内の区分であり、H[m+1+2i]の区分の記憶装置はw小さい側の記憶装置からデータを取得し、
G[m]乃至G[7-m]内の区分であり、L[m+2i]の区分の記憶装置はw大きい側の記憶装置からデータを取得し、
該処理数が「区分数/2−1」になるまで前記m回目の処理を繰り返す、
ことを特徴とする請求項4記載のデータ形式変換方法。
【請求項6】
ライン方向に連続した所定数で記憶装置を区分し各区分をG、区分Gの番号を(0,1,2…n/4-1)と、iを整数とした場合、
w離れた記憶装置間で互いにデータをライン方向に交換する処理は、
m回目の処理にて、
G[4-s]乃至G[3+s]内の区分であり、H[5-m+2i]の区分の記憶装置はw小さい側の記憶装置からデータを取得し、
G[4-s]乃至G[3+s]内の区分であり、L[4-s+2i]の区分の記憶装置はw大きい側の記憶装置からデータを取得し、
該処理数が区分数/2−1になるまで前記m回目の処理を繰り返す
ことを特徴とする請求項4記載のデータ形式変換方法。
【請求項7】
2ラインで2次元に配置されたn個(nは4以上の偶数)の記憶装置と、該記憶装置に記憶されたパラレルデータをシリアルデータに変換する制御部とを有する集積装置であって、
処理回数をs(s=1,2,3...)、
ラインの一方をH、他方をL、
HとLの2つの記憶装置を1カラムとしてカラムの端から各カラムの番号をk(k=0,1,2...n/2-1)とし、各記憶装置をH[k],L[k]で表す場合、
前記制御部は、s回目の処理において、
L[s-1]とH[n/2-s]の記憶装置に対し該記憶装置が記憶しているデータをカラム方向に移動させ、L[s]乃至L[n/2-s]及びH[s-1]乃至H[n/2-s-1]の記憶装置に対し該記憶装置が記憶しているデータをライン方向へ移動させ、その他の記憶装置にはデータを移動させない制御信号であって、
L[k]の記憶装置にライン方向にデータを移動させる際はL[k-1]の記憶装置にデータを移動させ、L[k]の記憶装置にカラム方向へデータを移動させる際はH[k]の記憶装置にデータを移動させる前記制御信号を出力し、
H[k]の記憶装置にライン方向にデータを移動させる際はH[k+1]の記憶装置にデータを移動させ、H[k]の記憶装置にカラム方向にデータを移動させる際はL[k]の記憶装置にデータを移動させる前記制御信号、を出力すると共に、
処理数がn/4になるまで前記s回目の前記制御信号を各記憶装置に出力し、
各記憶装置は、
H[k]の入力側に接続された、H[k-1]からの入力とL[k]からの入力のいずれかを選択してH[k]に転送する第1の選択手段と、
L[k]の入力側に接続された、L[k+1]からの入力とH[k]からの入力のいずれかを選択してL[k]に転送する第2の選択手段と、
前記制御部と、H[k]、L[k]、第1の選択手及び段第2の選択手段とをそれぞれ接続する制御バスと、を有し、
前記制御部から供給される前記制御信号に基づき、前記第1の選択手段及び第2の選択手段がデータ移動を行うか否かを判定し、
データ移動を行う場合、前記第1の選択手段及び第2の選択手段が、カラム方向又はライン方向へデータを移動する、
ことを特徴とする集積装置。
【請求項8】
2ラインで2次元に配置されたn個(nは4以上の偶数)の記憶装置と、該記憶装置に記憶されたパラレルデータをシリアルデータに変換する制御部とを有する集積装置であって、
前記制御部は、処理回数をs(s=1,2,3...)、
ラインの一方をH、他方をL、
HとLの2つの記憶装置を1カラムとしてカラムの端から各カラムの番号をk(k=0,1,2...n/2-1)とし、各記憶装置をH[k],L[k]で表す場合、
s回目の処理において、
L[n/4-s]とH[n/4-1+s]の記憶装置に対し該記憶装置が記憶しているデータをカラム方向に移動させ、L[n/4-s+1]乃至L[n/4-1+s]とH[n/4-s]乃至H[n/4-2+s]の記憶装置に対し該記憶装置が記憶しているデータをライン方向へ移動させ、その他の記憶装置にはデータを移動させない制御信号であって、
L[k]の記憶装置にライン方向にデータを移動させる際はL[k-1]の記憶装置にデータを移動させ、L[k]の記憶装置にカラム方向へデータを移動させる際はH[k]の記憶装置にデータを移動させる前記制御信号を出力し、
H[k]の記憶装置にライン方向へデータを移動させる際はH[k+1]の記憶装置にデータを移動させ、H[k]の記憶装置にカラム方向へデータを移動させる際はL[k]の記憶装置にデータを移動させる前記制御信号を、出力すると共に、
前記処理数がn/4になるまで前記s回目の前記制御信号を各記憶装置に出力し、
各記憶装置は、
H[k]の入力側に接続された、H[k-1]からの入力とL[k]からの入力のいずれかを選択してH[k]に転送する第1の選択手段と、
L[k]の入力側に接続された、L[k+1]からの入力とH[k]からの入力のいずれかを選択してL[k]に転送する第2の選択手段と、
前記制御部と、H[k]、L[k]、第1の選択手及び段第2の選択手段とをそれぞれ接続する制御バスと、を有し、
前記制御部から供給される前記制御信号に基づき、前記第1の選択手段及び第2の選択手段がデータ移動を行うか否かを判定し、
データ移動を行う場合、前記第1の選択手段及び第2の選択手段が、カラム方向又はライン方向へデータを移動する、
ことを特徴とする集積装置。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate

【図5】
image rotate

【図6】
image rotate

【図7】
image rotate

【図8】
image rotate

【図9】
image rotate

【図10】
image rotate

【図11】
image rotate

【図12】
image rotate

【図13】
image rotate

【図14】
image rotate

【図15】
image rotate

【図16】
image rotate

【図17】
image rotate

【図18】
image rotate

【図19】
image rotate

【図20】
image rotate

【図21】
image rotate

【図22】
image rotate

【図23】
image rotate

【図24】
image rotate


【公開番号】特開2012−159995(P2012−159995A)
【公開日】平成24年8月23日(2012.8.23)
【国際特許分類】
【出願番号】特願2011−18942(P2011−18942)
【出願日】平成23年1月31日(2011.1.31)
【出願人】(000006747)株式会社リコー (37,907)
【Fターム(参考)】