KR20080094005A - 병렬 프로세싱 시스템에서 멀티미디어 데이터의 서브블록들을 프로세싱하기 위한 방법 및 장치 - Google Patents
병렬 프로세싱 시스템에서 멀티미디어 데이터의 서브블록들을 프로세싱하기 위한 방법 및 장치 Download PDFInfo
- Publication number
- KR20080094005A KR20080094005A KR1020087018364A KR20087018364A KR20080094005A KR 20080094005 A KR20080094005 A KR 20080094005A KR 1020087018364 A KR1020087018364 A KR 1020087018364A KR 20087018364 A KR20087018364 A KR 20087018364A KR 20080094005 A KR20080094005 A KR 20080094005A
- Authority
- KR
- South Korea
- Prior art keywords
- blocks
- data
- image data
- block
- rows
- Prior art date
Links
- 238000012545 processing Methods 0.000 title claims abstract description 99
- 238000000034 method Methods 0.000 title claims abstract description 60
- 239000013598 vector Substances 0.000 claims description 4
- 230000000153 supplemental effect Effects 0.000 claims 1
- 238000004364 calculation method Methods 0.000 description 37
- 230000001419 dependent effect Effects 0.000 description 32
- 241000023320 Luma <angiosperm> Species 0.000 description 10
- OSWPMRLSEDHDFF-UHFFFAOYSA-N methyl salicylate Chemical compound COC(=O)C1=CC=CC=C1O OSWPMRLSEDHDFF-UHFFFAOYSA-N 0.000 description 10
- 238000013507 mapping Methods 0.000 description 9
- 238000013459 approach Methods 0.000 description 6
- 239000011159 matrix material Substances 0.000 description 5
- 230000008901 benefit Effects 0.000 description 3
- 238000012986 modification Methods 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 238000005192 partition Methods 0.000 description 2
- QNRATNLHPGXHMA-XZHTYLCXSA-N (r)-(6-ethoxyquinolin-4-yl)-[(2s,4s,5r)-5-ethyl-1-azabicyclo[2.2.2]octan-2-yl]methanol;hydrochloride Chemical compound Cl.C([C@H]([C@H](C1)CC)C2)CN1[C@@H]2[C@H](O)C1=CC=NC2=CC=C(OCC)C=C21 QNRATNLHPGXHMA-XZHTYLCXSA-N 0.000 description 1
- 229930091051 Arenine Natural products 0.000 description 1
- 238000004458 analytical method Methods 0.000 description 1
- 230000006835 compression Effects 0.000 description 1
- 238000007906 compression Methods 0.000 description 1
- 230000006837 decompression Effects 0.000 description 1
- 230000005670 electromagnetic radiation Effects 0.000 description 1
- 230000014509 gene expression Effects 0.000 description 1
- 239000013307 optical fiber Substances 0.000 description 1
- 238000005457 optimization Methods 0.000 description 1
- 238000003672 processing method Methods 0.000 description 1
- 230000007704 transition Effects 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)
- Multimedia (AREA)
- Computing Systems (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 호에 대한 이익을 주장하며, 상기 출원의 개시는 그 전체가 모든 목적으로 여기에 참조로서 포함된다.
본 발명은 일반적으로 병렬 프로세싱에 관한 것이다. 보다 상세하게, 본 발명은 병렬 프로세싱 시스템에서 멀티미디어 데이터를 프로세싱하기 위한 방법 및 장치에 관한 것이다.
멀티미디어 데이터의 사용이 증가함에 따라, 그러한 데이터를 프로세싱하고 그것을 실시간으로 전달하는 더 빠르고 효율적인 방법에 대한 요구가 증가해왔다. 특히, 이미지 및 연관된 오디오와 같은 멀티미디어 데이터를 병렬로 더 빠르고 효율적으로 프로세싱하는 방법에 대한 요구가 증가해왔다. 예를 들어, 멀티미디어 데이터의 압축 및/또는 압축 풀기와 같은 계산적으로 강도 높은 프로세스 동안에 병렬로 프로세싱할 필요가 종종 발생하고, 이러한 계산적으로 강도 높은 프로세스는 오디오 및 비디오가 실시간으로 전달되도록 충분히 빠르게 수행될 것을 여전히 요 구하는 상대적으로 많은 계산 횟수를 요한다.
따라서, 멀티미디어 데이터의 병렬 프로세싱에 노력을 배가하는 것을 지속시키는 것이 바람직하다. 그러한 데이터의 병렬 프로세싱에 대한 더 빠르고 효율적인 접근법을 개발하는 것은 특히 바람직하다. 이러한 접근법은 블록 병렬 프로세싱, 서브 블록 병렬 프로세싱, 및 바이-리니어(bilinear) 필터 병렬 프로세싱을 다룰 필요가 있다.
본 발명은 하나의 방법 및 컴퓨터 판독 가능형 매체를 포함하여 많은 방식으로 구현될 수 있다. 본 발명의 다양한 실시 형태가 아래에서 논의된다.
이미지 데이터의 블록들을 처리하도록 구성된 계산 요소들(computing elements)을 갖는 병렬 프로세싱 배열에서, 하나의 방법은 이미지 데이터의 블록들을 발생하는 단계로서, 이미지 데이터의 블록 각각은 서브 블록들로 분할되고, 서브 블록 각각의 제 1 데이터 지점(point)이 서브 블록의 선두 위치를 플래깅(flag)하는 상기 발생 단계, 및 이미지 데이터의 블록 각각에 대해 형태 데이터(type data)의 블록을 발생하는 단계로서, 형태 데이터의 블록 각각은 이미지 데이터의 블록 내 모든 서브 블록들에 대한 제 1 데이터 지점을 포함하는 상기 발생 단계를 포함한다.
다른 형태로, 이미지 데이터의 블록들을 처리하도록 구성된 계산 요소들을 갖는 병렬 프로세싱 배열에서 처리하는 방법을 위하여 컴퓨터가 실행가능한 명령을 갖는 컴퓨터 판독 가능형 매체로서, 상기 프로세싱하는 방법은 이미지 데이터의 블록들을 발생하는 단계로서, 이미지 데이터의 블록 각각은 서브 블록들로 분할되고, 서브 블록 각각의 제 1 데이터 지점이 서브 블록의 선두 위치를 플래깅하는 상기 발생 단계, 및 이미지 데이터의 블록 각각에 대해 형태 데이터의 블록을 발생하는 단계로서, 형태 데이터의 블록 각각은 이미지 데이터의 블록 내 모든 서브 블록들에 대한 제 1 데이터 지점을 포함하는 상기 발생 단계를 포함하는 컴퓨터 판독 가능형 매체가 있다.
본 발명의 다른 대상 및 형태가 상세한 설명, 청구항 및 첨부된 도면을 봄으로써 명확해질 것이다.
도 1은 1080i 고해상(HD) 프레임의 매크로블록들을 개념적으로 도시한다.
도 2a ~ 2b는 이미지 프레임 내의 매크로블록들과 같은 블록들의 정렬을 추가로 도시한다.
도 3a ~ 3c는 이미지 내 매크로블록들의 정렬로부터 개별 병렬 프로세서로 매크로블록들의 매핑을 도시한다.
도 4a ~ 4e는 다양한 이미지 포맷에 대하여, 개별 병렬 프로세서로 이미지의 매핑을 도시한다.
도 5a ~ 5b는 이미지의 서브 분할들을 개별 병렬 프로세서로 매핑하기 위한 16×8 매핑을 도시한다.
도 6a ~ 6b는 이미지의 서브 분할들을 개별 병렬 프로세서로 매핑하기 위한 16×4 매핑을 도시한다.
도 7a ~ 7c는 본 발명의 일 실시 형태에 따라, 이미지 블록들을 병렬 프로세서로 매핑하는 대안적인 접근법을 도시한다.
도 8a ~ 8c는 루마 및 크로마 정보를 포함하는, 이미지 포맷의 보다 상세한 데이터 구조를 도시한다.
도 9a ~ 9c는 본 발명의 일 실시 형태에 따라, 다중 이미지 블록들을 병렬 프로세서로 매핑하는 다양한 대안적인 접근법을 도시한다.
도 10a ~ 10c는 본 발명의 일 실시 형태에 따라, 데이터 블록 데이터 위치들, 서브 블록 위치들, 서브 블록 플래그 데이터 위치들, 및 형태 데이터의 블록을 도시한다.
도 11a ~ 11b는 알고리즘 프로세싱 단계 및 어떠한 프로세싱 단계가 어떠한 데이터 변수에 적용되는지 식별하기 위한 선택 코드를 도시한다.
도 12는 병렬 프로세서를 도시한다.
유사 참조 번호들은 도면 전반에 걸쳐 대응 부분들을 나타낸다.
여기에 서술된 발명은 병렬 프로세싱 확장의 세 가지 주요한 영역들, 즉, 블록 병렬 프로세싱, 서브 블록 병렬 프로세싱, 및 유사 알고리즘 병렬 프로세싱을 다룬다.
블록 병렬 프로세싱
일 측면에서, 본 발명은 멀티미디어 데이터의 병렬 프로세싱을 위한 더 효율적인 방법에 관한 것이다. 다양한 이미지 포맷에서, 이미지는 블록들로 분할되고, 일반적으로 매트릭스 형태로 보여질 때 이미지 내에 다른 블록들의 오른편 아래에 위치하는 "후행" 블록들은 후행 블록들의 왼편 위의 이미지인 "선행" 블록들로부터의 정보에 의존한다. 후행 블록들은 선행 블록들로부터의 정보(종종 의존 데이터(dependency data)라 불림)를 요구하기 때문에, 선행 블록들은 후행 블록들 이전에 프로세싱되어야 한다. 따라서, 블록들(또는 블록들의 부분들)은 그들의 의존 데이터의 순서로 다양한 병렬 프로세서에 전송된다. 선행 블록들이 먼저 병렬 프로세서에 보내지고, 후행 블록들이 나중에 보내진다. 블록들은 병렬 프로세서의 특정 위치에 저장되고 필요에 따라 주위로 이동(shift around)되므로 모든 블록은 프로세싱될 때, 특정 위치를 갖는 선행 블록들의 특정 집합에 위치된 자신의 의존 데이터를 갖는다. 이러한 방식으로, 블록의 의존 데이터는 같은 명령으로 검색될 수 있다. 즉, 선행 블록들이 주위로 이동되어, 개별 프로세서로 하여금 특정 위치로부터 블록의 의존 데이터를 검색하도록 지시하는 명령의 단일 집합에 의해 후행 블록들은 프로세싱될 수 있다. 각각의 병렬 프로세서가 같은 명령 집합으로 그것의 블록을 프로세싱하도록 허가함으로써, 본 발명의 방법은 각각의 프로세서에 개별 명령을 보낼 필요성을 없애고, 대신 단일 글로벌 명령 집합(single global command set)이 보내지도록 허가한다. 이것에 의해 더 빠르고 효율적인 프로세싱이 달성된다.
도 1은 일반적으로 보여지거나 및/또는 메모리에 저장되는 매트릭스 형태로, 이미지의 예시적 프레임을 개념적으로 도시한다. 이러한 예시에서, 1080i HD 이미지 매트릭스(10)는 각각이 120개 매크로블록들(12)인 68개 라인으로 세 분(subdivide)된다. 일반적으로, 이러한 1080i 프레임과 같은 이미지는 개별 매크로블록(12) 단위로 프로세싱된다. 즉, 하나 이상의 매크로블록(12)은 병렬 프로세싱 배열의 계산 요소(또는 프로세서) 각각에 의해 프로세싱된다. 그러나, 본 발명이 매크로블록들(12)의 프로세싱의 매락에서 주로 논의되지만, 본 발명은 이미지 및 다른 데이터를, 병렬로 프로세싱될 수 있는 블록들로서 종종 언급되는 임의의 부분으로 분할하는 것을 포함한다.
상기한 바와 같이, 도 1의 1080i HD 프레임과 같은 이미지의 매크로블록들은 도 2a ~ 2b에서 추가로 예시하는 의존 데이터를 포함한다. h.264 진보된 비디오 코딩 표준 및 VC-1 MPEG-4 표준과 같은 표준(단, 이러한 표준에 제한되지는 않음)에 따라, 이미지의 블록 R의 프로세싱은 블록 a, d, b 및 c로부터 의존 데이터(예를 들어, 보간(interpolation)에 필요한 데이터 등)를 요구한다. 즉, 이러한 표준에 따라, 이미지의 블록 각각의 프로세싱은 바로 왼편 블록 뿐만 아니라 대각선으로(diagonally) 바로 상위 왼편 블록, 바로 상위 블록, 대각선으로 바로 상위 오른편 블록으로부터 의존 데이터를 요구한다. 따라서, 블록 a는 또한 블록 d 및 b로부터의 정보에 의존하고, 블록 b는 블록 d로부터의 정보에 의존하는 반면, 블록 d는 임의의 다른 블록들로부터의 정보에 의존하지 않는다. 따라서 이러한 블록들의 병렬 프로세싱은 d가 가장 먼저 프로세싱되고, 블록 d로부터의 정보에 의존하는 블록 a 및 b가 프로세싱되고, 블록 a, d, b로부터의 정보에 의존하는 블록 R 및 c를 프로세싱하는 등의 대각선 프로세싱을 요구함을 알 수 있다.
그 다음, 도 3a ~ 3c를 참조하면, 최적의 병렬 프로세싱을 위하여, 블록들은 후행 블록들 이전에 선행 블록들이 프로세싱되는 순서로 프로세서에 매핑되어, 프로세싱될 수 있음을 알 수 있다. 도 3a는 이미지가 관측자에게 보일 때 예시적 이미지의 매크로블록 구조를 도시한다. 상기의 바와 같이, 도 3a의 블록들은 후행 블록들에 대한 블록들의 의존 데이터를 유지하는 순서로 프로세싱된다. 도 3b는 후행 블록들을 위해 블록들의 의존 데이터를 보존하도록 프로세싱되어야 하는 순서로 대각선들을 도시한다. 각각의 행은 개별 대각선을 도시하며, 대각선 각각은 그 윗행으로부터의 의존 데이터만을 요구한다. 예를 들어, 블록 ( )0는 이미지의 최상위 왼편 코너에 위치되기 때문에 가장 먼저 프로세싱되며, 이에 따라 의존 데이터를 갖지 않는다. 블록 00는 그 다음 프로세싱되고, 블록 ( )0로부터로만 의존 데이터를 요구하기 때문에 다음 행에 나타난다. 블록 11 및 10는 그 다음에 프로세싱되고, 블록 11이 블록 ( )0 및 00로부터 의존 데이터를 요구하고, 블록 10는 블록 00로부터 의존 데이터를 요구하기 때문에 다음 행에 나타난다. 점선(dash-line)으로 강조된 도 3a의 블록들의 대각선 각각은 도 3b에 보여지는 바와 같은 병렬 프로세싱 배열의 행들에 매핑될 수 있다는 것을 알 수 있다.
도 3b에 보여지는 바와 같이 블록들을 계산 요소의 행들로 매핑하여 모든 요구되는 의존 데이터를 각각의 행 위에 보존하지만, 난제들은 여전히 존재한다. 보다 상세하게, 각각의 블록에 대한 의존 데이터는 여전히 자주 그 블록에 대하여 다른 장소들에 위치된다. 예를 들어, 도 3a에서, 블록 41은 시계 방향 순서로 다음 블 록들, 31, 10, 20 및 30에 위치된 의존 데이터를 갖는다는 것을 알 수 있다. 도 3b에 도시된 바와 같이 프로세서들에 매핑될 때, 화살표에 의해 도시된 바와 같이 위치하여 프로세서 31, 10, 20 및 30는 블록 41 위에 "L" 모양으로 정렬한다. 반면에, 블록 93에 대한 위한 의존 데이터는 화살표에 의해 도시된 바와 같이 정렬된 블록 83, 82, 72 및 62에 위치된다. 이것은 프로세싱 배열 내에 도시된 위치에서 각각의 블록이 프로세싱되기 위하여, 계산 요소 각각은 의존 데이터를 검색하도록 지시하는 자신만의 명령을 요구할 것임을 설명한다. 달리 말해서, 각각의 블록에 대한 의존 데이터는 각각의 블록에 대하여 다르게 정렬되기 때문에(블록 41 및 93에 의해 도시됨), 개별 데이터 검색 명령은 각각의 프로세서에 전달되어야 하며, 이미지가 프로세싱될 수 있는 속도가 저하된다.
본 발명의 실시 형태에서, 이러한 문제점은 각각의 블록에 대한 의존 데이터를 그 블록의 프로세싱 이전에 이동(shift)시킴으로써 극복된다. 당 업계의 일반적 기술 상식을 가진자(당업자)는 의존 데이터가 임의의 형태로 이동될 수 있음을 알고 있다. 그러나, 의존 데이터를 이동시키는 하나의 편리한 접근법이 도 3c에 도시되며, 이 접근법에서 의존 데이터를 포함하는 블록들은 상기에 서술된 "L" 모양으로 이동된다. 즉, 블록 X가 프로세싱될 때, 블록 X는 블록 A ~ D로부터의 의존 데이터를 요구한다. 이미지 내에서, 이러한 블록들은 바로 X 위에, 바로 상위 왼편에, 바로 왼편에, 바로 상위 오른편에 각각 위치된다. 병렬 프로세싱 배열 내에서, 이러한 블록들은 X위의 2개 프로세서 위치(two processor positions), 3개 프로세서 위치, 1개 프로세서 위치 및 바로 상위 오른편의 프로세서 위치로 각각 이동될 수 있다. 예를 들어, 도 3b에서, 블록 93의 프로세싱을 위하여, 블록 8x 및 6x를 포함하는 행 각각은 적절한 장소로 이동되어 블록 83, 82, 72 및 62를 특성 "L" 모양으로 위치시킬 수 있다.
블록들 X를 프로세싱하기 전에, 그러한 모든 의존 데이터를 이러한 "L" 모양으로 이동시킴으로써, 같은 명령 집합이 각각의 블록 X를 프로세싱하는 데에 사용될 수 있다. 이것은 프로세서 각각에 개별 명령 집합의 로딩을 요구하는 대신에, 동일 명령 집합이 단지 단일 로딩 동작에서 병렬 프로세서들에 로딩된다는 것을 의미한다. 이것은 이미지를 프로세싱할 때, 특히 더 큰 프로세싱 배열에 대하여, 상당한 시간을 절약하게 해준다.
당업자는 상기에 서술된 접근법이 단지 본 발명의 일 실시 형태임을 알게 된다. 보다 상세하게, 데이터가 상기에 서술된 "L" 모양으로 이동될 수 있지만, 본 발명은 데이터 블록들이 이러한 형태로 이동하는 것에 제한되지는 않는다는 점이 인식될 것이다. 오히려, 본 발명은 의존 데이터가 프로세싱될 블록 X 각각에 공통으로 적용될 수 있는 임의의 형태들 또는 특성 위치(characteristic position)들로 이동하는 것을 포함한다. 특히, 다양한 이미지 포맷은 도 2a에 도시된 위치들과 다르게 블록들에 위치된 의존 데이터를 가질 수 있어서 "L" 모양 이외에 다른 특성 위치들 또는 형상을 사용하기 더욱 편리하게 만든다.
당업자는 또한 본 발명이 다중 매크로블록을 갖는 1080i HD 프레임의 맥락으로 이제까지 설명되어 왔지만, 본 발명이 임의의 서브 분할들(subdivisions)로 분리될 수 있는 임의의 이미지 포맷을 포함한다는 것을 알 것이다. 즉, 본 발명의 방법은 임의의 프레임의 임의의 서브 분할들과 함께 채택될 수 있다. 도 4a ~ 4e는 이러한 점을 예시하여, 다양한 종류의 프레임의 대각선이 변화하는 수의 프로세서 행들에 어떻게 매핑될 수 있는지 보여준다. 도 4a에서, HD 프레임의 대각선은 도시된 바와 같이 프로세서의 연속적인 행들로 매핑되어, 257개의 프로세서 행이 채택되고 단일 행에서 최대 61개의 프로세서가 사용되는 사다리꼴(또는 대안적으로 장사방형 또는 가능한 이 둘의 조합)의 레이아웃을 생성할 수 있다. 더 작은 프레임은 더 작은 행들 및 더 작은 프로세서를 이용한다. 예를 들어, 도 4b에서 CIF 프레임은 59개의 프로세서 행을 사용하고, 임의의 행에 채택된 최대 프로세서의 수는 19이다. 유사하게, 도 4c에서, 625 SD 프레임은 병렬 프로세싱 배열에 매핑될 때, 117개 행을 점유하고 행당 최대 프로세서는 36개이다. 유사하게, 도 4d에서, SIF 프레임은 동일 병렬 프로세싱 배열로 매핑될 때, 51개 행을 점유하고 행당 최대 프로세서는 16개이다. 도 4e에서, 525 SD 프레임은 107개 행을 점유하고 행당 최대 프로세서는 30개이다. 이러한 예들로부터 알 수 있는 바와 같이, 본 발명은 데이터가 상기에 서술된 행들 내에서 이동될 수 있는 병렬 프로세싱 배열에 임의의 이미지를 매핑하도록 채택되어, 단일 명령 또는 명령 집합으로 블록들을 프로세싱하도록 허가할 수 있다.
본 발명은 블록들과 병렬 프로세싱 배열의 계산 요소들 간의 엄격한 일대일 대응으로 제한되지 않는다는 것이 또한 인식되어야 한다. 즉, 본 발명은 블록들의 부분들이 계산 요소들의 부분들에 매핑되고 따라서 이러한 블록들이 프로세싱되어 효율성 및 속도를 증가시키는 실시 형태를 포함한다. 도 5a ~ 5b는 이미지의 블록들이 둘로 분할되는 그러한 하나의 실시 형태를 도시한다. 그 다음, 이러한 분할 각각은 각 분할이 한 프로세서의 절반으로 매핑되고 그것에 의해 프로세싱된다는 것을 제외하고는 상기와 같이 프로세싱된다. 도 5a는 상위 절반 및 하위 절반으로 분할된 블록들을 도시한다. 즉, 상위 왼편 블록은 두 개의 서브 블록, 0 및 2로 분할된다. 유사하게, 그것 옆의 블록은 서브 블록, 1 및 3으로 분할된다. 나머지 블록들도 같은 방법으로 분할된다. 각각의 서브 블록은 의존 목적으로 전체 블록과 동일하게 거동함에 주목해야 한다. 즉, 서브 블록 1은 블록 0으로부터만 의존 데이터를 요구하고, 가장 왼편 블록 2는 블록들 0 및 1로부터 의존 데이터를 요구하는 등등이다. 도 5b는, 프로세서의 절반으로 매핑된 서브 블록들을 도시하며, 서브 블록 0 및 1은 첫 번째 행으로, 서브 블록 2 및 서브 블록 3은 두 번째 행으로 매핑되고 나머지 서브 블록들도 동일하게 매핑된다. 그 다음 본 발명의 프로세스는 상기와 같은 방식으로 채택되어, 서브 블록들은 프로세서의 행들을 따라 필요한 만큼 이동된다.
이러한 방식으로, 종래 실시 형태에서보다 더 많은 프로세서들이 단일 시간에 점유되어 병렬 프로세싱 배열의 더 많은 부분이 사용되고 따라서 더 빠른 이미지 프로세싱을 달성한다. 특히, 도 3b를 참조하면, 사용되는 프로세서들의 수는 하나씩 거른 행마다 한 개씩 증가한다는 것을 주목할 수 있다. 즉, 처음 두 행은 행 당 하나의 프로세서를 사용하고, 그 다음 두 행은 행당 두 개의 프로세서를 사용하고, 나머지 행들도 이와 같이 적용된다. 반면에, 도 5b는 사용되는 프로세서의 수가 매행마다 하나씩 증가하는 실시형태를 도시한다. 즉, 첫 번째 행은 하나의 프로세서를, 두 번째 행은 두 개의 프로세서를 사용하고, 나머지 행들도 이와 같이 적용된다. 따라서, 도 5a ~ 5b의 실시 형태는 한 번에 더 많은 프로세서를 사용하며, 그 결과 더 빠른 프로세싱을 달성한다.
도 6a ~ 6b는 이미지의 블록들이 네 개의 서브 분할로 분리되는 다른 그러한 실시 형태를 도시한다. 예를 들어, 이미지의 상위 왼편 블록은 서브 블록 0, 2, 4 및 6으로 분할된다. 그 다음 이러한 서브 블록들은 그들의 의존 데이터에 의해 요구되는 순서로 프로세서의 부분들에 매핑된다. 즉, 각각의 프로세서는 네 개의 "서브-행(sub-row)"으로 분할될 수 있고, 각 서브 행은 서브 블록들의 한 행을 프로세싱할 수 있다. 그 다음, 다양한 서브 블록들은 도시된 바와 같이 프로세서의 서브 행들에 매핑될 수 있다. 예를 들어, 0, 1, 2 및 3의 서브 블록들은 첫 번째 행의 두 개의 프로세서에 모두 매핑되고(첫 번째 프로세서는 서브 블록 0, 1, 하나의 서브 블록 2, 하나의 서브 블록 3을 프로세싱하고, 및 두 번째 프로세서는 다른 서브 블록 2, 3을 프로세싱함), 그것에 따라서 프로세싱될 수 있다. 이러한 실시 형태는 첫 번째 행에서 하나 대신에 두 개의 프로세서를 채택하고, 프로세서들의 수가 행당 두 개씩 증가하여 더 많은 프로세서들이 행당 사용될 수 있게 함을 주목한다.
본 발명은 또한 16개의 서브 분할로 블록들과 프로세서들을 분할하는 것을 포함한다. 부가하여, 본 발명은 다중 블록들의 "나란한(side by side)" 프로세싱, 즉, 행당 다중 블록들의 프로세싱을 포함한다. 도 7a ~ 7c는 두 가지의 이러한 개념들을 도시한다. 도 7a는, 도시된 바와 같이, 블록을 16개의 서브 블록(( )0 ~ 80)으로 분할하는 것을 예시한다. 당업자는 개별 블록들이 그들의 의존 데이터가 정확하게 결정될 수 있도록 그들이 정렬되는 한, 개별 블록들은 개별적으로 프로세싱될 수 있음을 안다. 도 7b는 비관련 블록들(unrelated blocks), 즉 서로 의존 데이터를 요구하지 않는 블록들이 병렬로 프로세싱될 수 있다는 사실을 도시한다. 각각의 블록은 도 7a에서와 같이 분할되며, 간략화를 위해 아래 첨자 없이 서브 블록들이 도시된다. 예를 들어, 여기에서 첫 번째 블록은 0 내지 9로 라벨이 붙은 16개의 서브 블록으로 분할되고, 동일한 숫자는 상기한 바와 같이 동시에 프로세싱된다. 각각의 행의 블록들이 서로로부터 의존 데이터를 요구하지 않는 한, 그 블록들은 같은 행에서 함께 프로세싱될 수 있다. 따라서, 프로세서의 한 그룹은 다중 비관련 블록들을 동시에 프로세싱할 수 있다. 예를 들어, 도 7b에서 네 개 블록의 상위 행(각각의 서브 블록에는 0 ~ 9, 10 ~ 19, 20 ~ 29 및 30 ~ 39로 라벨 붙여짐)은 프로세서의 단일 집합으로 프로세싱될 수 있다.
프로세서(왼편을 따라 숫자 매겨진)와 그러한 프로세서들에 로드되는 대응 서브 블록들의 차트인 도 7c는 이러한 점을 도시한다. 여기에서, 서브 블록 0 ~ 9는 프로세서 0 ~ 9(프로세서들에 왼편을 따라 라벨이 붙여짐)의 서브 분할들에 로딩되어 도시된 바와 같이 다이아몬드형 패턴을 형성할 수 있다. 또한, 그 다음, 블록들은 프로세서들의 중첩(overlapping) 집합들에 로딩되어, 서브 블록 10 ~ 19가 프로세서 4 ~ 13에 로딩될 수 있다. 나머지 블록들도 동일하게 로딩될 수 있다. 이러한 방식으로, 블록들의 추가적 서브 분할들 뿐만 아니라 프로세서들의 중첩 집합으로의 다중 블록들을 "연쇄(chaining)"시키는 것 모두는 더 많은 프로세서들이 더 빨리 사용되는 것을 허가하며, 더 빠른 프로세싱을 달성한다.
도 7a ~ 7c는 4×4 프로세싱을 도시한다. 이와 같은 기법은 또한 8×8 프로세싱에서도 실시될 수 있다는 것을 알아야 한다.
다른 블록들을 다른 프로세서들에서 프로세싱하는 것에 더하여, 동일 블록 내의 다른 종류의 데이터가 또한 다른 프로세서들에서 프로세싱될 수 있음을 주목한다. 특히, 본 발명은 동일 블록으로부터의 강도(intensity) 정보, 루마(luma) 정보 및 크로마(chroma) 정보의 개별 프로세싱을 포함한다. 즉, 한 블록의 강도 정보는 그 블록의 루마 정보로부터 개별적으로 프로세싱될 수 있고, 루마 정보는 그 블록의 크로마 정보로부터 개별적으로 프로세싱될 수 있다. 당업자는 루마 및 크로마 정보가 프로세서들에 매핑되어 상기와 같이 프로세싱(즉, 필요한 만큼 이동됨 등)되고, 서브 분할되며, 서브 분할들이 프로세싱의 효율 증가를 위해 다른 프로세서들에 매핑될 수 있음을 안다. 도 8a ~ 8c는 이러한 것을 도시한다. 도 8a에서, 루마 데이터의 한 블록은 하나의 프로세서에 매핑되고, 크로마 데이터의 대응하는 "절반 블록"은 동일 프로세서 또는 다른 프로세서로 매핑된다. 특히, 강도, 루마 및 크로마 데이터는 인접한 프로세서들의 집합, 아마도 도 7b와 유사하게 적어도 부분적으로 중첩하는 행들의 집합에 매핑될 수 있음을 주목한다. 루마 및 크로마 정보는 또한 도 5a ~ 5b, 및 6a ~ 6b와 관련하여 서술된 바와 같이, 개별 계산 요소들 의 서브 분할들에서 프로세싱하기 위해서 서브 블록들로 분할될 수 있다. 특히, 도 8b ~ 8c는 한 프레임의 루마 및 크로마 데이터가 각각 두 개 및 네 개의 서브 블록으로 분할되는 것을 도시한다. 그 다음, 도 8b의 두 개의 서브 블록은 도 5a ~ 5b와 관련하여 서술된 바와 같이, 프로세서들의 다른 절반에서 프로세싱될 수 있다. 유사하게, 도 8c의 네 개의 서브 블록은 도 6a ~ 6b에 도시된 바와 같이, 프로세서들의 다른 네 부분 중 한 부분에서 프로세싱될 수 있다.
상기에 서술된 실시 형태의 일부가 다른 블록들을 프로세서들의 같은 행 또는 행들에 의해 나란히 프로세싱하는 것을 포함하지만, 본 발명은 다른 블록들을 프로세서들의 같은 열들을 따라서 프로세싱하여 프로세싱의 효율성과 속도를 또한 증가시키는 것을 포함함을 또한 주목한다. 다양한 블록들에 의해 점유된 프로세서들을 개념적으로 도시하는 도 9a ~ 9c는 후자 개념의 실시형태를 예시한다. 여기에서, 프로세서들의 행들은 수직축을 따라 확장하는 반면, 프로세서들의 열들은 수평축을 따라 확장한다. 따라서 일반적인 블록은 프로세싱 배열의 행들에 매핑될 때, 영역(100 ~ 104)에 의해 기술된 일반적인 사다리꼴 모양으로 프로세서들을 점유할 것이라는 것을 알 수 있다. 특히, 영역(들)(104)는 많은 프로세서들을 점유하지 않고, 따라서 프로세싱 배열의 총 사용을 줄인다는 것을 주목한다. 이것은 영역들(100 ~ 104)을 점유하는 블록의 바로 아래의 다른 데이터 블록을 프로세싱함으로써 적어도 부분적으로 개선될 수 있다. 이 블록은 영역들(106 ~ 112)을 점유할 수 있고, 따라서 더 많은 프로세서들이 특히 후속 블록들 간의 "전이(transition)" 영역들(104 ~ 106)에서 사용될 수 있다. 이러한 방식에서, 프로세싱은 사용자들이 영 역(100 ~ 104) 내 블록의 프로세싱 후에만 영역(106 ~ 112)의 블록을 프로세싱하는 경우에서보다 더 빠르고 더 많은 배열의 사용으로 달성될 수 있다.
도 9b ~ 9c는 이러한 개념의 추가적 확장을 도시한다. 특히, 매핑된 블록들의 이러한 수직적 "연쇄"는 둘 이상의 블록들에 계속될 수 있으며, 상당히 높은 배열 사용을 가져다 준다는 것을 주목한다. 특히, 블록들은 인접한 열에 한 개씩 차례로 매핑되어, 하나의 블록이 영역들(116 ~ 120)을 점유하고 다른 블록이 영역들(122 ~ 126)을 점유할 수 있다.
장사방형 모양들은 사다리꼴 모양들 대신에 또는 사다리꼴 모양과 함께 사용될 수 있다. 또한, 다른 포맷들의 매핑의 임의의 조합은 장사방형들 및/또는 사다리꼴들의 다른 크기 및 조합에 의해 수행되어 다중 스트림들(streams)의 동시적 프로세싱을 지원할 수 있다.
당업자는 본 발명의 상기에 서술된 프로세스들 및 방법들이 많은 다른 병렬 프로세서들에 의해 수행될 수 있음을 안다. 본 발명은 이미지 데이터의 블록을 각각 프로세싱하는 다중 계산 요소들을 갖고, 그러한 데이터를 의존성을 보존하기 위해 이동시킬 수 있는 임의의 병렬 프로세서에 의한 사용을 고려한다. 많은 그러한 병렬 프로세서들이 고려되지만, 하나의 적합한 예시가 명칭이 "집적 프로세서 배열, 명령 시퀀서 및 I/O 컨트롤러"이고, 2006년 10월 19일 출원된, 미국 특허 출원 번호 11/584,480 호에 서술되며, 이 미국 출원의 개시가 전체로서 모든 목적을 위해 여기에 참조로 포함된다.
서브 블록 병렬 프로세싱
도 10a ~ 10c는 서브 블록 병렬 프로세싱에 관한 발명들을 도시한다. 상기에 언급된 비디오 표준들에 따르면, 각각의 매크로블록(12)은 네 개 이상의 서브 블록(20)으로 세분되는, 데이터 비트들(즉, 픽셀들)의 16행×16열의 매트릭스이다. 특히, 각각의 매트릭스는 크기가 8×8인 적어도 네 개의 동일한 사분(quadrant) 서브 블록(20)으로 세분된다. 각각의 사분 서브 블록(20)은 8×4, 4×8 및 4×4의 크기를 갖는 서브 블록들(20)로 추가로 세분될 수 있다. 따라서, 임의의 주어진 블록(12)은 8×8, 4×8, 8×4 및 4×4의 크기를 갖는 서브 블록들(20)로 세분될 수 있다.
도 10a는 하나의 8×8 서브 블록(20a), 두 개의 4×8 서브 블록(20b), 두 개의 8×4 서브 블록(20c), 및 네 개의 4×4 서브 블록(20d)을 구비한 블록(12)을 도시한다. 각 크기의 서브 블록(20)의 수뿐만 아니라 블록(12) 내의 그들의 위치들은 변할 수 있다. 또한, 다양한 크기의 서브 블록들(20)의 수 및 위치들은 블록(12) 마다 다를 수 있다.
따라서, 서브 블록들을 가진 블록(12)을 병렬 방식으로 프로세싱하기 위해서, 서브 블록들의 위치 및 크기가 가장 먼저 결정되어야 한다. 각각의 블록(12)에 대하여, 서브 블록들의 위치와 크기를 결정하는 것은 시간 소모적이며, 블록들(12)의 병렬 프로세싱에 상당한 프로세싱 오버헤드(overhead)를 부가한다. 프로세서들은 블록(12)을 두 번 분석해야 하는데, 한 번은 서브 블록들(20)의 수 및 위치를 결정하기 위해, 그 다음은 정확한 순서로 서브 블록들을 프로세싱하기 위해 이루어진다(일부 서브 블록들(20)은 상기에 기술된 바와 같이 프로세싱을 위해 다른 서브 블록들로부터 의존 데이터를 요구할 수 있는데, 이것은 다양한 서브 블록들의 위치 및 크기가 가장 먼저 결정되어야 하는 이유에 해당함을 유념한다).
이러한 문제를 경감시키기 위해서, 본 발명은 블록(12) 내의 모든 서브 블록들(20)의 형태(즉, 위치 및 크기)를 식별하는 형태 데이터의 특별한 블록을 포함하며, 따라서 프로세서가 이러한 결정을 내릴 필요를 피한다. 도 10b는 블록(12)을 도시하며, 임의의 주어진 서브 블록(20)에 대하여 첫 번째 데이터 위치를 형성할 수 있는 16개의 데이터 위치(22)를 도시한다(첫 번째는 서브 블록(20)의 가장 상부 왼편 엔트리를 의미함). 각각의 블록(12)에 대하여, 이러한 16개의 위치들(22)은 이러한 데이터 위치가 새로운 서브 블록(20)의 첫 번째 엔트리를 구성하는지 플래깅하기 위해 필요한 데이터를 포함할 것이다. 위치가 플래깅되면, 이러한 위치는 데이터 블록(20)의 시작점으로 고려되고, 그것의 바로 왼편의 위치(존재한다면)는 바로 왼편 서브 블록(20)의 마지막 열로 고려되고, 바로 상위의 위치(존재한다면)는 바로 상위 서브 블록(20)의 마지막 행으로 고려된다. 위치가 플래깅되지 않으면, 이러한 엔트리는 같은 서브 블록(20)의 연속을 나타낸다. 따라서, 이러한 16개의 플래그 데이터 위치들(22)은 서브 블록들(20)의 위치 및 크기를 결정하는데 필요한 모든 데이터를 포함한다는 것을 알 수 있다.
도 10c는 본 발명에 따르는 형태 데이터의 블록을 도시하며 16×4의 크기를 갖는 형태 데이터의 블록(24)이 각각의 블록(12)과 연관된다. 블록(24)의 네 개의 행은 플래그 데이터 위치들(22)을 포함하는 블록(12)의 네 개의 행에 대응한다. 따라서, 형태 데이터 블록(24)의 각 행의 첫 번째, 다섯번 째, 아홉번 째, 열세번 째 데이터 위치를 단지 분석함으로써, 서브 블록들(20)의 위치 및 크기가 결정될 수 있다. 이러한 목적으로 블록(12)의 추가 분석은 요구되지 않는다. 더욱이, 블록(20) 내의 남아있는 데이터 위치들은, 서브 블록 형태(I - 국소적 예측됨, P - 움직임 벡터와 함께 예측됨, B - 양방향으로 예측됨), 블록 벡터들 등과 같은 다른 데이터를 저장하는데 사용될 수 있다. 따라서, 도 10c에 도시된 바와 같이, 새로운 서브 블록의 선두를 구성하는 그러한 데이터 위치들(22)만이 플래깅되고, 및 블록 (24)의 각 행에서 첫 번째, 다섯번 째, 아홉번 째, 열세번 째 데이터 위치들이 그러한 플래깅에 일치(match)한다.
유사 알고리즘 병렬 프로세싱
병렬 프로세싱 최적화의 다른 소스는 소정의 유사(예를 들어, 유사한 계산)를 갖는 동시적 프로세싱 알고리즘을 포함한다. 컴퓨터 프로세싱은 두 가지 기본 계산, 즉, 산술 계산 및 데이터 이동을 포함한다. 이러한 계산은 산술 계산하거나 또는 요구되는 데이터를 새로운 위치에 이동시키는(또는 복사하는) 프로세싱 알고리즘에 의해 수행된다. 그러한 알고리즘은 통상적으로 일련의 "IF" 명령문을 사용하는 프로세싱이며, 소정의 기준이 만족되면 하나의 계산이 수행되고, 만약 그렇지 않다면 계산이 수행되지 않거나 다른 계산이 수행된다. 많은 IF 명령문을 통과함으로써, 요구되는 총 계산이 각각의 데이터에서 수행된다. 그러나, 이러한 방법론에는 단점이 있다. 첫째, 그것은 시간 소모적이며, 병렬 프로세싱에 도움이 되지 않는다. 둘째로, 모든 IF 명령문에 대하여 계산이 수행되고, 다음 계산으로 이행되거나 또는 다른 계산이 수행되는 2개의 계산이 존재하기 때문에 그러한 방법은 낭비 적이다. 따라서, 각각의 방향에 대해서 알고리즘은 IF 명령문들을 통하여, 프로세서 기능의 최대 절반이 사용되지 않게 만든다. 셋째로, 각각의 유일한 데이터 집합에 대한 알고리즘의 치환(permutation) 각각을 구현하도록 유일한 코드가 개발되어야 한다.
해결책은 수많은 개별 계산에 대한 모든 계산 또는 데이터 이동을 포함하는 알고리즘의 구현이며, 이 알고리즘에서 모든 데이터는 알고리즘 내의 각 단계에서 처리되어 모든 다양한 데이터가 병렬로 프로세싱된다. 그 다음, 선택 코드는 알고리즘의 어떤 부분이 어떤 데이터에 적용될지 결정하는데 사용된다. 따라서, 같은 코드(알고리즘)가 일반적으로 모든 데이터에 적용되고, 단지 선택 코드만이 어떻게 각각의 계산이 수행될지 결정하기 위해서 각각의 데이터에 대하여 맞춤화될 필요가 있다. 여기에서의 잇점은 많은 프로세싱 단계들이 동일한 복수의 데이터가 프로세싱되면, 공통인 계산들과 비공통인 계산들 모두를 갖는 하나의 알고리즘 코드를 적용하는 것이 시스템을 간단히 만든다는 점이다. 이러한 기술을 유사한 알고리즘에 적용하기 위해서, 유사성은 명령들 그 자체를 주목함으로써 또는 세밀한 그레인(finer-grain) 표현으로 명령들을 제시하고 그 다음 유사성을 찾아봄으로써 발견될 수 있다.
도 11a 및 11b는 상기에 기술된 개념의 예시를 도시한다. 이러한 예시는 픽셀간의 중간 값(intermediate value)들을 발생하는데 사용되며 소정의 수치 계산들을 수행하는 바이-리니어 필터들을 포함한다(이러한 기술은 임의의 데이터 알고리즘에 사용될 수 있음). 다양한 값들을 계산하기 위한 알고리즘들은 수치 가산과 데 이터 이동 단계들의 동일한 기본 집합을 사용하지만, 이러한 단계들의 순서 및 번호 매김은 수행되는 계산에 기반하여 다르다. 따라서, 도 11a에서 1/2 및 3/4 바이-큐빅 식에 대한 첫 번째 계산은 7개의 수행할 계산 단계를 요구하는 숫자 53이다. 두 번째 계산은 6개의 계산 단계를 요구하고, 그 중 네 단계는 이전 계산에서의 네 단계와 동일 순서로 공통인 숫자 18이다. 첫 번째 식에 대한 마지막 두 계산들은 다시 처음 두 계산들과 중첩된 계산 단계들을 갖는다. 1/2 바이-큐빅 식뿐만 아니라 도 11b의 세 개의 바이-리니어 식들에 대한 부가적인 계산들은 모두가 같은 계산 단계들의 다양한 조합들을 포함하고, 모두 수행할 네 개의 계산들을 갖는다.
각각의 식에 대하여, 모든 네 개의 계산은 알고리즘의 각각의 단계에 관한 선택 코드와 함께 병렬 프로세서(30)를 사용하며 수행될 수 있으며, 병렬 프로세서는 도 12에 도시된 바와 같이, 각각이 자신의 메모리(34)를 갖는 네 개의 프로세싱 요소(32)를 구비한다. 각각의 단계와 연관되고 네 개의 변수 중 어떤 것이 그 단계에서 처리되는지를 나타내는 선택 코드가 존재한다. 예를 들어, 도 11a 및 도 11b의 계산에 도시된 아홉 개의 알고리즘 단계들이 존재한다. 도 11a의 첫 번째 식에 대하여, 첫 번째 단계는 그 단계와 관련한 "0011"의 선택 코드에 의해 지시되는 셋째 및 넷째 변수들에만 적용된다(여기서, 단계 및 변수에 대한 코드가 "1"이라면 그 단계는 특정 변수에 적용되고, 코드가 "0"이라면 적용되지 않음). 따라서, "0011"의 선택 코드는 그 단계가 셋째 및 넷째 변수들에만 적용되고, 첫째 및 둘째 변수에는 적용되지 않음을 나타낸다. 두 번째 단계는 선택 코드 "0100"에 의해 지시된 바와 같이 단지 둘째 변수에만 적용된다. 같은 방법론이 도시된 선택 코드를 사용하여 모든 식의 모든 단계와 변수에 적용된다.
선택 코드를 사용하는 것의 잇점은, 도 11a 및 도 11b에 도시된 20개의 다양한 계산들을 수행하는 20개의 알고리즘 코드들(또는 최소한 8개의 개별 산술 계산들을 수행하는 8개의 다른 알고리즘 코드들)을 발생시키고 그러한 각각의 알고리즘 코드를 4개 프로세싱 요소 각각에 로딩하는 대신에, 단지 하나의 단일 알고리즘 코드가 발생되고 로딩(분배된 메모리 형태들을 위해 다중 프로세싱 요소들에 로딩되거나, 모든 프로세싱 요소들 사이에 공유된 하나의 단일 메모리 위치로 로딩됨)되는 것이 요구된다는 점이다. 단지 선택 코드만이 요구되는 계산들을 실시하기 위해 발생되고 다양한 프로세싱 요소로 로딩되는 것이 요구되며, 이것은 매우 간단하다. 알고리즘 코드는, 단지 한번 선택적으로, 모든 변수들에 병렬로 적용되기 때문에, 병렬 프로세싱 속도 및 효율성이 증대된다.
도 11a 및 11b가 데이터 계산 적용을 위한 선택 코드들의 사용을 도시하지만, 어떤 알고리즘 단계들이 데이터에 적용되는지를 선택적으로 나타내기 위해 사용되는 선택 코드는 데이터를 이동시키는데 사용되는 알고리즘에 대해서도 동일하게 적용가능하다.
설명을 목적으로 한 선행 서술은 본 발명의 완전한 이해를 제공하기 위해 특정 명명(nomenclature)을 사용하였다. 그러나, 당업자에게 특정 상세가 본 발명을 실시하기 위해 요구되지 않는다는 것은 명백할 것이다. 따라서, 본 발명의 특정 실시 형태의 선행 서술은 도시 및 기술의 목적으로 제시된다. 그러한 서술은 개시된 상세한 형태들만을 포괄하거나, 본 발명을 제한시키도록 의도되지 않는다. 많은 변 경 및 수정이 상기 개시들의 관점에서 가능하다. 예를 들어, 본 발명은 임의의 이미지 포맷의 임의의 서브 분할들을 프로세싱하기 위해 채택될 수 있다. 즉, 본 발명은 임의 포맷의 이미지들, 예를 들어, 1080i HD 이미지, CIF 이미지, SIF 이미지 등을 병렬로 프로세싱할 수 있다. 또한 이러한 이미지들은 임의의 서브 분할들, 예를 들어, 이미지의 매크로블록 등으로 세분될 수 있다. 또한 임의의 이미지 데이터, 예를 들어, 강도 정보, 루마 정보, 크로마 정보 등은 그렇게 프로세싱될 수 있다. 실시 형태는 본 발명의 원리 및 그것의 실용적 어플리케이션을 가장 잘 설명하여, 당업자들이 고려되는 특정 사용에 적합한 다양한 변경들과 함께 본 발명 및 다양한 실시 형태를 사용할 수 있도록 선택되고 서술된다.
본 발명은 그러한 방식들을 실시하는 방법 및 장치의 형태로 구체화될 수 있다. 또한 본 발명은 플로피 디스켓, CD-ROM, 하드 드라이브, 펌웨어(firmware) 또는 임의의 다른 기계-판독가능 저장 매체와 같은 유형의 매체 내에 포함되는 프로그램 코드의 형태로 실시될 수 있으며, 그러한 매체에서 프로그램 코드가 컴퓨터와 같은 기계에 의해 로딩되고 실행되면, 그 기계는 본 발명을 실시하는 장치가 된다. 또한 본 발명은 예를 들어, 저장 매체에 저장되거나, 기계로 로딩되거나 및/또는 기계에 의해 실행되거나, 또는 전기적 와이어 또는 케이블을 통하거나 광섬유를 통하거나 또는 전자기적 방사를 통해 전송되는 프로그램 코드의 형태로 구체화될 수 있으며, 그러한 프로그램 코드가 컴퓨터와 같은 기계로 로딩되거나 기계에 의해 실행될 때 그 기계는 본 발명을 실시하는 장치가 된다. 범용 프로세서상에 실시될 때, 프로그램 코드 세그먼트 프로세서와 결합하여 특정 논리 회로와 유사하게 동작 하는 고유 디바이스를 제공한다.
본 발명에 의하면 데이터의 서브 블록들의 병렬 프로세싱을 위한 효율적인 방법 및 디바이스를 제공할 수 있다.
Claims (18)
- 이미지 데이터의 블록들을 처리하도록 구성된 계산 요소들(computing elements)을 갖는 병렬 프로세싱 배열에서의 방법으로서,이미지 데이터의 블록들을 발생하는 단계로서, 상기 이미지 데이터의 블록 각각은 서브 블록들로 분할되고, 서브 블록 각각의 제 1 데이터 지점(a first data point)이 상기 서브 블록의 선두 위치(begining position)를 플래깅(flag)하는 상기 이미지 데이터의 블록들을 발생하는 단계; 및상기 이미지 데이터 블록 각각에 대해 형태 데이터(type data)의 블록을 발생하는 단계로서, 상기 형태 데이터의 블록 각각은 상기 이미지 데이터의 블록 내 모든 서브 블록들에 대한 상기 제 1 데이터 지점을 포함하는, 상기 형태 데이터의 블록을 발생하는 단계를 포함하는 방법.
- 청구항 1에 있어서,병렬 프로세싱 계산 요소들의 배열을 사용하여 상기 이미지 데이터의 블록들을 프로세싱하는 단계를 추가로 포함하고,상기 배열은 상기 이미지 데이터의 블록들 내 서브 블록들의 위치 및 크기를 상기 형태 데이터의 블록들을 사용하여 식별하도록 구성되는 방법.
- 청구항 1에 있어서,상기 이미지 데이터의 블록들은 상기 이미지 데이터의 행들을 포함하고,상기 형태 데이터의 블록들은 형태 데이터의 행들을 포함하고, 상기 형태 데이터의 행 각각은 상기 이미지 데이터의 블록들의 상기 이미지 데이터 행들 중 한 행에 대응하고, 상기 이미지 데이터 행들은 상기 서브 블록들의 임의의 상기 제 1 데이터 지점들을 포함하는 방법.
- 청구항 1에 있어서,상기 이미지 데이터의 블록들은 상기 이미지 데이터의 행들을 포함하고,상기 이미지 데이터의 블록들 내 상기 이미지 데이터의 행들의 미리 결정된 부분 집합(subset)만이 상기 서브 블록들의 임의의 상기 제 1 데이터 지점들을 포함하고, 및상기 형태 데이터의 블록들은 형태 데이터의 행들을 포함하고, 상기 형태 데이터의 행 각각은 상기 이미지 데이터의 블록들 내의 상기 이미지 데이터의 행들의 상기 미리 결정된 부분 집합 중 한 행에 대응하는 방법.
- 청구항 4에 있어서,상기 이미지 데이터의 블록들 내의 상기 이미지 데이터의 미리 결정된 행들 및 상기 형태 데이터의 블록들 내의 상기 데이터의 행들은 같은 길이를 가지는 방법.
- 청구항 4에 있어서,상기 이미지 데이터의 블록 각각은 상기 이미지 데이터의 16개 행과 16개 열을 포함하고,상기 서브 블록 각각은 상기 이미지 데이터의 2개, 4개 또는 8개 행 및 2개, 4개 또는 8개 열을 포함하고, 및상기 형태 데이터의 블록 각각은 상기 형태 데이터의 4개 행 및 16개 열을 포함하는 방법.
- 청구항 6에 있어서,상기 형태 데이터는 상기 서브 블록들에 대한 상기 제 1 데이터 지점들에 부가하여 보조(supplemental) 데이터를 포함하는 방법.
- 청구항 7에 있어서,상기 보조 데이터는 상기 이미지 데이터가 국소적으로 예측되는지, 이전의 움직임 벡터로부터 예측되는지, 또는 두 방향으로 예측되는지를 나타내는 데이터를 포함하는 방법.
- 청구항 3에 있어서,상기 이미지 데이터의 블록 각각에 대하여,상기 형태 데이터의 블록들을 사용하여, 상기 이미지 데이터의 블록들 내의 상기 서브 블록들의 위치 및 크기를 식별하는 단계; 및병렬 프로세싱 계산 요소의 배열을 이용하여, 상기 이미지 데이터의 행들을 한 번에 한 행씩 프로세싱하는 단계를 추가로 포함하는 방법.
- 이미지의 데이터의 블록들을 처리하도록 구성된 계산 요소들을 가진 병렬 프로세싱 배열에서 프로세싱의 방법을 위해 컴퓨터 실행 가능한 명령들을 갖는 컴퓨터 판독 가능형 매체로서, 상기 방법은이미지 데이터의 블록들을 발생하는 단계로서, 상기 이미지 데이터의 블록 각각은 서브 블록들로 분할되고, 서브 블록 각각의 제 1 데이터 지점이 상기 서브 블록의 선두 위치를 플래깅하는 상기 이미지 데이터의 블록들을 발생하는 단계; 및상기 이미지 데이터 블록 각각에 대해 형태 데이터의 블록을 발생하는 단계로서, 상기 형태 데이터의 블록 각각은 상기 이미지 데이터의 블록 내 모든 서브 블록들에 대한 상기 제 1 데이터 지점을 포함하는, 상기 형태 데이터의 블록을 발생하는 단계를 포함하는 컴퓨터 판독 가능형 매체.
- 청구항 10에 있어서,병렬 프로세싱 계산 요소들의 배열을 사용하여 상기 이미지 데이터의 블록들을 프로세싱하는 단계를 추가로 포함하고,상기 배열은 상기 이미지 데이터의 블록들 내 서브 블록들의 위치 및 크기를 상기 형태 데이터의 블록들을 사용하여 식별하도록 구성되는 컴퓨터 판독 가능형 매체.
- 청구항 10에 있어서,상기 이미지 데이터의 블록들은 상기 이미지 데이터의 행들을 포함하고,상기 형태 데이터의 블록들은 형태 데이터의 행들을 포함하고, 상기 형태 데이터의 행 각각은 상기 이미지 데이터의 블록들의 상기 이미지 데이터 행들 중 한 행에 대응하고, 상기 이미지 데이터 행들은 상기 서브 블록들의 임의의 상기 제 1 데이터 지점들을 포함하는 컴퓨터 판독 가능형 매체.
- 청구항 10에 있어서,상기 이미지 데이터의 블록들은 상기 이미지 데이터의 행들을 포함하고,상기 이미지 데이터의 블록들 내 상기 이미지 데이터의 행들의 미리 결정된 부분 집합만이 상기 서브 블록들의 임의의 상기 제 1 데이터 지점들을 포함하고, 및상기 형태 데이터의 블록들은 형태 데이터의 행들을 포함하고, 상기 형태 데이터의 행 각각은 상기 이미지 데이터의 블록들 내의 상기 이미지 데이터의 행들의 상기 미리 결정된 부분 집합 중 한 행에 대응하는 컴퓨터 판독 가능형 매체.
- 청구항 13에 있어서,상기 이미지 데이터의 블록들 내의 상기 이미지 데이터의 미리 결정된 행들 및 상기 형태 데이터의 블록들 내의 상기 데이터의 행들은 같은 길이를 가지는 컴퓨터 판독 가능형 매체.
- 청구항 13에 있어서,상기 이미지 데이터의 블록 각각은 상기 이미지 데이터의 16개 행과 16개 열을 포함하고,상기 서브 블록 각각은 상기 이미지 데이터의 2개, 4개 또는 8개 행 및 2개, 4개 또는 8개 열을 포함하고, 및상기 형태 데이터의 블록 각각은 상기 형태 데이터의 4개 행 및 16개 열을 포함하는 컴퓨터 판독 가능형 매체.
- 청구항 15에 있어서,상기 형태 데이터는 상기 서브 블록들에 대한 상기 제 1 데이터 지점들에 부가하여 보조 데이터를 포함하는 컴퓨터 판독 가능형 매체.
- 청구항 16에 있어서,상기 보조 데이터는 상기 이미지 데이터가 국소적으로 예측되는지, 이전의 움직임 벡터로부터 예측되는지, 또는 두 방향으로 예측되는지를 나타내는 데이터를 포함하는 컴퓨터 판독 가능형 매체.
- 청구항 12에 있어서,상기 이미지 데이터의 블록 각각에 대하여,상기 형태 데이터의 블록들을 사용하여, 상기 이미지 데이터의 블록들 내의 상기 서브 블록들의 위치 및 크기를 식별하는 단계; 및병렬 프로세싱 계산 요소의 배열을 이용하여, 상기 이미지 데이터의 행들을 한 번에 한 행씩 프로세싱하는 단계를 추가로 포함하는 컴퓨터 판독 가능형 매체.
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US75806506P | 2006-01-10 | 2006-01-10 | |
US60/758,065 | 2006-01-10 |
Publications (1)
Publication Number | Publication Date |
---|---|
KR20080094005A true KR20080094005A (ko) | 2008-10-22 |
Family
ID=38257031
Family Applications (3)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020087018364A KR20080094005A (ko) | 2006-01-10 | 2007-01-10 | 병렬 프로세싱 시스템에서 멀티미디어 데이터의 서브블록들을 프로세싱하기 위한 방법 및 장치 |
KR1020087018366A KR20080094006A (ko) | 2006-01-10 | 2007-01-10 | 병렬 프로세싱 시스템에서 멀티미디어 데이터의 프로세싱을예정하기 위한 방법 및 장치 |
KR1020087018365A KR20080085189A (ko) | 2006-01-10 | 2007-01-10 | 병렬 프로세싱 시스템에서 멀티미디어 데이터의 알고리즘단계들을 프로세싱하기 위한 방법 및 장치 |
Family Applications After (2)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020087018366A KR20080094006A (ko) | 2006-01-10 | 2007-01-10 | 병렬 프로세싱 시스템에서 멀티미디어 데이터의 프로세싱을예정하기 위한 방법 및 장치 |
KR1020087018365A KR20080085189A (ko) | 2006-01-10 | 2007-01-10 | 병렬 프로세싱 시스템에서 멀티미디어 데이터의 알고리즘단계들을 프로세싱하기 위한 방법 및 장치 |
Country Status (7)
Country | Link |
---|---|
US (4) | US20070162722A1 (ko) |
EP (3) | EP1971958A2 (ko) |
JP (3) | JP2009523291A (ko) |
KR (3) | KR20080094005A (ko) |
CN (3) | CN101371264A (ko) |
TW (3) | TW200737983A (ko) |
WO (3) | WO2007082044A2 (ko) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR20110134626A (ko) * | 2010-06-09 | 2011-12-15 | 삼성전자주식회사 | 매크로블록의 연관관계를 고려하여 영상 데이터의 부호화 및 복호화를 병렬 처리하는 장치 및 방법 |
Families Citing this family (31)
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 |
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 |
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 |
US8773422B1 (en) | 2007-12-04 | 2014-07-08 | Nvidia Corporation | System, method, and computer program product for grouping linearly ordered primitives |
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 |
CN101803388B (zh) | 2008-05-23 | 2012-11-21 | 松下电器产业株式会社 | 图像解码装置、图像解码方法、图像编码装置、以及图像编码方法 |
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 |
US8737476B2 (en) * | 2008-11-10 | 2014-05-27 | Panasonic Corporation | Image decoding device, image decoding method, integrated circuit, and program for performing parallel decoding of coded image data |
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 |
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 |
CN109041246B (zh) | 2015-02-10 | 2020-01-17 | 华为技术有限公司 | 一种基站、用户终端及载波调度指示方法 |
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 |
EP0309669B1 (de) * | 1987-09-30 | 1992-12-30 | Siemens Aktiengesellschaft | Verfahren zur szenenmodellgestützten Bilddatenreduktion für digitale Fernsehsignale |
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 | Ibm | 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 |
WO2000062182A2 (en) * | 1999-04-09 | 2000-10-19 | Clearspeed Technology Limited | Parallel data processing apparatus |
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 |
ATE310358T1 (de) * | 1999-07-30 | 2005-12-15 | Indinell Sa | 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 |
WO2002065259A1 (en) * | 2001-02-14 | 2002-08-22 | Clearspeed Technology 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 | 誤り訂正多重化装置、誤り訂正多重分離装置、これらを用いた光伝送システムおよび誤り訂正多重化伝送方法 |
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 |
EP1602240A2 (en) * | 2003-03-03 | 2005-12-07 | Mobilygen Corporation | Array arrangement for memory words and combination of video prediction data for an effective memory access |
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 |
EP1624704B1 (en) * | 2004-07-29 | 2010-03-31 | STMicroelectronics Pvt. Ltd | Video decoder with parallel processors for decoding macro-blocks |
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 |
MX2007011084A (es) * | 2005-03-10 | 2007-11-15 | Qualcomm Inc | Clasificacion de contenido para procesamiento multimedia. |
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 | 光明测量公司 | 用于在并行处理***中处理多媒体数据的子块的方法和装置 |
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 |
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 EP EP07716563A patent/EP1971958A2/en not_active Withdrawn
- 2007-01-10 CN CNA200780002223XA patent/CN101371262A/zh active Pending
- 2007-01-10 US US11/652,588 patent/US20070162722A1/en not_active Abandoned
- 2007-01-10 US US11/652,587 patent/US20070189618A1/en not_active Abandoned
- 2007-01-10 EP EP07716561A patent/EP1971959A2/en not_active Withdrawn
- 2007-01-10 KR KR1020087018364A patent/KR20080094005A/ko not_active Application Discontinuation
- 2007-01-10 TW TW096101018A patent/TW200737983A/zh unknown
- 2007-01-10 KR KR1020087018366A patent/KR20080094006A/ko not_active Application Discontinuation
- 2007-01-10 JP JP2008550413A patent/JP2009523291A/ja not_active Abandoned
- 2007-01-10 WO PCT/US2007/000773 patent/WO2007082044A2/en active Application Filing
- 2007-01-10 JP JP2008550415A patent/JP2009523293A/ja not_active Abandoned
- 2007-01-10 WO PCT/US2007/000772 patent/WO2007082043A2/en active Application Filing
- 2007-01-10 US US11/652,584 patent/US20070188505A1/en not_active Abandoned
- 2007-01-10 WO PCT/US2007/000771 patent/WO2007082042A2/en active Application Filing
- 2007-01-10 TW TW096101017A patent/TW200803464A/zh unknown
- 2007-01-10 JP JP2008550414A patent/JP2009523292A/ja not_active Abandoned
- 2007-01-10 CN CNA2007800022437A patent/CN101371263A/zh active Pending
- 2007-01-10 TW TW096101019A patent/TW200806039A/zh unknown
- 2007-01-10 KR KR1020087018365A patent/KR20080085189A/ko not_active Application Discontinuation
- 2007-01-10 EP EP07716562A patent/EP1971956A2/en not_active Withdrawn
-
2009
- 2009-07-10 US US12/501,317 patent/US20100066748A1/en not_active Abandoned
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR20110134626A (ko) * | 2010-06-09 | 2011-12-15 | 삼성전자주식회사 | 매크로블록의 연관관계를 고려하여 영상 데이터의 부호화 및 복호화를 병렬 처리하는 장치 및 방법 |
Also Published As
Publication number | Publication date |
---|---|
EP1971958A2 (en) | 2008-09-24 |
KR20080094006A (ko) | 2008-10-22 |
US20070188505A1 (en) | 2007-08-16 |
CN101371264A (zh) | 2009-02-18 |
JP2009523293A (ja) | 2009-06-18 |
CN101371263A (zh) | 2009-02-18 |
TW200737983A (en) | 2007-10-01 |
WO2007082044A3 (en) | 2008-04-17 |
EP1971956A2 (en) | 2008-09-24 |
US20070189618A1 (en) | 2007-08-16 |
JP2009523292A (ja) | 2009-06-18 |
CN101371262A (zh) | 2009-02-18 |
TW200806039A (en) | 2008-01-16 |
KR20080085189A (ko) | 2008-09-23 |
JP2009523291A (ja) | 2009-06-18 |
WO2007082043A2 (en) | 2007-07-19 |
TW200803464A (en) | 2008-01-01 |
WO2007082043A3 (en) | 2008-04-17 |
US20100066748A1 (en) | 2010-03-18 |
WO2007082042A3 (en) | 2008-04-17 |
US20070162722A1 (en) | 2007-07-12 |
EP1971959A2 (en) | 2008-09-24 |
WO2007082044A2 (en) | 2007-07-19 |
WO2007082042A2 (en) | 2007-07-19 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
KR20080094005A (ko) | 병렬 프로세싱 시스템에서 멀티미디어 데이터의 서브블록들을 프로세싱하기 위한 방법 및 장치 | |
US8666192B2 (en) | Apparatus and method for ultra-high resolution video processing | |
JP4744510B2 (ja) | データ値の多次元アレイへのパラレルなアクセスを提供するデータ処理装置 | |
KR101401336B1 (ko) | 화상처리장치 및 화상처리방법 | |
US8331703B2 (en) | Parallel image encoding | |
US10200716B2 (en) | Parallel intra-prediction encoding/decoding process utilizing PIPCM and/or PIDC for selected sections | |
CN110073331A (zh) | 复制元素指令 | |
JP2007535267A (ja) | 画像処理装置及び方法 | |
JP6187826B2 (ja) | 動画像符号化装置及び動画像符号化方法 | |
US10140681B2 (en) | Caching method of graphic processing unit | |
US7756207B2 (en) | Method for pre-processing block based digital data | |
KR101395143B1 (ko) | 영상처리의 정수변환 방법 및 정수변환 장치 | |
US9158737B2 (en) | SIMD processor and control processor, and processing element with address calculating unit | |
CN114079769A (zh) | 视频编码方法、装置、设备及计算机可读存储介质 | |
JP5968497B2 (ja) | 制御方法、システム及びプログラム | |
EP3777168B1 (en) | Accelerating video encoding and decoding | |
KR100808087B1 (ko) | 스트리밍 최대 휘소 투영 볼륨 렌더링 방법 | |
TWI407797B (zh) | 幀內預測方法及其裝置 | |
KR102366519B1 (ko) | 범용 그래픽 프로세서에서의 모션 보상의 병렬화 방법 및 장치 | |
Chen et al. | Accelerating adaptive directional lifting based wavelet decomposition on GPU using CUDA | |
CN108063948A (zh) | 配合多个处理器的影像处理装置及影像处理方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A201 | Request for examination | ||
E902 | Notification of reason for refusal | ||
E601 | Decision to refuse application |