JP2009523293A - 並列処理システムにおけるマルチメディア・データのアルゴリズム・ステップを処理するための方法及び装置 - Google Patents

並列処理システムにおけるマルチメディア・データのアルゴリズム・ステップを処理するための方法及び装置 Download PDF

Info

Publication number
JP2009523293A
JP2009523293A JP2008550415A JP2008550415A JP2009523293A JP 2009523293 A JP2009523293 A JP 2009523293A JP 2008550415 A JP2008550415 A JP 2008550415A JP 2008550415 A JP2008550415 A JP 2008550415A JP 2009523293 A JP2009523293 A JP 2009523293A
Authority
JP
Japan
Prior art keywords
data
block
processing
algorithm
parallel
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Abandoned
Application number
JP2008550415A
Other languages
English (en)
Inventor
ラザール ビヴォラルスキー
ボグダン ミトュ
Original Assignee
ブライトスケール インコーポレイテッド
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by ブライトスケール インコーポレイテッド filed Critical ブライトスケール インコーポレイテッド
Publication of JP2009523293A publication Critical patent/JP2009523293A/ja
Abandoned legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/76Architectures of general purpose stored program computers
    • G06F15/80Architectures of general purpose stored program computers comprising an array of processing units with common control, e.g. single instruction multiple data processors
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T1/00General purpose image data processing
    • G06T1/20Processor architectures; Processor configuration, e.g. pipelining
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/76Architectures of general purpose stored program computers
    • G06F15/80Architectures of general purpose stored program computers comprising an array of processing units with common control, e.g. single instruction multiple data processors
    • G06F15/8007Architectures of general purpose stored program computers comprising an array of processing units with common control, e.g. single instruction multiple data processors single instruction multiple data [SIMD] multiprocessors
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5061Partitioning or combining of resources
    • G06F9/5066Algorithms for mapping a plurality of inter-dependent sub-tasks onto a plurality of physical CPUs
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06VIMAGE OR VIDEO RECOGNITION OR UNDERSTANDING
    • G06V10/00Arrangements for image or video recognition or understanding
    • G06V10/20Image preprocessing
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/169Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding
    • H04N19/17Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding the unit being an image region, e.g. an object
    • H04N19/176Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding the unit being an image region, e.g. an object the region being a block, e.g. a macroblock
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/42Methods or arrangements for coding, decoding, compressing or decompressing digital video signals characterised by implementation details or hardware specially adapted for video compression or decompression, e.g. dedicated software implementation
    • H04N19/436Methods or arrangements for coding, decoding, compressing or decompressing digital video signals characterised by implementation details or hardware specially adapted for video compression or decompression, e.g. dedicated software implementation using parallelised computational arrangements

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Physics & Mathematics (AREA)
  • Computer Hardware Design (AREA)
  • Software Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Computing Systems (AREA)
  • Multimedia (AREA)
  • Signal Processing (AREA)
  • Image Processing (AREA)
  • Compression Or Coding Systems Of Tv Signals (AREA)
  • Multi Processors (AREA)
  • Image Input (AREA)

Abstract

データ変数を並列処理するための効率的な方法及び装置。並列処理アレイは、データ変数を並行して処理するように構成された計算要素を有する。並列プロセッサの複数の計算要素に対するアルゴリズムがロードされる。アルゴリズムは、複数の処理ステップを含む。複数の計算要素の各々は、計算要素に関連するデータ変数を処理するように構成される。並列プロセッサの複数の計算要素に対する選択コードがロードされ、選択コードは、アルゴリズム・ステップのどれが、計算要素によりデータ変数に適用されるかを識別する。アルゴリズムの処理ステップは、計算要素によりデータ変数に適用され、各々の計算要素に対して、選択コードにより識別された処理ステップのみがデータ変数に適用される。

Description

