説明

SIMD型マイクロプロセッサおよびSIMD型マイクロプロセッサのデータ転送方法

【課題】複数の画素データフォーマット変換を効率よく、かつ、回路規模の増大を抑えるように構成したSIMD型マイクロプロセッサおよびSIMD型マイクロプロセッサのデータ転送方法を提供する。
【解決手段】SIMD型マイクロプロセッサ1に、一列に並べられた複数のPE10を接続する転送バス20と、その転送バス20を分割するスイッチ21と、を備え、各PE10には、A1変換レジスタ13、A2変換レジスタ14と、B1変換レジスタ15、B2変換レジスタ16と、A1変換レジスタ13、A2変換レジスタ14の格納内容を転送バス20に出力する入出力回路22、23と、転送バス20上のデータをB1変換レジスタ15、B2変換レジスタ16に格納する入出力回路24、25と、入出力回路22、23、24、25及びスイッチ21をPEコントロール部30からのデータにより制御するデコーダ26と、を備える。

【発明の詳細な説明】
【技術分野】
【0001】
本発明は、1つの演算命令により複数のデータ等を並列処理するSIMD(Single Instruction-stream, Multiple Data-stream)型マイクロプロセッサおよびSIMD型マイクロプロセッサのデータ転送方法に関する。
【背景技術】
【0002】
画像処理専用マイクロプロセッサでは、SIMD(Single Instruction-stream Multiple Data-stream)型を採用することが多い。これは、1つの命令で複数のデータに対して同時に同じ演算処理が実行可能であるSIMD型マイクロプロセッサの特徴が画像処理に適しているためである。SIMD型マイクロプロセッサは、プロセッサエレメント(以下PE)と呼ばれる単位で演算器とレジスタを備えており、そのPEを複数個持ち、複数個のPEが同時に演算処理を行うことで、画像処理の効率を高めている。各PEは、それぞれが1個の画素の画像処理を担当し、それが複数あるため複数の画素が同時に演算処理できる。
【0003】
画像処理専用マイクロプロセッサでは、フィルター演算など隣接画素を参照して演算する画像処理に対応するために、隣接PEのレジスタを参照できるものがある。例えば、特許文献1には、隣接PEのレジスタに格納された画素データを参照するSIMD型マイクロプロセッサが示されている。この隣接PEのレジスタに格納された画素データを参照するとは、隣接する画素データを隣接するPEのレジスタに格納しておくということを意味しており、画素データの並びをPEの並びに対応させ配置することである。PEを1次元的に配置するSIMD型マイクロプロセッサの場合、2次元で表現される画素データの1次元方向が、PEの並びに合わせて配置される。例えば、64個のPEを備えるSIMD型マイクロプロセッサでは、64個の連続した画素データが配置される。
【0004】
特許文献2には、1PEに対し2個以上の画像データを配置するSIMD型マイクロプロセッサが提案されており、5通りの配置方法が示されている。このうち、特許文献2の図8、図9、図10で示される3通りについては処理対象の画像データからの切り出し方法が異なるが、SIMD型マイクロプロセッサ上の配置は同一であるので、実質的に3通りの配置方法(以下画素データフォーマット)があると考えられる。
【0005】
ここで、以下に説明する3通りの画素データフォーマットには一般名称がないため、以下αフォーマット、βフォーマット、γフォーマットと呼び、一例として32個のPEを備え、一つのPEにつき2個ずつの画素データを配置することができるSIMD型マイクロプロセッサで各フォーマットの特徴を説明する。
【0006】
図21にαフォーマットを示す。αフォーマットは、64個の連続した画素データD0〜D63が対象で、画素データD0,D1をプロセッサエレメントPE00に、画素データD2,D3をプロセッサエレメントPE01に、画素データD4,D5をプロセッサエレメントPE02に、・・・、画素データD62,D63をプロセッサエレメントPE31に、それぞれ配置する。
【0007】
図22にβフォーマットを示す。βフォーマットは、64個の連続した画素データD0〜D63が対象で、画素データD0,D32をプロセッサエレメントPE00に、画素データD1,D33をプロセッサエレメントPE01に、画素データD2,D34をプロセッサエレメントPE02に、・・・、画素データD31,D63をプロセッサエレメントPE31に、それぞれ配置する。
【0008】
図23にγフォーマットを示す。γフォーマットは、32個の連続した画素データDa00〜Da31と32個の連続した画素データDb00〜Db31とが対象で、画素データDa00,Db00をプロセッサエレメントPE00に、画素データDa01,Db01をプロセッサエレメントPE01に、画素データDa02,Db02をプロセッサエレメントPE02に、・・・、画素データDa31,Db31をプロセッサエレメントPE31に、それぞれ配置する。
【0009】
各画素データフォーマットには特徴があり、画像処理の種類、SIMD型マイクロプロセッサへの画像データ出力装置の構成都合などの要因から最適な画素データフォーマットを選択し、選択された画素データフォーマットを前提としたシステム構成とすればよい。
【0010】
上述した複数の画素データフォーマットを取り扱うSIMD型マイクロプロセッサも実現可能であり、画素データフォーマットの違いによる動作の違いは、モード切替による命令解釈の差とするか、命令そのものを画素データフォーマット毎に用意するかといった対応方法がある。
【0011】
また、PE上のレジスタと外部のメモリの間で画素データを転送する入出力装置や、SIMD型マイクロプロセッサが得意としないシリアル画像処理を専用に実行する外部画像処理装置も、SIMD型マイクロプロセッサ上の画素データフォーマットに従う必要があるが、このようなプロセッサ周辺装置の場合、IP(Intellectual Property:設計資産)として再利用する方法が多用される。
【0012】
この場合、開発時に存在するIPが、目的の画素データフォーマットに対応していれば問題はないが、対応していない場合には、直接的にそのIPを使うことができない。周辺装置側で対応するには、IPの改造か、あるいはIPを諦めて新規設計となる。また、目的の画素データフォーマットとそのフォーマットを処理する装置ではアルゴリズムとして相性が悪い場合は、新規設計であっても、開発工数以外に回路規模の増大や処理性能のダウンなどといった問題がある。
【0013】
同様のことがソフトウエアでも考えられ、既存の画像処理ソフトウエアを再利用において、ソフトウエアの前提とする画素データフォーマットと、システム側で予定している画素データフォーマットが異なる場合が考えられる。ソフトウエアで対応するには、ソフトウエアの改造か、あるいはソフトウエアを諦めて新規プログラミングとなる。目的の画素データフォーマットとそのフォーマットを処理するソフトウエアではアルゴリズムとして相性が悪い場合は、新規プログラミングであっても、プログラミング工数以外にプログラムコードサイズの増大や処理性能のダウンなどといった問題がある。
【0014】
このような問題があるため、複数の画素データフォーマットに対応するシステムを実現するためには、異なる画素データフォーマット間を変換できる手段が必要である。このフォーマット変換の目的のために、SIMD型マイクロプロセッサ外部にフォーマット変換装置を装備する方法がある。この装置は、例えば、PE上のレジスタに展開する画素データを、一度外部RAMに読み出し、再びRAMからPE上のレジスタに所望の画素データフォーマットで書き込むという動作を行う構成がある。
【発明の概要】
【発明が解決しようとする課題】
【0015】
上述したフォーマット変換装置を利用できれば、画素データフォーマット相互間の変換が可能になり、異なる画素データフォーマットに対応した周辺装置やソフトウエアであっても、同一システム上に実現可能となる。
【0016】
しかしながら、変換装置や画素データの一時記憶用のRAMが別途必要となるなど、相応の負荷が発生するという問題がある。そのため、SIMD型マイクロプロセッサ外部にフォーマット変換装置を持つことなく、SIMD型マイクロプロセッサ内部で画素データフォーマットの変換が可能な技術が求められている。
【0017】
SIMD型マイクロプロセッサ内部で画素データフォーマット変換を実現する場合、単純に考えられるのは、変換に必要なすべての経路を備えることである。図24にαフォーマットからβフォーマットへのフォーマット変換の例を示す。図24の左方がαフォーマットで配置された変換前のレジスタで、ここでは送信元レジスタとなる。図24の右方がβフォーマットで配置された変換後のレジスタで、ここでは受信先レジスタとなる。中央部に示された矢印が転送経路であり、黒丸印が送信元、矢先が受信先を示す。経路の実線は偶数番号の画素データの経路で、破線は奇数番号の画素データの経路を示している。
【0018】
この変換を一度に行う場合は図24に示す経路すべてが必要となり、回路規模が増大するという問題がある。図24ではαフォーマットからβフォーマットへの例であるが、逆の変換であるβフォーマットからαフォーマットの変換も同じ経路を画素データが逆に転送されるだけで、回路規模としては同等であり、やはり回路規模が増大する問題がある。
【0019】
回路規模を抑える方法として、ひとつの万能転送経路を用意し、転送を複数ステップに分けて実行する方法がある。図25に万能転送経路を示す。図25の万能転送経路100は、すべての送信元レジスタ101から出力でき、すべての受信先レジスタ102へ入力できる。これら出力、入力の制御は、制御回路103から一元的に行うことで、1回で1個のデータを所望の位置へ転送することが可能になる。したがって64個のデータを転送するには、64ステップが必要となる。
【0020】
この万能転送経路100を2重に配置し、1回の転送時間で2個の画素データを転送するという手段を用いれば、必要回路規模は倍増するが、全転送が終了するために必要なステップ数が半減できる。このように回路規模と得られる性能にはトレードオフが成立しており、SIMD型マイクロプロセッサの特徴に合わせて決定するものである。したがって、より優秀なSIMD型マイクロプロセッサを実現するためには、上記のトレードオフをより高次元に実現することが求められている。
【0021】
本発明はかかる問題を解決することを目的としている。
【0022】
すなわち、本発明は、複数の画素データフォーマット変換を効率よく、かつ、回路規模の増大を抑えるように構成したSIMD型マイクロプロセッサおよびSIMD型マイクロプロセッサのデータ転送方法を提供することを目的としている。
【課題を解決するための手段】
【0023】
請求項1に記載された発明は、一列に並べられた複数のプロセッサエレメントと、前記プロセッサエレメントを制御するPEコントロール部と、を備えたSIMD型マイクロプロセッサにおいて、一列に並べられた複数の前記プロセッサエレメントを互いに接続するデータバスと、前記データバスを分割するスイッチと、を備え、前記プロセッサエレメントには、データの送信元となる第1のレジスタと、データの受信先となる第2のレジスタと、前記第1のレジスタの格納内容を前記データバスに出力する出力制御手段と、前記データバス上のデータを前記第2のレジスタに格納する入力制御手段と、前記出力制御手段及び前記入力制御手段並びに前記スイッチを前記PEコントロール部から出力されるデータにより制御する制御手段と、が設けられていることを特徴とするSIMD型マイクロプロセッサである。
【0024】
請求項2に記載された発明は、請求項1に記載された発明において、前記スイッチが、一列に並べられた複数の前記プロセッサエレメントの中心から2のべき乗離れた位置の前記プロセッサエレメントに設けられていることを特徴とする。
【0025】
請求項3に記載された発明は、請求項1または2に記載された発明において、前記制御手段が、一列に並べられた複数の前記プロセッサエレメントの所定の範囲に位置する前記プロセッサエレメント内の前記第1のレジスタに格納されているデータを、前記所定の範囲と異なる範囲に位置する複数の前記プロセッサエレメントの前記第2のレジスタに転送するように構成されていることを特徴とする。
【0026】
請求項4に記載された発明は、請求項1乃至3のうちいずれか一項に記載された発明において、前記制御手段が、一列に並べられた複数の前記プロセッサエレメントの両端部に位置する前記プロセッサエレメントを除く前記プロセッサエレメント内の前記第1のレジスタに格納されているデータを、前記第2のレジスタに転送するように構成されていることを特徴とする。
【0027】
請求項5に記載された発明は、請求項1乃至4のうちいずれか一項に記載された発明において、前記制御手段が、一つの前記第1のレジスタに格納されているデータを一度に複数の前記第2のレジスタに転送するように構成されていることを特徴とする。
【0028】
請求項6に記載された発明は、請求項1乃至5のうちいずれか一項に記載された発明において、前記制御手段が、全ての前記第1のレジスタのうち、予め定めた前記第1のレジスタに格納されているデータを前記第2のレジスタに転送するように構成されていることを特徴とする。
【0029】
請求項7に記載された発明は、データの送信元となる第1のレジスタとおよびデータの受信先となる第2のレジスタが設けられたプロセッサエレメントと、前記プロセッサエレメントを制御するPEコントロール部と、複数の前記プロセッサエレメントを接続するデータバスと、前記データバスを分割するスイッチと、を備え、複数の前記プロセッサエレメントが一列に並べられたSIMD型マイクロプロセッサのデータ転送方法にであって、前記複数のプロセッサエレメントの前記第1のレジスタに所定の並びで格納されているデータを、前記所定の並びと異なる並びで前記第2のレジスタに格納する際の各データ転送ごとの入力および出力間での前記データバスの使用範囲を決定する第一の工程と、前記第一の工程で決定した前記データバスの使用範囲のうち、最も長い使用範囲のデータ転送を選択し、そのデータ転送の前記データバスの使用範囲以外を使用する前記データ転送のうち、前記データバスの使用範囲が最も長い前記データ転送を選択し、これらのデータ転送を一つの組合せとする第二の工程と、 残りのデータ転送の中から前記データバスの使用範囲が最も長い前記データ転送を選択し、そのデータ転送の前記データバスの使用範囲以外を使用する前記データ転送のうち、前記データバスの使用範囲が最も長い前記データ転送を選択し、これらのデータ転送を一つの組合せとする第三の工程と、前記第三の工程を繰り返し、全てのデータ転送の組合せを確定する第四の工程と、確定した組合せにおけるデータバスの使用範囲の間に前記スイッチによる前記データバスの分割点を定める第五の工程と、前記第五の工程で定めた分割点で前記スイッチを動作させ、前記第四の工程で確定した各データ転送の組み合わせを順次実行する第六の工程と、を備えることを特徴とするSIMD型マイクロプロセッサのデータ転送方法である。
【発明の効果】
【0030】
請求項1に記載の発明によれば、SIMD型マイクロプロセッサに、一列に並べられた複数のプロセッサエレメントを互いに接続するデータバスと、そのデータバスを分割するスイッチと、を備え、各プロセッサエレメントには、データの送信元となる第1のレジスタと、データの受信先となる第2のレジスタと、第1のレジスタの格納内容をデータバスに出力する出力制御手段と、データバス上のデータを第2のレジスタに格納する入力制御手段と、出力制御手段及び入力制御手段並びにスイッチをPEコントロール部から出力されるデータにより制御する制御手段と、が設けられているので、1つのデータバスで複数データを一度に転送可能であり、全転送が終了するまでの時間を短縮できる。また、各プロセッサエレメントには、第1のレジスタの格納内容をデータバスに出力、データバス上のデータを第2のレジスタに格納、バス分割用のスイッチの制御を統一して行うデコーダがあるので、PEコントロール部から制御は各PEのデコーダに対し、1種類の情報を伝達するだけでよく、回路規模、配線面積で有利である。したがって、複数の画素データフォーマット変換を行う機能を効率よく、かつ、回路規模の増大を抑えるように構成することができる。
【0031】
請求項2に記載の発明によれば、スイッチが、一列に並べられた複数のプロセッサエレメントの中心から2のべき乗離れた位置のプロセッサエレメントに設けられているので、データバス上でデータが通過するスイッチの数を削減できるため、データの転送に対して伝達速度や信号品質面で有利であり、SIMD型マイクロプロセッサ全体の性能向上や安定動作に繋げることができる。
【0032】
請求項3に記載の発明によれば、一列に並べられた複数のプロセッサエレメントの所定の範囲に位置するプロセッサエレメント内の第1のレジスタに格納されているデータを、所定の範囲と異なる範囲に位置する複数のプロセッサエレメントの第2のレジスタに転送するように構成されているので、異なる画像データ配置に変換する場合の画素データ列の両端に発生する無効画素を考慮した重複転送を容易に行うことができる。
【0033】
請求項4に記載の発明によれば、制御手段が、一列に並べられた複数のプロセッサエレメントの両端部に位置するプロセッサエレメントを除くプロセッサエレメント内の第1のレジスタに格納されているデータを、第2のレジスタに転送するように構成されているので、異なる画像データ配置に変換する場合の画素データ列の両端に発生する無効画素を考慮して必要なデータのみの転送を容易に行うことができる。
【0034】
請求項5に記載の発明によれば、制御手段が、一つの第1のレジスタに格納されているデータを一度に複数の第2のレジスタに転送するように構成されているので、例えば、画像の拡大処理を容易に行うことができる。
【0035】
請求項6に記載の発明によれば、制御手段が、全ての第1のレジスタのうち、予め定めた第1のレジスタに格納されているデータを第2のレジスタに転送するように構成されているので、例えば、画像の縮小処理を容易に行うことができる。
【0036】
請求項7に記載の発明によれば、データ転送する組合せを、データバスの使用範囲が長い順に決定しているので、同時に転送動作する複数の転送元の第1のレジスタと、複数の転送先の第2のレジスタと、データバスを分割するスイッチと、を効率よく選択して組合せることができる。
【図面の簡単な説明】
【0037】
【図1】本発明の第1の実施形態にかかるSIMD型マイクロプロセッサの構成図である。
【図2】図1に示したPE群の構成図である。
【図3】図1に示したPE群内の転送バスの構成図である。
【図4】図3に示した転送バスにおけるαフォーマットからβフォーマットへの変換ステップの説明図である。
【図5】図4に示された変換ステップを実行するためのデコーダの条件を示す表である。
【図6】図3に示した転送バスにおけるβフォーマットからαフォーマットへの変換ステップの説明図である。
【図7】図4に示された変換ステップを実行するためのデコーダの条件を示す表である。
【図8】本発明の第2の実施形態にかかるSIMD型マイクロプロセッサのPE群内の転送バスの構成図である。
【図9】図8に示した転送バスにおけるαフォーマットからβフォーマットへの変換ステップの説明図である。
【図10】図9に示された変換ステップを実行するためのデコーダの条件を示す表である。
【図11】本発明の第3の実施形態におけるαフォーマットからγフォーマットへの変換ステップの説明図である。
【図12】図11に示された変換ステップを実行するためのデコーダの条件を示す表である。
【図13】γフォーマットからαフォーマットへの変換ステップの説明図である。
【図14】図13に示された変換ステップを実行するためのデコーダの条件を示す表である。
【図15】本発明の第4の実施形態におけるαフォーマットでの2倍拡大動作の変換ステップの説明図である。
【図16】βフォーマットでの2倍拡大動作の変換ステップの説明図である。
【図17】本発明の第5の実施形態におけるαフォーマットでの1/2縮小動作の変換ステップの説明図である。
【図18】βフォーマットでの1/2縮小動作の変換ステップの説明図である。
【図19】転送バスを複数備えた場合のPE群内の構成図である。
【図20】19に示された転送バスを用いた場合のαフォーマットからβフォーマットへの変換ステップの説明図である。
【図21】αフォーマットの説明図である。
【図22】βフォーマットの説明図である。
【図23】γフォーマットの説明図である。
【図24】従来のαフォーマットからβフォーマットへの変換ステップの説明図である。
【図25】従来の万能転送経路を用いた構成の説明図である。
【発明を実施するための形態】
【0038】
[第1実施形態]
以下、本発明の第1の実施形態を、図1ないし図7を参照して説明する。図1は、本発明の第1の実施形態にかかるSIMD型マイクロプロセッサの構成図である。図2は、図1に示したPE群の構成図である。図3は、図1に示したPE群内の転送バスの構成図である。図4は、図3に示した転送バスにおけるαフォーマットからβフォーマットへの変換ステップの説明図である。図5は、図4に示された変換ステップを実行するためのデコーダの条件を示す表である。図6は、図3に示した転送バスにおけるβフォーマットからαフォーマットへの変換ステップの説明図である。図7は、図4に示された変換ステップを実行するためのデコーダの条件を示す表である。
【0039】
図1に本発明の第1の実施形態にかかるSIMD型マイクロプロセッサ1を示す。図1に示したSIMD型マイクロプロセッサ1は、グローバルプロセッサ2と、プロセッサエレメント(PE)群3と、外部インタフェース6と、を備えている。
【0040】
グローバルプロセッサ2は、プログラムを読み込み実行する独立のプロセッサであると同時に、各々のPE群3内の各PE10に対し動作の指示を出すコントローラである。グローバルプロセッサ2には、G0、G1、G2、G3、SP、PC、LS、LI、LN、Pといった各種レジスタ、プログラムを格納するProgram−RAM、及びデータを一時格納するData−RAMなどが装備されている。
【0041】
PE群3は複数のPE10が一列に並んだ配列体(集合体)であり、後述するように各PE10のレジスタがレジスタファイル4に属しており、各PE10の演算器19が演算アレイ5に属している。
【0042】
外部インタフェース6は、レジスタファイル4に格納されているデータを周辺装置7に出力したり、周辺装置7から入力されたデータをレジスタファイル4に格納したりする。
【0043】
周辺装置7は、例えばメモリ8の制御装置であり、メモリ8へのデータの読み書きなどのアクセス制御を行う。
【0044】
図2にPE群3の構成例を示す。図2には、1つのPE10と、そのPE10を制御するPEコントロール部30を示している。このPE10は通常複数個が実装されており、図2では、そのうちの1つを代表として図示しているものである。
【0045】
また、PE群3に設けられている全てのPE10は、データバスとしての転送バス20によってPEコントロール部30と接続されている。転送バス20は、図2に示すようにPE10を横切り、PE10と隣接するPE10へと接続されている。この転送バス20は、他のPE10と同様に図示していないが、すべてのPE10を貫通するバスである。
【0046】
PE10には、転送バス20を分割するスイッチ21が設けられている。スイッチ21は、後述するデコーダ26によって開閉されて、転送バス20の分割が制御される。
【0047】
PE10は、汎用レジスタ11、結果レジスタ12、第1のレジスタとしてのA1変換レジスタ13、第1のレジスタとしてのA2変換レジスタ14、第2のレジスタとしてのB1変換レジスタ15、第2のレジスタとしてのB2変換レジスタ16などの複数のレジスタと、演算器19と、スイッチ21と、入力制御手段、出力制御手段としての入出力回路22、23、24、25と、制御手段としてのデコーダ26と、を備えている。
【0048】
汎用レジスタ11は、外部インタフェース6からのアクセスによってデータが読み書きされるレジスタであり、図1のレジスタファイル4に属する。結果レジスタ12は、演算器19の演算結果が格納されるレジスタである。
【0049】
A1変換レジスタ13、A2変換レジスタ14は、後述する画素データフォーマット変換動作にデータ送信元として機能するレジスタである。B1変換レジスタ15、B2変換レジスタ16は、後述する画素データフォーマット変換動作にデータ受信先として機能するレジスタである。
【0050】
上述した汎用レジスタ11、結果レジスタ12、A1変換レジスタ13、A2変換レジスタ14、B1変換レジスタ15、B2変換レジスタ16は、PE内部データバス17と18に対してデータの入出力が可能となっている。ここで、データの入力とは、PE内部データバス17、18上のデータ内容をレジスタ内部に格納することであり、データの出力とは、レジスタ内部のデータ内容をPE内部データバス17、18上に出力することを意味する。
【0051】
演算器19は、PE内部データバス17と18からデータを入力し、演算を実行し、その結果を結果レジスタ12に格納する。
【0052】
入出力回路22は、転送バス20からA1変換レジスタ13へのデータの入力と出力とを切替えるための回路であり、デコーダ26によって入力と出力の切替えが制御される。入出力回路23は、転送バス20からA2変換レジスタ14へのデータの入力と出力とを切替えるための回路であり、デコーダ26によって入力と出力の切替えが制御される。入出力回路24は、転送バス20からB1変換レジスタ15へのデータの入力と出力とを切替えるための回路であり、デコーダ26によって入力と出力の切替えが制御される。入出力回路25は、転送バス20からB2変換レジスタ16へのデータの入力と出力とを切替えるための回路であり、デコーダ26によって入力と出力の切替えが制御される。
【0053】
デコーダ26は、入出力回路22、23、24、25およびスイッチ21の制御信号を生成する。また、デコーダ26は、PEコントロール部30から制御信号線31が接続されている。この制御信号線31には、後述するステップ数を表す5bitの制御信号がPEコントロール部30から出力され、その信号によって入出力回路22、23、24、25およびスイッチ21の制御信号が生成される。
【0054】
PEコントロール部30は、グローバルプロセッサ2からの信号を受けて、全てのPE10の動作をコントロールする制御信号を発信しており、PE10はその制御信号に従って動作する。なお、PEコントロール部30は、PE群3内でなくグローバルプロセッサ2と一体的に構成されていても良い。
【0055】
次に、転送バス20の全体の構成を説明するために32個のPE10を一列に配置した構成を図3に示す。図3は、図2で示されたPE10であるPE10_00〜PE10_31と、それらを貫通して配置されている転送バス20を中心に図示している。PE10は、PE10_00を1番目(図3の最上方)に、PE10_01を2番目に、PE10_02を3番目に、…、PE10_31を32番目(図3の最下方)となるよう配置しているが、中間のPE10の一部は、紙面の関係で省略している。
【0056】
各PE10においては、以下の説明に必要な、A1変換レジスタ13、A2変換レジスタ14、B1変換レジスタ15、B2変換レジスタ16と、入出力回路22、23、24、25と、スイッチ21と、を除いて省略している。
【0057】
また、図3において、PE10には、スイッチ21を持つPE10と、持たないPE10の2種類がある。PE10_08乃至PE10_23はスイッチ21を持つPE10であり、それ以外はスイッチ21を持たないPE10である。また、スイッチ21で切断(分割)された転送バス20のうち、当該PE10のスイッチ21から見て図3の上側に位置する部分を転送バス20上、図3の下側に位置する部分を転送バス20下と呼ぶことにする。また、A1変換レジスタ13、A2変換レジスタ14、B1変換レジスタ15、B2変換レジスタ16内に括弧付きで表示されている文字は、格納されるデータを表している。
【0058】
次に、図2、図3で示されたSIMD型マイクロプロセッサ1のPE群3における画素データフォーマット変換動作を説明する。まず、図21に示したαフォーマットから、図22に示したβフォーマットへの変換を説明する。αフォーマットとして、64個の連続した画素データをD00〜D63とし、それぞれをA1変換レジスタ13あるいはA2変換レジスタ14に格納する。即ち、画素データD00をPE10_00のA1変換レジスタ13に、画素データD01をPE10_00のA2変換レジスタ14に、画素データD02をPE10_01のA1変換レジスタ13に、画素データD03をPE10_01のA2変換レジスタ14に、画素データD04をPE_02のA1変換レジスタ13に、画素データD05をPE10_02のA2変換レジスタ13に、・・・、画素データD62をPE10_31のA1変換レジスタ13に、画素データD63をPE10_31のA2変換レジスタ14に格納している。
【0059】
このαフォーマットを32ステップに分けてβフォーマットへ画素データフォーマットの変換を行う。各ステップを模式的に表現した図4に示す。PE10が上からPE10_00〜PE10_31の順に表示されている。図4の左側欄にはA1変換レジスタ13,A2変換レジスタ14を示しており、画素データD00〜D63を変換前のαフォーマットで格納されている。中央欄の表示は、各ステップにおけるデータの転送を示している。縦同一列の矢印は同時に動作するステップを意味している。左から第1のステップ、第2のステップ、・・・、第32のステップの順である。黒丸印が送信元、矢先が受信先を示す。経路の実線は偶数番号のデータ経路で、破線は奇数番号のデータ経路を示している。中央欄の中間付近に表示している短い水平方向の線分は、スイッチ21による転送バスの切断箇所を示している。また、中央欄上下の目盛はステップ数を示している。右側欄にはB1変換レジスタ15,B2変換レジスタ16を示しており、画素データD00〜D63が変換後のβフォーマットで格納されている。以下に各ステップ毎の具体的な動作内容を抜粋して示す。
【0060】
第1のステップは、PE10_08のスイッチ21で転送バス20を切断し、そのほかのスイッチ21はすべて接続状態とする。次に、PE10_00のA1変換レジスタ13の画素データD00を、転送バス20上を経て、PE10_00のB1変換レジスタ15へ転送する。そして、PE10_08のA1変換レジスタ13の画素データD16を、転送バス20下を経て、PE10_16のB1変換レジスタ15へ転送する。
【0061】
第2のステップは、PE10_08のスイッチ21で転送バス20を切断し、そのほかのスイッチ21はすべて接続状態とする。次に、PE10_00のA2変換レジスタ14の画素データD01を、転送バス20上を経て、PE10_01のB1変換レジスタ15へ転送する。そして、PE10_08のA2変換レジスタ14の画素データD17を、転送バス20下を経て、PE10_17のB1変換レジスタ15へ転送する。
【0062】
第3のステップは、PE10_09のスイッチ21で転送バス20を切断し、そのほかのスイッチ21はすべて接続状態とする。次に、PE10_01のA1変換レジスタ13の画素データD02を、転送バス20上を経て、PE10_02のB1変換レジスタ15へ転送する。そして、PE10_09のA1変換レジスタ13の画素データD18を、転送バス20下を経て、PE10_18のB1変換レジスタ15へ転送する。
【0063】
第4〜第31のステップは、上述した第1〜第3のステップと同じ要領でスイッチ21を切替えて1ステップに付き2つのデータ転送を行い、最後の第32のステップは、PE10_23スイッチ21で転送バス20を切断し、そのほかのスイッチ21はすべて接続状態とする。次に、PE10_23のA2変換レジスタ14の画素データD47を、転送バス20上を経て、PE10_15のB2変換レジスタ16へ転送する。そして、PE10_31のA2変換レジスタ14の画素データD63を、転送バス20下を経て、PE10_31のB2変換レジスタ16へ転送する。
【0064】
上述した画素データフォーマット変換の結果、PE10_00のB1変換レジスタ15には画素データD00、PE10_01のB1変換レジスタ15には画素データD01、PE10_02のB1変換レジスタ15には画素データD02、・・・、PE10_30のB1変換レジスタ15には画素データD30、PE10_31のB1変換レジスタ15には画素データD31、PE10_00のB2変換レジスタ16には画素データD32、PE_01のB2変換レジスタ16には画素データD33、・・・、PE10_30のB2変換レジスタ16には画素データD62、PE10_31のB2変換レジスタ16には画素データD63、がそれぞれ配置されている。即ち、これはβフォーマットのデータ配置である。なお、画素データD0〜D31と画素データD32〜D63が別の独立したデータ列として以降の処理を行う場合は、変換後のフォーマットはγフォーマットのデータ配置として考えることもできる。
【0065】
図10より、αフォーマットからβフォーマットへ変換するための全経路が用意されていることがわかる。また、転送バス20は1組であるが、64ステップを要することなく、半分のステップ数で実現できている。
【0066】
次に、このような動作を行うための制御方法について説明する。最初の第1のステップから、最後の第32のステップで説明したように、各PE10に対する指示は5つの要素を含んでいる。即ち、
(1)スイッチ21での転送バス20の切断箇所指定。
(2)転送バス20上の経路に対する出力PE10の指定。
(3)転送バス20上の経路に対する入力PE10の指定。
(4)転送バス20下の経路に対する出力PE10の指定。
(5)転送バス20下の経路に対する入力PE10の指定。
の5つである。これらの指示は図2におけるPEコントロール部30から制御信号線31を介して発信される。本実施形態では図2に示したように、PE10にはデコーダ26が備えられており、スイッチ21と、入出力回路22、23、24、25と、の制御を行う。つまり、前述の(1)がスイッチ21の制御に相当し、前述の(2)、(4)が入出力回路22、23の制御に相当し、前述の(3)、(5)が入出力回路24、25の制御に相当する。そして、本実施形態において、αフォーマットからβフォーマットに変換する動作を実行するためには、制御信号線31にはステップ数を示す5bitの信号をPEコントロール部30から発信することで前記(1)〜(5)の要素を全て指定することができる。
【0067】
この5bitの信号を、N[4:0]と表現する。2進数を表す記号であるbを数値の後に付けて表現すると、N=00000bは第1のステップを表し、N=00001bは第2のステップを表し、N=00010bは第3のステップを表し、N=00011bは第4のステップを表し、・・・、N=11111bは第32のステップを表す。
【0068】
したがって、デコーダ26は、このN[4:0]を入力情報として、前述の5つの指定信号を出力情報としている。出力情報と入力情報の関係式は次の通りである。
(1a)スイッチ21での転送バス20の切断箇所指定は、{N[4],〜N[4],N[3],N[2],N[1]}。
(2a)転送バス20上の経路に対する出力PE10の指定は、{N[4],0,N[3],N[2],N[1]}、N[0]=0ならばA1変換レジスタ13から、N[0]=1ならばA2変換レジスタ14から出力する。
(3a)転送バス20上の経路に対する入力PE10の指定は、{0,N[3],N[2],N[1],N[0]}、N[4]=0ならばB1変換レジスタ15へ、N[4]=1ならばB2変換レジスタ16へ入力する。
(4a)転送バス20下の経路に対する出力PE10の指定は、{N[4],1,N[3],N[2],N[1]}、N[0]=0ならばA1変換レジスタ13から、N[0]=1ならばA2変換レジスタ14から出力する。
(5a)転送バス20下の経路に対する入力PE10の指定は、{1,N[3],N[2],N[1],N[0]}、N[4]=0ならばB1変換レジスタ15へ、N[4]=1ならばB2変換レジスタ16へ入力する。
なお、上述した関係式で「〜:チルダ」はビット否定を示している。
【0069】
この関係式で、デコーダ26が入力信号N[4:0]から判定する指定PE番号を、ステップごとの一覧表に表したのが図5である。項目は左より、ステップ、制御信号Nのbit4、同bit3、同bit2、同bit1、同bit0、(1a)転送バス20を切断するスイッチ21を含むPE番号、(2a)転送バス20上の経路に対する出力PE番号と、そのレジスタ指定、(3a)転送バス20上の経路に対する入力PE番号と、そのレジスタ指定、(4a)転送バス20下の経路に対する出力PE番号と、そのレジスタ指定、(5a)転送バス20下の経路に対する入力PE番号と、そのレジスタ指定、である。つまり、本表で指定されたPE番号のデコーダ26がスイッチ21の切り替えや入出力回路22、23、24、25の切り替え信号を出力する。即ち、本表で、αフォーマットからβフォーマットへの変換動作を全て表現している。
【0070】
次に、図22に示したβフォーマットから図21に示したαフォーマットへの変換動作を説明する。βフォーマットとして、64個の連続した画素データをD00〜D63とし、それぞれをB1変換レジスタ15あるいはB2変換レジスタ16に格納する。即ち、画素データD00をPE10_00のB1変換レジスタ15に、画素データD01をPE10_01のB1変換レジスタ15に、画素データD02をPE10_02のB1変換レジスタ15に、・・・、画素データD30をPE10_30のB1変換レジスタ15に、画素データD31をPE10_31のB1変換レジスタ15に、画素データD32をPE10_00のB2変換レジスタ16に、画素データD33をPE10_01のB2変換レジスタ16に、・・・、画素データD62をPE10_30のB2変換レジスタ16に、画素データD63をPE10_31のB2変換レジスタ16に格納している。
【0071】
このβフォーマットを32ステップに分けてαフォーマットへ画素データフォーマットの変換を行う。各ステップを図4と同様に模式的に表現した図6に示す。
【0072】
上述した画素データフォーマット変換の結果、画素データD00がPE10_00のA1変換レジスタ13に、画素データD01がPE10_00のA2変換レジスタ14に、画素データD02がPE10_01のA1変換レジスタ13に、画素データD03がPE_01のA2変換レジスタ14に、画素データD04がPE10_02のA1変換レジスタ13に、画素データD05がPE10_02のA2変換レジスタ14に、・・・、画素データD62がPE10_31のA1変換レジスタ13に、画素データD63がPE10_31のA2変換レジスタ14にそれぞれ格納されており、これはαフォーマットのデータ配置である。
【0073】
この変換におけるデコーダ26の出力情報と入力情報の関係式は次の通りである。
(1b)スイッチ21での転送バス20の切断箇所指定は、{N[4],〜N[4],N[3],N[2],N[1]}。
(2b)転送バス20上の経路に対する出力PE10の指定は、{0,N[3],N[2],N[1],N[0]}、N[4]=0ならばB1変換レジスタ15から、N[4]=1ならばB2変換レジスタ16から出力する。
(3b)転送バス20上の経路に対する入力PE10の指定は、{N[4],0,N[3],N[2],N[1]}、N[0]=0ならばA1変換レジスタ13へ、N[0]=1ならばA2変換レジスタ14へ入力する。
(4b)転送バス20下の経路に対する出力PE10の指定は、{1,N[3],N[2],N[1],N[0]}、N[4]=0ならばB1変換レジスタ15から、N[4]=1ならばB2変換レジスタ16から出力する。
(5b)転送バス20下の経路に対する入力PE10の指定は、{N[4],1,N[3],N[2],N[1]}、N[0]=0ならばA1変換レジスタ13へ、N[0]=1ならばA2変換レジスタ14へ入力する。
【0074】
この関係式で、デコーダ26が入力信号N[4:0]から判定する指定PE番号を、ステップごとの一覧表に表したのが図7である。項目は図5と同様に、左より、ステップ、制御信号Nのbit4、同bit3、同bit2、同bit1、同bit0、(1b)転送バス20の切断するスイッチ21を含むPE番号、(2b)転送バス20上の経路に対する出力PE番号と、そのレジスタ指定、(3b)転送バス20上の経路に対する入力PE番号と、そのレジスタ指定、(4b)転送バス20下の経路に対する出力PE番号と、そのレジスタ指定、(5b)転送バス20下の経路に対する入力PE番号と、そのレジスタ指定、である。つまり、本表で指定されたPE番号のデコーダ26がスイッチ21の切り替えや入出力回路22、23、24、25の切り替え信号を出力する。即ち、本表で、βフォーマットからαフォーマットへの変換動作を全て表現している。
【0075】
なお、上述したβフォーマットからαフォーマットへの変換において、第1のレジスタである送信元をB1レジスタ15およびB2レジスタ16とし、第2のレジスタである受信先をA1レジスタ13およびA2レジスタ14としているが、αフォーマットからβフォーマットへの変換と同様に送信元をA1レジスタ13およびA2レジスタ14とし、受信先をB1レジスタ15およびB2レジスタ16としてもよい。勿論、αフォーマットからβフォーマットへの変換において、送信元と受信先とを逆にしてもよい。
【0076】
本実施形態によれば、SIMD型マイクロプロセッサ1に、一列に並べられた複数のPE10を接続する転送バス20と、その転送バス20を分割するスイッチ21と、を備え、各PEには、データの送信元となるA1変換レジスタ13、A2変換レジスタ14と、データの受信先となるB1変換レジスタ15、B2変換レジスタ16と、A1変換レジスタ13、A2変換レジスタ14の格納内容を転送バス20に出力する入出力回路22、23と、転送バス20上のデータをB1変換レジスタ15、B2変換レジスタ16に格納する入出力回路24、25と、入出力回路22、23、24、25及びスイッチ21をPEコントロール部30からのデータにより制御するデコーダ26と、が設けられているので、複数データを一度に転送可能であり、全転送が終了するまでの時間を短縮できる。各PEには、A1変換レジスタ13、A2変換レジスタ14の格納内容を転送バス20に出力、転送バス20上のデータをB1変換レジスタ15、B2変換レジスタ16に格納、転送バス20分割用のスイッチ21の制御を統一して行うデコーダ26があるので、PEコントロール部30から制御は各PEのデコーダ26に対し、1種類の情報を伝達するだけでよく、回路規模、配線面積で有利である。したがって、複数の画素データフォーマット変換を行う機能を効率よく、かつ、回路規模の増大を抑えるように構成することができる。
【0077】
[第2実施形態]
次に、本発明の第2の実施形態を図8ないし図10を参照して説明する。なお、前述した第1の実施形態と同一部分には、同一符号を付して説明を省略する。図8は、本発明の第2の実施形態にかかるSIMD型マイクロプロセッサのPE群内の転送バスの構成図である。図9は、図8に示した転送バスにおけるαフォーマットからβフォーマットへの変換ステップの説明図である。図10は、図9に示された変換ステップを実行するためのデコーダの条件を示す表である。
【0078】
図8に、本実施形態における転送バス20の全体の構成を示す。図8では紙面の都合で、PE10_00からPE10_06までとPE10_25からPE10_31までは省略しているが、これら省略された部分にはスイッチ21を持たないPE10が配置されている。本実施形態が第1の実施形態と構成が異なる部分は、図3がPE10_08〜PE10_23はスイッチ21を持つPE10であるのに対し、図8でスイッチ21を持つPE10は、PE10_08、PE10_12、PE10_14、PE10_15、PE10_16、PE10_17、PE10_19、PE10_23に限られており、それ以外はスイッチ21を持たないPE10となっている点である。これはPE10_00〜PE10_31の列の中心であるPE10_15とPE10_16の間から2のべき乗離れた位置のPE10にスイッチ21が設けられていることを意味する。図9に本実施形態の動作を図4などと同様に表現して示す。
【0079】
本実施形態において、αフォーマットからβフォーマットに変換する動作説明する。本実施形態の出力情報と入力情報の関係式は次の通りである。
【0080】
(1c)スイッチ21での転送バス20の切断箇所指定は個別に行う。PE10_08のスイッチ21が切断となる条件は、N[4]=0かつN[3]=0、PE10_12のスイッチ21が切断となる条件は、N[4]=0かつN[3]=1かつN[2]=0、PE10_14のスイッチ21が切断となる条件は、N[4]=0かつN[3]=1かつN[2]=1かつN[2]=0、PE10_15のスイッチ21が切断となる条件は、N[4]=0かつN[3]=1かつN[2]=1かつN[2]=1、PE10_16のスイッチ21が切断となる条件は、N[4]=1かつN[3]=0かつN[2]=0かつN[2]=0、PE10_17のスイッチ21が切断となる条件は、N[4]=1かつN[3]=0かつN[2]=0かつN[2]=1、PE10_19のスイッチ21が切断となる条件は、N[4]=1かつN[3]=0かつN[2]=1、PE10_23のスイッチ21が切断となる条件は、N[4]=1かつN[3]=1。
(2c)転送バス20上の経路に対する出力PE10の指定は、{N[4],0,N[3],N[2],N[1]}、N[0]=0ならばA1変換レジスタ13から、N[0]=1ならばA2変換レジスタ14から出力する。
(3c)転送バス20上の経路に対する入力PE10の指定は、{0,N[3],N[2],N[1],N[0]}、N[4]=0ならばB1変換レジスタ15へ、N[4]=1ならばB2変換レジスタ16へ入力する。
(4c)転送バス20下の経路に対する出力PE10の指定は、{N[4],1,N[3],N[2],N[1]}、N[0]=0ならばA1変換レジスタ13から、N[0]=1ならばA2変換レジスタ14から出力する。
(5c)転送バス20下の経路に対する入力PE10の指定は、{1,N[3],N[2],N[1],N[0]}、N[4]=0ならばB1変換レジスタ15へ、N[4]=1 ならばB2変換レジスタ16へ入力する。
【0081】
この関係式で、デコーダ26が入力信号N[4:0]から判定する指定PE番号を、ステップごとの一覧表に表したのが図10である。指定条件の(2c)、(3c)、(4c)、(5c)は、第1の実施形態と同じであり、差異があるのはスイッチ21の動作条件である(1c)のみである。
【0082】
本実施形態によれば、スイッチ21が、一列に並べられた複数のPE10の中心から2のべき乗離れた位置のPE10に設けられているので、データが通過するスイッチ21の数を削減できるため、データの転送に対して伝達速度や信号品質面で有利であり、SIMD型マイクロプロセッサ1全体の性能向上や安定動作に繋げることができる。
【0083】
なお、第1の実施形態や第2の実施形態で説明したように、スイッチ21は全てのPE10に設けるよりも、変換動作に必要なPE10に設ける方が無駄な回路を削減できるために好ましい。
【0084】
[第3実施形態]
次に、本発明の第3の実施形態を図11ないし図14を参照して説明する。なお、前述した第1の実施形態と同一部分には、同一符号を付して説明を省略する。図11は、本発明の第3の実施形態におけるαフォーマットからγフォーマットへの変換ステップの説明図である。図12は、図11に示された変換ステップを実行するためのデコーダの条件を示す表である。図13は、γフォーマットからαフォーマットへの変換ステップの説明図である。図14は、図13に示された変換ステップを実行するためのデコーダの条件を示す表である。
【0085】
本実施形態では、γフォーマットの変換を行う。本実施形態は、第1の実施形態と構成は同じだが、デコーダ26のデコード内容が異なる。αフォーマットからγフォーマットへの変換動作時のデコーダ26の出力情報と入力情報の関係式は次の通りである。
【0086】
(1d)スイッチ21での転送バス20の切断箇所指定は、{N[4],〜N[4],N[3],N[2],N[1]}。
(2d)転送バス20上の経路に対する出力PE10の指定は、N[4]=0ならば{N[4],0,N[3],N[2],N[1]}、N[4]=1ならば{N[4],0,N[3],N[2],N[1]}−8、N[0]=0ならばA1変換レジスタ13から、N[0]=1ならばA2変換レジスタ14から出力する。
(3d)転送バス20上の経路に対する入力PE10の指定は、{0,N[3],N[2],N[1],N[0]}、N[4]=0ならばB1変換レジスタ15へ、N[4]=1ならばB2変換レジスタ16へ入力する。
(4d)転送バス20下の経路に対する出力PE10の指定は、N[4]=0ならば{N[4],1,N[3],N[2],N[1]}、N[4]=1ならば{N[4],1,N[3],N[2],N[1]}−8、N[0]=0ならばA1変換レジスタ13から、N[0]=1ならばA2変換レジスタ14から出力する。
(5d)転送バス20下の経路に対する入力PE10の指定は、{1,N[3],N[2],N[1],N[0]}、N[4]=0ならばB1変換レジスタ15へ、N[4]=1ならばB2変換レジスタ16へ入力する。
【0087】
この関係式で、デコーダ26が入力信号N[4:0]から判定する指定PE番号を、ステップごとの一覧表に表したのが図12である。指定条件の(1d)、(3d)、(5d)は、第1の実施形態と同じであり、転送バス20へ出力する変換レジスタの指定の動作条件である(2d)、(4d)のみが異なる。これらの動作を図4と同様に表したのが図11である。
【0088】
図11において変換前はαフォーマットである。画素データD00をPE10_00のA1変換レジスタ13に、画素データD01をPE10_00のA2変換レジスタ14に、画素データD02をPE10_01のA1変換レジスタ13に、画素データD03をPE10_01のA2変換レジスタ14に、画素データD04をPE10_02のA1変換レジスタ13に、画素データD05をPE10_02のA2変換レジスタ14に、・・・、画素データD62をPE10_31のA1変換レジスタ13に、画素データD63をPE10_31のA2変換レジスタ14に格納している。
【0089】
変換後は、PE10_00のB1変換レジスタ15には画素データD00、PE10_01のB1変換レジスタ15には画素データD01、PE10_02のB1変換レジスタ15には画素データD02、・・・、PE10_30のB1変換レジスタ15には画素データD30、PE10_31のB1変換レジスタ15には画素データD31、PE10_00のB2変換レジスタ16には画素データD24、PE10_01のB2変換レジスタ16には画素データD25、・・・、PE10_30のB2変換レジスタ16には画素データD54、PE10_31のB2変換レジスタ16には画素データD55、が配置されている。この変換後のフォーマットには、画素データD24〜D31が重複して配置されているのに加え、画素データD56〜D63が消滅している。
【0090】
この変換は、αフォーマットから図23に示したγフォーマットへの変換を意味しており、γフォーマットではデータ列が2本という取り扱いとした上で、αフォーマットのデータ列を2分割している。さらに2分割したデータ列をSIMD型マイクロプロセッサ1でフィルター処理などの画像処理を行うときに、隣接画素の参照演算を行えば、2列の独立したデータ列として扱うγフォーマットでは、それぞれのデータ列の両端に無効画素が発生する。この例では発生する無効画素を両端から4画素としている。
【0091】
画像データを分割する時には、分割の後発生する無効画素数を考慮して、その画素数分を重複しておかねばならない。例えば、4画素の無効画素が発生する画像処理を考えた場合、αフォーマットで処理すると、画素データD00〜D63の両端の4画素分、すなわち画素データD00〜D03と画素データD60〜D63が無効画素になる。βフォーマットでも同様に、画素データD00〜D63の両端の4画素分、即ち画素データD00〜D03と画素データD60〜D63が無効画素になる。γフォーマットの場合、画素データD00〜D31の両端の4画素分である画素データD00〜D03と画素データD28〜D31と、画素データD32〜D63の両端の4画素分である画素データD32〜D35と画素データD60〜D63が無効画素になる。αフォーマットからγフォーマットへ変換する際には、同じ条件である画素データD00〜D03を考慮する必要はないが、画素データD28〜D35も無効画素になることには考慮が必要となる。
【0092】
したがって、αフォーマットからγフォーマットへの変換の際に新たに発生する無効画素を考慮して、本来の画像処理データの消失を防ぐ目的で、無効画素分の重複が必要になるため、B2変換レジスタ16には画素8個分を重複させ、画素データD24からのデータ配置を行う。これで、γフォーマットで画像処理を行った結果、PE10_28〜PE31が無効画素となっても、画素データD28〜D31はPE10_04〜PE10_07で有効である。同様に画素データD24〜D27はPE10_24〜PE10_27が有効であるため、PE10_00〜PE10_03に重複配置された画素データD28〜D31が無効画素となっても消失はない。即ち、一列に並べられた複数のPE10の所定の範囲に位置するPE10内のA1変換レジスタ13およびA2変換レジスタ14に格納されているデータを、前記所定の範囲と異なる範囲に位置する複数のPE10のB1変換レジスタ15およびB2変換レジスタ16に転送している。なお、画素を重複させるため、画素データD56〜D63はγフォーマットでは配置することができない。
【0093】
このようにフォーマット変換の種類によっては、隣接画素参照による無効画素化対策が必要であるが、本実施形態のように構成することで実現可能である。
【0094】
次に、γフォーマットからαフォーマットへの変換動作を説明する。γフォーマットからαフォーマットへの変換動作時のデコーダ26の入力情報と出力情報の関係式は次の通りである。
【0095】
(1e)スイッチ21での転送バス20の切断箇所指定は、{N[4],〜N[4],N[3],N[2],N[1]}。
(2e)転送バス20上の経路に対する出力PE10の指定は、{0,N[3],N[2],N[1],N[0]}、N[4]=0ならば{0,N[3],N[2],N[1],N[0]}、N[4]=1ならば{0,N[3],N[2],N[1],N[0]}+4、N[4]=0ならばB1変換レジスタ15から、N[4]=1ならばB2変換レジスタ16から出力する。
(3e)転送バス20上の経路に対する入力PE10の指定は、N[4]=0ならば{N[4],0,N[3],N[2],N[1]}+2、N[4]=1ならば{N[4],0,N[3],N[2],N[1]}、N[0]=0ならばA1変換レジスタ13へ、N[0]=1ならばA2変換レジスタ14へ入力する。
(4e)転送バス20下の経路に対する出力PE10の指定は、{1,N[3],N[2],N[1],N[0]}+4、N[4]=0ならば{1,N[3],N[2],N[1],N[0]}−4、N[4]=1ならば{1,N[3],N[2],N[1],N[0]}、N[4]=0ならばB1変換レジスタ15から、N[4]=1ならばB2変換レジスタ16から出力する。
(5e)転送バス20下の経路に対する入力PE10の指定は、N[4]=0ならば{N[4],0,N[3],N[2],N[1]}、N[4]=1ならば{N[4],0,N[3],N[2],N[1]}−2、N[0]=0ならばA1変換レジスタ13へ、N[0]=1ならばA2変換レジスタ14へ入力する。
【0096】
この関係式で、デコーダ26が入力信号N[4:0]から判定する指定PE番号を、ステップごとの一覧表に表したのが図14である。ただし、この変換では、00100b≦N[4:0]≦11011bの範囲である。これらの動作を図4と同様に表したのが図13である。なお、ステップ数は、他の実施形態と図面上の記載を合わせるために00100b≦N[4:0]≦11011bとしているが、00000b≦N[4:0]≦10111bとしても構わない。
【0097】
図13において変換前はγフォーマットである。画素データDa00をPE10_00のA1変換レジスタ13に、画素データDa01をPE10_01のA1変換レジスタ13に、画素データDa02をPE10_02のA1変換レジスタ13に、画素データDa03をPE10_03のA1変換レジスタ13に、・・・、画素データD31をPE10_31のA1変換レジスタ13に、画素データDb00をPE10_00のA2変換レジスタ14に、画素データDb01をPE10_01のA2変換レジスタ14に、画素データDb02をPE10_02のA2変換レジスタ14に、画素データDb03をPE10_03のA2変換レジスタ14に、・・・、画素データD31をPE10_31のA2変換レジスタ14に、格納している。
【0098】
変換後は、PE10_04のA1変換レジスタ13に画素データDa04、PE10_04のA2変換レジスタ14に画素データDa05、PE10_05のA1変換レジスタ13に画素データDa06、PE10_05のA2変換レジスタ14に画素データDa07、・・・、PE10_15のA1変換レジスタ13に画素データDa26、PE10_15のA2変換レジスタ14に画素データD27、PE10_16のA1変換レジスタ13に画素データDb04、PE10_17のA2変換レジスタ14に画素データDb05、PE04のA1変換レジスタ13に画素データDb06、PE10_04のA2変換レジスタ14に画素データDb07、・・・、画素データPE27のA1変換レジスタ13には画素データDb26、PE10_27のA2変換レジスタ14には画素データDb27、が配置されている。変換前のγフォーマットでの、画素データDa00〜Da03と画素データDa28〜Da31と画素データDb00〜Db03と画素データDb28〜Db31は無効画素として扱い、変換後のデータ配置には反映していない。つまり、有効画素のみの転送を行っている。即ち、一列に並べられた複数のPE10の両端部に位置するPE10を除くPE10内のA1変換レジスタ13およびA2変換レジスタ14に格納されているデータを、B1変換レジスタ15およびB2変換レジスタ16に転送している。
【0099】
本実施形態によれば、PE10_00〜PE10_31のうち、PE10_12〜PE10_15のA1変換レジスタ13、A2変換レジスタ14に格納されているデータを、PE10_00〜PE10_03のB2変換レジスタ16とPE10_28〜PE10_31のB1変換レジスタ15とに転送するように各デコーダ26が構成されているので、αフォーマットからγフォーマットに変換する場合の画素データ列の両端に発生する無効画素を考慮した重複転送を容易に行うことができる。
【0100】
また、PE10_00〜PE10_31の両端部であるPE10_00〜PE10_03とPE10_28〜PE10_31を除くPE10内のA1変換レジスタ13、A2変換レジスタ14に格納されているデータを、B1変換レジスタ15、B2変換レジスタ16に転送するように構成されているので、γフォーマットからαフォーマットに変換する場合の画素データ列の両端に発生する無効画素を考慮して必要なデータのみの転送を容易に行うことができる。
【0101】
[第4実施形態]
次に、本発明の第4の実施形態を図15ないし図16を参照して説明する。なお、前述した第1〜第3の実施形態と同一部分には、同一符号を付して説明を省略する。図15は、本発明の第4の実施形態におけるαフォーマットでの2倍拡大動作の変換ステップの説明図である。図16は、βフォーマットでの2倍拡大動作の変換ステップの説明図である。
【0102】
本実施形態では、2倍拡大変換を行う。本実施形態は、第1の実施形態と構成は同じだが、デコーダ26のデコード内容が異なる。αフォーマットでの2倍拡大の動作を表示したのが図15である。図15によればαフォーマットで配置された画素データD00〜D31に対して各画素データを2個ずつ重複配置した結果が得られている。これは、重複処理、冗長処理と呼ぶこともある処理である。この処理の後に平滑化などの処理を行うのが、画像処理の拡大処理では一般的である。
【0103】
次に、βフォーマットにおける2倍拡大変換を説明する。2倍拡大の動作を表示したのが図16である。βフォーマットで配置された画素データD00〜D31に対して各画素データを2個ずつ重複配置した結果が得られている。即ち、一つのA1変換レジスタ13またはA2変換レジスタ14に格納されているデータを一度に複数のB1変換レジスタ15またはB2変換レジスタ16に転送している。
【0104】
本実施形態によれば、デコーダ26が、一つのA1変換レジスタ13またはA2変換レジスタ14に格納されているデータを、一度に複数のB1変換レジスタ15またはB2変換レジスタ16に転送するように構成されているので、画像の拡大処理を容易に行うことができる。
【0105】
[第5実施形態]
次に、本発明の第5の実施形態を図17ないし図18を参照して説明する。なお、前述した第1〜第4の実施形態と同一部分には、同一符号を付して説明を省略する。図17は、本発明の第5の実施形態におけるαフォーマットでの1/2縮小動作の変換ステップの説明図である。図18は、βフォーマットでの1/2縮小動作の変換ステップの説明図である。
【0106】
本実施形態では、1/2縮小変換を行う。本実施形態は、第1の実施形態と構成は同じだが、デコーダ26のデコード内容が異なる。αフォーマットでの1/2縮小の動作を表示したのが図17である。図15によればαフォーマットで配置された画素データD00〜D63に対して偶数画素データだけを集約配置した結果が得られている。これは、間引き処理と呼ぶこともある処理である。この処理の前に平滑化などの処理を行うのが、画像処理の縮小処理では一般的である。即ち、全てのA1変換レジスタ13およびA2変換レジスタ14のうち、予め定めたA1変換レジスタ13およびA2変換レジスタ14に格納されているデータをB1変換レジスタ15またはB2変換レジスタ16に転送している。
【0107】
次に、βフォーマットにおける1/2縮小変換を説明する。1/2縮小の動作を表示したのが図18である。βフォーマットで配置された画素データD00〜D63に対して偶数画素データだけを集約配置した結果が得られている。
【0108】
本実施形態によれば、制御手段が、全てのA1変換レジスタ13およびA2変換レジスタ14のうち、予め定めたA1変換レジスタ13およびA2変換レジスタ14に格納されているデータをB1変換レジスタ15またはB2変換レジスタ16に転送するように構成されているので、画像の縮小処理を容易に行うことができる。
【0109】
なお、上述した5つの実施形態は、フォーマット変換を効率化して効果を上げるために、同時に転送される画素データの組み合わせを次の手順で定めている。
【0110】
手順1:対象フォーマット変換における1つのデータ転送ごとに出力・入力間での転送バス20の使用範囲を決定する。この使用範囲とは、例えば図4の第2のステップでいうと、PE10_00〜PE10_01とPE10_08〜PE10_17がそれぞれ使用範囲となる。但し、拡大変換の場合は、転送バス20への出力が1箇所に対し、2箇所へ入力、つまり複数存在するので、使用範囲は長い方が採用される。
【0111】
手順2:手順1で使用範囲を定めた全てのデータ転送のうち、転送バス20の使用範囲のもっとも長い転送を選択し、その使用範囲以外の転送バスの範囲でもっとも長い転送を選び、この組合せを1つのステップで行う転送と確定する。そして、確定した組合せの転送を候補から除外する。例えば図4の場合、PE10_15→PE10_31の転送またはPE10_16→PE10_00の転送が最も使用範囲が長いが、PE10_15→PE10_31を選択すると、この使用範囲以外を用いる転送で最も使用範囲が長いのはPE10_07→PE10_15の転送であるので、この2つを組合せて1つのステップで行う転送とする。
【0112】
手順3:残りの候補の中から転送バスの使用範囲のもっとも長い転送を選択し、その使用範囲以外の転送バスの範囲でもっとも長い転送を選び、この組合せを1つのステップで行う転送と確定する。そして、確定した組合せの転送を候補から除外する。例えば、図4の場合、PE10_15→PE10_31の転送が除外されたので、PE10_16→PE10_00の転送を選択し、この使用範囲以外を用いる転送で最も使用範囲が長いのはPE10_24→PE10_16の転送であるので、この2つを組合せて1つのステップで行う転送とする。
【0113】
手順4:候補がなくなるか、組合せが不可能になるまで手順3を繰り返す。
【0114】
手順5:確定した組合せにおける転送バス20の使用範囲の中間にスイッチ21によるバスの分割点を定める。分割点に複数候補がある場合はどの選択でもかまわないし、候補の範囲ならデコーダ26の構成の容易さで選択してもよい。例えば図4の第2のステップでいうと、PE10_00→PE10_01とPE10_08→PE10_17の転送を行うが、PE10_01とPE10_08の中間のスイッチ21を選択すればよい。図4の場合は、この区間はPE10_08のみにスイッチ21が設けられているのでPE10_08を選択している。つまり、この中間には転送範囲の端に位置するPE10(PE10_01とPE10_08)も含まれる。
【0115】
手順6:スイッチ21を手順5で定めた分割点に配置してPE10デコーダ26を確定した転送の組合せに合うように構成して、PEコントロール部30からの制御信号によりフォーマット変換(データ転送)を行う。
【0116】
また、上述した各実施形態においては、転送バス20の分割箇所を1箇所とし、同時転送できる画素データの数を2として説明をしてきたが、分割数を増やし同時転送数を増やして効率を向上させることも可能である。また、1つのPE10で取り扱う画素データの数を2として説明をしてきたが、2以上の数であってもよい。
【0117】
また、上述した各実施形態においては、PEコントロール部30から各PE10のデコーダ26に対し、1通りの情報(5bit)を制御信号として伝達するとしてきたが、データの転送を行うためのクロック信号などの機能は、勿論別途必要である。また、複数のフォーマット変換に対応させる場合はフォーマット変換の種類を選択する信号を別途設ければよい。
【0118】
また、上述した各実施形態においては、PE群3におけるPE10は1次元的に一列に並べた構成であったが、2次元的に配置したPE群においても、複数列から構成されているとして各列ごとに本発明を適用すればよい。
【0119】
また、上述した各実施形態においては、転送バス20を1本としてきたが、複数の場合でも適用可能である。図19は転送バス20が2本の場合(転送バス20Lと転送バス20R)を図示しており、2本の転送バス20の機能は同じである。デコーダおよび入出力回路は図19では省略している。図20に図19の構成での動作を示す。転送バス20Lをスイッチ21で上下分割して、転送バス20Rをスイッチ21で上下分割することで、4組の転送が実現可能である。このため、ステップ数は半分の16ステップで全転送を完了する。
【0120】
なお、本発明は上記実施形態に限定されるものではない。即ち、本発明の骨子を逸脱しない範囲で種々変形して実施することができる。
【符号の説明】
【0121】
1 SIMD型マイクロプロセッサ
2 グローバルプロセッサ
3 PE群
4 レジスタファイル
5 演算アレイ
10 PE(プロセッサエレメント)
13 A1変換レジスタ(第1のレジスタ)
14 A2変換レジスタ(第1のレジスタ)
15 B1変換レジスタ(第2のレジスタ)
16 B2変換レジスタ(第2のレジスタ)
20 転送バス(データバス)
21 スイッチ
22 入出力回路(入力制御手段、出力制御手段)
23 入出力回路(入力制御手段、出力制御手段)
24 入出力回路(入力制御手段、出力制御手段)
25 入出力回路(入力制御手段、出力制御手段)
26 デコーダ(制御手段)
30 PEコントロール部
【先行技術文献】
【特許文献】
【0122】
【特許文献1】特開2002−298135公報
【特許文献2】特開2006−260479公報

