(57)【要約】【課題】ＳＩＭＤ及びそれのためのメモリアレイ構造を提供する。【解決手段】単一命令多重データ（ＳＩＭＤ）プロセッサは、入力データに対する並列演算を実行する複数個の演算素子、ビデオコーデックから要求されるメモリアクセスパターンについて衝突回避アクセスが可能になるようにデータを再配置して貯蔵するメモリ、及び前記演算素子のデータアクセスのとき、前記メモリから出力される複数個のデータを所定のビットシフトして対応する演算素子に提供するデータ連結部を含む。【選択図】図２
2008123479.tif 000002
【特許請求の範囲】
【請求項１】
入力データに対する並列演算を実行する複数個の演算素子と、
ビデオコーデックから要求されるメモリアクセスパターンについて衝突回避アクセスが可能になるように再配置して貯蔵するメモリと、
前記演算素子のデータアクセスのとき、前記メモリから出力される複数個のデータを所定のビットシフトして対応する演算素子に提供するデータ連結部とを含むことを特徴とするＳＩＭＤプロセッサ。
【請求項２】
前記各々の演算素子は前記データ連結部から提供されるデータを貯蔵するレジスタを含むことを特徴とする請求項１に記載のＳＩＭＤプロセッサ。
【請求項３】
前記レジスタに貯蔵されたデータは現在のデータの演算に用いられた後、次のデータの演算に再使用されることを特徴とする請求項１に記載のＳＩＭＤプロセッサ。
【請求項４】
前記各々の演算素子で実行された演算結果は前記メモリの一領域に貯蔵されることを特徴とする請求項１に記載のＳＩＭＤプロセッサ。
【請求項５】
前記メモリの一領域に貯蔵された前記演算結果は前記各々の演算素子にローディングされて再使用されることを特徴とする請求項４に記載のＳＩＭＤプロセッサ。
【請求項６】
前記メモリアクセスパターンは、
マクロブロックの同一のロウに属する複数個のデータを同時に出力する横メモリアクセスパターンと、
前記マクロブロックの同一のカラムに属する複数個のデータを同時に出力する縦メモリアクセスパターンと、
前記マクロブロックの一領域に属するデータを同時に出力するブロックメモリアクセスパターンとを含むことを特徴とする請求項１に記載のＳＩＭＤプロセッサ。
【請求項７】
前記メモリは前記各々の演算素子に対応するデータを貯蔵する複数個のバンクを含むことを特徴とする請求項１に記載のＳＩＭＤプロセッサ。
【請求項８】
前記メモリは前記データアクセスのとき、前記複数個のバンクの各々から複数個のデータを同時に出力することを特徴とする請求項７に記載のＳＩＭＤプロセッサ。
【請求項９】
前記メモリはＮ個の内部アドレスで構成され、前記各々の内部アドレス番号にはＮ個のバンク番号が対応することを特徴とする請求項７に記載のＳＩＭＤプロセッサ。
【請求項１０】
前記各々の内部アドレス番号に貯蔵されるデータストリームの開始バンク番号は前記内部アドレス番号が１増加する毎に４つのバンク番号ずつシフトされることを特徴とする請求項９に記載のＳＩＭＤプロセッサ。
【請求項１１】
データストリームの１番目のデータをｘとするとき、前記メモリの１番目の内部アドレスｙは(ｘ％１６)×１６の値を有し、
前記１番目の内部アドレスｙに対応する開始バンク番号はｙ／４＋４(ｙ％４)の値を有することを特徴とする請求項９に記載のＳＩＭＤプロセッサ。
【請求項１２】
前記データ連結部は、前記メモリから提供される各々のデータを所定のビットシフトするバレルシフタで構成されることを特徴とする請求項１に記載のＳＩＭＤプロセッサ。
【請求項１３】
前記バレルシフタからシフトされるビット数は前記メモリの各々の内部アドレス番号に対応する開始バンク番号によって決められることを特徴とする請求項１２に記載のＳＩＭＤプロセッサ。
【請求項１４】
前記ＳＩＭＤプロセッサは、前記ビデオコーデックのインターポーレーション動作、動き推定動作、及び離散コサイン変換／逆離散コサイン変換のうちのいずれか１つに適用されることを特徴とする請求項１２に記載のＳＩＭＤプロセッサ。
【請求項１５】
ビデオコーデックから要求されるメモリアクセスパターンについて衝突回避アクセスが可能になるように再配置して貯蔵する複数個のバンクを含むことを特徴とするＳＩＭＤプロセッサのメモリアレイ。
【請求項１６】
前記メモリアクセスパターンは、
マクロブロックの同一のロウに属する複数個のデータを同時に出力する横メモリアクセスパターンと、
前記マクロブロックの同一のカラムに属する複数個のデータを同時に出力する縦メモリアクセスパターンと、
前記マクロブロックの一領域に属するデータを同時に出力するブロックメモリアクセスパターンとを含むことを特徴とする請求項１５に記載のＳＩＭＤプロセッサのメモリアレイ。
【請求項１７】
前記メモリはＮ個の内部アドレスで構成され、前記各々の内部アドレス番号にはＮ個のバンク番号が対応することを特徴とする請求項１５に記載のＳＩＭＤプロセッサのメモリアレイ。
【請求項１８】
前記各々の内部アドレス番号に貯蔵されるデータストリームの開始バンク番号は前記内部アドレス番号が１増加する毎に４つのバンク番号ずつシフトされることを特徴とする請求項１７に記載のＳＩＭＤプロセッサのメモリアレイ。
【請求項１９】
データストリームの１番目のデータをｘとするとき、前記メモリの１番目の内部アドレスｙはｘ％１６×１６の値を有し、
前記１番目の内部アドレスｙに対応する開始バンク番号はｙ／４＋４ｙ％４の値を有することを特徴とする請求項１７に記載のＳＩＭＤプロセッサのメモリアレイ。
【請求項２０】
前記各々のバンクに貯蔵されたデータは複数個のデータを並列で処理する複数個の演算素子に同時に提供されることを特徴とする請求項１５に記載のＳＩＭＤプロセッサのメモリアレイ。
【請求項２１】
前記各々の演算素子で実行された演算結果は前記メモリの一領域に貯蔵されることを特徴とする請求項２０に記載のＳＩＭＤプロセッサのメモリアレイ。
【請求項２２】
前記メモリの一領域に貯蔵された前記演算結果は前記各々の演算素子にローディングされて再使用されることを特徴とする請求項２０にＳＩＭＤプロセッサのメモリアレイ。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は映像処理プロセッサに係り、さらに具体的には映像処理に用いられるＳＩＭＤ（ｓｉｎｇｌｅ−ｉｎｓｔｒｕｃｔｉｏｎ ｍｕｌｔｉｐｌｅ−ｄａｔａ） 及びそれのためのメモリ構造に関する。
【背景技術】
【０００２】
デジタル信号処理、貯蔵媒体、及び伝送方式に関する技術の発展に伴い、音声情報に限ったサービスがマルチメディアサービスに進化している。特に、デジタルＴＶ、ＩＰＴＶ（Ｉｎｔｅｒｎｅｔ  Ｐｒｏｔｏｃｏｌ  Ｔｅｌｅｖｉｓｉｏｎ）、ＶＯＤ（Ｖｉｄｅｏ  Ｏｎ  Ｄｅｍａｎｄ）などのようにマルチメディアサービスが多様化され、端末機の技術の発展と相俟って、Ｈ．２６４のような高画質の映像圧縮／復元技術が登場するようになっている。しかし、高画質の映像圧縮／復元技術は既存の映像圧縮／復元技術に比べてさらに多い演算量を要するから、サービス及び機能のコンバージェンスによって多重圧縮標準を支援するためのビデオコーデックソリューションとしてプログラマブルハードウェア構造に対する要求が高くなっている。
【０００３】
上記のように、要求に応じて多様な形態のＡＳＩＣｓ（ａｐｐｌｉｃａｔｉｏｎ−ｓｐｅｃｉｆｉｃ  ｉｎｔｅｇｒａｔｅｄ  ｃｉｒｃｕｉｔｓ）またはＤＳＰ（ｄｉｇｉｔａｌ  ｓｉｇｎａｌ  ｐｒｏｃｅｓｓｏｒ）プラットホームが映像圧縮／復元のために開発されている。しかし、このようなハードウェア的な構造は互換性と追加的な費用の増加という問題を持っている。このような問題を解決するため、少費用で高い効率を得ることができる装置として、単一命令多重データ（Ｓｉｎｇｌｅ  Ｉｎｓｔｒｕｃｔｉｏｎ  Ｍｕｌｔｉｐｌｅ  Ｄａｔａ;ＳＩＭＤ）プロセッサ（以下、ＳＩＭＤプロセッサという）が開発されている。ＳＩＭＤプロセッサは、各々のＳＩＭＤアレイ内部に具備された演算素子（Ｐｒｏｃｅｓｓｉｎｇ  Ｅｌｅｍｅｎｔ;ＰＥ）を介して同一の命令を共通で受信し、受信された命令を並列で実行する。演算素子ＰＥにはＡＬＵ（Ａｒｉｔｈｍｅｔｉｃ  ａｎｄ  Ｌｏｇｉｃ  Ｕｎｉｔ）のような演算回路が含まれている。
【０００４】
ＳＩＭＤプロセッサは、１つの命令で複数個のデータを処理することができるため、データ処理能力を容易に向上させることができる。特に、ＳＩＭＤプロセッサは繰り返し的であり、並列性が強いルーチンに適するため、マルチメディアの処理や、グラフィック、音声通信などに多く適用されている。代表的なＳＩＭＤプロセッサには、ＭＭＸ、ＳＳＥ、ＭＡＸ−１、ＭＡＸ−２、Ａｌｔｉｖｅｃなどがある。ＳＩＭＤとして代表されるアレイプロセッサ構造、またはＶＬＩＷ（ｖｅｒｙ  ｌｏｎｇ  ｉｎｓｔｒｕｃｔｉｏｎ  ｗｏｒｄ）などの並列プロセッサ構造を効果的に活用するためには、動作中の演算ユニットが常に演算を実行するようにデータを整列して供給することが重要である。したがって、既存のＳＩＭＤプロセッサの内部にはデータを再整列するための別途の回路としてパーミュテーション部（ｐｅｒｍｕｔａｔｉｏｎｕｎｉｔ）を具備している。
【０００５】
図１は一般的なＳＩＭＤプロセッサ１０の構造を示す図である。図１に示したＳＩＭＤプロセッサの構造は特許文献１に開示されている。
【０００６】
図１を参照すると、ＳＩＭＤプロセッサ１０は、ベクタＡＬＵ（ｖｅｃｔｏｒ  Ａｒｉｔｈｍｅｔｉｃ  ａｎｄ  Ｌｏｇｉｃ  Ｕｎｉｔ）２０、パーミュテーション部（ｐｅｒｍｕｔａｔｉｏｎ  ｕｎｉｔ）３０、ベクタレジスタ（ｖｅｃｔｏｒ  ｒｅｇｉｓｔｅｒ）４０、及びメモリ９０を含む。図１には１つのベクタＡＬＵ  ２０が示されているが、高速並列データ処理を実行するためには、ＳＩＭＤプロセッサ内に複数個のベクタＡＬＵ  ２０が並列で接続されている。命令が入力されれば、ＳＩＭＤ  １０はメモリ９０に貯蔵されているデータをローディングしてベクタレジスタ４０に貯蔵する。ベクタレジスタ４０に貯蔵されたデータはパーミュテーション部３０により再整列（ｒｅａｒｒａｎｇｅｍｅｎｔ）されて、ベクタＡＬＵ  ２０に提供される。ベクタＡＬＵ  ２０はパーミュテーション部３０により再整列されたデータを処理する。パーミュテーション部３０は汎用のマルチメディア演算に用いられるデータを再整列するためにクロスバーまたはバタフライ連結網が用いられている。
【０００７】
単純なリニア（ｌｉｎｅａｒ）アレイで構成されるメモリバンクについて多様な形態の並列アクセスが同時に可能になるようにデータを配置して運用する技法を衝突回避技法（ｃｏｎｆｌｉｃｔ  ｆｒｅｅ）といい、衝突回避技法によるデータの再配置または再整列動作はパーミュテーション部３０を通じて実行される。パーミュテーション部３０はデータ配置と各メモリバンクに対するランダムアクセス（ｒａｎｄｏｍ  ａｃｃｅｓｓ）を実行するために複雑なパーミュテーションネットワーク（ｐｅｒｍｕｔａｔｉｏｎ  ｎｅｔｗｏｒｋ）、または複数個の段階で構成されたマルチプレクシング（ｍｕｌｔｉｐｌｅｘｉｎｇ）とシフティング（ｓｈｉｆｔｉｎｇ）、ローテーション（ｒｏｔａｔｉｏｎ）などの動作を実行する。したがって、データの再配置のときにかかる時間が多くなる。そこで、ＳＩＭＤプロセッサの動作効率を高めるためには、メモリ９０に対するアクセスコストを最小化し、パーミュテーション部３０のデータ再整列時間を減らすことができる方案が必須として要求される。
【特許文献１】米国特許第７，０９２，５２６号
【発明の開示】
【発明が解決しようとする課題】
【０００８】
本発明の目的は、動作速度を向上させることができるＳＩＭＤプロセッサ及びそれのためのメモリアレイ構造を提供することにある。
【０００９】
本発明の他の目的は、演算素子のメモリアクセスコストを最小化することができるＳＩＭＤプロセッサ及びそれのためのメモリアレイ構造を提供することにある。
【課題を解決するための手段】
【００１０】
上述の課題を解決するために、本発明によるＳＩＭＤプロセッサは、入力データに対する並列演算を実行する複数個の演算素子と、ビデオコーデックから要求されるメモリアクセスパターンに対して衝突回避アクセスが可能になるようにデータを再配置して貯蔵するメモリと、前記演算素子のデータアクセスのとき、前記メモリから出力される複数個のデータとを所定のビットシフトして対応する演算素子に提供するデータ連結部とを含むことを特徴とする。
【００１１】
この実施形態において、前記各々の演算素子は前記データ連結部から提供されるデータを貯蔵するレジスタを含むことを特徴とする。
【００１２】
この実施形態において、前記レジスタに貯蔵されたデータは現在のデータの演算に用いられた後、次のデータの演算に再使用されることを特徴とする。
【００１３】
この実施形態において、前記各々の演算素子で実行された演算結果は前記メモリの一領域に貯蔵されることを特徴とする。
【００１４】
この実施形態において、前記メモリの一領域に貯蔵された前記演算結果は前記各々の演算素子にローディングされて再使用されることを特徴とする。
【００１５】
この実施形態において、前記メモリアクセスパターンは、マクロブロックの同一のロウに属する複数個のデータを同時に出力する横メモリアクセスパターンと、前記マクロブロックの同一のコラムに属する複数個のデータを同時に出力する縦メモリアクセスパターンと、前記マクロブロックの一領域に属するデータを同時に出力するブロックメモリアクセスパターンとを含むことを特徴とする。
【００１６】
この実施形態において、前記メモリは前記各々の演算素子に対応するデータを貯蔵する複数個のバンクを含むことを特徴とする。
【００１７】
この実施形態において、前記メモリは前記データアクセスのとき、前記複数個のバンクの各々から複数個のデータを同時に出力することを特徴とする。
【００１８】
この実施形態において、前記メモリはＮ個の内部アドレスで構成され、前記各々の内部アドレス番号にはＮ個のバンク番号が対応することを特徴とする。
【００１９】
この実施形態において、前記各々の内部アドレス番号に貯蔵されるデータストリームの開始バンク番号は前記内部アドレス番号が１増加する毎に４つのバンク番号ずつシフトされることを特徴とする。
【００２０】
この実施形態において、データストリームの１番目データをｘとするとき、前記メモリの１番目の内部アドレスｙは(ｘ％１６)×１６ の値を有し、前記１番目の内部アドレスｙに対応する開始バンク番号はｙ／４＋４(ｙ％４)の値を有することを特徴とする。
【００２１】
この実施形態において、前記データ連結部は、前記メモリから提供される各々のデータを所定のビットシフトするバレルシフタで構成されることを特徴とする。
【００２２】
この実施形態において、前記バレルシフタからシフトされるビット数は前記メモリの各々の内部アドレス番号に対応する開始バンク番号によって決められることを特徴とする。
【００２３】
この実施形態において、前記ＳＩＭＤプロセッサは、前記ビデオコデックスのインターポーレーション動作、動き推定動作、及び離散コサイン変換／逆離散コサイン変換のうちのいずれか１つに適用されることを特徴とする。
【００２４】
上述の課題を解決するために、本発明によるＳＩＭＤプロセッサのメモリは、ビデオコデックスから要求されるメモリアクセスパターンに対して衝突回避アクセスが可能になるようにデータを再配置して貯蔵する複数個のバンクを含むことを特徴とする。
【００２５】
この実施形態において、前記メモリアクセスパターンはマクロブロックの同一のロウに属する複数個のデータを同時に出力する横メモリアクセスパターンと、前記マクロブロックの同一のコラムに属する複数個のデータを同時に出力する縦メモリアクセスパターンと、前記マクロブロックの一領域に属するデータを同時に出力するブロックメモリアクセスパターンとを含むことを特徴とする。
【００２６】
この実施形態において、前記メモリはＮ個の内部アドレスで構成され、前記各々の内部アドレス番号にはＮ個のバンク番号が対応することを特徴とする。
【００２７】
この実施形態において、前記各々の内部アドレス番号に貯蔵されるデータストリームの開始バンク番号は前記内部アドレス番号が１増加する毎に４つのバンク番号ずつシフトされることを特徴とする。
【００２８】
この実施形態において、データストリームの１番目のデータをｘとするとき、前記メモリの１番目の内部アドレスｙは(x%16)×16 の値を有し、前記１番目の内部アドレスｙに対応する開始バンク番号はy/4+4(y%4)の値を有することを特徴とする。
【００２９】
この実施形態において、前記各々のバンクに貯蔵されたデータは複数個のデータを並列で処理する複数個の演算素子に同時に提供されることを特徴とする。
【００３０】
この実施形態において、前記各々の演算素子で実行された演算結果は前記メモリの一領域に貯蔵されることを特徴とする。
【００３１】
この実施形態において、前記メモリの一領域に貯蔵された前記演算結果は前記各々の演算素子にローディングされて再使用されることを特徴とする。
【発明の効果】
【００３２】
本発明によると、ＳＩＭＤプロセッサの動作速度が向上する。そして、ＳＩＭＤプロセッサに具備されている演算素子ＰＥのメモリアクセスコストが最小化される。
【発明を実施するための最良の形態】
【００３３】
＜実施形態＞
以下、本発明による実施形態を添付の図面を参照して詳細に説明する。
【００３４】
本発明の新規の単一命令多重データプロセッサ（すなわち、ＳＩＭＤプロセッサ）はビデオコーデックで必須に要求されるメモリアクセスパターンについて制限的に衝突回避（ｃｏｎｆｌｉｃｔ  ｆｒｅｅ）アクセスが可能になるように、データが配置されたメモリを含む。メモリに貯蔵されたデータは複数個のデータビットを同時にシフトすることができるデータ連結部を通じて対応する演算素子に直接提供される。したがって、演算素子のメモリアクセスコストが減少するようになる。そして、別途のデータ再配置手段であるパーミュテーションロジックを実現する必要がないので、回路が簡単になり、実現費用が減少するようになる。
【００３５】
図２は本発明によるＳＩＭＤプロセッサ１００の構造を示す図である。図２には８ビットの画素データ１６個を並列で処理することができるＳＩＭＤプロセッサ１００の構成が例示的に示されている。ＳＩＭＤプロセッサ１００は、Ｈ．２６４のように演算量が多い高画質の映像圧縮／復元標準によるビデオコーデック（Ｖｉｄｅｏ  ＣＯＤＥＣ）に適用可能である。
【００３６】
図２を参照すると、本発明によるＳＩＭＤプロセッサ１００は、ＳＩＭＤアレイ１１０とデータ連結部（ｄａｔａ  ｉｎｔｅｒｃｏｎｎｅｃｔｉｏｎ  ｕｎｉｔ）１５０、及びメモリ１９０を含む。ＳＩＭＤアレイ１１０は複数個（例えば、１６個）の演算素子ＰＥ０−ＰＥ１５で構成されており、各々の演算素子の内部にはＡＬＵとレジスタとが含まれている。データ連結部１５０はメモリ１９０から伝送されるデータを対応する演算素子ＰＥ０−ＰＥ１５と連結させる役割を実行する。
【００３７】
メモリ１９０は映像処理に用いられる画素データを一時に貯蔵するバッファメモリとしての役割を実行する。メモリ１９０はＳＲＡＭ（ｓｔａｔｉｃ  ｒａｎｄｏｍ  ａｃｃｅｓｓ  ｍｅｍｏｒｙ）のようにランダムアクセスが可能なメモリで構成することができる。しかし、これは本発明の一実施形態に過ぎず、メモリ１９０がＳＲＡＭ以外の他の形態のメモリでも構成可能であることは、当業者において自明である。下述するが、本発明のＳＩＭＤプロセッサ１００で処理されるデータは衝突回避（ｃｏｎｆｌｉｃｔ  ｆｒｅｅ）技法を利用して再配置された後、メモリ１９０に貯蔵される。メモリ１９０に貯蔵されるデータの再配置動作は、ＳＩＭＤプロセッサ１００の諸般の動作を制御するコントロールロジック（図示せず）の制御によって実行される。メモリ１９０に貯蔵されるデータの再配置動作については数式１及び数式２を参照して説明する。
【００３８】
メモリ１９０に映像データを貯蔵するデータ貯蔵領域は１６個のバンクＢＫ０−ＢＫ１５に区分される。各々のバンクＢＫ０−ＢＫ１５は１回のサイクルの間１つのデータを出力することができる。本発明によるデータ再配置結果によると、バンクＢＫ０−ＢＫ１５の出力データが互いに衝突することなく、１回のサイクルの間１６個の画素データを同時に並列で出力することができるようになる。その結果、演算素子のメモリアクセスコストとデータローディング時間とが減るようになる。一方、メモリ１９０に貯蔵されたデータは所定のデータ配置規則に従ってあらかじめ再配置された後貯蔵されたものである。したがって、本発明によるＳＩＭＤプロセッサ１００はデータを再整列する別途のパーミュテーション部を要しない。したがって、データローディング速度が向上するだけでなく、ハードウェアの構成が単純になる。
【００３９】
衝突回避技法によって再配置されたデータが貯蔵されているメモリ１９０は１回のサイクルの間複数個（例えば、１６個）の画素データを同時に出力する。メモリ１９０から出力された複数個のデータはデータ連結部１５０を通じてシフティングされた後、対応する演算素子ＰＥ０−ＰＥ１５に各々提供される。下述するが、演算素子ＰＥ０−ＰＥ１５に提供されるデータはＨ．２６４標準で用いられる多様な形態のマクロブロック（例えば、１６×１６、８×８、８×４、４×８、４×４のマクロブロック）パターンを全て支援することができる。各々の演算素子ＰＥ０−ＰＥ１５の内部にはレジスタが具備されており、データ連結部１５０から提供されるデータを貯蔵する。演算素子ＰＥ０−ＰＥ１５のレジスタ（またはここに適するメモリ装置）に貯蔵されたデータはビデオコーデックで実行される演算に再使用することができる。したがって、複雑な演算が単純になり、再使用されるデータの頻度が増加するだけ全体の演算速度は速くなる。
【００４０】
データ連結部１５０は１６ビットバレルシフタ（１６−ｂｉｔ  Ｂａｒｒｅｌ  Ｓｈｉｆｔｅｒ）で構成され、１６ビットバレルシフタは８ビットの画素ｐｉｘｅｌデータを伝達するように８個が具備される。バレルシフタは１つの演算でデータワード内にある多数のビットを移動するか、回転させることができるハードウェア装置である。例えば１６ビットバレルシフタは１サイクルの間左側や右側に最大１６ビットずつ移動させることができる。したがって、メモリ１９０から出力されたデータはデータ連結部１５０を通じて短時間内に演算素子ＰＥ０−ＰＥ１５に提供される。
【００４１】
一般的に、ビデオコーデックでは２次元の画素からなる映像に対する演算を主に実行するようになる。理論的に演算素子ＰＥ０−ＰＥ１５（または演算ユニット）に対する演算は自由方向に進行させることができる。しかし、前記演算を実行するためのメモリアクセスは制限されたパターン（例えば、横方行、縦長方向、対角線方向）に進行するしかない。したがって、本発明では、このような映像処理の特性を利用して、ビデオコーデックで必須に要求されるメモリアクセスパターンに対してだけ制限的に衝突回避（ｃｏｎｆｌｉｃｔ  ｆｒｅｅ）アクセスが可能になるようにメモリ１９０にデータを配置する。その結果、本発明によるＳＩＭＤプロセッサ１００はハードウェア的な構成を最小化し、かつ映像処理に用いられるデータに対する再配置を効果的に実行することができるようになる。特に、本発明によるＳＩＭＤプロセッサ１００は演算素子ＰＥ０−ＰＥ１５とメモリ１９０との間でデータ再整列を実行するパーミュテーション部３０を別に具備せず、各々の演算素子ＰＥ０−ＰＥ１５でデータを持続的に並列に提供することができるようになる。この場合、メモリ１９０から出力される複数個のデータはデータ連結部１５０を通じて対応する演算素子ＰＥ０−ＰＥ１５に直接提供される。したがって、パーミュテーションロジックの実現費用が減少し、演算素子のメモリアクセスコストが減少する。
【００４２】
この場合、メモリ１９０から演算素子ＰＥ０−ＰＥ１５に提供されたデータは各々の演算素子ＰＥ０−ＰＥ１５の内部に具備されたレジスタに貯蔵され、繰り返される演算に再使用することができる。その結果、データの再使用性を大きく高めることができるため、演算効率を高めることができる。そして、データの再使用はデータの再ローディングの必要性をなくすため、データローディングに消費する時間を短縮させることができる。このような機能は画素データ自体の再利用にも適用することができ、演算結果の再利用にも適用することができる。演算結果または中間演算結果が再利用される場合、演算量が減るようになって、ＳＩＭＤプロセッサの演算効率を高めることができるようになる。
【００４３】
図３は図２に示したメモリ１９０のデータ配置図である。図３には衝突回避技法を利用して１６×１６サイズのマクロブロックデータを貯蔵するメモリ１９０のデータ配置図が示されている。
【００４４】
図３に示したデータ配置図の横軸９８はメモリ１９０のバンク番号（Ｂａｎｋ  Ｎｕｍｂｅｒ;Ｎ）を示す。データ配置図の縦軸９９は各々のバンクに対応する内部アドレス番号（Ａｄｄｒｅｓｓ  Ｎｕｍｂｅｒ  ｉｎｓｉｄｅ  Ｎｔｈ  Ｂａｎｋ）を示す。そして、データ配置図の参照番号９５はメモリ１９０のコラムアクセスパターン（ｃｏｌｕｍｎ  ａｃｃｅｓｓ  ｐａｔｔｅｒｎ）を意味し、参照番号９７１、９７２はメモリ１９０のロウアクセスパターン（ｒｏｗ  ａｃｃｅｓｓ  ｐａｔｔｅｒｎ）を各々意味する。そして、参照番号９１−９４はブロックアクセスパターン（ｂｌｏｃｋ  ａｃｃｅｓｓ  ｐａｔｔｅｒｎ）を意味する。図３に示したデータ配置図を構成する方法は次のとおりである。
【００４５】
まず、１６ビットデータストリームの１番目データをｘとするとき、メモリ１９０の１番目のアドレスｙは［数１］のように定義される。
【００４６】
［数１］
ｙ＝（ｘ％１６）×１６
【００４７】
［数１］で求められたメモリ１９０の１番目のアドレスｙに対応する開始バンク番号（Ｓｔａｒｔ  Ｂａｎｋ  Ｎｕｍｂｅｒ）Ｎは［数２］のように定義される。
【００４８】
［数２］
Ｎ＝ｙ／４＋４×（ｙ％４）
【００４９】
処理しようとする映像データが貯蔵されるメモリ１９０の物理的な位置情報は[数１]及び[数２]によって決められる。以上のようなデータ配置方法によると、１つの内部アドレス番号には１６個のバンク番号が対応する。そして、各々の内部アドレス番号に貯蔵されるデータストリームの開始点（すなわち、開始バンク番号）は内部アドレス番号が１増加する毎に４つのバンク番号だけシフトされる。
【００５０】
図４乃至図７は処理しようとする映像データの論理的な配置と、アクセス方式を示す図である。図４は１６×１６サイズのマクロブロックにおいて横（ｈｏｒｉｚｏｎｔａｌ）（またはロウ（ｒｏｗ））方向に１６画素ずつアクセスする場合を示す図であり、図５は１６×１６サイズのマクロブロックにおいて、縦（ｖｅｒｔｉｃａｌ）（またはコラム（ｃｏｌｕｍｎ））方向に１６画素ずつアクセスする場合を示す図である。そして、図６及び図７は４×４サイズのマクロブロックから１６画素ずつアクセスする場合を示す図である。図６において、アクセスされる４×４サイズのマクロブロックの１番目の画素の座標は４ｍ、ｎ（０≦ｍ、ｎ≦３）の値を有する。そして、図７においてアクセスされる４×４サイズのマクロブロックの１番目の画素の座標は４ｍ＋ｊ、ｎ＋ｋ（０≦ｍ、ｎ、ｊ、ｋ≦３）の値を有する。図４乃至図６に示した映像データの構成は動き補償と、インターポーレーション（ｉｎｔｅｒｐｏｌａｔｉｏｎ）に主に用いられるデータパターンであり、図７に示した映像データの構成は離散コサイン変換（ｄｉｓｃｒｅｔｅ  ｃｏｓｉｎｅ  ｔｒａｎｓｆｏｒｍ;ＤＣＴ）または逆離散コサイン変換（ｉｎｖｅｒｓｅ  ｄｉｓｃｒｅｔｅ  ｃｏｓｉｎｅ  ｔｒａｎｓｆｏｒｍ;ＩＤＣＴ）に主に用いられるデータパターンである。図４乃至図７に示した各々の映像データを処理するためのメモリ１９０のデータアクセス方式は次のとおりである。
【００５１】
まず、図３及び図４を参照すると、ロウ単位のデータアクセスのとき（すなわち、横方向のアクセスのとき）、参照番号９７１、９７２のロウアクセスパターンでデータがメモリ１９０から演算素子ＰＥ０−ＰＥ１５に提供される。この場合、参照番号９７１のロウアクセスパターンに該当する１番目のロウの１６ビットのデータは１サイクルの間１６個のバンクＢＫ０−ＢＫ１５から出力される。この時、出力される各々のデータの論理的な位置と物理的な位置とは互いに一致する。したがって、メモリ１９０から出力される１６ビットのデータはデータ連結部１５０を通じて直ちに対応する演算素子ＰＥ０−ＰＥ１５に提供される。一方、参照番号９７２のロウアクセスパターンに該当する２番目のロウの１６ビットのデータは１サイクルの間１６個のバンクＢＫ０−ＢＫ１５から出力される。この時、出力される各々のデータの論理的な位置と物理的な位置とは４個のバンク位置だけ（すなわち、４ビットだけ）の差を有する。したがって、メモリ１９０から出力される１６ビットのデータはデータ連結部１５０を通じて４ビットだけシフトされた後、対応する演算素子ＰＥ０−ＰＥ１５に提供される。このようなデータ連結部１５０のデータシフト動作は各々の内部アドレス番号に貯蔵されるデータストリームの開始点９５の位置によって決められる。以上のようなロウ単位のデータアクセス動作を１６回繰り返せば、１６×１６サイズのマクロブロックに対応するデータが演算素子ＰＥ０−ＰＥ１５に全部ローディングされる。
【００５２】
続いて、図３及び図５を参照すると、コラム単位のデータアクセスのとき（すなわち、縦方向のアクセスのとき）、参照番号９５のようなコラムアクセスパターンでデータがメモリ１９０から演算素子ＰＥ０−ＰＥ１５に提供される。図３において、参照番号９５は１６個のバンクＢＫ０−ＢＫ１５から同時にアクセスされる１６個のデータ貯蔵領域（斜線部分参照）のうちの１つだけを例示的に表示したものである。データ貯蔵領域に表示された数字（０乃至１５）が同一のデータが１６個のバンクＢＫ０−ＢＫ１５から同時にアクセスされる。この場合、同一のコラムアクセスパターンに属するデータ（すなわち、データ貯蔵領域に表示された数字が同一のデータ）は、１つの内部アドレスが変動される毎に４つのバンク位置だけ（すなわち、４ビットだけ）シフトされる構成を有する。このような構成によると、図５のように、論理的には同一のコラムに属するデータであっても物理的にはメモリ１９０の互いに異なるバンクＢＫ０−ＢＫ１５に分散して貯蔵されるため、１サイクルの間１６個のデータが同時に出力することができる。例えば、データ貯蔵領域に表示された数字が‘０’である１６個のデータは互いに異なる１６個のバンクＢＫ０−ＢＫ１５に均一に分散しているため、アクセス動作のとき、１サイクルの間同時に出力することができる。メモリ１９０から同時に出力された１６ビットのデータはデータ連結部１５０を通じて所定のビットだけシフトされて、対応する演算素子ＰＥ０−ＰＥ１５に提供される。データ連結部１５０でシフトされるビット数は各々の内部アドレス番号に貯蔵されるデータストリームの開始点９５の位置によって決められる。以上のようなコラム単位のデータアクセス動作を１６回繰り返せば、１６×１６サイズのマクロブロックに対応するデータが演算素子ＰＥ０−ＰＥ１５に全部ローディングされる。
【００５３】
本発明のように、同一のコラムアクセスパターンに属するデータが１６個のバンクＢＫ０−ＢＫ１５に均一に分散していなければ、アクセス動作のとき、１サイクルの間１６個のデータを同時に出力することはできないであろう。例えば、パーミュテーション部３０を通じてデータを再整列する従来のＳＩＭＤプロセッサ１０の場合、図５に示した同一のコラムの１６ビットのデータをローディングするためには１６回のサイクルの間メモリをアクセスしなければならない。したがって、本発明によるＳＩＭＤプロセッサ１００のデータアクセス速度は従来のＳＩＭＤプロセッサ１０に比べて最大１６倍程度速くなる効果がある。一方、本発明によるＳＩＭＤプロセッサ１００は同一のロウまたは同一のコラムに属した１６ビットのデータをメモリ１９０から同時にローディングすることもでき、所定のブロック（例えば、４×４サイズのマクロブロック）に属する１６ビットのデータをメモリ１９０から同時にローディングすることもできる。これをブロック単位のアクセスという。
【００５４】
図３及び図６を参照すると、ブロック単位のデータアクセスのとき、参照番号９１−９４のようなブロックアクセスパターンで分散している１６個の画素データがメモリ１９０から演算素子ＰＥ０−ＰＥ１５に同時に提供される。図３において、参照番号９１−９４は１６個のバンクＢＫ０−ＢＫ１５から同時にアクセスされる１６個のデータ貯蔵領域を例示的に表示したものである。ブロックアクセス動作のとき、任意の位置（４ｍ、４ｎ）を基準にして１つの内部アドレスナンバ当たり４ビットのデータが連続してアクセスされる。この場合、４×４サイズのマクロブロックに属する１６ビットのデータは各々互いに異なるバンクＢＫ０−ＢＫ１５に貯蔵されている。したがって、４×４サイズのマクロブロックに属する１６ビットのデータは１回のサイクルの間、バンクＢＫ０−ＢＫ１５から同時に出力される。メモリ１９０から同時に出力された１６ビットのデータはデータ連結部１５０を通じて所定のビットだけシフトされ、対応する演算素子ＰＥ０−ＰＥ１５に提供される。データ連結部１５０でシフトされるビット数は各々の内部アドレス番号に貯蔵されるデータストリームの開始点９５の位置によって決められる。Ｈ．２６４のような映像標準は、８×８、４×８、８×４のように多様なパターンのマクロブロックを支援する。上述した４×４ブロック単位のデータアクセス動作を２回繰り返すようになれば、４×８または８×４サイズのマクロブロックに対応するデータがアクセスされる。これと同様に、８×８サイズのマクロブロックデータに対するアクセスは４×４ブロック単位のデータアクセス動作を４回繰り返すことによって実行される。
【００５５】
一方、上述したブロック単位のデータアクセス方法は、図６に示したように所定の領域に密集して構成されたデータだけではなく、図７に示したように、全体の領域に分散して構成されたデータにも適用可能である。しかし、図６で説明されたブロック単位のデータアクセス方法は、アクセスしようとするブロックの開始アドレスが４の倍数ではない場合（すなわち、４ｍ、ｎ）には上述したブロック単位のデータアクセスは可能ではない。一方、アクセスしようとするブロックの開始アドレスが全部４の倍数の場合（すなわち、４ｍ、４ｎ）には、ブロック単位のデータアクセスが可能である。
【００５６】
上述した衝突回避技法によるデータ配置方法と、前記データ配置方法を採用する本発明のＳＩＭＤプロセッサ１００は、計算量の多いＨ．２６４映像標準の１６×１６マクロブロックに対するインターポーレーション動作と、動き補償動作などに適用することができる。しかし、これは本発明が適用される一例に過ぎず、複数個の映像データを並列で処理する多様な演算動作に本発明のＳＩＭＤプロセッサ１００が適用することができることは、当業者において自明である。また、本発明によるＳＩＭＤプロセッサ１００に適用される映像標準がＨ．２６４映像標準にだけ限らないということも、当業者において自明である。
【００５７】
以下では、本発明によるＳＩＭＤプロセッサ１００が１６×１６マクロブロックのインターポーレーション動作と動き推定（ｍｏｔｉｏｎ  ｅｓｔｉｍａｔｉｏｎ）動作とに適用される場合について説明する。
【００５８】
Ｈ．２６４はより正確な動き補償を実行するため、１／２画素（ｈａｌｆ−ｐｅｌ）及び１／４画素（ｑｕａｒｔｅｒ−ｐｅｌ）を生成して動きを予測する。１／２画素及び１／４画素のようなサブ画素（ｓｕｂ−ｐｉｘｅｌ）を作り出すためには、周辺の画素を利用したインターポーレーションが実行されなければならない。例えば、１／２画素（ｈａｌｆ−ｐｅｌ  ｐｉｘｅｌ）を作り上げるためには周辺の６個の画素を参照してインターポーレーションが実行される。横インターポーレーション（ｈｏｒｉｚｏｎｔａｌ  ｉｎｔｅｒｐｏｌａｔｉｏｎ）の場合、左右各３個の画素ずつ合計６個の画素が用いられる。１６個の演算素子ＰＥ０−ＰＥ１５が具備された本発明のＳＩＭＤプロセッサ１００をインターポーレーション動作に用いる場合、横方向のメモリアクセスだけが可能であれば、６回のメモリアクセスを通じて１つのロウに対するインターポーレーションが実行される。このような演算は１６回繰り返されて、合計９６回のデータアクセスが実行される。しかし、縦方向のメモリアクセスが可能であれば、初期の６回のメモリアクセスを実行して、１番目のコラム（ｃｏｌｕｍｎ）に対するインターポーレーションを実行する。その後、前記インターポーレーションに用いた６個の画素データのうち５個の画素データを次のコラムのインターポーレーション演算で再使用する。その結果、合計２１回のメモリアクセスだけでもすべてのインターポーレーションを実行することができるようになる。本発明によるＳＩＭＤプロセッサ１００のデータ再使用特性は、縦方向のメモリアクセスのとき、メモリアクセス回数を顕著に減らすことができ、演算速度を向上させることができる。
【００５９】
図８乃至図１０は本発明によるＳＩＭＤプロセッサ１００を利用した動き推定方法を説明するための図である。動き推定に用いられる本発明のＳＩＭＤプロセッサ１００のメモリ１９０は図３に示したデータ配置方式によってデータを貯蔵する。このようなデータ貯蔵方式によると、データ衝突を防止し、かつ複数個のデータを同時に出力することができる。
【００６０】
本発明のＳＩＭＤプロセッサ１００において動き推定を実行するためには、まず、図８に示したように、縦方向のメモリアクセスを通じて現在のマクロブロックのデータを１６個の演算素子ＰＥ０−ＰＥ１５に順にローディングする。各々の演算素子ＰＥ０−ＰＥ１５にローディングされたデータは各々の演算素子ＰＥ０−ＰＥ１５の内部に具備されたレジスタに各々貯蔵される。縦方向の順次なメモリアクセスを通じて、各々の演算素子ＰＥ０−ＰＥ１５には現在のマクロブロックの１つのロウ（ｒｏｗ）に該当する１６個の８ビットデータが貯蔵される。
【００６１】
続いて、図９を参照すると、動き探索領域（ｓｅａｒｃｈ  ｒａｎｇｅ）が３２×３２サイズの場合、探索領域に含まれた複数個のブロックと最も類似のブロックを捜すために、座標を移動しながら１６×１６マクロブロックの各ロウに対するＡＤ（Ａｂｓｏｌｕｔｅ  Ｄｉｆｆｅｒｅｎｃｅ）を計算する。ＡＤ値は複数個の演算素子ＰＥ０−ＰＥ１５で並列に実行される。この場合、演算素子ＰＥ０−ＰＥ１５には現在のマクロブロックの１つのロウ（ｒｏｗ）に該当する１６個の８ビットデータが各々貯蔵されているため、貯蔵されたデータを利用してＡＤ演算が実行される。演算素子ＰＥ０−ＰＥ１５で計算されたＡＤ値は動き推定に用いられるＳＡＤ（Ｓｕｍ  ｏｆ  Ａｂｓｏｌｕｔｅ  Ｄｉｆｆｅｒｅｎｃｅ）値を求めるための中間計算結果に該当する。各々の演算素子ＰＥ０−ＰＥ１５で計算されたＡＤ値はメモリ１９０の一領域に貯蔵される。メモリ１９０内部には複数個のデータ貯蔵領域が具備されており、各々の演算素子ＰＥ０−ＰＥ１５で計算されたＡＤ値を順次に貯蔵する。例えば、１６×１６のマクロブロックの１番目のロウに対するＡＤ値ＡＤ（０、０）はメモリ１９０の第１貯蔵領域に貯蔵される。マクロブロックの２番目のロウに対するＡＤ値ＡＤ（０、１）、ＡＤ（１、１）はメモリ１９０の第１貯蔵領域と第２貯蔵領域とに各々貯蔵される。そして、マクロブロックの３番目のロウに対するＡＤ値ＡＤ（０、２）、ＡＤ（１、２）、ＡＤ（２、２）はメモリ１９０の第１貯蔵領域、第２貯蔵領域、及び第３貯蔵領域に各々貯蔵される。メモリ１９０の第１乃至第３貯蔵領域などに貯蔵された各々のロウに対するＡＤ計算結果は、ＳＡＤ計算のとき、再計算する必要はなく、以前に実行された結果を再使用するようになる。
【００６２】
図１０を参照すると、図９で説明された方式によって３２×３２サイズの探索領域の１つのロウについてＡＤ値を計算した後（すなわち、３２回のＡＤ値計算）、メモリ１９０には１６×１６大きさのＡＤ値の行列が１６個生成される。生成された１６個のＡＤ値の行列について縦方向のメモリアクセスを１６回連続して進行しながらＡＤ値を各々の演算素子ＰＥ０−ＰＥ１５にローディングする。演算素子ＰＥ０−ＰＥ１５は連続して入力されるＡＤ値を加えて１６×１６マクロブロックのＳＡＤ値を求めるようになる。
【００６３】
本発明によるＳＩＭＤプロセッサ１００のようなデータ配置とデータ再使用方式に従わない場合、重複される計算が複数回実行されるだけでなく、追加的な加算ツリー（Ａｄｄｅｒ  ｔｒｅｅ）を要するようになる。これと異なり、本発明によるＳＩＭＤプロセッサ１００は動き推定のためのＳＡＤ計算を実行することにより、ＳＡＤ計算に用いられる中間値であるＡＤ計算結果を各々のロウ別に貯蔵しておいて、貯蔵されたＡＤ計算結果を再使用する。その結果、ＳＡＤ計算時間とメモリアクセスの頻度とを減らすことができるようになる。ここで、メモリ１９０に貯蔵されるＡＤ計算結果は図３で説明されたデータ配置方法に基く。その結果、各々の演算素子ＰＥ０−ＰＥ１５に提供されるデータの衝突を防止し、かつデータローディング時間を最小化することができるようになる。一方、図９及び図１０に示したメモリ１９０は画素データを貯蔵する図２のメモリと別に構成してもよく、同一のメモリで構成しても良い。
【００６４】
以上のように、図面と明細書で最適の実施形態が開示された。ここで特定の用語が用いられたが、これはただ本発明を説明するための目的として用いられたものであり、意味限定や特許請求の範囲に記載した本発明の範囲を制限するために用いられたものではない。したがって、当業者であれば、今後多様な変形及び均等な他の実施形態が可能であることを理解するであろう。したがって、本発明の真正な技術的保護範囲は特許請求の範囲の技術的思想によって決められなければならない。
【図面の簡単な説明】
【００６５】
【図１】一般的なＳＩＭＤプロセッサの構造を示す図である。
【図２】本発明によるＳＩＭＤプロセッサの構造を示す図である。
【図３】図２に示したメモリのデータ配置図である。
【図４】処理しようとする映像データの論理的な配置と、アクセス方式を示す図である。
【図５】処理しようとする映像データの論理的な配置と、アクセス方式を示す図である。
【図６】処理しようとする映像データの論理的な配置と、アクセス方式を示す図である。
【図７】処理しようとする映像データの論理的な配置と、アクセス方式を示す図である。
【図８】本発明によるＳＩＭＤプロセッサを利用した動き推定方法を説明するための図である。
【図９】本発明によるＳＩＭＤプロセッサを利用した動き推定方法を説明するための図である。
【図１０】本発明によるＳＩＭＤプロセッサを利用した動き推定方法を説明するための図である。
【符号の説明】
【００６６】
１００  ＳＩＭＤプロセッサ
１１０  ＳＩＭＤアレイ
１５０  データ連結部
１９０  メモリ
【図１】
2008123479.tif 000003
【図２】
2008123479.tif 000004
【図３】
2008123479.tif 000005
【図４】
2008123479.tif 000006
【図５】
2008123479.tif 000007
【図６】
2008123479.tif 000008
【図７】
2008123479.tif 000009
【図８】
2008123479.tif 000010
【図９】
2008123479.tif 000011
【図１０】
2008123479.tif 000012