本発明は、一般的に、並列処理に関する。より具体的には、本発明は、並列処理システムにおけるマルチメディア・データ処理をスケジューリングするための方法及び装置に関する。
本出願は、引用によりかつあらゆる目的でこの開示全体を本明細書に組み入れる、2006年1月10日に出願された米国特許仮出願番号第60/758,065号に基づく優先権を主張するものである。
マルチメディア・データの使用増加は、このようなデータを処理し、それをリアル・タイムで供給するためのより高速かつより効率的な方法に対する需要の増加をもたらした。詳細には、画像及びそれに付随した音響のような、マルチメディア・データを並行してより迅速かつより効率的に処理するための方法に対する需要が増加している。多くの場合、例えば、音響及びビデオがリアル・タイムで供給されるのに十分なだけ迅速に達成されなければならない相対的に数多くの計算を依然として必要とする、マルチメディア・データの圧縮及び/又は圧縮解除のような計算集中処理の際に、並行して処理する必要性が生じる。
したがって、マルチメディア・データの並列処理における努力を引き続き強化することが望ましい。このようなデータの並列処理に対するより高速かつより効率的な手法を開発することが特に望ましい。これらの手法は、ブロック並列処理、サブブロック並列処理、及び双線形フィルタ並列処理に対処する必要がある。
本発明は、方法及びコンピュータ可読媒体としてといった多数の方法で実施することができる。本発明の種々の実施形態を後述する。
データ変数を並行して処理するように構成された計算要素を有する並列処理アレイにおいて、この方法は、並列プロセッサの複数の計算要素に対するアルゴリズムをロードする、ステップを含み、アルゴリズムは複数の処理ステップを含み、複数の計算要素の各々は計算要素に関連するデータ変数を処理するように構成されており、並列プロセッサの前記複数の計算要素に対する選択コードをロードする、ステップを含み、選択コードはアルゴリズム・ステップのどれが計算要素によりデータ変数に適用されるかを識別し、アルゴリズムの処理ステップを計算要素によりデータ変数に適用する、ステップを含み、各々の前記計算要素に対して、選択コードにより識別された処理ステップのみがデータ変数に適用される、ことを含む。
別の態様においては、データ変数を並行して処理するように構成された計算要素を有する並列処理アレイにおいて処理する方法のための、コンピュータ実施可能命令を有するコンピュータ可読媒体であって、この方法は、並列プロセッサの複数の計算要素に対するアルゴリズムをロードする、ステップを含み、アルゴリズムは複数の処理ステップを含み、複数の計算要素の各々は計算要素に関連するデータ変数を処理するように構成されており、並列プロセッサの複数の計算要素に対する選択コードをロードする、ステップを含み、選択コードはアルゴリズム・ステップのどれが計算要素によりデータ変数に適用されるかを識別し、アルゴリズムの処理ステップを計算要素によりデータ変数に適用する、ステップを含み、各々の計算要素に対して、選択コードにより識別された処理ステップのみがデータ変数に適用される、ことを含む。
本発明の他の目的及び特徴は、明細書、特許請求の範囲、及び添付の図面を検討することにより明らかとなるであろう。
同じ参照符号は、図面全体を通して対応する部分を指す。
本明細書において記載される革新は、並列処理拡張の3つの主な領域に対処し、すなわち、ブロック並列処理、サブブロック並列処理、及び類似性アルゴリズム並列処理に対処する。
ブロック並列処理
ある意味では、この革新は、マルチメディア・データの並列処理のためのより効率的な方法に関する。種々の画像形式において、画像は、「後期」ブロック、すなわち、典型的にはマトリックス形態で見られる画像内の他のブロックの右下に一般的にあるブロックが「初期」ブロックすなわち、後期ブロックの左上のそれらの画像からの情報によって決まるように、ブロックに再分割されることが知られている。初期ブロックは、後期のものが初期ブロックから、依存データと呼ばれることが多い、情報を必要とするので、後期のものの前に処理されなければならない。したがって、ブロック(又はその一部)は、その依存データ順に、種々の並列プロセッサに伝送される。初期ブロックが最初に並列プロセッサに送られ、後期ブロックは後で送られる。ブロックは、特定の位置にある並列プロセッサに格納され、必要に応じて周囲にシフトされ、その結果、それが処理されるときに、その依存データが、特定の組の前の初期ブロックに指定された相対的位置をもって位置するようになる。このように、その依存データは、同じコマンドによって抽出することができる。すなわち、初期ブロックは、各々のプロセッサに、特定の位置からのその依存データを抽出するように命令する単一の組のコマンドによって後期ブロックを処理することができるように周囲にシフトされる。各々の並列プロセッサが同じコマンドの組によってそのブロックを処理するのを可能にすることで、本発明の方法は、単一の包括的なコマンドの組が送られることを可能にする代わりに、別個のコマンドを各々のプロセッサに送ることに対する必要性を排除する。このことが、より高速かつより効率的な処理をもたらす。
図1は、典型的に見られる及び/又はメモリ内に格納されるマトリックス形態で、例示的な画像フレームを概念的に示す。この例においては、1080iHD画像マトリックス10は、各々120個のマクロブロック12の68ラインに再分割される。典型的には、この1080iフレームのような画像は、個々のマクロブロック12によって処理される。すなわち、1つ又はそれ以上のマクロブロック12は、並列処理アレイの各々の計算要素(又はプロセッサ)によって処理される。しかしながら、本発明はマクロブロック12の処理に関連させて説明されることが多いが、本発明が並行して処理することができる、ブロックと言われることが多い、如何なる部分への画像及び他のデータの分割をも含むことを認識すべきである。
上記のように、図1の1080iHDフレームのような画像のマクロブロックは、図2A−2Bにさらに示されるように、依存データを含む。これらに限定されるものではないが、h.264最新式ビデオコード化規格及びVC−1 MPEG−4規格のような規格に従って、画像のブロックRの処理は、ブロックa、d、b、及びcからの依存データ(例えば、補間に必要なデータ等)を必要とする。すなわち、これらの規格に従って、画像の各々のブロックの処理は、すぐ左のブロック、並びに対角線方向にすぐ左上のブロック、真上のブロック、及び対角線方向にすぐ右上のブロックからの依存データを必要とする。したがって、ブロックaはまた、ブロックd及びbからの情報に依存し、ブロックbは、ブロックdからの情報に依存し、以下同様であるが、ブロックdは、その他のどのブロックからの情報にも依存しない。したがって、これらのブロックの並列処理は、ブロックdがまず処理され、続いてブロックdに依存するブロックa及びbが処理され、次いでブロックa、d、及びbからの情報に依存するブロックR及びcが処理され、以下同様に、対角線状の処理を必要とすることが分かる。
次に、図3A−3Cを参照すれば、最適な並列処理については、初期ブロックが後期ブロックの前に処理されるように、ブロックを順序正しくプロセッサにマッピングし処理できることが分かる。図3Aは、画像がビューアに現れる際の、例示的な画像のマクロブロック構造を示す。上記のように、図3Aのブロックは、後期ブロックについてのその依存データを保持する順に処理される。図3Bは、後期ブロックについてのその依存データを保持するために処理されなければならない順に、処理されなければならない対角線を示す。各々の横列は別個の対角線を示し、各々の対角線はその上の横列からの依存データのみを必要とする。例えば、ブロック()0は、画像の最も左上角に位置するので第1に処理され、依存データをもたない。ブロック00は、ブロック()0のみからの依存データを必要とするので、次に処理され、次の横列に現れる。ブロック11及び10は、ブロック11がブロック()0及び00からの依存データを必要とし、ブロック10は、ブロック00からの依存データを必要とするので、次に処理され、次の横列に現れる。したがって、点線によって強調表示される、図3Aにおけるブロックの各々の対角線を、図3Bに示される並列処理アレイの横列にマッピングできることが分かる。
図3Bに示されるように、ブロックを計算要素の横列にマッピングすると、必要とされる全ての依存データが各々の横列の上に保持されるが、依然として難点が存在する。より詳細には、ブロック毎の依存データは、依然として多くの場合、そのブロックに対する異なる位置に位置する。例えば、図3Aから、ブロック41が31、10、20、及び30という時計回りの順に、次のブロックに位置する依存データを有することが分かる。図3Bに示されるようにプロセッサにマッピングされるときに、これらのプロセッサは、プロセッサ31、10、20、及び30がブロック41の上に「L字」形状に配置される状態で、矢印によって示されるように配置される。これとは対照的に、ブロック93についての依存データは、矢印によって示されるように配置される、ブロック83、82、72、及び62に配置される。これは、各々のブロックが処理アレイ内に示される位置において処理されるように、各々の計算要素は、それに依存データを抽出するように指示するそれ自体のコマンドを必要とすることになることを示す。言い換えれば、ブロック毎の依存データが(ブロック41及び93によって示されるように)ブロック毎に異なって配置されるので、別個のデータ抽出コマンドを各々のプロセッサに送り、画像を処理することができる速度に減速しなければならない。
本発明の実施形態においては、そのブロックの処理の前にブロック毎の依存データをシフトすることによって、この問題が克服される。当業者であれば、何らかの方法で依存データをシフトできることを認識するであろう。しかしながら、依存データをシフトする1つの便利な手法は、依存データを含むブロックが上述の「L字」形状にシフトされる、図3Cに示される。すなわち、ブロックXが処理されるときに、それは、ブロックA−Dからの依存データを必要とする。画像内では、これらのブロックは、それぞれ、Xの真上、すぐ左上、すぐ左、及びすぐ右上に位置する。次に、並列処理アレイ内では、これらのブロックは、それぞれ、Xの2つ上のプロセッサ位置、3つ上のプロセッサ位置、1つ上のプロセッサ位置、及びすぐ右上のプロセッサ位置にシフトすることができる。例えば、図3Bにおいて、ブロック93の処理について、ブロック8Xとブロック6Xとを含む横列は、各々が1つ右の位置にシフトして、ブロック83、ブロック82、ブロック72、及びブロック62を特徴的な「L字」形状に配置することができる。
ブロックXの処理前にこのような全ての依存データをこの「L字」形状にシフトすることによって、同じコマンドの組を用いて、各々のブロックXを処理することができる。このことは、プロセッサ毎に別個のコマンドの組をロードすることを要求する代わりに、単一のロード動作においてコマンドの組を並列プロセッサにロードするだけでよいことを意味する。このことは、特に大規模な処理アレイについては、画像を処理するときに、かなりの時間の節約をもたらし得る。
当業者であれば、上述の手法が本発明の1つの実施形態に過ぎないことを認識するであろう。より具体的には、データを上述の「L字」形状にシフトすることができるが、本発明は、この構成へのデータ・ブロックのシフトに限定されるものではないことを認識するであろう。むしろ、本発明は、処理されることになるブロックX毎に共通に用いることができる、任意の構成、又は特徴的な位置への依存データのシフトを含む。特に、種々の画像形式は、依存データを図2Aに示されるもの以外のブロックに位置させて、「L字」形状以外の他の特徴的な位置又は形状をより使用しやすくすることができる。
当業者であれば、多数のマクロブロックを有する1080iHDフレームの内容でここまで本発明を説明してきたが、本発明は如何なる再分割部分にも分けることができる如何なる画像形式をも含むことも認識するであろう。すなわち、本発明の方法は、如何なるフレームの如何なる再分割部分と併せて用いることもできる。図4A−4Eは、種々のタイプのフレームの対角線をどのように様々な数のプロセッサの横列にマッピングできるかを示して、この点を例示する。図4Aにおいて、HDフレームの対角線は、最大61のプロセッサが単一の横列に用いられる状態で、257の横列のプロセッサが用いられる、台形の(又は代替的に菱形の、又は場合によってはさらにその両方の組み合わせの)レイアウトを生成する、示されるように連続した横列のプロセッサにマッピングすることができる。より小さいフレームは、より少ない横列及びより少ないプロセッサを使用する。例えば、図4Bにおいて、CIFフレームは、最大19のプロセッサが任意の横列に用いられる状態で、59の横列のプロセッサを使用する。同様に、図4Cにおいて、625SDフレームは、並列処理アレイにマッピングされるときに、117の横列と、1横列当たり最大36のプロセッサとを占有することになる。同様に、図4Dにおいて、SIFフレームは、同じアレイにマッピングされるときに、51の横列と、1横列当たり最大16のプロセッサとを占有することになる。図4Eにおいて、525SDフレームは、107の横列と、1横列当たり最大30のプロセッサとを占有することになる。これらの例から分かるように、本発明を用いて、並列処理アレイに如何なる画像をもマッピングし、上述のようにデータを横列にシフトすることができ、単一コマンド又はコマンドの組によってブロックの処理を可能にする。
本発明は、並列処理アレイのブロックと計算要素との間の厳密な1対1の対応関係に限定されるものではないことも認識すべきである。すなわち、本発明は、ブロックの一部が計算要素の一部にマッピングされ、これによりこれらのブロックが処理される効率及び速度を増加させる実施形態を含む。図5A−5Bは、画像ブロックが2つに分割される、1つのこのような実施形態を示す。次に、これらの分割部分の各々は、各々の分割部分がプロセッサの半分にマッピングされ処理されることを除けば、上記のように処理される。図5Aを参照すれば、ブロックは、示されるように、上部半分と下部半分に分割される。すなわち、左上方ブロックは、0及び2の、2つのサブブロックに分割される。同様に、その次のブロックは、サブブロック1及び3に分割され、以下同様である。各々のサブブロックは依存目的のために完全なブロックと同じものとして機能する、すなわち、サブブロック1はブロック0のみからの依存データを必要とし、最も左のサブブロック2がブロック0及び1からの依存データを必要とすること等に注目されたい。次に、図5Bを参照すれば、これらのサブブロックは、サブブロック0及び1が第1の横列にマッピングされ、サブブロック2及びサブブロック3が第2の横列にマッピングされ、以下同様である状態で、示されるように、プロセッサの半分にマッピングされる。次に、本発明のプロセスは、サブブロックが必要に応じてプロセッサの横列に沿ってシフトされる状態で、上記と同じ方法で用いることができる。
このように、従来の実施形態におけるより多くのプロセッサが単一の時間において占有されて、より多くの並列処理アレイを使用することを可能にし、よって、より高速の画像処理をもたらすことが分かる。特に、図3Bを参照すれば、使用されるプロセッサの数は、1横列おきに1つだけ増加し、すなわち、第1の2つの横列は1横列当たり1つのプロセッサを使用し、次の2つの横列は1横列当たり2つのプロセッサを使用すること等に注目されたい。これとは対照的に、図5Bは、その実施形態が、横列毎に1つだけ使用されるプロセッサの数を増加させる、すなわち、第1の横列が1つのプロセッサを使用し、第2の横列が2つを使用すること等を示す。このように、図5A−5Bの実施形態は、一度により多くのプロセッサを使用し、さらなる高速処理をもたらす。
図6A−6Bは、画像ブロックが4つの再分割部分に分割される、別のこのような実施形態を示す。例えば、画像の左上ブロックは、サブブロック0、2、4、及び6に分割される。次に、これらのサブブロックは、その依存データによって必要な順にプロセッサの一部にマッピングされる。すなわち、各々のプロセッサは、各々がサブブロックの横列を処理することができる4つの「サブ横列」に分割することができる。次に、種々のサブブロックは、示されるように、プロセッサのサブ横列にマッピングすることができる。例えば、0、1、2、及び3のサブブロックは、(第1のプロセッサがサブブロック0、サブブロック1、一方の2のサブブロック、及び一方の3のサブブロックを処理し、第2のプロセッサが他方の2及び3のサブブロックを処理する状態で)全てが第1の横列における2つのプロセッサにマッピングし、それにより処理することができる。この実施形態は、1つの代わりに、第1の横列において2つのプロセッサを用いることと、1横列当たり2だけプロセッサ数が増加し、よって、1横列当たりさらに多くのプロセッサを使用できるようにすることに注目されたい。
本発明は、ブロック及びプロセッサを16の再分割部分に分割することをさらに含む。さらに、本発明は、「並列の」多数のブロック処理、すなわち、1横列当たりの多数のブロック処理を含む。図7A−7Cは、両方のこれらの概念を示す。図7Aは、示されるように、ブロックを16のサブブロック()0−80に分割することを示す。当業者であれば、別個のブロックは、その依存データを正確に求めることができるように配置される限り、別個に処理できることを認識するであろう。図7Bは、関連のないブロック、すなわち、互いからの依存データを必要としないブロックを並行して処理することができることを示す。各々のブロックは、簡単にするためにサブブロックが添字なしに示される状態で、図7Aにおけるように分割される。ここで、例えば、第1のブロックは、同じ番号が上記のように同時に処理される状態で、0から9まで表記された16のサブブロックに分割される。各々の横列にあるブロックが互いからの依存データを必要としない限り、それらは、同じ横列において、共に処理することができる。その結果、プロセッサの1つのグループは、同時に多数の関連のないブロックを処理することができる。例えば、(それぞれ0−9、10−19、20−29、及び30−39と表記されたサブブロックを有する)図7Bにおける4つのブロックの上部の横列は、単一の組のプロセッサにおいて処理することができる。
(左側に沿って番号付けられた)プロセッサ及びそれらにロードされる対応するサブブロックの図表の図7Cがこの点を示す。ここで、(プロセッサが左側に沿って表記される)サブブロック0−9をプロセッサ0−9の再分割部分にロードして、示されたダイヤモンド状のパターンを形成することができる。次に、さらなるブロックは、サブブロック10−19がプロセッサ4−13にロードされる状態等で、重なる組のプロセッサにロードすることができる。このように、ブロックのさらなる再分割部分、並びに重なる組のプロセッサへの多数のブロックの「連鎖」の両方が、より迅速により多くのプロセッサを使用することを可能にし、より高速の処理をもたらす。
図7A−7Cは、4×4の処理を示す。同様に、8×8の処理でこの同じ技術を実施することができることを理解すべきである。
異なるプロセッサにおける異なるブロックを処理するのに加えて、同じブロック内の異なるタイプのデータを異なるプロセッサにおいて処理できることにも注目すべきである。特に、本発明は、同じブロックからの強度情報、ルーマ情報、及びクロマ情報の別個の処理を含む。すなわち、1つのブロックからの強度情報は、そのブロックからのルーマ情報とは別に処理することができ、それは、そのブロックからのクロマ情報とは別に処理することができる。当業者であれば、ルーマ及びクロマ情報は、上記のように、プロセッサにマッピングし処理することができ(すなわち、必要に応じて、シフトする等)、処理における効率を増加させるために、再分割部分が異なるプロセッサにマッピングされる状態で、さらに再分割できることに気づくであろう。図8A−8Cはこれを示す。図8Aにおいて、ルーマ・データの1つのブロックは、クロマ・データの対応する「半分のブロック」が同じプロセッサ又は異なるプロセッサにマッピングされる状態で、1つのプロセッサにマッピングすることができる。特に、強度、ルーマ、及びクロマ・データは、図7Bと同様に、おそらく少なくとも部分的に重なる組の横列において、隣接する組のプロセッサにマッピングできることに注目されたい。ルーマ及びクロマ情報は、図5A−5B及び図6A−6Bと関連させて記載されたように、個々の計算要素の再分割部分において処理するために、サブブロックに分割することもできる。特に、図8B−8Cは、それぞれ2つ及び4つのサブブロックへの1つのフレームのルーマ及びクロマ・データの分割を示す。次に、図8Bの2つのサブブロックは、図5A−5Bと関連させて記載されたように、プロセッサの異なる半体において処理することができる。同様に、図8Cの4つのサブブロックは、図6A−6Bにおいて記載されたもののように、プロセッサの異なる4半体において処理することができる。
上述の実施形態の幾つかはプロセッサの同じ横列による異なるブロックの並列処理を含むが、本発明は、プロセッサの同じ縦列に沿った異なるブロックの処理を含み、処理の効率及び速度を増加させることにも注目すべきである。種々のブロックによって占有されるプロセッサを概念的に示す、図9A−9Cは、後半の概念の実施形態を記載する。ここで、プロセッサの横列は、垂直軸に沿って延びる一方で、縦列は、水平軸に沿って延びる。このようにして、典型的なブロックは、処理アレイの横列にマッピングされるときに、領域100−104によって記載された全体的に台形形状のプロセッサを占有することになることが分かる。特に、領域104は多数のプロセッサを占有することはなく、よって、処理アレイの全体的な使用を減少させることに注目されたい。このことは、領域100−104を占有するブロックの右下のデータの別のブロックを処理することによって、少なくとも部分的に改善することができる。このブロックは、領域106−112を占有して、特に次のブロック間の「遷移」領域104−106において、より多くのプロセッサを使用することを可能にする。このように、領域100−104におけるブロックの処理が完了した後においてのみ、ユーザが領域106−112のブロックを処理することになる場合より迅速にかつ多くのアレイを使用して処理を達成することができる。
図9B−9Cは、この概念のさらなる拡張部分を示す。特に、マッピングされたブロックのこの垂直的な「連鎖」は、2つ又はそれ以上のブロックにわたって継続し、かなりより高いアレイの使用をもたらすことができることに注目されたい。特に、ブロックは、領域116−120が1つのブロックによって占有され、領域122−126が別のブロックによって占有される状態等で、次々と隣接する縦列にマッピングすることができる。
台形形状の代わりに又はそれと組み合わせて菱形形状を用いることができることに注目すべきである。さらに、異なるサイズ又は組み合わせの菱形及び/又は台形によって異なる形式のマッピングのいずれかの組み合わせを実現して、同時に多数の流れ処理を容易にすることができる。
当業者であれば、本発明の上述のプロセス及び方法は、多くの異なる並列プロセッサによって実行できることに気づくであろう。本発明は、各々が画像データのブロックを処理し、このようなデータをシフトして、依存関係を保持することができる多数の計算要素を有する如何なる並列プロセッサによる使用をも考慮する。多くのこのような並列プロセッサが考慮されるが、1つの適切な例が、2006年10月19日に出願された「統合プロセッサ・アレイ、命令シーケンサ、及びI/Oコントローラ」という名称の米国特許出願第11/584,480号に記載され、この開示全体は、引用によりかつあらゆる目的のために本明細書に組み入れられる。
サブブロック並列処理
図10A−10Cは、サブブロック並列処理に関連する革新を示す。上述のビデオ規格によると、各々のマクロブロック12は、4つ又はそれ以上のサブブロック20に分割される状態で、16の横列掛ける16の縦列(16×16)のデータ・ビット(すなわち、画素)のマトリックスである。具体的には、各々のマトリックスは、サイズが8×8である、少なくとも4つの等しい4象限のサブブロック20に分けられる。各々の4象限のサブブロック20は、8×4、4×8、及び4×4であるサイズを有するサブブロック20にさらに分けることができる。このように、如何なる所与のブロック12も、8×8、4×8、8×4、及び4×4であるサイズを有するサブブロック20に分けることができる。
図10Aは、1つの8×8のサブブロック20a、2つの4×8のサブブロック20b、2つの8×4のサブブロック20c、及び4つの4×4のサブブロック20dを有するブロック12を示す。各々のサイズのサブブロック20の数は、もしあれば、変わる場合があり、同じくブロック12内のその位置も変わる場合がある。さらに、種々のサイズのサブブロック20の数及び位置は、ブロック12毎に変わる場合がある。
このように、並列法のサブブロックを有するブロック12を処理するためには、第1に、サブブロックの位置及びサイズが求められなければならない。これは、ブロック12毎に行うべき時間のかかる決定であり、かなりの処理のオーバーヘッドをブロック12の並列処理に付加する。それは、プロセッサに、(幾つかのサブブロック20が、上述のように、処理するために他のサブブロックからの依存データを必要とする場合があり、そのため種々のサブブロックの位置及びサイズを第1に求めなければならないことに留意して)二度ブロック12を分析すること、すなわち、一度サブブロック20の数及び位置を求め、次いで再度正しい順番でサブブロックを処理することを要求する。
この問題を軽減するために、本革新は、ブロック12内の全サブブロック20のタイプ(すなわち、位置及びサイズ)を識別するタイプ・データの特別なブロックの挿入を要求し、よって、プロセッサがこの決定を下す必要性を回避する。図10Bは、ブロック12を示し、場合によっては、任意の所与のサブブロック20についての第1のデータ位置(まずサブブロック20の最も左上の入力を意味する)を形成することができる16のデータ位置22を示す。ブロック12毎に、これらの16の位置22は、このデータ位置が新しいサブブロック20の第1の入力となるかどうかのフラグをたてる必要があるデータを含むことになる。位置にフラグがたてられている場合には、この位置は、データ・ブロック20の開始点と考えられ、そのすぐ左の位置(もしあれば)は、すぐ左のサブブロック20の最後の縦列と考えられ、真上の位置(もしあれば)は、真上のサブブロック20の最後の横列と考えられる。それにフラグがたてられていない場合には、この入力は、同じサブブロック20の継続を示す。したがって、これらの16のフラグ・データ位置22は、サブブロック20の位置及びサイズを求めるのに必要な全データを含むことが分かる。
図10Cは、16×4のサイズを有する、タイプ・データ24のブロックが各々のブロック12と関連付けられる、本革新によるタイプ・データ・ブロックを示す。ブロック24の4つの横列は、フラグ・データ位置22を含むブロック12内の4つの横列に対応する。したがって、タイプ・データ24のブロックの各々の横列において1番目、5番目、9番目、及び13番目のデータ位置を分析するだけで、サブブロック20の位置及びサイズを求めることができる。ブロック12のさらなる分析は、この目的では必要とされない。さらに、ブロック20内の残りのデータ位置を用いて、サブブロック・タイプ(I局所予測されたもの、運動ベクトルによりP予測されたもの、及びB双方向予測されたもの)、ブロック・ベクトル等のような、他のデータを格納することができる。このように、図10Cから分かるように、新しいサブブロックの始まりとなるそれらのデータ位置22のみにフラグがたてられ、ブロック24の各々の横列の1番目、5番目、9番目、及び13番目のデータ位置は、そのフラグたてと一致する。
類似性アルゴリズム並列処理
並列処理最適化の別のソースは、特定の類似性(例えば、類似計算)を有する同時処理アルゴリズムを含む。コンピュータ処理は、2つの基本計算、すなわち、数値計算とデータ移動とを含む。これらの計算は、数値計算を計算するか又は所望のデータを新しい位置に移動させる(若しくはコピーする)かのいずれかを行う処理アルゴリズムによって実現される。このようなアルゴリズムは、特定の基準が満たされる場合には、1つの計算が行われ、満たされていない場合には、計算が行われないか又は異なる計算が行われるかのいずかを行う、一連の「IF」文を用いて従来は処理されている。複数のIF文を介して移動することによって、所望の合計計算が、データ毎に実行される。しかしながら、この方法には欠点が存在する。第1に、それは、時間がかかり、並列処理の助けにならない。第2に、IF文毎に、同様に次の計算に遷移するか又は別の計算が行われるかのいずれかを行う両方の計算が存在するので、それは無駄になる。したがって、アルゴリズムがIF文を介して作るパス毎に、プロセッサの機能(及び貴重なウェーハ空間)の半分もが未使用のままになる。第3に、それは、固有のコードを作成して、アルゴリズムの各々の置換を固有のデータの組の各々に実行するように要求する。
この解決法は、多数の別個の計算又はデータ移動に対する全ての計算を含むアルゴリズムの実行であり、ここでは、データの全ては、場合によっては種々のデータの全てが並行して処理されるように、アルゴリズム内の全てのステップを受ける。次に、選択コードを用いて、アルゴリズムのどの部分がどのデータに適用されることになるかを判断する。このように、同じコード(アルゴリズム)が、一般的には全データに適用され、選択コードは、各々のデータが各々の計算をどのように行うかを判断するように調整される必要があるだけである。ここでの利点は、処理ステップの多くが同じである複数のデータが処理されている場合には、共通の計算と共通でないものの両方を有する1つのアルゴリズム・コードを適用することにより、システムが単純化されることである。この技術を同様なアルゴリズムに適用するためには、類似性は、命令自体に注目することにより、又は、よりきめ細かい表示において命令を表示し、次いで類似性に注目することにより見出すことができる。
図11A及び図11Bは、上述の概念の例を示す。この例は、(任意のデータ・アルゴリズムについてこの技術を用いることができるが)特定の数値計算が行われる、画素間の中間値を生成するのに用いられる双線形フィルタを含む。アルゴリズムは、数値加算及びデータ・シフト・ステップの同じ基本の組を用いて種々の値を計算する必要があるが、これらのステップの順番及び番号付けは、行われる計算に基づいて異なる。そのため、図11Aにおいては、1/2及び3/4Bi−Cubic式についての第1の計算は、7つの計算ステップを行うことを要求する、番号53である。第2の計算は、6つの計算ステップを要求し、そのうちの4つが前の計算で行われたものと同じ4つのステップと共通で、それと同じ順である、番号18である。第1の式についての最後の2つの計算は、再度第1の2つの計算との重なり計算ステップを有する。1/2Bi−Cubic式についての付加的な計算、並びに図11Bの3つのBi−Linear式は、全てが同じ計算ステップの種々の組み合わせを含み、その全てが、行うべき4つの計算を有する。
式毎に、アルゴリズムの各々のステップと関連付けられた選択コードと共に、各々が図12に示されるそれ自体のメモリ34をもつ4つの処理要素32を有する並列プロセッサ30を用いて4つの計算を実行することができる。4つの変数のうちのどれがそのステップを受けるかを決定する各々のステップと関連付けられた選択コードが存在する。例えば、図11A及び図11Bの計算に示される9つのアルゴリズム・ステップが存在する。図11Aの第1の式について、第1のステップは、第3及び第4の変数にのみ適用され、これは、そのステップと関連付けられた「0011」の選択コードによって決定される(そのステップ及び変数についてのコードが「1」である場合には、ステップに特定の変数を適用し、「0」の場合には適用しない)。このように、「0011」の選択コードは、ステップが第3及び第4の変数にのみ適用され、第1及び第2の変数には適用されないことを決定する。第2のステップは、選択コード「0100」によって決定されるように第2の変数にのみ適用される。同じ方法は、示された選択コードを用いて全ステップ及び全式の変数に適用される。
選択コードを用いる利点は、図11A及び図11Bに示された20の種々の計算を行うために20のアルゴリズム・コード(又は8つの区別できる数値計算を行うために最低限でも8つの異なるアルゴリズム・コード)を生成し、4つの処理要素の各々にそれらのアルゴリズム・コードの各々をロードする代わりに、単一のアルゴリズム・コードを生成しロードする(分散メモリ構成については、多数の処理要素にロードするか又は全処理要素間に共有される単一のメモリ位置にロードするかのいずれかを行う)だけでよいことである。選択コードを、生成し、種々の処理要素にロードして、かなり過度に単純化した、所望の計算を実行すればよい。アルゴリズム・コードは、一度だけ、選択的に、かつ変数の全てに並行して適用されるだけであるため、並列処理の速度及び効率が増加する。
図11A及び図11Bは、データ計算の適用のための選択コードの使用を示すが、どのアルゴリズム・ステップをデータに適用すべきかを選択的に決定するために用いられる選択コードは、データを移動させるのに用いられるアルゴリズムにも同様に適用可能である。
説明目的のための以上の記載は、本発明の完全な理解を提供するために、特定の術語を用いた。しかしながら、当業者であれば、本発明を実施するために特定の詳細を必要としないことが明らかであろう。したがって、本発明の特定の実施形態の以上の記載は、例証及び記載目的で提示される。それらは、網羅的であること又は本発明を開示される正確な形態に限定することが意図されるものではない。多くの修正及び変形が、上記の教示を考慮して可能である。例えば、本発明を用いて、如何なる画像形式の如何なる再分割部分をも処理することができる。すなわち、本発明は、それらが1080iHD画像、CIF画像、SIF画像、又はその他のあらゆるものであっても、どのような形式の並列画像においても処理することができる。これらの画像は、それらが画像のマクロブロック又はその他のあらゆるものであっても、どのような再分割部分にも分けることもできる。同様に、如何なる画像データも、それが強度情報、ルーマ情報、クロマ情報、又はその他のあらゆるものであっても、そのように処理することができる。本発明の原理及びその実用的な適用を最良に説明するために、これらの実施形態を選択し記載し、これにより当業者であれば、考慮される特定の使用に適する種々の修正によって本発明及び種々の実施形態を最良に使用することが可能になる。
本発明は、それらの方法を実行するための方法及び装置の形態として具現することができる。本発明は、プログラム・コードが、コンピュータのような、機械にロードされ、それによって実行されるときに、機械が本発明を実行するための装置となる、フロッピー・ディスケット、CD−ROM、ハード・ドライブ、ファームウェア、又はその他のあらゆる機械可読媒体のような、有形媒体として具現されるプログラムの形態として具現することもできる。本発明は、例えば、記録媒体に格納され、機械にロードされ、及び/又はそれによって実行されるか、又は、電気配線又はケーブルを通じて、光ファイバ、或いは電磁放射を介してといった、何らかの伝送媒体を通じて伝送される、プログラム・コードの形態として具現することもでき、プログラム・コードは、コンピュータのような、機械にロードされ、それによって実行されるときに、機械が本発明を実行するための装置となる。汎用プロセッサ上で実施されるときには、プログラム・コード・セグメントは、特定の論理回路に対して同じように動作する固有のデバイスを提供するためにプロセッサと組み合わされる。
1080i高解像度(HD)フレームのマクロブロックを概念的に示す。 画像フレーム内のマクロブロックのようなブロックの配置をさらに示す。 画像フレーム内のマクロブロックのようなブロックの配置をさらに示す。 画像内の配置から個々の並列プロセッサへのマクロブロックのマッピングを示す。 画像内の配置から個々の並列プロセッサへのマクロブロックのマッピングを示す。 画像内の配置から個々の並列プロセッサへのマクロブロックのマッピングを示す。 種々の画像形式についての、個々の並列プロセッサへの画像のマッピングを示す。 種々の画像形式についての、個々の並列プロセッサへの画像のマッピングを示す。 種々の画像形式についての、個々の並列プロセッサへの画像のマッピングを示す。 種々の画像形式についての、個々の並列プロセッサへの画像のマッピングを示す。 種々の画像形式についての、個々の並列プロセッサへの画像のマッピングを示す。 個々の並列プロセッサへの画像の再分割部分をマッピングするための16×8マッピングを示す。 個々の並列プロセッサへの画像の再分割部分をマッピングするための16×8マッピングを示す。 個々の並列プロセッサへの画像の再分割部分をマッピングするための16×4マッピングを示す。 個々の並列プロセッサへの画像の再分割部分をマッピングするための16×4マッピングを示す。 本発明の実施形態に従った、画像ブロックを並列プロセッサにマッピングするための代替的な手法を示す。 本発明の実施形態に従った、画像ブロックを並列プロセッサにマッピングする代替的な手法を示す。 本発明の実施形態に従った、画像ブロックを並列プロセッサにマッピングする代替的な手法を示す。 ルーマ及びクロマ情報を含む、画像形式のデータ構造の詳細をさらに示す。 ルーマ及びクロマ情報を含む、画像形式のデータ構造の詳細をさらに示す。 ルーマ及びクロマ情報を含む、画像形式のデータ構造の詳細をさらに示す。 本発明の実施形態に従った、多数の画像ブロックを並列プロセッサにマッピングする種々の代替的な手法を示す。 本発明の実施形態に従った、多数の画像ブロックを並列プロセッサにマッピングする種々の代替的な手法を示す。 本発明の実施形態に従った、多数の画像ブロックを並列プロセッサにマッピングする種々の代替的な手法を示す。 本発明の実施形態に従った、データ・ブロックのデータ位置、サブブロック位置、サブブロックのフラグ・データ位置、及びタイプ・データのブロックを示す。 本発明の実施形態に従った、データ・ブロックのデータ位置、サブブロック位置、サブブロックのフラグ・データ位置、及びタイプ・データのブロックを示す。 本発明の実施形態に従った、データ・ブロックのデータ位置、サブブロック位置、サブブロックのフラグ・データ位置、及びタイプ・データのブロックを示す。 どの処理ステップがどのデータ変数に適用されるかを識別するためのアルゴリズム処理ステップ及び選択コードを示す。 どの処理ステップがどのデータ変数に適用されるかを識別するためのアルゴリズム処理ステップ及び選択コードを示す。 並列プロセッサを示す。