【特許請求の範囲】
【請求項1】
一列に並べられた複数のプロセッサエレメントと、前記プロセッサエレメントを制御するPEコントロール部と、を備えたSIMD型マイクロプロセッサにおいて、
一列に並べられた複数の前記プロセッサエレメントを互いに接続するデータバスと、前記データバスを分割するスイッチと、を備え、
前記プロセッサエレメントには、データの送信元となる第1のレジスタと、データの受信先となる第2のレジスタと、前記第1のレジスタの格納内容を前記データバスに出力する出力制御手段と、前記データバス上のデータを前記第2のレジスタに格納する入力制御手段と、前記出力制御手段及び前記入力制御手段並びに前記スイッチを前記PEコントロール部から出力されるデータにより制御する制御手段と、が設けられている
ことを特徴とするSIMD型マイクロプロセッサ。
【請求項2】
前記スイッチが、一列に並べられた複数の前記プロセッサエレメントの中心から2のべき乗離れた位置の前記プロセッサエレメントに設けられていることを特徴とする請求項1に記載のSIMD型マイクロプロセッサ。
【請求項3】
前記制御手段が、一列に並べられた複数の前記プロセッサエレメントの所定の範囲に位置する前記プロセッサエレメント内の前記第1のレジスタに格納されているデータを、前記所定の範囲と異なる範囲に位置する複数の前記プロセッサエレメントの前記第2のレジスタに転送するように構成されていることを特徴とする請求項1または2に記載のSIMD型マイクロプロセッサ。
【請求項4】
前記制御手段が、一列に並べられた複数の前記プロセッサエレメントの両端部に位置する前記プロセッサエレメントを除く前記プロセッサエレメント内の前記第1のレジスタに格納されているデータを、前記第2のレジスタに転送するように構成されていることを特徴とする請求項1乃至3のうちいずれか一項に記載のSIMD型マイクロプロセッサ。
【請求項5】
前記制御手段が、一つの前記第1のレジスタに格納されているデータを一度に複数の前記第2のレジスタに転送するように構成されていることを特徴とする請求項1乃至4のうちいずれか一項に記載のSIMD型マイクロプロセッサ。
【請求項6】
前記制御手段が、全ての前記第1のレジスタのうち、予め定めた前記第1のレジスタに格納されているデータを前記第2のレジスタに転送するように構成されていることを特徴とする請求項1乃至5のうちいずれか一項に記載のSIMD型マイクロプロセッサ。
【請求項7】
データの送信元となる第1のレジスタとおよびデータの受信先となる第2のレジスタが設けられたプロセッサエレメントと、前記プロセッサエレメントを制御するPEコントロール部と、複数の前記プロセッサエレメントを接続するデータバスと、前記データバスを分割するスイッチと、を備え、複数の前記プロセッサエレメントが一列に並べられたSIMD型マイクロプロセッサのデータ転送方法にであって、
前記複数のプロセッサエレメントの前記第1のレジスタに所定の並びで格納されているデータを、前記所定の並びと異なる並びで前記第2のレジスタに格納する際の各データ転送ごとの入力および出力間での前記データバスの使用範囲を決定する第一の工程と、
前記第一の工程で決定した前記データバスの使用範囲のうち、最も長い使用範囲のデータ転送を選択し、そのデータ転送の前記データバスの使用範囲以外を使用する前記データ転送のうち、前記データバスの使用範囲が最も長い前記データ転送を選択し、これらのデータ転送を一つの組合せとする第二の工程と、
残りのデータ転送の中から前記データバスの使用範囲が最も長い前記データ転送を選択し、そのデータ転送の前記データバスの使用範囲以外を使用する前記データ転送のうち、前記データバスの使用範囲が最も長い前記データ転送を選択し、これらのデータ転送を一つの組合せとする第三の工程と、
前記第三の工程を繰り返し、全てのデータ転送の組合せを確定する第四の工程と、
確定した組合せにおけるデータバスの使用範囲の間に前記スイッチによる前記データバスの分割点を定める第五の工程と、
前記第五の工程で定めた分割点で前記スイッチを動作させ、前記第四の工程で確定した各データ転送の組み合わせを順次実行する第六の工程と、
を備えることを特徴とするSIMD型マイクロプロセッサのデータ転送方法。

【図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

【図25】
image rotate