(57)【特許請求の範囲】
【請求項１】
複数の処理要素によって並列処理をするためのデータ処理装置であって、
前記複数の処理要素の各々は、少なくとも１つのリングバスを介して１つの処理要素の内部メモリから他の処理要素に読み出し専用パラメータデータを並列的に転送するために、データメモリから前記読み出し専用パラメータデータを分散的に格納する前記内部メモリを有しており、
前記処理要素の各々は、
前記データメモリ内の前記読み出し専用パラメータデータのグローバルアドレスを前記処理要素の数に対応するビット位置で第１部分と第２部分に分割するための分割手段と、
前記内部メモリの前記第１部分に応じたアドレスに配置された前記読み出し専用パラメータデータを取り出し、前記読み出し専用パラメータデータを前記少なくとも１つのリングバスに送る手段と、
前記少なくとも１つのリングバス上において前記読み出し専用パラメータデータをシフトさせる際のシフト動作の回数を求める比較手段であって、アクセス対象の前記読み出し専用パラメータデータが格納されている前記内部メモリに対応する処理要素の前記少なくとも１つのリングバス上の位置を指定するものであって、かつ、前記第２部分に対応する、該アクセス対象の前記読み出し専用パラメータデータのグローバルアドレスの部分と、当該比較手段を備える処理要素自身の位置と、の間の差を、前記リングバスのシフト動作の回数と比較して、この比較結果に基づいて前記読み出し専用パラメータデータを前記少なくとも１つのリングバスから当該比較手段を備える処理要素自身に取得させるための比較手段と、
を備えることを特徴とするデータ処理装置。
【請求項２】
請求項１に記載のデータ処理装置において、
前記複数の処理要素の数をＮＯＰＥとしたときに、前記ビット位置がｌｏｇ２（ＮＯＰＥ）によって決定され、
前記第１部分が前記データメモリの前記グローバルアドレスの上位部分であって、前記ビット位置の左側に位置しており、
前記第２部分が前記データメモリの前記グローバルアドレスの下位部分であって、前記ビット位置の右側に位置している
ことを特徴とするデータ処理装置。
【請求項３】
請求項１または請求項２に記載のデータ処理装置において、
前記分割手段が、
前記データメモリの前記グローバルアドレスを前記処理要素の数に対応するビット数分だけ右方向にシフトすることによって右シフト値を計算するための論理右シフト手段と、
ビット数が前記データメモリの前記グローバルアドレスのビット数に等しく、全てのビットが１である固定値を前記処理要素の数に対応するビット数分だけ左方向にシフトすることによって左シフト値を計算するための論理左シフト手段と、
前記左シフト値を反転することによって反転値を計算するためのインバータ手段と、
前記反転値と前記データメモリの前記グローバルアドレスとの論理積を計算するための論理積手段と、を備える
ことを特徴とするデータ処理装置。
【請求項４】
請求項１から請求項３のいずれかに記載のデータ処理装置において、
前記少なくとも１つのリングバスが、互いにシフト方向が反対向きである２つのリングバスを備える
ことを特徴とするデータ処理装置。
【請求項５】
請求項４に記載のデータ処理装置において、
前記比較手段は、
前記シフト動作の回数と、当該比較手段を備える処理要素自身の位置と前記グローバルアドレスの部分との間の差と、の加算処理又は減算処理を実行するための加算／減算手段と、
前記差の符号に応じて、前記加算／減算手段の処理を前記加算処理と前記減算処理との間で切り替えるための手段と、
前記加算／減算手段の出力がゼロかどうかを判定するための判定手段と、
前記差の前記符号に応じて前記２つのリングバスのうち、そこから前記読み出し専用パラメータデータを取り出す１つのリングバスを選択するための選択手段と、を備え、
前記グローバルアドレスの部分とは、前記アクセス対象の前記読み出し専用パラメータデータが格納されている前記内部メモリに対応する処理要素の前記少なくとも１つのリングバス上の位置を指定する、該アクセス対象の読み出し専用パラメータデータの前記グローバルアドレスの部分であり、
前記シフト動作の回数が符号なしの値として与えられ、前記差が符号ありの値として与えられる
ことを特徴とするデータ処理装置。
【請求項６】
複数の処理要素によって並列処理をするためのデータ処理方法であって、
前記複数の処理要素の各々は、少なくとも１つのリングバスを介して１つの処理要素の内部メモリから他の処理要素に読み出し専用パラメータデータを並列的に転送するために、データメモリから前記読み出し専用パラメータデータを分散的に格納する前記内部メモリを有し、
前記データ処理方法は、
前記処理要素の各々が、前記データメモリ内の前記読み出し専用パラメータデータのグローバルアドレスを前記処理要素の数に対応するビット位置で第１部分と第２部分に分割すること、
少なくとも前記処理要素のいずれかが、前記内部メモリの前記第１部分に応じたアドレスに配置された前記読み出し専用パラメータデータを取り出し、前記読み出し専用パラメータデータを前記少なくとも１つのリングバスに送ること、
前記読み出し専用パラメータデータを取得すべき処理要素が、前記読み出し専用パラメータデータを取得すべき処理要素自身の位置と、アクセス対象の前記読み出し専用パラメータデータが格納されている前記内部メモリに対応する処理要素の前記少なくとも１つのリングバス上の位置を指定し、前記第２部分に対応する、該アクセス対象の読み出し専用パラメータデータのグローバルアドレスの部分と、の間の差を求めることと、
前記読み出し専用パラメータデータを取得すべき処理要素が、前記読み出し専用パラメータデータの前記少なくとも１つのリングバス上のシフト動作の回数と、前記差を比較することと、
前記読み出し専用パラメータデータを取得すべき処理要素が、前記比較することにおける比較結果に応じて、前記読み出し専用パラメータデータを取得すべき処理要素自身に、前記少なくとも１つのリングバスから前記読み出し専用パラメータデータを取得させること、を含む
ことを特徴とするデータ処理方法。
【請求項７】
請求項６に記載のデータ処理方法において、
前記分割することが、
前記データメモリの前記グローバルアドレスを前記処理要素の数に対応するビット数分だけ右方向にシフトすることによって右シフト値を計算すること、
ビット数が前記データメモリの前記グローバルアドレスのビット数に等しく、全てのビットが１である固定値を前記処理要素の数に対応するビット数分だけ左方向にシフトすることによって左シフト値を計算すること、
前記左シフト値を反転することによって反転値を計算すること、
前記反転値と前記データメモリの前記グローバルアドレスとの論理積を計算すること、を含む
ことを特徴とするデータ処理方法。
【請求項８】
請求項６または請求項７に記載のデータ処理方法において、
前記少なくとも１つのリングバスが、互いにシフト方向が反対向きである２つのリングバスを備える
ことを特徴とするデータ処理方法。
【請求項９】
請求項８に記載のデータ処理方法において、
前記比較することが、
前記シフト動作の回数と、前記読み出し専用パラメータデータを取得すべき処理要素自身の位置と前記グローバルアドレスの部分との間の差と、の加算処理又は減算処理を実行すること、
前記差の符号に応じて、前記加算処理又は減算処理を実行することにおいて、
前記加算処理と前記減算処理との間で切り替えること、
前記加算処理又は減算処理を実行することによる結果がゼロかどうかを判定すること、
前記差の前記符号に応じて前記２つのリングバスのうち、そこから前記読み出し専用パラメータデータを取り出す１つのリングバスを選択すること、を含み、
前記グローバルアドレスの部分とは、前記アクセス対象の前記読み出し専用パラメータデータが格納されている前記内部メモリに対応する処理要素の前記少なくとも１つのリングバス上の位置を指定する、該アクセス対象の読み出し専用パラメータデータの前記グローバルアドレスの部分であり、
前記シフト動作の回数が符号なしの値として与えられ、前記差が符号ありの値として与えられる
ことを特徴とするデータ処理方法。
【請求項１０】
データメモリと、複数の処理要素と、複数の内部メモリと、少なくとも１つのリングバスと、中央プロセッサとを備えた並列処理をするためのデータ処理システムであって、
複数の前記処理要素は、並列処理をするためのものであり、
前記処理要素のそれぞれは、前記データメモリ内の読み出し専用パラメータデータのグローバルアドレスを前記処理要素の数に対応するビット位置で第１部分と第２部分に分割するものであり、
前記内部メモリのそれぞれは、前記処理要素の１つに対応して備えられるものであり、
複数の前記内部メモリは、前記データメモリから前記読み出し専用パラメータデータを分散的に格納するものであり、
前記少なくとも１つのリングバスは、複数の処理要素に接続されているものであり、
前記処理要素のいずれかは、前記内部メモリの前記第１部分に応じたアドレスに配置された前記読み出し専用パラメータデータを取り出し、前記読み出し専用パラメータデータを前記少なくとも１つのリングバスに送るものであり、
前記中央プロセッサは、前記少なくとも１つのリングバス上の前記読み出し専用パラメータデータのシフト動作の回数をカウントするためのものであり、
複数の前記処理要素のうち、前記読み出し専用パラメータデータを取得すべき処理要素は、前記読み出し専用パラメータデータを取得すべき処理要素自身の位置と、アクセス対象であり取得すべき前記読み出し専用パラメータデータが格納されている前記内部メモリに対応する処理要素の前記少なくとも１つのリングバス上の位置を指定しておりかつ前記第２部分に対応する、該アクセス対象の読み出し専用パラメータデータのグローバルアドレスの部分との差を求めるものであり、
複数の前記処理要素のうち、前記読み出し専用パラメータデータを取得すべき処理要素は、前記シフト動作の回数と、前記差との比較を行い、比較結果に基づいて、前記少なくとも１つのリングバスから前記読み出し専用パラメータデータを取得するものである、データ処理システム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明はデータ処理装置、データ処理システム、及びデータ処理方法に関する。
【背景技術】
【０００２】
単一命令多重データ（ＳＩＭＤ）処理で動作するプロセッサが提唱されている（特許文献１）。図１５を参照して、そのようなＳＩＭＤの１つの例を説明する。図１５はＳＩＭＤアーキテクチャを示している概念的なブロック図である。図１５に示されているように、ＳＩＭＤアーキテクチャ９０は中央プロセッサ（ＣＰ）１０、複数の処理要素（ＰＥ）１１、リングバス１２及び１３、及び接続１４を備える。図１５は、それぞれＰＥ００〜ＰＥ１５で示されている１６個のＰＥ１１を示している。
【０００３】
ＣＰ１０はパラメータを格納するデータメモリ（ＤＭＥＭ）１６を備え、ＰＥ１１は処理のためにそれらのパラメータを使用する。各ＰＥ１１はＣＰ１０から転送されたパラメータを格納する内部メモリ（ＩＭＥＭ）１７を有する。ＣＰ１０はパイプライン化されたリングバス１２及び１３によって各ＰＥ１１に接続されている。ＣＰ１０及び各ＰＥ１１は接続１４を介してリングバス１２及び１３に接続されている。データはＣＰ１０と各ＰＥ１１との間でリングバス１２を介して時計回り方向に、及びリングバス１３を介して反時計回り方向に転送される。すなわち、データはＣＰ１０から各ＰＥ１１へ、時計回りリングバス１２及び反時計回りリングバス１３を介して転送される。
【０００４】
処理が開始されると、各ＰＥ１１はＣＰ１０のＤＭＥＭ１６から処理に必要なパラメータを取り出す。各ＰＥ１１は次のような一般的な方法でＣＰ１０のＤＭＥＭ１６に格納されているパラメータを要求する。
【０００５】
（１）要求に応じた転送
（２）プレローディング
【０００６】
上述の（１）要求に応じた転送の場合、ＰＥ１１がパラメータを必要とするたびに、ＣＰ１０によってパラメータがＤＭＥＭ１６から読み出され、要求を出しているＰＥ１１に転送される。このシーケンスは、例えば、非特許文献１に開示されている。しかしながら、ＰＥ１１によってデータが要求されるたびに要求パケットが交換されると、バスの通信量が大幅に増大する。１６個のＰＥが同時に又は連続的にデータを要求すると、リングバスの通信量は大幅に増大してしまう。さらに、ＰＥがデータを要求してからそれを受け取るまでに時間がかかり、ＰＥ１１は処理を開始する前に必要なデータが取り出されるまで待たなければならない。それゆえ、高いパラレル処理効率を期待することはできない。
【０００７】
図１６を参照して、データがプレローディングされる場合（上述の（２）の場合）を説明する。図１６はＰＥ１１での並列使用のための、内部メモリ（ＩＭＥＭ）１７内のパラメータの初期設定を示している。
【０００８】
各ＰＥ１１によるパラメータの使用の前に、ＣＰ１０によって全パラメータが一度、ＤＭＥＭ１６から読み出される。そして、それらのパラメータは各ＰＥ１１のＩＭＥＭ１７に格納するために、全てのＰＥ１１に一斉送信される。プログラム実行中、各ＰＥ１１は要求されたパラメータを読み出すために、任意のタイミングでそれ自身のＩＭＥＭ１７にアクセスすることができる。しかしながら、各ＰＥは自身のＩＭＥＭ１７に格納された全てのパラメータを有するため、各ＩＭＥＭ１７は非常に大きなメモリ容量を必要とする。このような状況から、システムは非常に大きな空間を必要とする。さらに、プレローディングは多数のデータを転送及び書き込みするために相当な時間を要する。
【０００９】
また、ＳＩＭＤアーキテクチャにおいて、ＩＭＥＭ１７の使用を最適化するためにＰＥ１１をグループ化することができる。図１７はこのシステム構造を示している。パラメータは複数のＩＭＥＭ１７に分配され、複数のＩＭＥＭ１７に格納される。この状態において、あるＰＥがそれ自身のＩＭＥＭ１７には格納されておらず、隣接するＩＭＥＭ１７に格納されているパラメータにアクセスしたい場合がある。上述のＳＩＭＤアーキテクチャに対して、特許文献２に開示されている仕組みを適用することができる。
【００１０】
ここで、コンパイル時に複数のＰＥがグループ化され、それら全てがアクセス可能な共通内部メモリを有する。その内部メモリに同時にアクセスしようとしているＰＥの全てに対してアクセスインジケータが設定される。アクセスインジケータを有するＰＥの１つが選択されるとともに、同一のアドレスにアクセスしようとしているＰＥが探し出される。そして、パラメータが内部メモリからロードされ、同一のアドレスにアクセスしようとしている全てのＰＥに転送される。さらに、これらのＰＥのアクセスインジケータがクリアされる。全てのＰＥからアクセスインジケータがクリアされるまで、この処理が繰り返される。この方法により、同一のアドレスに対する複数のアクセスが防止されるので、最適なアクセスが達成される。
【００１１】
特許文献３は、隣接する処理要素をグループ化することによって内部メモリアクセスを最適化し、それによりＳＩＭＤアーキテクチャの能力を最適化するための異なる手法を開示している。この手法においては、コンパイル時に２つの隣接する処理要素が処理要素の組にグループ化される。これらの組にされた処理要素において、異なるデータバスに接続されたメモリの両方の要素に対して同一のアドレスが割り当てられる。この構成は、例えば、１つのメモリをデータの取得のために使用し、他のメモリをデータの出力にために使用することを可能にする。
【００１２】
特許文献４及び特許文献５はさらに異なる手法を開示している。特許文献４及び５において、割り当ては中央プロセッサ自身によって行われる。特許文献５においては、リングバス上のデータのシフトを制御するためにリングバスコントローラが備えられている。データがリングバスに転送された後、中央プロセッサはリングバスコントローラにリングバス上のデータをシフトするように指示する。リングバスコントローラによる制御動作により、データはリングバス上を所定の量だけ移動する。所定のシフト動作が完了すると、リングバスコントローラは所望のシフト動作が完了したことを中央プロセッサに知らせる。そして、中央プロセッサは処理要素（ＰＥ）にそのデータを取り出すように指示する。処理要素（ＰＥ）は必要なデータを取り出す。
【先行技術文献】
【特許文献】
【００１３】
【特許文献１】米国特許公報第３５３７０７４号
【特許文献２】米国特許公報第７３６３４７２号
【特許文献３】米国特許公報第６７８５８００号
【特許文献４】米国特許公報第５８２８８９４号
【特許文献５】欧州特許公報第０１４７８５７Ａ２号（日本公開特許公報第６０−１４０４５６号）
【非特許文献】
【００１４】
【非特許文献１】Zvonko G. Vranesic、Michael Stumm、David M. Lewis、及びRon White「Hector: A Hierarchically Structured Shared-Memory Multiprocessor」 Computer、第２４巻、第１号、７２〜７９頁、１９９１年１月、７５頁、１〜６行目
【発明の概要】
【発明が解決しようとする課題】
【００１５】
データを転送する第１の方法（すなわち、要求に応じた転送）はアクセスが非常に遅いという問題がある。この問題の理由の１つは、要求のたびにＤＭＥＭからＩＭＥＭにデータが転送されなければならないということである。もう１つの理由は、１つのＩＭＥＭにデータが転送されている間、他の全てのＰＥはそのデータ要求が履行されるまで、それらの実行を中断して待たなければならないということである。
【００１６】
データを転送する第２の方法（すなわち、プレローディング）は高速であるが、パラメータデータが各ＰＥのＩＭＥＭ内に格納されなければならないので、内部メモリ内に大きなメモリ空間を必要とする。
【００１７】
特許文献２に開示された方法はデータをＰＥグループの内部メモリに格納することによって、この内部メモリの増大に対する問題を解決することを目的としている。特許文献２はまた、データにアクセスするための一般的な方法を示している。しかしながら、この一般的な方法のために、メモリアクセスの前にＰＥ間でアドレスを交換及び比較しなければならず、ＰＥ間のアドレス転送及び比較のために余分な制御論理及び余分な処理時間を消費する。
【００１８】
特許文献３に開示された方法は内部メモリ内のデータ量を減少させることができないという短所を有する。特許文献４に開示された方法は自己グループ化を行うために余分な制御論理を必要とするという短所を有する。特許文献５に開示された方法はリングバスのシフト動作を制御するために余分な制御論理を必要とし、中央プロセッサがＰＥによるデータの出入力動作及びリングバスコントローラによるリングバスシフトを管理しなければならないという短所を有する。
【００１９】
上述の特許／非特許文献に開示された方法は時間又は領域の点で非効率的である。
【課題を解決するための手段】
【００２０】
本発明は上述の問題の観点からなされたものであり、その目的は読み出し専用のパラメータが複数の内部メモリに分散されて格納されている場合に、（１つ又は複数の）リングバスを介して該読み出し専用パラメータを効率的に転送及び取り込みすることが可能なデータ処理装置、データ処理システム、及びデータ処理方法を提供することである。
【発明の効果】
【００２１】
本発明によると、データが複数の内部メモリに分散されて格納されている場合に、該データを効率的に読みだすことが可能なデータ処理装置、データ処理システム、及びデータ処理方法を提供することができる。
【図面の簡単な説明】
【００２２】
本発明の上述及び他の目的、長所、及び特徴は付随する図面とともに以下の特定の実施形態の記載を参照することによって、より明白になるだろう。
【図１】本発明の実施形態にしたがったデータ処理装置９００のアーキテクチャを示している概念的なブロック図である。
【図２】ＤＭＥＭ１０６に格納された読み出し専用パラメータとアドレスとの関係を示している。
【図３】各読み出し専用パラメータのグローバルアドレス６００の１つの形式を示している。
【図４】ＡｄｄｒＤＭＥＭとＡｄｄｒＩＭＥＭとの関係を示している。
【図５】ＰＥ１０１の構造を概略的に示しているブロック図である。
【図６】分割部１２２によって行われる分割処理の概念図を示している。
【図７】分割部１２２を示しているブロック図である。
【図８】分割部の必要なクロックサイクルでの、予想されるソフトウェアエミュレーションを示している。
【図９】ｃｍｐｍｖ部１２３を示しているブロック図である。
【図１０】比較／移動部の必要なクロックサイクルでの、予想されるソフトウェアエミュレーションを示している。
【図１１】各ＰＥ１０１におけるデータ処理方法を示しているフローチャートである。
【図１２】リングバスのシフト動作を制御するためにＣＰ１００で実行される処理動作を示している。
【図１３】Ｈ．２６４ビデオデコーダのデコードループを示しているブロック図である。
【図１４】マクロブロックを示している図である。
【図１５】特許文献１のＳＩＭＤアーキテクチャを示している概念的なブロック図である。
【図１６】内部メモリ（ＩＭＥＭ）内のパラメータの初期設定を示している。
【図１７】ＩＭＥＭの使用を最適化するためにＰＥをグループ化することができるシステム構造を示している。
【発明を実施するための形態】
【００２３】
（実施の形態１）
本発明の実施形態にしたがったデータ処理装置は単一命令多重データ処理（ＳＩＭＤ）を実行するプロセッサである。図１を参照して、本発明の実施形態にしたがったデータ処理装置を説明する。図１は本発明の実施形態にしたがったデータ処理装置９００のアーキテクチャを示している概念的なブロック図である。図１に示されているように、このアーキテクチャは中央プロセッサ（ＣＰ）１００、データメモリ（ＤＭＥＭ）１０６、処理要素（ＰＥ）１０１、内部メモリ（ＩＭＥＭ）１０７、リングバス１０２、リングバス１０３、接続１０４、及び、シフトレジスタ１０５を備える。
【００２４】
ＣＰ１００は読み出し専用パラメータを格納するデータメモリＤＭＥＭ１０６を有し、ＰＥ１０１は処理のためにそれらの読み出し専用パラメータを使用する。ここで、処理のために３２個の読み出し専用パラメータが使用される具体例について説明する。すなわち、ＤＭＥＭ１０６には３２個の読み出し専用パラメータが格納される。ここで、ＤＭＥＭ１０６に格納された３２個の読み出し専用パラメータのアドレスがそれぞれ「００」〜「３１」に設定されているとする。図２はＤＭＥＭ１０６内の読み出し専用パラメータとそれらのＤＭＥＭ１０６内のアドレスＡｄｄｒＤＭＥＭとの関係を示している。
【００２５】
ＣＰ１００は接続１０４を介して２つのリングバス１０２及び１０３に接続されている。ＣＰ１００はＤＭＥＭ１０６に格納された読み出し専用パラメータを読み出し、読み出された読み出し専用パラメータはリングバス１０２及び１０３を介して転送される。
【００２６】
図１は１６個のＰＥ１０１が備えられている例を示している。図１において、説明の簡略化のために１６個のＰＥ１０１にはそれぞれ添え字「００」〜「１５」が付けられている。すなわち、１６個のＰＥ１０１はそれぞれＰＥ００〜ＰＥ１５として識別される。１６個のＰＥ１０１はＳＩＭＤモードで動作する。すなわち、ＣＰ１００が単一の命令を送ると、ＰＥ１０１は並列処理を実行する。
【００２７】
全てのＰＥ１０１は接続１０４を介して２つのリングバス１０２及び１０３に接続されている。リングバス１０２及び１０３にはシフトレジスタ１０５が備えられている。シフトレジスタ１０５はリングバス１０２及び１０３上で互いに接続されている。リングバス１０２及び１０３の各々のシフトレジスタ１０５の数はＰＥ１０１の数に一致している。リングバス１０３はリングバス１０２とは逆の方向にデータを転送する。リングバス１０２は時計回り方向にデータを転送し、リングバス１０３は反時計回り方向にデータを転送する。それゆえ、リングバス１０２上のシフトレジスタ１０５のシフト方向はリングバス１０３上のシフトレジスタ１０５のシフト方向に対して逆方向である。
【００２８】
また、各ＰＥ１０１はそれ自身のＩＭＥＭ１０７に接続されている。各ＩＭＥＭ１０７はローカルデータ格納部として機能する。単一のＩＭＥＭ１０７に対して単一のＰＥ１０１が接続されている。すなわち、ＩＭＥＭ１０７の数は１６個であり、ＰＥ１０１の数に等しい。これらのＩＭＥＭ１０７は分散的な並列処理のために必要な読み出し専用パラメータを格納する。ここで、各ＩＭＥＭ１０７が２つの読み出し専用パラメータを格納する具体例について説明する。すなわち、全部で３２個（１６×２）の読み出し専用パラメータが存在する例について説明する。
【００２９】
まず、リングバス１０２に備えられたシフトレジスタ１０５によって３２個のパラメータが順次、転送される。最初のクロックサイクルで、ＤＭＥＭ１０６からアドレス「００」に格納されている読み出し専用パラメータ「０１」が読み出され、リングバス１０２に備えられたシフトレジスタ１０５に保持される。なお、ＣＰ１００はＤＭＥＭ１０６から読み出したデータを最も近いシフトレジスタ１０５に転送する。すなわち、読み出し専用パラメータ「０１」はＣＰ１００の下流側で最も近いシフトレジスタ１０５に格納される。次のクロックサイクルで、読み出し専用パラメータ「０１」は次のシフトレジスタ１０５に転送されるとともに、ＣＰ１００からアドレス「０１」に格納されている読み出し専用パラメータ「０２」が読み出され、シフトレジスタ１０５に保持される。
【００３０】
この処理を繰り返すことにより、１６個の読み出し専用パラメータがシフトレジスタ１０５に保持される。すなわち、リングバス１０２に備えられた各シフトレジスタ１０５は読み出し専用パラメータを１つずつ保持する。そして、各ＩＭＥＭ１０７は対応するシフトレジスタ１０５に保持されている読み出し専用パラメータデータを格納する。すなわち、各ＩＭＥＭ１０７には読み出し専用パラメータが１つずつ保持される。例えば、読み出し専用パラメータ「０１」はＰＥ００のＩＭＥＭ１０７に格納される。同様に、読み出し専用パラメータ「０２」〜「１６」はそれぞれ、ＰＥ０１〜ＰＥ１５のＩＭＥＭ１０７に格納される。
【００３１】
この処理は２回繰り返され、それによって各ＩＭＥＭ１０７には２つの読み出し専用パラメータが格納される。読み出し専用パラメータ「１７」〜「３２」も上述した方法で転送される。結果として、例えば、読み出し専用パラメータ「０１」及び「１７」がＰＥ００のＩＭＥＭ１０７に順次、格納される。
【００３２】
次に、各読み出し専用パラメータのグローバルアドレスについて説明する。図３は各読み出し専用パラメータのグローバルアドレス６００の１つの形式を示している。図３に示されているように、グローバルアドレスは２つの部分に分割される。上位ビット６０１は、ＩＭＥＭ１０７内の読み出し専用パラメータのアドレスを示すアドレスＡｄｄｒＩＭＥＭを表す部分である。このアドレスＡｄｄｒＩＭＥＭは以下の式によって計算することができる。
ＡｄｄｒＩＭＥＭ＝ＡｄｄｒＤＭＥＭ／ＰＥ＿ＰＥＲ＿ＧＲＯＵＰ  ・・・  （１）
【００３３】
読み出し専用パラメータはＰＥグループに分散されて格納されているので、ＩＭＥＭ１０７内のＡｄｄｒＩＭＥＭはＤＭＥＭ１０６のＡｄｄｒＤＭＥＭをＰＥ１０１の数で割ることによって計算される。ＡｄｄｒＤＭＥＭの上位ビットに注目することにより、ＡｄｄｒＩＭＥＭを計算することができる。例えば、ＡｄｄｒＤＭＥＭが「２７」、ＰＥ＿ＰＥＲ＿ＧＲＯＵＰが「１６」、ＡｄｄｒＩＭＥＭが「１」であるとする。ＰＥ＿ＰＥＲ＿ＧＲＯＵＰが「１６」かつＡｄｄｒＤＭＥＭが「００」〜「１５」の範囲にある場合、ＡｄｄｒＩＭＥＭは０である。ＡｄｄｒＤＭＥＭが「１６」〜「３１」の範囲にある場合、ＡｄｄｒＩＭＥＭは１である。図４はＡｄｄｒＤＭＥＭとＡｄｄｒＩＭＥＭとの関係を示している。
【００３４】
このように、ＩＭＥＭ１０７内のアドレスＡｄｄｒＩＭＥＭを計算するためにアドレスＡｄｄｒＤＭＥＭをＰＥ１０１の数ＰＥ＿ＰＥＲ＿ＧＲＯＵＰで割る。上述の例はＰＥ＿ＰＥＲ＿ＧＲＯＵＰ＝１６として説明したが、もちろん、ＰＥ＿ＰＥＲ＿ＧＲＯＵＰは１６以外の数値であってもよい。
【００３５】
下位ビット６０２は、読み出し専用パラメータを格納しているＩＭＥＭのリングバス１０２上の位置を示すＰＯＳＩＭＥＭを表す部分である。すなわち、ＰＯＳＩＭＥＭはアクセス対象の読み出し専用パラメータのグローバルアドレスの一部であり、該アクセス対象の読み出し専用パラメータが格納されているリングバス１０２内の位置を指定する。
【００３６】
ＰＯＳＩＭＥＭはＡｄｄｒＤＭＥＭとＰＥ＿ＰＥＲ＿ＧＲＯＵＰ （この例においては＝１６）を用いたモジュロ演算を行うこと、すなわち、割り算の余りによって計算される。図４はＡｄｄｒＤＭＥＭとＰＯＳＩＭＥＭとの関係を示している。すなわち、読み出し専用パラメータのグローバルアドレスは各々、２つの部分６０１及び６０２から構成されている。
【００３７】
なお、部分６０１は第１オペランドとなり、部分６０２は第２オペランドとなる。部分６０１はアドレスの上位部分であり、ビット位置の左側に位置している。部分６０２はアドレスの下位部分であり、ビット位置の右側に位置している。
【００３８】
下位部分６０２と上位部分６０１の間の境界６０３はＰＥの数に応じて決まる。すなわち、アドレスを２つの部分に分割する境界６０３はＰＥグループに含まれるＰＥの数ＰＥ＿ＰＥＲ＿ＧＲＯＵＰに応じて変化する。詳細には、分割位置はｌｏｇ２ （ＰＥ＿ＰＥＲ＿ＧＲＯＵＰ）によって計算される。
【００３９】
例えば、ＰＥの数が１６（＝２４）である場合、グローバルアドレスが分割されるビット位置（分割位置）は下位側から４番目のビットに対応する。したがって、境界６０３は下位側から４番目のビットと５番目のビットの間に位置する。下位側の４つのビットはＰＯＳＩＭＥＭを表し、それより上位側のビットはＡｄｄｒＩＭＥＭを表す。例えば、ＡｄｄｒＤＭＥＭが１６ビットで表されるとすると、上位側の１２個のビットがＡｄｄｒＩＭＥＭに対応する。
【００４０】
次に、図５を参照してＰＥ１０１の構造を説明する。図５はＰＥ１０１の構造を概略的に示しているブロック図である。図５に示されているように、ＰＥ１０１は多様な演算を実行する演算論理装置（ＡＬＵ）１２１を備える。演算論理装置１２１は分割部１２２及び比較／移動部１２３を備えている。分割部１２２はＡｄｄｒＤＭＥＭを２つの部分に分割するための分割処理を実行する。比較／移動（ｃｍｐｍｖ）部１２３は読み出し専用パラメータを移動させるためにシフト距離「シフト」をリングバス１０２及び１０３上のシフトの回数と比較するための比較／移動処理を実行する。
【００４１】
以下に、ＰＥ１０１で実行される処理を詳細に説明する。まず、ＰＥ１０１で実行される複数の処理のうち、ＡｄｄｒＤＭＥＭを２つの部分に分割するための処理（以下、「分割処理」とも呼ぶ）を説明する。
【００４２】
図６は分割部１２２によって実行される分割処理の概念図を示している。この分割処理はＡｄｄｒＤＭＥＭ及びＰＥ＿ＰＥＲ＿ＧＲＯＵＰに基づいて行われる。ＣＰ１００から各分割部１２２にＡｄｄｒＤＭＥＭ及びＰＥ＿ＰＥＲ＿ＧＲＯＵＰが入力される。そして、各分割部１２２はｌｏｇ２（ＰＥ＿ＰＥＲ＿ＧＲＯＵＰ）を用いてＡｄｄｒＤＭＥＭを分割する。なお、ｌｏｇ２（ＰＥ＿ＰＥＲ＿ＧＲＯＵＰ）は自然数として与えられる。
【００４３】
ここで、ＡｄｄｒＤＭＥＭを２つの部分に分割することによって得られた２つの値はそれぞれＤＳＴ０及びＤＳＴ１であるとする。詳細には、ＡｄｄｒＤＭＥＭはＰＥの数に応じて決まる分割点で分割され、２つの出力ＤＳＴ０及びＤＳＴ１を与える。ここで、ＤＳＴ０はＡｄｄｒＩＭＥＭに対応し、ＤＳＴ１はＰＯＳＩＭＥＭに対応する。
【００４４】
これらの値は以下の式（２）によって計算することができる。
（ＤＳＴ０，ＤＳＴ１）＝ｓｐｌｉｔ（ＡｄｄｒＤＭＥＭ，ｌｏｇ２（ＰＥ＿ＰＥＲ＿ＧＲＯＵＰ））  ・・・  （２）
【００４５】
例えば、ＰＥ＿ＰＥＲ＿ＧＲＯＵＰが２のｎ乗（ｎは自然数）である場合、ｌｏｇ２（ＰＥ＿ＰＥＲ＿ＧＲＯＵＰ） は自然数となる。この例において、ＤＳＴ０は（ＡｄｄｒＤＭＥＭ／ＰＥ＿ＰＥＲ＿ＧＲＯＵＰ）に等しく、式（１）によって表されるＡｄｄｒＩＭＥＭに対応する。
【００４６】
次に、図７を参照して分割部の構造を説明する。図７は各ＰＥ１０１における分割部１２２を示しているブロック図である。
【００４７】
各ＰＥ１０１は入力値（ＡｄｄｒＤＭＥＭ）を２つの部分に分割する。以下では、ＡｄｄｒＤＭＥＭが１６ビットで表されると仮定して説明を行う。図７において、ＣＰ１００からＳＲＣ０及びＳＲＣ１が転送される。ＳＲＣ０は１６ビットのＡｄｄｒＤＭＥＭに対応し、ＳＲＣ１はＰＥ＿ＰＥＲ＿ＧＲＯＵＰを示すビットシフト量の値である。なお、ＳＲＣ０は符号なしの値である。ここで、ＰＥグループに含まれるＰＥの数は１６（＝２４）であるので、ビットシフト量は４である。すなわち、ＰＥの数を示すビットの数がビットシフト量に対応する。
【００４８】
ビット右シフタ４０１はＳＲＣ０のビットをビットシフト量だけ右側にシフトする。すなわち、ＳＲＣ０は４ビット分、右側にシフトされる。結果として、ＡｄｄｒＤＭＥＭの上位側１２ビットが対象となる。そして、ＳＲＣ０のビットを右側にシフトして得られた値はＤＳＴ０として出力される。ＤＳＴ０はＡｄｄｒＩＭＥＭに対応する。ＤＳＴ０は上述の方法によってＳＲＣ０及びＳＣＲ１に基づいて計算される。すなわち、ＳＲＣ０を、ＳＲＣ１に対応するビットの数（桁数）だけ右側にシフトして得られた値はＤＳＴ０に対応する（図８を参照）。例えば、ＳＲＣ０が（２進記述で）「１１０１１０１１０１００１１０１」である場合、上位１２ビット「１１０１１０１１０１００」はＤＳＴ０を表す。したがって、ＤＳＴ０はＡｄｄｒＩＭＥＭに対応する。
【００４９】
ここで、図７において、ＴＭＰ０の１６ビットの値は全て１である。詳細には、ＴＭＰ０はＡｄｄｒＤＭＥＭのビットの数に等しい数のビットによって表される最大値に固定される。ＴＭＰ０は２進記述で「１１１１１１１１１１１１１１１１」として表される。
【００５０】
ビット左シフタ４０２はＴＭＰ０のビットをＳＣＲ１だけ左側にシフトする。詳細には、ビット左シフタ４０２はＴＭＰ０の下位４ビットを値０で置き換える。結果として、ビット左シフタ４０２の出力ＴＭＰ１は「１１１１１１１１１１１１００００」と表される。すなわち、ＴＭＰ０をＳＲＣ１に対応するビットの数（桁数）だけ左側にシフトして得られた値はＴＭＰ１に対応する（図８を参照）。
【００５１】
インバータ４０３はＴＭＰ１のビットの値を反転する。ＴＭＰ１が反転処理され、ＴＭＰ２として出力される（図８を参照）。結果として、インバータ４０３の出力ＴＭＰ２は「００００００００００００１１１１」と表される。すなわち、下位４ビットの値は１であり、上位１２ビットの値は０である。
【００５２】
そして、ＡＮＤブロック４０４はＳＲＣ０とＴＭＰ２との論理積を計算する。ＳＲＣ０とＴＭＰ２との論理積はＤＳＴ１として出力される（図８を参照）。この時点で、ＴＭＰ２は下位４ビットの値が１であり、上位１２ビットの値が０である。したがって、ＡＮＤブロック４０４はＳＲＣ０の下位４ビットを対象にする。すなわち、ＡＮＤブロック４０４の出力ＤＳＴ１はＳＲＣ０の下位４ビットの値に等しい。ＤＳＴ１はＰＯＳＩＭＥＭに対応する。
【００５３】
このように、ＡｄｄｒＤＭＥＭは２つの部分に分割することができる。
【００５４】
また、これらの数値を使用してシフト距離「シフト」を得ることができる。各ＰＥ１０１はシフト距離「シフト」を計算する。シフト距離「シフト」はリングバス上のシフトの回数を規定する。シフト距離「シフト」は位置ＰＯＳｏｗｎとＰＯＳＩＭＥＭとの間のシフト距離を表す整数である。
【００５５】
ここで、読み出し専用パラメータを要求しているＰＥ１０１、すなわち、アクセス先のＰＥ１０１がＰＥ自身であり、それの位置がＰＯＳｏｗｎとして表されるとする。さらに、読み出し専用パラメータを保持しているＩＭＥＭ１０７の位置、すなわち、アクセス元のＩＭＥＭの位置がＰＯＳＩＭＥＭとして表されるとする。すなわち、読み出し専用パラメータを要求しているＰＥ１０１の位置がＰＯＳｏｗｎとして表され、要求された読み出し専用パラメータを格納しているＩＭＥＭ１０７の位置がＰＯＳＩＭＥＭとして表されるとする。
【００５６】
なお、位置ＰＯＳｏｗｎ及びＰＯＳＩＭＥＭはリングバス１０２上に位置するので、これらの位置は、例えば、図１に示されているように「００」〜「１５」等の自然数によって表される。例えば、図１に示されているように、ＰＥに付けられた添え字が位置を表す。
【００５７】
ＰＯＳｏｗｎはＰＥ自身の番号ＰＥｏｗｎ及びＰＥ＿ＰＥＲ＿ＧＲＯＵＰ用いたモジュロ演算を行うことによって計算される。ここで、一般的な場合、ＰＥ＿ＰＥＲ＿ＧＲＯＵＰ用いたモジュロ演算が必要となる。例えば、アーキテクチャ内の利用可能なＰＥの数ＮＯ＿ＯＦ＿ＰＥがグループ内のＰＥ１０１の数ＰＥ＿ＰＥＲ＿ＧＲＯＵＰに等しくない場合、モジュロ演算が必要となる。これらの数が等しい場合、ＰＯＳｏｗｎを計算するためのモジュロ演算は省略することができる。すなわち、ＰＥｏｗｎはＰＯＳｏｗｎに等しい。
【００５８】
シフト距離「シフト」は、読み出し専用パラメータがリングバス１０２又は１０３上のＰＯＳｏｗｎに到達するまでのデータ転送の回数に対応する。したがって、シフト距離「シフト」はＰＯＳｏｗｎからＰＯＳＩＭＥＭを引くことによって計算することができる。
【００５９】
シフト距離「シフト」は、データ（読み出し専用パラメータ）がＰＯＳＩＭＥＭ からＰＯＳｏｗｎに到達するまでのデータ転送の回数に対応する符号付きの整数である。例えば、ＰＯＳｏｗｎ＝４かつＰＯＳＩＭＥＭ＝６の場合、シフト距離「シフト」は−２である。また、ＰＯＳｏｗｎ＝６かつＰＯＳＩＭＥＭ＝３の場合、シフト距離「シフト」は＋３である。
【００６０】
シフト距離「シフト」は複数のＰＥ１０１で並列的に計算される。なお、ＡｄｄｒＤＭＥＭ及びＰＥ＿ＰＥＲ＿ＧＲＯＵＰはＣＰ１００から各ＰＥ１０１に送られる。また、各ＰＥ１０１は事前にＰＯＳｏｗｎを保持している。
【００６１】
各シフト距離「シフト」は以下の式によって計算される。
【００６２】
「シフト」 ＝ＰＯＳｏｗｎ−ＰＯＳＩＭＥＭ
＝（ＰＥｏｗｎ％（ＰＥ＿ＰＥＲ＿ＧＲＯＵＰ））−（ＡｄｄｒＤＭＥＭ ％ （ＰＥ＿ＰＥＲ＿ＧＲＯＵＰ ））  ・・・  （３）
【００６３】
ここで、「％」はモジュロ演算を意味している。
【００６４】
上述の式（３）で表されるように、シフト距離「シフト」はＰＯＳｏｗｎとＰＯＳＩＭＥＭとの間の距離に基づいて計算される。シフト距離「シフト」の絶対値はデータを取得するために必要なシフトの回数を規定し、シフト距離「シフト」の符号はシフトの方向を規定する。
【００６５】
すなわち、シフト距離「シフト」の符号が正であるか負であるかに応じて、データ（読み出し専用パラメータ）がリングバス１０２及び１０３のどちらから取得されるかが決定される。例えば、シフト距離「シフト」の符号が正である場合、データはリングバス１０２から取得され、符号が負である場合、データはリングバス１０３から取得される。
【００６６】
次に、図９を参照してｃｍｐｍｖ部１２３の構造を説明する。図９は各ＰＥ１０１におけるｃｍｐｍｖ部１２３の構造を示しているブロック図である。ｃｍｐｍｖ部１２３は入力値の比較処理、及び比較結果に応じた転送処理を実行する。
【００６７】
リングバス１０２及び１０３上のシフトの回数がＳＲＣ２として入力される。ＳＲＣ２は符号なしの値、すなわち、正の値である。また、予め計算されたシフト距離「シフト」がＳＲＣ３として入力される。
【００６８】
なお、シフト距離「シフト」は符号付きの値である。すなわち、シフト距離「シフト」の最上位ビット（ＭＳＢ）は符号を表す。例えば、シフト距離「シフト」の最上位ビットが１の場合、シフト距離「シフト」は負であり、最上位ビットが０の場合、シフト距離「シフト」は正である。すなわち、シフト距離「シフト」の最上位ビットは符号を表す符号ビットである。なお、シフト距離「シフト」は式（３）に基づいて各ＰＥ１０１により計算される。
【００６９】
加算／減算部５０１は符号なしＳＲＣ２と符号ありＳＲＣ３の加算／減算を行う。この処理のために、ＳＲＣ３の符号ビットはインバータ５０２に入力される。インバータ５０２はＳＲＣ３の符号ビットを反転する。ＳＲＣ３の符号ビットが反転され、モード信号「モード」として出力される（図１０を参照）。反転されたビットは加算／減算部のモードを決定するモード信号「モード」となる。インバータ５０２は反転されたビットをモード信号「モード」として加算／減算部５０１に出力する。
【００７０】
上述したように、シフト距離「シフト」が負の場合、符号ビットの値は１である。この場合、インバータ５０２は反転ビットの値を０に設定する。反転されたビットの値が０の場合、加算／減算部５０１は加算モードに移行する。すなわち、加算／減算部５０１はＳＲＣ２とＳＲＣ３との和を計算する。
【００７１】
一方、シフト距離「シフト」が正の場合、符号ビットの値は０である。この場合、インバータ５０２は反転ビットの値を１に設定する。そして、インバータ５０２は反転されたビットを加算／減算部５０１に出力する。反転されたビットの値が１の場合、加算／減算部５０１は減算モードに移行し、ＳＲＣ２とＳＲＣ３との差を計算する。すなわち、加算又は減算が実行され、ＴＭＰ３が出力される（図１０を参照）。
【００７２】
上述したように、インバータ５０２は、モードを切り替える加算／減算部５０１のために使用される。詳細には、インバータ５０２はシフト距離「シフト」の符号ビットを受信する。そして、加算／減算部５０１はシフト距離「シフト」の符号、すなわち、最上位ビットＭＳＢにしたがって加算モードと減算モードとの間の切り換えを行う。すなわち、加算／減算部５０１はインバータ５０２の出力にしたがってモードを切り替えながら、加算モード及び減算モードを実行する。すなわち、加算／減算部５０１は排他的に加算又は減算を行う。したがって、加算／減算部５０１はＳＲＣ２とＳＲＣ３との和又は差をＴＭＰ３として出力する。
【００７３】
ＳＲＣ２とＳＲＣ３との和又は差はＴＭＰ３として判定部５０３に入力される。判定部５０３はＴＭＰ３が０であるかどうかを判定する。ＳＲＣ２とＳＲＣ３の絶対値が互いに等しい場合、ＴＭＰ３は０になる。詳細には、ＴＭＰ３の全てのビット値が０である場合、ＴＭＰ３は０となる。そして、ＴＭＰ３が０である場合、判定部５０３は、ＴＭＰ３が０であることを示す信号ＤＳＴ２を出力する。例えば、ＴＭＰ３＝０のときＤＳＴ２＝１となり、ＴＭＰ３が０以外の値であるときＤＳＴ２＝０となる。すなわち、ＴＭＰ３が０であるかどうかが決定され、ＤＳＴ２が出力される（図１０を参照）。このように、判定部５０３から、ＴＭＰ３が０であるかどうかを示す信号ＤＳＴ２が出力される。
【００７４】
ＰＥ１０１はＤＳＴ２＝1への応答でリングバス１０２又は１０３から読み出し専用パラメータのデータを取得する。すなわち、読み出し専用パラメータを取得するタイミングが決定される。
【００７５】
次に、ＰＥ１０１がリングバス１０２及び１０３のどちらから読み出し専用パラメータを取得すべきかを決定するための処理を説明する。この処理のために、ＳＲＣ４及びＳＲＣ５がマルチプレクサ５０４に入力される。また、マルチプレクサ５０４は入力ライン「ＣＴＲＬ」を介してＳＲＣ３の符号ビットを受け取る。
【００７６】
ＳＲＣ４の値は時計回りリングバス１０２上の現在の値である。ＳＲＣ５の値は反時計回りリングバス１０３上の現在の値である。マルチプレクサ５０４の入力ラインＣＴＲＬが０の場合、ＳＲＣ４がマルチプレクサ５０４を通過する。一方、マルチプレクサ５０４の入力ラインＣＴＲＬが１の場合、ＳＲＣ５がマルチプレクサ５０４を通過する。すなわち、マルチプレクサ５０４はＳＲＣ３の符号ビットにしたがって、ＰＥｏｗｎがそこから読み出し専用パラメータを取り出すべきリングバスを決定する（図１０を参照）。
【００７７】
例えば、ＳＲＣ３の符号が正である場合、ＳＲＣ４の値がＤＳＴ３として出力される。この場合、時計回りリングバス１０２が選択されたことになる。一方、ＳＲＣ３の符号が負である場合、ＳＲＣ５の値がＤＳＴ３として出力される。この場合、反時計回りリングバス１０３が選択されたことになる。
【００７８】
そして、ＤＳＴ２が１である場合、ＰＥ１０１は選択されたリングバスから読み出し専用パラメータを取得する。
【００７９】
図１１を参照して、分割部１２２及びｃｍｐｍｖ部１２３によって実行される処理動作を詳細に説明する。なお、以下の例は、全てのＰＥ１０１が並列処理において単一かつ同一読み出し専用パラメータを使用するもとして説明する。そのようなケースは非ブロック化フィルタを使用する画像処理等で発生する。
【００８０】
図１１は各ＰＥ１０１におけるデータ処理方法を示しているフローチャートである。すなわち、図１１に示されているデータ処理は各ＰＥ１０１で実行される。
【００８１】
ＣＰ１００から各ＰＥ１０１に対して、ＤＭＥＭ１０６に保持されている並列処理に必要な読み出し専用パラメータのアドレスが転送される。例えば、ＳＩＭＤモードにて非ブロック化フィルタ処理が実行される場合、ＣＰ１００から並列処理に必要な読み出し専用パラメータのＡｄｄｒＤＭＥＭ及びＰＥ＿ＰＥＲ＿ＧＲＯＵＰが転送される。
【００８２】
そして、各ＰＥ１０１の分割部１２２は読み出し専用パラメータのＡｄｄｒＩＭＥＭを計算する（ステップＳ１０１）。すなわち、各ＰＥ１０１はＡｄｄｒＤＭＥＭ及びＰＥ＿ＰＥＲ＿ＧＲＯＵＰを使用して、上述の式（１）によりＡｄｄｒＩＭＥＭを得る。
【００８３】
次に、必要な読み出し専用パラメータが保持されているＩＭＥＭ１０７のリングバス１０２及び１０３上の位置が計算される（ステップＳ１０２）。すなわち、各ＰＥ１０１はＰＯＳＩＭＥＭを計算する。上述したように、ＰＯＳＩＭＥＭはＡｄｄｒＤＭＥＭ及びＰＥ＿ＰＥＲ＿ＧＲＯＵＰを使用したモジュロ演算を実行することによって計算される。
【００８４】
ここで、ステップＳ１０１及びＳ１０２は分割部１２２によって実行される。図７に示されているＤＳＴ０を出力するステップを含む処理はステップＳ１０１に対応する。図７に示されているＤＳＴ１を出力するステップを含む処理はステップＳ１０２に対応する。
【００８５】
次に、各ＰＥ１０１はシフト距離「シフト」を計算する（ステップＳ１０３）。
「シフト」＝ＰＯＳｏｗｎ−ＰＯＳＩＭＥＭ 
＝（ＰＥｏｗｎ％（ＰＥ＿ＰＥＲ＿ＧＲＯＵＰ））−（ＡｄｄｒＤＭＥＭ ％ （ＰＥ＿ＰＥＲ＿ＧＲＯＵＰ））  ・・・  （３）
【００８６】
次に、各ＰＥ１０１はアドレス（ＡｄｄｒＩＭＥＭ）及び制御信号をＩＭＥＭ１０７に転送する（ステップＳ１０４）。各ＰＥ１０１はＡｄｄｒＩＭＥＭに対応する読み出し専用パラメータを取得するための命令を各ＩＭＥＭ１０７に送る。
【００８７】
そして、各ＩＭＥＭ１０７の出力がリングバス１０２及び１０３の両方に送られる（ステップＳ１０５）。詳細には、ＰＥ１０１がＩＭＥＭ１０７からＩＭＥＭ１０７内のＡｄｄｒＩＭＥＭの位置に格納された読み出し専用パラメータを受け取り、その読み出し専用パラメータをリングバス１０２及び１０３に転送する。
【００８８】
次に、予め計算されたシフト距離「シフト」が０であるかどうかが判定される（ステップＳ１０６）。すなわち、各ＰＥ１０１は、それ自身のＩＭＥＭ１０７に読み出し専用パラメータが格納されているかどうかを判定する。予め計算されたシフト距離「シフト」が０である場合（ステップＳ１０６でＹＥＳ）、ＰＥ１０１はそれ自身のＩＭＥＭ１０７の出力を受け取る（ステップＳ１０７）。
【００８９】
詳細には、ＰＥ１０１はＰＥ１０１に対応するＩＭＥＭ１０７に格納されている読み出し専用パラメータを取得する。もちろん、読み出し専用パラメータはシフトレジスタ１０５から取得されてもいいし、又はＩＭＥＭ１０７から取得されてもよい。すなわち、シフト距離「シフト」が０に等しいＰＥ１０１については、読み出し専用パラメータはシフトされる前に取得される。そして、シフト距離「シフト」が０に等しいＰＥ１０１については、読み出し専用パラメータを取得するための処理は終了する（ステップＳ１０８）。
【００９０】
予め計算されたシフト距離「シフト」が０でない場合（ステップＳ１０６でＮＯ）、読み出し専用パラメータはリングバス上でシフトされる。ｃｍｐｍｖ部１２３はリングバス１０２及び１０３上のシフト回数をシフト距離「シフト」の絶対値と比較する（ステップＳ１０９）。リングバス１０２及び１０３上のシフト回数がシフト距離「シフト」の絶対値より小さい場合、（ステップＳ１０９でＮＯ）、読み出し専用パラメータは再度、シフトされる。すなわち、読み出し専用パラメータは、リングバス１０２及び１０３上で行われたシフト回数が予め計算されたシフト距離「シフト」の絶対値に等しくなるまで繰り返しシフトされる。
【００９１】
そして、シフト距離「シフト」がリングバス上のシフト回数と等しくなったとき（ステップＳ１０９でＹＥＳ）、シフト距離「シフト」が０より大きいかどうかを判定する。すなわち、シフト距離「シフト」の符号を判定する。
【００９２】
符号が負である場合（ステップＳ１１０でＮＯ）、反時計回りリングバス１０３から読み出し専用パラメータのデータが取得される（ステップＳ１１１）。符号が正である場合（ステップＳ１１０でＹＥＳ）、時計回りリングバス１０２から読み出し専用パラメータのデータが取得される（ステップＳ１１２）。
【００９３】
ここで、ステップＳ１０９〜Ｓ１１２はｃｍｐｍｖ部１２３によって実行される。図９に示されているＤＳＴ２を出力するステップを含む処理はステップＳ１０９に対応する。図９に示されているＤＳＴ３を出力するステップを含む処理はステップＳ１１０〜Ｓ１１２に対応する。
【００９４】
上述の方法により、読み出し専用パラメータがリングバス１０２及び１０３を介して転送される。そして、各ＰＥ１０１は処理のために必要な読み出し専用パラメータを取得する。取得された読み出し専用パラメータは各ＰＥ１０１に組み込まれているレジスタに格納される。そして、各ＰＥ１０１は読み出し専用パラメータを使用して処理（例えば、非ブロック化フィルタ処理）を実行する。当然のことながら、各ＰＥ１０１はＳＩＭＤモードで処理を実行する。
【００９５】
次に、図１２を参照してＣＰ１００にて実行される処理動作を説明する。図１２はリングバスのシフト動作を制御するためにＣＰ１００で実行される処理動作を示している。まず、全てのＰＥ１０１が読み出し専用パラメータの取得を既に完了しているかどうかを判定する（ステップＳ２０１）。全てのＰＥ１０１が読み出し専用パラメータを既に取得している場合（ステップＳ２０１でＹＥＳ）、ＣＰ１００において実行される処理は終了する。
【００９６】
少なくともいずれかのＰＥ１０１が読み出し専用パラメータの取得を完了していない場合（ステップＳ２０１でＮＯ）、ＣＰ１００はリングバス１０２及び１０３上で読み出し専用パラメータを１回シフトする（ステップＳ２０２）。さらに、シフト回数をカウントしているシフトカウンタを１つ増大させる（ステップＳ２０３）。そして、ステップＳ２０１に戻り、全てのＰＥ１０１が読み出し専用パラメータの取得を完了するまで同様な処理を繰り返す。
【００９７】
次に、本実施形態の効果について説明する。
【００９８】
（１）読み出し専用パラメータは特許文献２に開示されているように１６個のＰＥを含むＰＥグループに分散されて格納されているが、特許文献２とは異なる様式で格納されており、これらの読み出し専用パラメータは（複数の）ＰＥによって同一のグローバルアドレスで同時に読み出される。この構成はＰＥ１０１間のアドレス情報の転送の必要性を無くす。すなわち、ＰＥ１０１間で読み出し専用パラメータの位置情報を転送する必要がない。各ＰＥ１０１は正確な位置情報を事前に通知されているので、各ＰＥ１０１はどのＰＥ１０１が必要な読み出し専用パラメータを保持しているかを認識している。読み出し専用パラメータのＡｄｄｒＩＭＥＭはＰＥによって計算され、読み出し専用パラメータを要求しているＰＥ１０１と該読み出し専用パラメータを保持しているＰＥ１０１との距離は事前に、ＰＥ１０１によって並列的に計算することができる。結果として、データ処理の効率は劇的に改善される。
【００９９】
（２）読み出し専用パラメータがＩＭＥＭ１０７に分散されて格納されている場合であっても、アクセスのために必要な処理時間を短縮することができる。反対向きの転送方向を有する２つのリングバス１０２及び１０３がＰＥ１０１に接続されており、それによって処理時間を約半分に短縮することができる。すなわち、シフト回数の最大値をＰＥ１０１の数の半分に減らすことができる。したがって、図１に示されている例において、全てのＰＥ１０１が必要な読み出し専用パラメータを取得するためにリングバスは最大でも８回シフトされればよい。
【０１００】
（３）上述した方法により、他のＩＭＥＭ１０７に格納されているデータを使用して算術処理を行うことができる。すなわち、複数のＰＥ１０１が処理を実行するために必要な読み出し専用パラメータを他のＩＭＥＭ１０７に格納することができる。また、ＤＭＥＭ１０６の読み出し専用パラメータデータを複数のＩＭＥＭ１０７に分散して格納することができる。結果として、ＩＭＥＭ１０７の容量を減少させることができる。
【０１０１】
（４）分割部１２２の使用は１クロックサイクルでの分割処理を可能にする。図７に示されている分割部１２２の各機能部は１クロックサイクルで単一の動作として実行される。したがって、図８に示されているように、この新規の機能部は必要なクロックサイクルを４サイクルから１サイクルに短縮させることができる。分割部１２２の４つの機能が中間信号を遅れさせるバッファやレジスタを使用せずに、同一のクロックサイクルで処理されるという理由により、このクロックサイクルの短縮が実現される。
【０１０２】
（５）図９に示されているｃｍｐｍｖ部１２３の各機能部も１クロックサイクルで単一の動作として実行される。したがって、図１０に示されているように、この新規の機能部は必要なクロックサイクルを４サイクルから１サイクルに短縮させることができる。ｃｍｐｍｖ部１２３の４つの機能が中間信号を遅れさせるバッファやレジスタを使用せずに、同一のクロックサイクルで処理されるという理由により、このクロックサイクルの短縮が実現される。
【０１０３】
（実施の形態２）
上述した単一命令多重データ処理（ＳＩＭＤ）を実行するデータ処理装置は好ましくは、並列画像プロセッサに適用することができる。上述のアーキテクチャをＨ．２６４非ブロック化フィルタに対して利用したケースを以下に説明する。
【０１０４】
図１３はＨ．２６４ビデオデコーダのデコードループ２０８を示しているブロック図である。Ｈ．２６４非ブロック化フィルタ２０１はインター予測部２０３及びイントラ予測部２０５とともにデコードループ２０８内で動作する閉ループフィルタである。非ブロック化フィルタ（デブロッキングフィルタ）２０１はローパスフィルタ（ＬＰＦ）として使用される。
【０１０５】
デコードループ２０８はさらに、加算部２０７、選択部２０６、参照フレームメモリ２０４、及び実フレームメモリ２０２を備える。加算部２０７はエラー信号２００と、Ｈ．２６４デコーダのデコードループで復号された画像の再構成画素値とを加算する。デコーダで画像を復号するために、イントラ予測及びインター予測の２つの技術が利用される。インター予測においては、画像を復号するために既に復号されているフレームの画素値が使用される。一方、イントラ予測では、現在処理されているマクロブロックを復号するために、実フレームの既に復号されている隣接するマクロブロックのデータが使用される。
【０１０６】
ここで、イントラ予測とインター予測の選択はＨ．２６４ビデオエンコーダで実行される。エラー信号とともに、イントラ予測及びインター予測のどちらか一方を選択するための信号がＨ．２６４ストリーム内の副次的情報としてＨ．２６４デコーダに転送される。実フレームメモリ２０２は実フレームを格納するためのフレームメモリである。参照フレームメモリ２０４はインター予測で使用される参照フレームを格納するためのメモリである。高い圧縮比での符号化の場合、非ブロック化フィルタ（デブロッキングフィルタ）２０１で、ブロックに伴う損失の多い復号が緩和される。
【０１０７】
ここで、図１４を参照してＨ．２６４非ブロック化フィルタ２０１におけるマクロブロックについて説明する。図１４はマクロブロックを示している図である。
【０１０８】
非ブロック化フィルタ２０１に対しては、同一の画像内容を記述する２つの異なるマクロブロック３００又はサブブロック３０１における２つの画素３０３は、２つの画素の独立した予測及び符号化の後、ブロック境界３０２の両側で異なる復号値の結果となる。非ブロック化フィルタ２０１はそのような復号値の間の差を、差の大きさの推定値に応じて緩和する。
【０１０９】
この差は量子化によって生じているので、この差の大きさは量子化ノイズに関係している。それゆえ、２つのパラメータ「ａ」及び「Ｃ０」が導入される。パラメータ「ａ」及び「Ｃ０」は量子化ステップの大きさに比例し、かつノイズ分散の平方根に比例する。さらに、第３のパラメータ「β」が導入される。これら全てのパラメータはブロックエッジへの、フィルタの容認可能な影響を決定する。パラメータ「ａ」及び「Ｃ０」がブロックの大きさに関係するのに対し、パラメータ「β」はブロック境界３０２の近傍の信号の平坦性に関係し、したがって可視度に関係する。
【０１１０】
非ブロック化フィルタの輝度成分について説明する。図１４に示されているように、単一のマクロブロック３００が１６×１６の画素３０３を含むとする。マクロブロックの単一のエッジ３０２に１６回のフィルタ動作が実行される。なお、図１４はＨ．２６４ビデオデコーダの非ブロック化フィルタ処理で使用されるマクロブロック構造を示している。
【０１１１】
各マクロブロック３００はさらに１６個のサブブロック３０１に分割される。単一のサブブロック３０１は４×４の画素３０３を含む。各エッジ３０２は２つの隣接するサブブロック３０１の間に延びている。１つのエッジを処理するために、エッジの片側４個ずつ、計８個の画素が必要である。
【０１１２】
これらの１６回のフィルタ動作が図１に示されている１６（ＮＯ＿ＯＦ＿ＰＥ）個のＰＥ１０１にマッピングされた場合、１６回のフィルタ動作は全て、単一のＰＥグループで並列的に処理される（ＰＥ＿ＰＥＲ＿ＧＲＯＵＰ ＝ ＮＯ＿ＯＦ＿ＰＥ ＝ １６個のＰＥ）。画像データ自体に加え、非ブロック化フィルタ処理には読み出し専用パラメータ（ａ、β、Ｃ０）の表が必要である。また、画像データ及び読み出し専用パラメータの表に加え、各エッジに対して表のインデックスに等しいアドレスが必要である。
【０１１３】
例えば、非ブロック化フィルタ処理のために必要な読み出し専用パラメータａ、β、Ｃ０はＤＭＥＭ１０６から転送され、ＰＥグループの全てのＩＭＥＭに分散されて格納される。データがイントラ予測を使用して復号される場合、全てのＰＥ１０１によって同一の読み出し専用パラメータが読み出されるだろう。詳細には、非ブロック化フィルタ処理において、複数のＰＥ１０１は同一の値のパラメータを読み出すことによって並列処理を実行する。この場合、ＣＰ１００は同一のパラメータセットを読み込むための命令を送信する。そして、全てのＰＥ１０１は同一の値のパラメータを読み込む。１６個のＰＥ１０１は同一の値のパラメータを読み込むことによって並列処理を実行する。上の例では、全てのＰＥ１０１が同一の値のパラメータを読み込むデータ処理方法について説明した。
【０１１４】
本発明はそれの実施形態を参照しながら開示及び説明されてきたが、本発明はこれらの実施形態に限定されるものではない。当業者には、請求の範囲によって規定される本発明の意図及び範囲から外れることなく、これらの実施形態の形状や詳細に対して多様な変更を加えることができることが明白であるだろう。
【０１１５】
多様な処理を実行する構成要素は機能部又はブロックとして記載されてきたが、それらの機能部又はブロックを手段に置き換えることも可能である。上述の説明では、例としてＳＩＭＤ技術を利用する処理要素が説明されたが、本発明は他の処理要素に対して適用することもできる。例えば、非ブロック化フィルタ処理以外の並列処理を実行する処理要素が利用されてもよい。
【０１１６】
図７に示されているように、ＳＲＣ０は右方向にシフトされ、ＴＭＰ０は左方向にシフトされているが、これらのシフト方向は反転されてもよい。例えば、アドレスＡｄｄｒＤＭＥＭ、アドレスＡｄｄｒＩＭＥＭ、及び位置ＰＯＳＩＭＥＭの全体構造が反転された場合、シフト方向も反転される。ここで、用語「反転された」は最下位ビットが左側に配置され、最上位ビットが右側に配置されることを意味する。それゆえ、この場合、ＳＲＣ０は左方向にシフトされ、ＴＭＰ０は右方向にシフトされる。
【０１１７】
実施形態１としてリングバス１０２及びリングバス１０３の両方を備えるアーキテクチャが示されたが、リングバス１０２だけを備えるアーキテクチャが採用されてもよい。この場合、「シフト」はリングバス１０２のシフト方向とともに計算されなければならない。そして、加算／減算の切り替えは不要であり、マルチプレクサ５０４の選択動作も不要である。このアーキテクチャにおいては、より多くのリングバス１０２のシフト動作が必要となるだろうが、分散的に格納された読み出し専用パラメータの使用効率は十分に改善されるだろう。
【０１１８】
＜文献の引用＞
この出願は、２００９年３月３０日に出願された国際出願ＰＣＴ／ＪＰ２００９／０５７０２０を基礎とする優先権を主張し、その開示の全てをここに取り込む。
【産業上の利用可能性】
【０１１９】
本発明は並列処理を実行するデータ処理装置、データ処理システム、及びデータ処理方法に適用することができる。
【符号の説明】
【０１２０】
１００…ＣＰ
１０１…ＰＥ
１０２…時計回り方向リングバス
１０３…反時計回り方向リングバス
１０４…接続
１０５…シフトレジスタ
１０６…ＤＭＥＭ
１０７…ＩＭＥＭ
１２１…ＡＬＵ
１２２…分割部
１２３…ｃｍｐｍｖ部
２０１…非ブロック化フィルタ
２０２…実フレームメモリ
２０３…インター予測部
２０４…参照フレームメモリ
２０５…イントラ予測部
２０６…切り替え部
２０７…加算部
２０８…デコード部
３００…マクロブロック
３０１…サブブロック
３０２…エッジ
３０３…画素
４０１…ビット右シフタ
４０２…ビット左シフタ
４０３…インバータ
４０４…ＡＮＤ部
５０１…加算／減算部
５０２…符号ビットインバータ
５０３…判定部
５０４…マルチプレクサ
６０１…ＡｄｄｒＩＭＥＭ
６０２…ＰＯＳＩＭＥＭ
６０３…境界
【図１】
0005488609.tif 000002
【図２】
0005488609.tif 000003
【図３】
0005488609.tif 000004
【図４】
0005488609.tif 000005
【図５】
0005488609.tif 000006
【図６】
0005488609.tif 000007
【図７】
0005488609.tif 000008
【図８】
0005488609.tif 000009
【図９】
0005488609.tif 000010
【図１０】
0005488609.tif 000011
【図１１】
0005488609.tif 000012
【図１２】
0005488609.tif 000013
【図１３】
0005488609.tif 000014
【図１４】
0005488609.tif 000015
【図１５】
0005488609.tif 000016
【図１６】
0005488609.tif 000017
【図１７】
0005488609.tif 000018