Claims (12)

  1. データ変数を並行して処理するように構成された計算要素を有する並列処理アレイにおいて、
    並列プロセッサの複数の計算要素に対するアルゴリズムをロードする、
    ステップを含み、前記アルゴリズムは複数の処理ステップを含み、前記複数の計算要素の各々は該計算要素に関連するデータ変数を処理するように構成されており、
    前記並列プロセッサの前記複数の計算要素に対する選択コードをロードする、
    ステップを含み、前記選択コードはアルゴリズム・ステップのどれが前記計算要素により前記データ変数に適用されるかを識別し、
    前記アルゴリズムの処理ステップを前記計算要素により前記データ変数に適用する、
    ステップを含み、各々の前記計算要素に対して、前記選択コードにより識別された処理ステップのみが前記データ変数に適用される、
    ことを特徴とする方法。
  2. 前記計算要素の各々に対して、
    前記処理ステップの各々は、前記処理ステップが前記データ変数に適用されるかどうかを判断する、関連する選択コードを有することを特徴とする請求項1に記載の方法。
  3. 前記処理ステップの各々は、前記計算要素のいずれかが前記処理ステップを前記データ変数のいずれかに適用するかどうかを判断する、関連する選択コードを有することを特徴とする請求項1に記載の方法。
  4. 前記処理ステップは、数値加算及びデータシフトを含むことを特徴とする請求項1に記載の方法。
  5. 前記アルゴリズムをロードするステップは、該アルゴリズムを、前記複数の計算要素間で共有されるメモリにロードするステップを含むことを特徴とする請求項1に記載の方法。
  6. 前記アルゴリズムをロードするステップは、該アルゴリズムを複数のメモリにロードするステップを含み、前記複数のメモリは前記計算要素の1つと関連することを特徴とする請求項1に記載の方法。
  7. データ変数を並行して処理するように構成された計算要素を有する並列処理アレイにおいて処理する方法のための、コンピュータ実施可能命令を有するコンピュータ可読媒体であって、
    並列プロセッサの複数の計算要素に対するアルゴリズムをロードする、
    ステップを含み、前記アルゴリズムは複数の処理ステップを含み、前記複数の計算要素の各々は該計算要素に関連するデータ変数を処理するように構成されており、
    前記並列プロセッサの前記複数の計算要素に対する選択コードをロードする、
    ステップを含み、前記選択コードはアルゴリズム・ステップのどれが前記計算要素により前記データ変数に適用されるかを識別し、
    前記アルゴリズムの処理ステップを前記計算要素により前記データ変数に適用する、
    ステップを含み、各々の前記計算要素に対して、前記選択コードにより識別された処理ステップのみが前記データ変数に適用される、
    ことを特徴とするコンピュータ可読媒体。
  8. 前記処理ステップの各々は、前記処理ステップが前記データ変数に適用されるかどうかを判断する、関連する選択コードを有することを特徴とする請求項7に記載のコンピュータ可読媒体。
  9. 前記処理ステップの各々は、前記計算要素のいずれかが前記処理ステップを前記データ変数のいずれかに適用するかどうかを判断する、関連する選択コードを有することを特徴とする請求項7に記載のコンピュータ可読媒体。
  10. 前記処理ステップは、数値加算及びデータシフトを含むことを特徴とする請求項7に記載のコンピュータ可読媒体。
  11. 前記アルゴリズムをロードするステップは、該アルゴリズムを、前記複数の計算要素間で共有されるメモリにロードするステップを含むことを特徴とする請求項7に記載のコンピュータ可読媒体。
  12. 前記アルゴリズムをロードするステップは、該アルゴリズムを複数のメモリにロードするステップを含み、前記複数のメモリは前記計算要素の1つと関連することを特徴とする請求項7に記載のコンピュータ可読媒体。
