JP2009523291A - 並列処理システムにおけるマルチメディア・データのサブブロックを処理するための方法及び装置 - Google Patents
並列処理システムにおけるマルチメディア・データのサブブロックを処理するための方法及び装置 Download PDFInfo
- Publication number
- JP2009523291A JP2009523291A JP2008550413A JP2008550413A JP2009523291A JP 2009523291 A JP2009523291 A JP 2009523291A JP 2008550413 A JP2008550413 A JP 2008550413A JP 2008550413 A JP2008550413 A JP 2008550413A JP 2009523291 A JP2009523291 A JP 2009523291A
- Authority
- JP
- Japan
- Prior art keywords
- block
- data
- image data
- blocks
- sub
- 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
Links
- 238000012545 processing Methods 0.000 title claims abstract description 88
- 238000000034 method Methods 0.000 title claims abstract description 54
- 230000008569 process Effects 0.000 claims abstract description 23
- 230000033001 locomotion Effects 0.000 claims description 5
- 239000013598 vector Substances 0.000 claims description 4
- 230000000153 supplemental effect Effects 0.000 claims 4
- 238000004364 calculation method Methods 0.000 description 27
- 238000013507 mapping Methods 0.000 description 24
- 230000001419 dependent effect Effects 0.000 description 23
- 241000023320 Luma <angiosperm> Species 0.000 description 11
- OSWPMRLSEDHDFF-UHFFFAOYSA-N methyl salicylate Chemical compound COC(=O)C1=CC=CC=C1O OSWPMRLSEDHDFF-UHFFFAOYSA-N 0.000 description 11
- 238000013459 approach Methods 0.000 description 8
- 239000011159 matrix material Substances 0.000 description 5
- 238000003491 array Methods 0.000 description 4
- 230000008901 benefit Effects 0.000 description 2
- 230000008859 change Effects 0.000 description 2
- 230000006870 function Effects 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 230000007704 transition Effects 0.000 description 2
- 229930091051 Arenine Natural products 0.000 description 1
- 238000004458 analytical method Methods 0.000 description 1
- 230000005540 biological transmission Effects 0.000 description 1
- 230000006835 compression Effects 0.000 description 1
- 238000007906 compression Methods 0.000 description 1
- 238000013075 data extraction Methods 0.000 description 1
- 230000006837 decompression Effects 0.000 description 1
- 238000010586 diagram Methods 0.000 description 1
- 239000010432 diamond Substances 0.000 description 1
- 238000009429 electrical wiring Methods 0.000 description 1
- 230000005670 electromagnetic radiation Effects 0.000 description 1
- 238000003780 insertion Methods 0.000 description 1
- 230000037431 insertion Effects 0.000 description 1
- 239000013307 optical fiber Substances 0.000 description 1
- 238000005457 optimization Methods 0.000 description 1
- 238000005192 partition Methods 0.000 description 1
- 238000012552 review Methods 0.000 description 1
- 238000000638 solvent extraction Methods 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F15/00—Digital computers in general; Data processing equipment in general
- G06F15/76—Architectures of general purpose stored program computers
- G06F15/80—Architectures of general purpose stored program computers comprising an array of processing units with common control, e.g. single instruction multiple data processors
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T1/00—General purpose image data processing
- G06T1/20—Processor architectures; Processor configuration, e.g. pipelining
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F15/00—Digital computers in general; Data processing equipment in general
- G06F15/76—Architectures of general purpose stored program computers
- G06F15/80—Architectures of general purpose stored program computers comprising an array of processing units with common control, e.g. single instruction multiple data processors
- G06F15/8007—Architectures 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
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5061—Partitioning or combining of resources
- G06F9/5066—Algorithms for mapping a plurality of inter-dependent sub-tasks onto a plurality of physical CPUs
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06V—IMAGE OR VIDEO RECOGNITION OR UNDERSTANDING
- G06V10/00—Arrangements for image or video recognition or understanding
- G06V10/20—Image preprocessing
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/10—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
- H04N19/169—Methods 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/17—Methods 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/176—Methods 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
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/42—Methods 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/436—Methods 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)
- Software Systems (AREA)
- Computer Hardware Design (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
データのサブブロックを並列処理するための効率的な方法及び装置。並列処理アレイは、画像のデータのブロックを並列処理するように構成される。画像データのブロックが生成され、画像データのブロックの各々はサブブロックに分割され、各々のサブブロックの第1データ点はサブブロックの開始位置についてフラグをたてる。タイプ・データのブロックは、画像データのブロックの各々について生成される。タイプ・データのブロックの各々は、画像データのブロックにおけるサブブロックの全てについての第1データ点を含んで、最初に画像データのブロックを処理することなしで、画像データの各々のブロックにおける全てのサブブロックの数及び位置を求めることができるようにする。
Description
本発明は、一般的に、並列処理に関する。より具体的には、本発明は、並列処理システムにおけるマルチメディア・データを処理するための方法及び装置に関する。
本出願は、引用によりかつあらゆる目的でこの開示全体を本明細書に組み入れる、2006年1月10日に出願された米国特許仮出願番号第60/758,065号に基づく優先権を主張するものである。
マルチメディア・データの使用増加は、このようなデータを処理し、それをリアル・タイムで供給するためのより高速かつより効率的な方法に対する需要の増加をもたらした。詳細には、画像及びそれに付随した音響のような、マルチメディア・データを並行してより迅速かつより効率的に処理するための方法に対する需要が増加している。多くの場合、例えば、音響及びビデオがリアル・タイムで供給されるのに十分なだけ迅速に達成されなければならない相対的に数多くの計算を依然として必要とする、マルチメディア・データの圧縮及び/又は圧縮解除のような計算集中処理の際に、並行して処理する必要性が生じる。
したがって、マルチメディア・データの並列処理における努力を引き続き強化することが望ましい。このようなデータの並列処理に対するより高速かつより効率的な手法を開発することが特に望ましい。これらの手法は、ブロック並列処理、サブブロック並列処理、及び双線形フィルタ並列処理に対処する必要がある。
したがって、マルチメディア・データの並列処理における努力を引き続き強化することが望ましい。このようなデータの並列処理に対するより高速かつより効率的な手法を開発することが特に望ましい。これらの手法は、ブロック並列処理、サブブロック並列処理、及び双線形フィルタ並列処理に対処する必要がある。
本発明は、方法及びコンピュータ可読媒体としてといった多数の方法で実施することができる。本発明の種々の実施形態を後述する。
画像のデータ・ブロックを処理するように構成された計算要素を有する並列処理アレイにおいて、この方法は、画像データのブロックを生成する、ステップを含み、画像データのブロックの各々はサブブロックに分割され、各々のサブブロックの第1データ点は、前記サブブロックの開始位置についてフラグをたて、画像データのブロックの各々に対してタイプ・データのブロックを生成する、ステップを含み、タイプ・データのブロックの各々は、画像データのブロックにおけるサブブロックの全てに対して第1データ点を含む。
画像のデータ・ブロックを処理するように構成された計算要素を有する並列処理アレイにおいて、この方法は、画像データのブロックを生成する、ステップを含み、画像データのブロックの各々はサブブロックに分割され、各々のサブブロックの第1データ点は、前記サブブロックの開始位置についてフラグをたて、画像データのブロックの各々に対してタイプ・データのブロックを生成する、ステップを含み、タイプ・データのブロックの各々は、画像データのブロックにおけるサブブロックの全てに対して第1データ点を含む。
画像のデータ・ブロックを処理するように構成された計算要素を有する並列処理アレイにおいて処理する方法のための、コンピュータ実施可能命令を有するコンピュータ可読媒体であって、この方法は、画像データのブロックを生成する、ステップを含み、画像データのブロックの各々はサブブロックに分割され、各々のサブブロックの第1データ点は、前記サブブロックの開始位置についてフラグをたて、画像データのブロックの各々に対してタイプ・データのブロックを生成する、ステップを含み、タイプ・データのブロックの各々は、画像データのブロックにおけるサブブロックの全てに対して第1データ点を含む。
本発明の他の目的及び特徴は、明細書、特許請求の範囲、及び添付の図面を検討することにより明らかとなるであろう。
本発明の他の目的及び特徴は、明細書、特許請求の範囲、及び添付の図面を検討することにより明らかとなるであろう。
同じ参照符号は、図面全体を通して対応する部分を指す。
本明細書において記載される革新は、並列処理拡張の3つの主な領域に対処し、すなわち、ブロック並列処理、サブブロック並列処理、及び類似性アルゴリズム並列処理に対処する。
本明細書において記載される革新は、並列処理拡張の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が処理され、以下同様に、対角線状の処理を必要とすることが分かる。
上記のように、図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字」形状以外の他の特徴的な位置又は形状をより使用しやすくすることができる。
当業者であれば、上述の手法が本発明の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横列当たりさらに多くのプロセッサを使用できるようにすることに注目されたい。
図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にロードされる状態等で、重なる組のプロセッサにロードすることができる。このように、ブロックのさらなる再分割部分、並びに重なる組のプロセッサへの多数のブロックの「連鎖」の両方が、より迅速により多くのプロセッサを使用することを可能にし、より高速の処理をもたらす。
(左側に沿って番号付けられた)プロセッサ及びそれらにロードされる対応するサブブロックの図表の図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半体において処理することができる。
異なるプロセッサにおける異なるブロックを処理するのに加えて、同じブロック内の異なるタイプのデータを異なるプロセッサにおいて処理できることにも注目すべきである。特に、本発明は、同じブロックからの強度情報、ルーマ情報、及びクロマ情報の別個の処理を含む。すなわち、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が別のブロックによって占有される状態等で、次々と隣接する縦列にマッピングすることができる。
図9B−9Cは、この概念のさらなる拡張部分を示す。特に、マッピングされたブロックのこの垂直的な「連鎖」は、2つ又はそれ以上のブロックにわたって継続し、かなりより高いアレイの使用をもたらすことができることに注目されたい。特に、ブロックは、領域116−120が1つのブロックによって占有され、領域122−126が別のブロックによって占有される状態等で、次々と隣接する縦列にマッピングすることができる。
台形形状の代わりに又はそれと組み合わせて菱形形状を用いることができることに注目すべきである。さらに、異なるサイズ又は組み合わせの菱形及び/又は台形によって異なる形式のマッピングのいずれかの組み合わせを実現して、同時に多数の流れ処理を容易にすることができる。
当業者であれば、本発明の上述のプロセス及び方法は、多くの異なる並列プロセッサによって実行できることに気づくであろう。本発明は、各々が画像データのブロックを処理し、このようなデータをシフトして、依存関係を保持することができる多数の計算要素を有する如何なる並列プロセッサによる使用をも考慮する。多くのこのような並列プロセッサが考慮されるが、1つの適切な例が、2006年10月19日に出願された「統合プロセッサ・アレイ、命令シーケンサ、及びI/Oコントローラ」という名称の米国特許出願第11/584,480号に記載され、この開示全体は、引用によりかつあらゆる目的のために本明細書に組み入れられる。
当業者であれば、本発明の上述のプロセス及び方法は、多くの異なる並列プロセッサによって実行できることに気づくであろう。本発明は、各々が画像データのブロックを処理し、このようなデータをシフトして、依存関係を保持することができる多数の計算要素を有する如何なる並列プロセッサによる使用をも考慮する。多くのこのような並列プロセッサが考慮されるが、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毎に変わる場合がある。
図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の位置及びサイズを求めるのに必要な全データを含むことが分かる。
この問題を軽減するために、本革新は、ブロック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に、それは、固有のコードを作成して、アルゴリズムの各々の置換を固有のデータの組の各々に実行するように要求する。
並列処理最適化の別のソースは、特定の類似性(例えば、類似計算)を有する同時処理アルゴリズムを含む。コンピュータ処理は、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は、データ計算の適用のための選択コードの使用を示すが、どのアルゴリズム・ステップをデータに適用すべきかを選択的に決定するために用いられる選択コードは、データを移動させるのに用いられるアルゴリズムにも同様に適用可能である。
図11A及び図11Bは、データ計算の適用のための選択コードの使用を示すが、どのアルゴリズム・ステップをデータに適用すべきかを選択的に決定するために用いられる選択コードは、データを移動させるのに用いられるアルゴリズムにも同様に適用可能である。
説明目的のための以上の記載は、本発明の完全な理解を提供するために、特定の術語を用いた。しかしながら、当業者であれば、本発明を実施するために特定の詳細を必要としないことが明らかであろう。したがって、本発明の特定の実施形態の以上の記載は、例証及び記載目的で提示される。それらは、網羅的であること又は本発明を開示される正確な形態に限定することが意図されるものではない。多くの修正及び変形が、上記の教示を考慮して可能である。例えば、本発明を用いて、如何なる画像形式の如何なる再分割部分をも処理することができる。すなわち、本発明は、それらが1080iHD画像、CIF画像、SIF画像、又はその他のあらゆるものであっても、どのような形式の並列画像においても処理することができる。これらの画像は、それらが画像のマクロブロック又はその他のあらゆるものであっても、どのような再分割部分にも分けることもできる。同様に、如何なる画像データも、それが強度情報、ルーマ情報、クロマ情報、又はその他のあらゆるものであっても、そのように処理することができる。本発明の原理及びその実用的な適用を最良に説明するために、これらの実施形態を選択し記載し、これにより当業者であれば、考慮される特定の使用に適する種々の修正によって本発明及び種々の実施形態を最良に使用することが可能になる。
本発明は、それらの方法を実行するための方法及び装置の形態として具現することができる。本発明は、プログラム・コードが、コンピュータのような、機械にロードされ、それによって実行されるときに、機械が本発明を実行するための装置となる、フロッピー・ディスケット、CD−ROM、ハード・ドライブ、ファームウェア、又はその他のあらゆる機械可読媒体のような、有形媒体として具現されるプログラムの形態として具現することもできる。本発明は、例えば、記録媒体に格納され、機械にロードされ、及び/又はそれによって実行されるか、又は、電気配線又はケーブルを通じて、光ファイバ、或いは電磁放射を介してといった、何らかの伝送媒体を通じて伝送される、プログラム・コードの形態として具現することもでき、プログラム・コードは、コンピュータのような、機械にロードされ、それによって実行されるときに、機械が本発明を実行するための装置となる。汎用プロセッサ上で実施されるときには、プログラム・コード・セグメントは、特定の論理回路に対して同じように動作する固有のデバイスを提供するためにプロセッサと組み合わされる。
Claims (18)
- 画像のデータ・ブロックを処理するように構成された計算要素を有する並列処理アレイにおいて、
画像データのブロックを生成する、
ステップを含み、前記画像データのブロックの各々はサブブロックに分割され、各々のサブブロックの第1データ点は、前記サブブロックの開始位置についてフラグをたて、
前記画像データのブロックの各々に対してタイプ・データのブロックを生成する、
ステップを含み、前記タイプ・データのブロックの各々は、該画像データのブロックにおける前記サブブロックの全てに対して前記第1データ点を含む、
ことを特徴とする方法。 - 前記タイプ・データのブロックを用いて、前記画像データのブロック内の前記サブブロックの位置及びサイズを識別するように構成された並列処理計算要素のアレイを用いて、該画像データのブロックを処理するステップをさらに含むことを特徴とする請求項1に記載の方法。
- 前記画像データのブロックは前記画像データの横列を含み、前記タイプ・データのブロックは、各々が、前記サブブロックの前記第1データ点のいずれかを含む該画像データのブロックの前記画像データの横列の1つに対応するタイプ・データの横列を含むことを特徴とする請求項1に記載の方法。
- 前記画像データのブロックは前記画像データの横列を含み、
前記画像データのブロック内の前記画像データの横列の所定のサブセットだけが、前記サブブロックの前記第1データ点のいずれかを含むことができ、
前記タイプ・データのブロックは、各々が、前記画像データのブロック内の前記画像データの横列の前記所定のサブセットの1つに対応するタイプ・データの横列を含む、
ことを特徴とする請求項1に記載の方法。 - 前記画像データのブロック内の前記画像データの横列の前記所定の横列と、前記タイプ・データのブロックにおける前記データの横列とは同じ長さを有することを特徴とする請求項4に記載の方法。
- 前記画像データのブロックは、各々、前記画像データの16横列及び16縦列を含み、
前記サブブロックの各々は、前記画像データの2、4、又は8横列と、2、4、又は8縦列とを含み、
前記タイプ・データのブロックは、各々、前記タイプ・データの4横列及び16縦列を含む、
ことを特徴とする請求項4に記載の方法。 - 前記タイプ・データは、前記サブブロックに対する前記第1データ点に加えて、補足的なデータを含むことを特徴とする請求項6に記載の方法。
- 前記補足的なデータは、前記画像データが局所予測されたか、前の運動ベクトルから予測されたか、又は双方向予測されたかを示すデータを含むことを特徴とする請求項7に記載の方法。
- 前記画像データのブロックの各々に対して、
前記タイプ・データのブロックを用いて、前記画像データのブロック内のサブブロックの位置及びサイズを識別し、
並列処理計算要素のアレイを用いて、一度に1つの横列で、前記画像データの横列を処理する、
ステップを含むことを特徴とする請求項3に記載の方法。 - 画像のデータ・ブロックを処理するように構成された計算要素を有する並列処理アレイにおいて処理する方法のための、コンピュータ実施可能命令を有するコンピュータ可読媒体であって、
画像データのブロックを生成する、
ステップを含み、前記画像データのブロックの各々はサブブロックに分割され、各々のサブブロックの第1データ点は、前記サブブロックの開始位置についてフラグをたて、
前記画像データのブロックの各々に対してタイプ・データのブロックを生成する、
ステップを含み、前記タイプ・データのブロックの各々は、該画像データのブロックにおける前記サブブロックの全てに対して前記第1データ点を含む、
ことを特徴とするコンピュータ可読媒体。 - 前記タイプ・データのブロックを用いて、前記画像データのブロック内の前記サブブロックの位置及びサイズを識別するように構成された並列処理計算要素のアレイを用いて、該画像データのブロックを処理するステップをさらに含むことを特徴とする請求項10に記載のコンピュータ可読媒体。
- 前記画像データのブロックは前記画像データの横列を含み、前記タイプ・データのブロックは、各々が、前記サブブロックの前記第1データ点のいずれかを含む該画像データのブロックの前記画像データの横列の1つに対応するタイプ・データの横列を含むことを特徴とする請求項10に記載のコンピュータ可読媒体。
- 前記画像データのブロックは前記画像データの横列を含み、
前記画像データのブロック内の前記画像データの横列の所定のサブセットだけが、前記サブブロックの前記第1データ点のいずれかを含むことができ、
前記タイプ・データのブロックは、各々が、前記画像データのブロック内の前記画像データの横列の前記所定のサブセットの1つに対応するタイプ・データの横列を含む、
ことを特徴とする請求項10に記載のコンピュータ可読媒体。 - 前記画像データのブロック内の前記画像データの横列の前記所定の横列と、前記タイプ・データのブロックにおける前記データの横列とは同じ長さを有することを特徴とする請求項13に記載のコンピュータ可読媒体。
- 前記画像データのブロックは、各々、前記画像データの16横列及び16縦列を含み、
前記サブブロックの各々は、前記画像データの2、4、又は8横列と、2、4、又は8縦列とを含み、
前記タイプ・データのブロックは、各々、前記タイプ・データの4横列及び16縦列を含む、
ことを特徴とする請求項13に記載のコンピュータ可読媒体。 - 前記タイプ・データは、前記サブブロックに対する前記第1データ点に加えて、補足的なデータを含むことを特徴とする請求項15に記載のコンピュータ可読媒体。
- 前記補足的なデータは、前記画像データが局所予測されたか、前の運動ベクトルから予測されたか、又は双方向予測されたかを示すデータを含むことを特徴とする請求項16に記載のコンピュータ可読媒体。
- 前記画像データのブロックの各々に対して、
前記タイプ・データのブロックを用いて、前記画像データのブロック内のサブブロックの位置及びサイズを識別し、
並列処理計算要素のアレイを用いて、一度に1つの横列で、前記画像データの横列を処理する、
ステップを含むことを特徴とする請求項12に記載のコンピュータ可読媒体。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US75806506P | 2006-01-10 | 2006-01-10 | |
PCT/US2007/000771 WO2007082042A2 (en) | 2006-01-10 | 2007-01-10 | Method and apparatus for processing sub-blocks of multimedia data in parallel processing systems |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2009523291A true JP2009523291A (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 | 並列処理システムにおけるマルチメディア・データのアルゴリズム・ステップを処理するための方法及び装置 |
JP2008550414A Abandoned JP2009523292A (ja) | 2006-01-10 | 2007-01-10 | 並列処理システムにおけるマルチメディア・データ処理をスケジューリングするための方法及び装置 |
JP2008550413A Abandoned JP2009523291A (ja) | 2006-01-10 | 2007-01-10 | 並列処理システムにおけるマルチメディア・データのサブブロックを処理するための方法及び装置 |
Family Applications Before (2)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2008550415A Abandoned JP2009523293A (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) | EP1971956A2 (ja) |
JP (3) | JP2009523293A (ja) |
KR (3) | KR20080094006A (ja) |
CN (3) | CN101371264A (ja) |
TW (3) | TW200803464A (ja) |
WO (3) | WO2007082042A2 (ja) |
Families Citing this family (32)
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 |
CN101371264A (zh) * | 2006-01-10 | 2009-02-18 | 光明测量公司 | 用于在并行处理系统中处理多媒体数据的子块的方法和装置 |
US8976870B1 (en) * | 2006-08-30 | 2015-03-10 | Geo Semiconductor Inc. | Block and mode reordering to facilitate parallel intra prediction and motion vector prediction |
WO2008027567A2 (en) * | 2006-09-01 | 2008-03-06 | Brightscale, Inc. | 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 |
US20080244238A1 (en) * | 2006-09-01 | 2008-10-02 | Bogdan Mitu | Stream processing accelerator |
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 |
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 |
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 |
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 |
CN102957914B (zh) | 2008-05-23 | 2016-01-06 | 松下知识产权经营株式会社 | 图像解码装置、图像解码方法、图像编码装置、以及图像编码方法 |
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 |
CN102177715A (zh) * | 2008-11-10 | 2011-09-07 | 松下电器产业株式会社 | 图像解码装置、图像解码方法、集成电路以及程序 |
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 |
CN103959238B (zh) * | 2011-11-30 | 2017-06-09 | 英特尔公司 | 使用gpu/cpu体系结构的rsa的高效实现 |
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)
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 |
DE69131272T2 (de) * | 1990-11-13 | 1999-12-09 | International Business Machines Corp., Armonk | Paralleles Assoziativprozessor-System |
US5963746A (en) * | 1990-11-13 | 1999-10-05 | International Business Machines Corporation | Fully distributed processing memory element |
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 |
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 |
US6128720A (en) * | 1994-12-29 | 2000-10-03 | International Business Machines Corporation | Distributed processing array with component processors performing customized interpretation of instructions |
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 |
WO2001010136A1 (en) * | 1999-07-30 | 2001-02-08 | Indinell Sociedad Anonima | Method and apparatus for processing digital images and audio data |
US6745317B1 (en) * | 1999-07-30 | 2004-06-01 | Broadcom Corporation | Three level direct communication connections between neighboring multiple context processing elements |
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 |
US6772268B1 (en) * | 2000-12-22 | 2004-08-03 | Nortel Networks Ltd | Centralized look up engine architecture and interface |
US7013302B2 (en) * | 2000-12-22 | 2006-03-14 | Nortel Networks Limited | Bit field manipulation |
US20020133688A1 (en) * | 2001-01-29 | 2002-09-19 | Ming-Hau Lee | SIMD/MIMD processing on a reconfigurable array |
US7290162B2 (en) * | 2001-02-14 | 2007-10-30 | Clearspeed Solutions Limited | Clock distribution system |
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 | 誤り訂正多重化装置、誤り訂正多重分離装置、これらを用いた光伝送システムおよび誤り訂正多重化伝送方法 |
US6760821B2 (en) * | 2001-08-10 | 2004-07-06 | Gemicer, Inc. | Memory engine for the inspection and manipulation of data |
US7383421B2 (en) * | 2002-12-05 | 2008-06-03 | Brightscale, Inc. | Cellular engine for a data processing system |
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 |
JP5318561B2 (ja) * | 2005-03-10 | 2013-10-16 | クゥアルコム・インコーポレイテッド | マルチメディア処理のためのコンテンツ分類 |
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 |
CN101371264A (zh) * | 2006-01-10 | 2009-02-18 | 光明测量公司 | 用于在并行处理系统中处理多媒体数据的子块的方法和装置 |
WO2008027567A2 (en) * | 2006-09-01 | 2008-03-06 | Brightscale, Inc. | 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 |
US20080059762A1 (en) * | 2006-09-01 | 2008-03-06 | Bogdan Mitu | Multi-sequence control for a data parallel system |
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 |
-
2007
- 2007-01-10 CN CNA2007800022530A patent/CN101371264A/zh active Pending
- 2007-01-10 KR KR1020087018366A patent/KR20080094006A/ko not_active Application Discontinuation
- 2007-01-10 WO PCT/US2007/000771 patent/WO2007082042A2/en active Application Filing
- 2007-01-10 EP EP07716562A patent/EP1971956A2/en not_active Withdrawn
- 2007-01-10 JP JP2008550415A patent/JP2009523293A/ja not_active Abandoned
- 2007-01-10 KR KR1020087018365A patent/KR20080085189A/ko not_active Application Discontinuation
- 2007-01-10 TW TW096101017A patent/TW200803464A/zh unknown
- 2007-01-10 WO PCT/US2007/000773 patent/WO2007082044A2/en active Application Filing
- 2007-01-10 EP EP07716561A patent/EP1971959A2/en not_active Withdrawn
- 2007-01-10 JP JP2008550414A patent/JP2009523292A/ja not_active Abandoned
- 2007-01-10 US US11/652,587 patent/US20070189618A1/en not_active Abandoned
- 2007-01-10 US US11/652,584 patent/US20070188505A1/en not_active Abandoned
- 2007-01-10 WO PCT/US2007/000772 patent/WO2007082043A2/en active Application Filing
- 2007-01-10 CN CNA200780002223XA patent/CN101371262A/zh active Pending
- 2007-01-10 TW TW096101019A patent/TW200806039A/zh unknown
- 2007-01-10 CN CNA2007800022437A patent/CN101371263A/zh active Pending
- 2007-01-10 TW TW096101018A patent/TW200737983A/zh unknown
- 2007-01-10 US US11/652,588 patent/US20070162722A1/en not_active Abandoned
- 2007-01-10 JP JP2008550413A patent/JP2009523291A/ja not_active Abandoned
- 2007-01-10 EP EP07716563A patent/EP1971958A2/en not_active Withdrawn
- 2007-01-10 KR KR1020087018364A patent/KR20080094005A/ko not_active Application Discontinuation
-
2009
- 2009-07-10 US US12/501,317 patent/US20100066748A1/en not_active Abandoned
Also Published As
Publication number | Publication date |
---|---|
KR20080085189A (ko) | 2008-09-23 |
WO2007082043A3 (en) | 2008-04-17 |
TW200806039A (en) | 2008-01-16 |
KR20080094006A (ko) | 2008-10-22 |
US20070188505A1 (en) | 2007-08-16 |
US20070189618A1 (en) | 2007-08-16 |
CN101371263A (zh) | 2009-02-18 |
US20100066748A1 (en) | 2010-03-18 |
KR20080094005A (ko) | 2008-10-22 |
WO2007082042A3 (en) | 2008-04-17 |
CN101371264A (zh) | 2009-02-18 |
WO2007082044A3 (en) | 2008-04-17 |
WO2007082042A2 (en) | 2007-07-19 |
TW200803464A (en) | 2008-01-01 |
EP1971958A2 (en) | 2008-09-24 |
EP1971956A2 (en) | 2008-09-24 |
US20070162722A1 (en) | 2007-07-12 |
JP2009523292A (ja) | 2009-06-18 |
JP2009523293A (ja) | 2009-06-18 |
WO2007082043A2 (en) | 2007-07-19 |
TW200737983A (en) | 2007-10-01 |
CN101371262A (zh) | 2009-02-18 |
WO2007082044A2 (en) | 2007-07-19 |
EP1971959A2 (en) | 2008-09-24 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP2009523291A (ja) | 並列処理システムにおけるマルチメディア・データのサブブロックを処理するための方法及び装置 | |
KR101973733B1 (ko) | 높은 성능, 전력 효율, 프로그램 가능 이미지 처리 프로세싱을 위한 아키텍처 | |
KR102050899B1 (ko) | 이미지 프로세서용 컴파일러 관리 메모리 | |
KR102146515B1 (ko) | 이미지 프로세서를 위한 시트 생성기 | |
US20070230817A1 (en) | Image processing apparatus, image processing method and image processing program | |
KR102253027B1 (ko) | 2차원 이미지 프로세서상의 통계 연산 | |
JP5744574B2 (ja) | 画像処理装置、画像処理方法及びプログラム | |
KR102278021B1 (ko) | 이미지 프로세서 런타임 효율성을 개선하기 위한 프로그램 코드 변환 | |
JP2010505158A (ja) | 複数のメモリーバンクを有するデータ処理 | |
CN110574007B (zh) | 执行双输入值绝对值和求和操作的电路 | |
JP2007535267A (ja) | 画像処理装置及び方法 | |
JP5020029B2 (ja) | 画像処理装置 | |
JP7154788B2 (ja) | 半導体装置 | |
CN107079129A (zh) | 投影装置、图像处理装置及图像处理方法 | |
US9158737B2 (en) | SIMD processor and control processor, and processing element with address calculating unit | |
JP5968497B2 (ja) | 制御方法、システム及びプログラム | |
KR20240068718A (ko) | 컨볼루션 신경망 연산 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A762 | Written abandonment of application |
Free format text: JAPANESE INTERMEDIATE CODE: A762 Effective date: 20090522 |