JP2008550415A 2006-01-10 2007-01-10 並列処理システムにおけるマルチメディア・データのアルゴリズム・ステップを処理するための方法及び装置 Abandoned JP2009523293A (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US75806506P 2006-01-10 2006-01-10
PCT/US2007/000773 WO2007082044A2 (en) 2006-01-10 2007-01-10 Method and apparatus for processing algorithm steps of multimedia data in parallel processing systems

Publications (1)

Publication Number Publication Date
JP2009523293A true JP2009523293A (ja) 2009-06-18

Family

ID=38257031

Family Applications (3)

Application Number Title Priority Date Filing Date
JP2008550415A Abandoned JP2009523293A (ja) 2006-01-10 2007-01-10 並列処理システムにおけるマルチメディア・データのアルゴリズム・ステップを処理するための方法及び装置
JP2008550413A Abandoned JP2009523291A (ja) 2006-01-10 2007-01-10 並列処理システムにおけるマルチメディア・データのサブブロックを処理するための方法及び装置
JP2008550414A Abandoned JP2009523292A (ja) 2006-01-10 2007-01-10 並列処理システムにおけるマルチメディア・データ処理をスケジューリングするための方法及び装置

Family Applications After (2)

Application Number Title Priority Date Filing Date
JP2008550413A Abandoned JP2009523291A (ja) 2006-01-10 2007-01-10 並列処理システムにおけるマルチメディア・データのサブブロックを処理するための方法及び装置
JP2008550414A Abandoned JP2009523292A (ja) 2006-01-10 2007-01-10 並列処理システムにおけるマルチメディア・データ処理をスケジューリングするための方法及び装置

Country Status (7)

Country Link
US (4) US20070189618A1 (ja)
EP (3) EP1971958A2 (ja)
JP (3) JP2009523293A (ja)
KR (3) KR20080094005A (ja)
CN (3) CN101371263A (ja)
TW (3) TW200803464A (ja)
WO (3) WO2007082044A2 (ja)

Families Citing this family (32)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7383421B2 (en) * 2002-12-05 2008-06-03 Brightscale, Inc. Cellular engine for a data processing system
US7451293B2 (en) * 2005-10-21 2008-11-11 Brightscale Inc. Array of Boolean logic controlled processing elements with concurrent I/O processing and instruction sequencing
TW200803464A (en) * 2006-01-10 2008-01-01 Brightscale Inc Method and apparatus for scheduling the processing of multimedia data in parallel processing systems
US8976870B1 (en) * 2006-08-30 2015-03-10 Geo Semiconductor Inc. Block and mode reordering to facilitate parallel intra prediction and motion vector prediction
US20080244238A1 (en) * 2006-09-01 2008-10-02 Bogdan Mitu Stream processing accelerator
US20080059763A1 (en) * 2006-09-01 2008-03-06 Lazar Bivolarski System and method for fine-grain instruction parallelism for increased efficiency of processing compressed multimedia data
US20080059764A1 (en) * 2006-09-01 2008-03-06 Gheorghe Stefan Integral parallel machine
US20080059467A1 (en) * 2006-09-05 2008-03-06 Lazar Bivolarski Near full motion search algorithm
US8165224B2 (en) * 2007-03-22 2012-04-24 Research In Motion Limited Device and method for improved lost frame concealment
US8996846B2 (en) 2007-09-27 2015-03-31 Nvidia Corporation System, method and computer program product for performing a scan operation
US8284188B1 (en) 2007-10-29 2012-10-09 Nvidia Corporation Ray tracing system, method, and computer program product for simultaneously traversing a hierarchy of rays and a hierarchy of objects
US8264484B1 (en) 2007-10-29 2012-09-11 Nvidia Corporation System, method, and computer program product for organizing a plurality of rays utilizing a bounding volume
US8065288B1 (en) 2007-11-09 2011-11-22 Nvidia Corporation System, method, and computer program product for testing a query against multiple sets of objects utilizing a single instruction multiple data (SIMD) processing architecture
US8661226B2 (en) 2007-11-15 2014-02-25 Nvidia Corporation System, method, and computer program product for performing a scan operation on a sequence of single-bit values using a parallel processor architecture
US8243083B1 (en) 2007-12-04 2012-08-14 Nvidia Corporation System, method, and computer program product for converting a scan algorithm to a segmented scan algorithm in an operator-independent manner
US8773422B1 (en) 2007-12-04 2014-07-08 Nvidia Corporation System, method, and computer program product for grouping linearly ordered primitives
WO2009142021A1 (ja) * 2008-05-23 2009-11-26 パナソニック株式会社 画像復号化装置、画像復号化方法、画像符号化装置、及び画像符号化方法
US8340194B2 (en) * 2008-06-06 2012-12-25 Apple Inc. High-yield multi-threading method and apparatus for video encoders/transcoders/decoders with dynamic video reordering and multi-level video coding dependency management
WO2010052837A1 (ja) * 2008-11-10 2010-05-14 パナソニック株式会社 画像復号装置、画像復号方法、集積回路及びプログラム
KR101010954B1 (ko) * 2008-11-12 2011-01-26 울산대학교 산학협력단 오디오 데이터 처리방법 및 이를 적용한 오디오 데이터 처리장치
US8321492B1 (en) 2008-12-11 2012-11-27 Nvidia Corporation System, method, and computer program product for converting a reduction algorithm to a segmented reduction algorithm
KR101673186B1 (ko) * 2010-06-09 2016-11-07 삼성전자주식회사 매크로블록의 연관관계를 고려하여 영상 데이터의 부호화 및 복호화를 병렬 처리하는 장치 및 방법
KR101698797B1 (ko) * 2010-07-27 2017-01-23 삼성전자주식회사 영상 데이터를 분할하여 부호화 및 복호화를 병렬 처리하는 장치 및 상기 장치의 동작 방법
WO2012024435A2 (en) * 2010-08-17 2012-02-23 Massively Parallel Technologies, Inc. System and method for execution of high performance computing applications
WO2013081596A1 (en) * 2011-11-30 2013-06-06 Intel Corporation Efficient implementation of rsa using gpu/cpu architecture
US9172923B1 (en) * 2012-12-20 2015-10-27 Elemental Technologies, Inc. Sweep dependency based graphics processing unit block scheduling
US9747563B2 (en) 2013-11-27 2017-08-29 University-Industry Cooperation Group Of Kyung Hee University Apparatus and method for matching large-scale biomedical ontologies
KR101585980B1 (ko) * 2014-04-11 2016-01-19 전자부품연구원 멀티-프로세서의 공유 메모리를 적극 활용한 cr 알고리즘 처리 방법 및 이를 적용한 프로세서
US20160119649A1 (en) * 2014-10-22 2016-04-28 PathPartner Technology Consulting Pvt. Ltd. Device and Method for Processing Ultra High Definition (UHD) Video Data Using High Efficiency Video Coding (HEVC) Universal Decoder
CN112040546A (zh) 2015-02-10 2020-12-04 华为技术有限公司 一种基站、用户终端及载波调度指示方法
CN108182579B (zh) * 2017-12-18 2020-12-18 东软集团股份有限公司 用于规则判断的数据处理方法、装置、存储介质和设备
CN115756841B (zh) * 2022-11-15 2023-07-11 重庆数字城市科技有限公司 一种基于并行处理高效数据生成系统及方法

Family Cites Families (108)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US3308436A (en) * 1963-08-05 1967-03-07 Westinghouse Electric Corp Parallel computer system control
US4212076A (en) * 1976-09-24 1980-07-08 Giddings & Lewis, Inc. Digital computer structure providing arithmetic and boolean logic operations, the latter controlling the former
US4575818A (en) * 1983-06-07 1986-03-11 Tektronix, Inc. Apparatus for in effect extending the width of an associative memory by serial matching of portions of the search pattern
JPS6224366A (ja) * 1985-07-03 1987-02-02 Hitachi Ltd ベクトル処理装置
US4907148A (en) * 1985-11-13 1990-03-06 Alcatel U.S.A. Corp. Cellular array processor with individual cell-level data-dependent cell control and multiport input memory
US4783738A (en) * 1986-03-13 1988-11-08 International Business Machines Corporation Adaptive instruction processing by array processor having processor identification and data dependent status registers in each processing element
GB2211638A (en) * 1987-10-27 1989-07-05 Ibm Simd array processor
US4873626A (en) * 1986-12-17 1989-10-10 Massachusetts Institute Of Technology Parallel processing system with processor array having memory system included in system memory
US5122984A (en) * 1987-01-07 1992-06-16 Bernard Strehler Parallel associative memory system
US4943909A (en) * 1987-07-08 1990-07-24 At&T Bell Laboratories Computational origami
DE3877105D1 (ja) * 1987-09-30 1993-02-11 Siemens Ag, 8000 Muenchen, De
US4876644A (en) * 1987-10-30 1989-10-24 International Business Machines Corp. Parallel pipelined processor
US4983958A (en) * 1988-01-29 1991-01-08 Intel Corporation Vector selectable coordinate-addressable DRAM array
US5241635A (en) * 1988-11-18 1993-08-31 Massachusetts Institute Of Technology Tagged token data processing system with operand matching in activation frames
AU624205B2 (en) * 1989-01-23 1992-06-04 General Electric Capital Corporation Variable length string matcher
US5497488A (en) * 1990-06-12 1996-03-05 Hitachi, Ltd. System for parallel string search with a function-directed parallel collation of a first partition of each string followed by matching of second partitions
US5319762A (en) * 1990-09-07 1994-06-07 The Mitre Corporation Associative memory capable of matching a variable indicator in one string of characters with a portion of another string
US5963746A (en) * 1990-11-13 1999-10-05 International Business Machines Corporation Fully distributed processing memory element
EP0485690B1 (en) * 1990-11-13 1999-05-26 International Business Machines Corporation Parallel associative processor system
US5765011A (en) * 1990-11-13 1998-06-09 International Business Machines Corporation Parallel processing system having a synchronous SIMD processing with processing elements emulating SIMD operation using individual instruction streams
US5150430A (en) * 1991-03-15 1992-09-22 The Board Of Trustees Of The Leland Stanford Junior University Lossless data compression circuit and method
US5228098A (en) * 1991-06-14 1993-07-13 Tektronix, Inc. Adaptive spatio-temporal compression/decompression of video image signals
US5706290A (en) * 1994-12-15 1998-01-06 Shaw; Venson Method and apparatus including system architecture for multimedia communication
US5373290A (en) * 1991-09-25 1994-12-13 Hewlett-Packard Corporation Apparatus and method for managing multiple dictionaries in content addressable memory based data compression
US5640582A (en) * 1992-05-21 1997-06-17 Intel Corporation Register stacking in a computer system
US5450599A (en) * 1992-06-04 1995-09-12 International Business Machines Corporation Sequential pipelined processing for the compression and decompression of image data
US5288593A (en) * 1992-06-24 1994-02-22 Eastman Kodak Company Photographic material and process comprising a coupler capable of forming a wash-out dye (Q/Q)
US5818873A (en) * 1992-08-03 1998-10-06 Advanced Hardware Architectures, Inc. Single clock cycle data compressor/decompressor with a string reversal mechanism
US5440753A (en) * 1992-11-13 1995-08-08 Motorola, Inc. Variable length string matcher
US5446915A (en) * 1993-05-25 1995-08-29 Intel Corporation Parallel processing system virtual connection method and apparatus with protection and flow control
JPH07114577A (ja) * 1993-07-16 1995-05-02 Internatl Business Mach Corp <Ibm> データ検索装置、データ圧縮装置及び方法
US6073185A (en) * 1993-08-27 2000-06-06 Teranex, Inc. Parallel data processor
US5490264A (en) * 1993-09-30 1996-02-06 Intel Corporation Generally-diagonal mapping of address space for row/column organizer memories
US6085283A (en) * 1993-11-19 2000-07-04 Kabushiki Kaisha Toshiba Data selecting memory device and selected data transfer device
US5602764A (en) * 1993-12-22 1997-02-11 Storage Technology Corporation Comparing prioritizing memory for string searching in a data compression system
US5758176A (en) * 1994-09-28 1998-05-26 International Business Machines Corporation Method and system for providing a single-instruction, multiple-data execution unit for performing single-instruction, multiple-data operations within a superscalar data processing system
US5631849A (en) * 1994-11-14 1997-05-20 The 3Do Company Decompressor and compressor for simultaneously decompressing and compressng a plurality of pixels in a pixel array in a digital image differential pulse code modulation (DPCM) system
US6128720A (en) * 1994-12-29 2000-10-03 International Business Machines Corporation Distributed processing array with component processors performing customized interpretation of instructions
US5682491A (en) * 1994-12-29 1997-10-28 International Business Machines Corporation Selective processing and routing of results among processors controlled by decoding instructions using mask value derived from instruction tag and processor identifier
US5867726A (en) * 1995-05-02 1999-02-02 Hitachi, Ltd. Microcomputer
US5926642A (en) * 1995-10-06 1999-07-20 Advanced Micro Devices, Inc. RISC86 instruction set
US6317819B1 (en) * 1996-01-11 2001-11-13 Steven G. Morton Digital signal processor containing scalar processor and a plurality of vector processors operating from a single instruction
US5963210A (en) * 1996-03-29 1999-10-05 Stellar Semiconductor, Inc. Graphics processor, system and method for generating screen pixels in raster order utilizing a single interpolator
US5828593A (en) * 1996-07-11 1998-10-27 Northern Telecom Limited Large-capacity content addressable memory
US5867598A (en) * 1996-09-26 1999-02-02 Xerox Corporation Method and apparatus for processing of a JPEG compressed image
US6212237B1 (en) * 1997-06-17 2001-04-03 Nippon Telegraph And Telephone Corporation Motion vector search methods, motion vector search apparatus, and storage media storing a motion vector search program
US5909686A (en) * 1997-06-30 1999-06-01 Sun Microsystems, Inc. Hardware-assisted central processing unit access to a forwarding database
US5951672A (en) * 1997-07-02 1999-09-14 International Business Machines Corporation Synchronization method for work distribution in a multiprocessor system
EP0905651A3 (en) * 1997-09-29 2000-02-23 Canon Kabushiki Kaisha Image processing apparatus and method
US6167502A (en) * 1997-10-10 2000-12-26 Billions Of Operations Per Second, Inc. Method and apparatus for manifold array processing
US6089453A (en) * 1997-10-10 2000-07-18 Display Edge Technology, Ltd. Article-information display system using electronically controlled tags
US6226710B1 (en) * 1997-11-14 2001-05-01 Utmc Microelectronic Systems Inc. Content addressable memory (CAM) engine
US6101592A (en) * 1998-12-18 2000-08-08 Billions Of Operations Per Second, Inc. Methods and apparatus for scalable instruction set architecture with dynamic compact instructions
US6145075A (en) * 1998-02-06 2000-11-07 Ip-First, L.L.C. Apparatus and method for executing a single-cycle exchange instruction to exchange contents of two locations in a register file
US6295534B1 (en) * 1998-05-28 2001-09-25 3Com Corporation Apparatus for maintaining an ordered list
US6088044A (en) * 1998-05-29 2000-07-11 International Business Machines Corporation Method for parallelizing software graphics geometry pipeline rendering
US6119215A (en) * 1998-06-29 2000-09-12 Cisco Technology, Inc. Synchronization and control system for an arrayed processing engine
EP0992916A1 (en) * 1998-10-06 2000-04-12 Texas Instruments Inc. Digital signal processor
US6269354B1 (en) * 1998-11-30 2001-07-31 David W. Arathorn General purpose recognition e-circuits capable of translation-tolerant recognition, scene segmentation and attention shift, and their application to machine vision
US6173386B1 (en) * 1998-12-14 2001-01-09 Cisco Technology, Inc. Parallel processor with debug capability
FR2788873B1 (fr) * 1999-01-22 2001-03-09 Intermec Scanner Technology Ct Procede et dispositif de detection de segments de droites dans un flot de donnees numeriques representatives d'une image, dans lequel sont identifies les points contours de ladite image
JP5285828B2 (ja) * 1999-04-09 2013-09-11 ラムバス・インコーポレーテッド 並列データ処理装置
US6542989B2 (en) * 1999-06-15 2003-04-01 Koninklijke Philips Electronics N.V. Single instruction having op code and stack control field
US6611524B2 (en) * 1999-06-30 2003-08-26 Cisco Technology, Inc. Programmable data packet parser
US6745317B1 (en) * 1999-07-30 2004-06-01 Broadcom Corporation Three level direct communication connections between neighboring multiple context processing elements
DE60024097D1 (de) * 1999-07-30 2005-12-22 Indinell S A Verfahren und vorrichtung zur verarbeitung von digitalen bildern und audiodaten
US7072398B2 (en) * 2000-12-06 2006-07-04 Kai-Kuang Ma System and method for motion vector generation and analysis of digital video clips
US20020107990A1 (en) * 2000-03-03 2002-08-08 Surgient Networks, Inc. Network connected computing system including network switch
GB0019341D0 (en) * 2000-08-08 2000-09-27 Easics Nv System-on-chip solutions
US6898304B2 (en) * 2000-12-01 2005-05-24 Applied Materials, Inc. Hardware configuration for parallel data processing without cross communication
US7013302B2 (en) * 2000-12-22 2006-03-14 Nortel Networks Limited Bit field manipulation
US6772268B1 (en) * 2000-12-22 2004-08-03 Nortel Networks Ltd Centralized look up engine architecture and interface
US20020133688A1 (en) * 2001-01-29 2002-09-19 Ming-Hau Lee SIMD/MIMD processing on a reconfigurable array
GB2377519B (en) * 2001-02-14 2005-06-15 Clearspeed Technology Ltd Lookup engine
US6985633B2 (en) * 2001-03-26 2006-01-10 Ramot At Tel Aviv University Ltd. Device and method for decoding class-based codewords
US6782054B2 (en) * 2001-04-20 2004-08-24 Koninklijke Philips Electronics, N.V. Method and apparatus for motion vector estimation
JP2003069535A (ja) * 2001-06-15 2003-03-07 Mitsubishi Electric Corp 誤り訂正多重化装置、誤り訂正多重分離装置、これらを用いた光伝送システムおよび誤り訂正多重化伝送方法
US7383421B2 (en) * 2002-12-05 2008-06-03 Brightscale, Inc. Cellular engine for a data processing system
US6760821B2 (en) * 2001-08-10 2004-07-06 Gemicer, Inc. Memory engine for the inspection and manipulation of data
US6938183B2 (en) * 2001-09-21 2005-08-30 The Boeing Company Fault tolerant processing architecture
JP2003100086A (ja) * 2001-09-25 2003-04-04 Fujitsu Ltd 連想メモリ回路
US7116712B2 (en) * 2001-11-02 2006-10-03 Koninklijke Philips Electronics, N.V. Apparatus and method for parallel multimedia processing
US6968445B2 (en) * 2001-12-20 2005-11-22 Sandbridge Technologies, Inc. Multithreaded processor with efficient processing for convergence device applications
US6901476B2 (en) * 2002-05-06 2005-05-31 Hywire Ltd. Variable key type search engine and method therefor
US7000091B2 (en) * 2002-08-08 2006-02-14 Hewlett-Packard Development Company, L.P. System and method for independent branching in systems with plural processing elements
US20040081238A1 (en) * 2002-10-25 2004-04-29 Manindra Parhy Asymmetric block shape modes for motion estimation
US7120195B2 (en) * 2002-10-28 2006-10-10 Hewlett-Packard Development Company, L.P. System and method for estimating motion between images
JP4496209B2 (ja) * 2003-03-03 2010-07-07 モービリゲン コーポレーション メモリワードアレイ構成およびメモリアクセス予測結合
US7581080B2 (en) * 2003-04-23 2009-08-25 Micron Technology, Inc. Method for manipulating data in a group of processing elements according to locally maintained counts
US9292904B2 (en) * 2004-01-16 2016-03-22 Nvidia Corporation Video image processing with parallel processing
JP4511842B2 (ja) * 2004-01-26 2010-07-28 パナソニック株式会社 動きベクトル検出装置及び動画撮影装置
GB2411745B (en) * 2004-03-02 2006-08-02 Imagination Tech Ltd Method and apparatus for management of control flow in a simd device
US20060002474A1 (en) * 2004-06-26 2006-01-05 Oscar Chi-Lim Au Efficient multi-block motion estimation for video compression
DE602005020218D1 (de) * 2004-07-29 2010-05-12 St Microelectronics Pvt Ltd Videodekoder mit Parallelprozessoren für die Dekodierung von Makroblocks
JP2006140601A (ja) * 2004-11-10 2006-06-01 Canon Inc 画像処理装置及び画像処理装置の制御方法
US7644255B2 (en) * 2005-01-13 2010-01-05 Sony Computer Entertainment Inc. Method and apparatus for enable/disable control of SIMD processor slices
US7725691B2 (en) * 2005-01-28 2010-05-25 Analog Devices, Inc. Method and apparatus for accelerating processing of a non-sequential instruction stream on a processor with multiple compute units
TW200704200A (en) * 2005-03-10 2007-01-16 Qualcomm Inc Content classification for multimedia processing
US8149926B2 (en) * 2005-04-11 2012-04-03 Intel Corporation Generating edge masks for a deblocking filter
US8619860B2 (en) * 2005-05-03 2013-12-31 Qualcomm Incorporated System and method for scalable encoding and decoding of multimedia data using multiple layers
US20070071404A1 (en) * 2005-09-29 2007-03-29 Honeywell International Inc. Controlled video event presentation
US7451293B2 (en) * 2005-10-21 2008-11-11 Brightscale Inc. Array of Boolean logic controlled processing elements with concurrent I/O processing and instruction sequencing
TW200803464A (en) * 2006-01-10 2008-01-01 Brightscale Inc Method and apparatus for scheduling the processing of multimedia data in parallel processing systems
US20080059762A1 (en) * 2006-09-01 2008-03-06 Bogdan Mitu Multi-sequence control for a data parallel system
US20080059764A1 (en) * 2006-09-01 2008-03-06 Gheorghe Stefan Integral parallel machine
US20080059763A1 (en) * 2006-09-01 2008-03-06 Lazar Bivolarski System and method for fine-grain instruction parallelism for increased efficiency of processing compressed multimedia data
US20080059467A1 (en) * 2006-09-05 2008-03-06 Lazar Bivolarski Near full motion search algorithm
US20080126278A1 (en) * 2006-11-29 2008-05-29 Alexander Bronstein Parallel processing motion estimation for H.264 video codec

Also Published As

Publication number Publication date
US20070162722A1 (en) 2007-07-12
CN101371263A (zh) 2009-02-18
EP1971956A2 (en) 2008-09-24
KR20080094005A (ko) 2008-10-22
CN101371264A (zh) 2009-02-18
TW200737983A (en) 2007-10-01
US20070189618A1 (en) 2007-08-16
WO2007082043A2 (en) 2007-07-19
JP2009523292A (ja) 2009-06-18
TW200806039A (en) 2008-01-16
EP1971958A2 (en) 2008-09-24
CN101371262A (zh) 2009-02-18
WO2007082044A2 (en) 2007-07-19
WO2007082042A2 (en) 2007-07-19
KR20080085189A (ko) 2008-09-23
JP2009523291A (ja) 2009-06-18
KR20080094006A (ko) 2008-10-22
US20070188505A1 (en) 2007-08-16
US20100066748A1 (en) 2010-03-18
WO2007082043A3 (en) 2008-04-17
WO2007082044A3 (en) 2008-04-17
EP1971959A2 (en) 2008-09-24
TW200803464A (en) 2008-01-01
WO2007082042A3 (en) 2008-04-17

Similar Documents

Publication Publication Date Title
JP2009523293A (ja) 並列処理システムにおけるマルチメディア・データのアルゴリズム・ステップを処理するための方法及び装置
KR101973733B1 (ko) 높은 성능, 전력 효율, 프로그램 가능 이미지 처리 프로세싱을 위한 아키텍처
KR102050899B1 (ko) 이미지 프로세서용 컴파일러 관리 메모리
KR20170125393A (ko) 이미지 프로세서를 위한 시트 생성기
US20070230817A1 (en) Image processing apparatus, image processing method and image processing program
JP6895466B2 (ja) 二次元画像プロセッサ上での統計演算
JP5744574B2 (ja) 画像処理装置、画像処理方法及びプログラム
JP2010505158A (ja) 複数のメモリーバンクを有するデータ処理
CN110574007B (zh) 执行双输入值绝对值和求和操作的电路
KR20190101409A (ko) 이미지 프로세서 런타임 효율성을 개선하기 위한 프로그램 코드 변환
JP2007535267A (ja) 画像処理装置及び方法
JP5020029B2 (ja) 画像処理装置
JP7154788B2 (ja) 半導体装置
US9158737B2 (en) SIMD processor and control processor, and processing element with address calculating unit
JP5968497B2 (ja) 制御方法、システム及びプログラム
KR20240068718A (ko) 컨볼루션 신경망 연산
JP5055393B2 (ja) Simd型マイクロプロセッサ

Legal Events

Date Code Title Description
A762 Written abandonment of application

Free format text: JAPANESE INTERMEDIATE CODE: A762

Effective date: 20090522