KR20080094005A - 병렬 프로세싱 시스템에서 멀티미디어 데이터의 서브블록들을 프로세싱하기 위한 방법 및 장치 - Google Patents

병렬 프로세싱 시스템에서 멀티미디어 데이터의 서브블록들을 프로세싱하기 위한 방법 및 장치 Download PDF

Info

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
Application number
KR1020087018364A
Other languages
English (en)
Inventor
라자르 비보랄스키
보그단 미투
Original Assignee
브라이트스케일, 인크.
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 브라이트스케일, 인크. filed Critical 브라이트스케일, 인크.
Publication of KR20080094005A publication Critical patent/KR20080094005A/ko

Links

Images

Classifications

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

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Physics & Mathematics (AREA)
  • 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

병렬 프로세싱 시스템에서 멀티미디어 데이터의 서브 블록들을 프로세싱하기 위한 방법 및 장치{METHOD AND APPARATUS FOR PROCESSING SUB-BLOCKS OF MULTIMEDIA DATA IN PARALLEL PROCESSING SYSTEMS}
본 출원은 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)

  1. 이미지 데이터의 블록들을 처리하도록 구성된 계산 요소들(computing elements)을 갖는 병렬 프로세싱 배열에서의 방법으로서,
    이미지 데이터의 블록들을 발생하는 단계로서, 상기 이미지 데이터의 블록 각각은 서브 블록들로 분할되고, 서브 블록 각각의 제 1 데이터 지점(a first data point)이 상기 서브 블록의 선두 위치(begining position)를 플래깅(flag)하는 상기 이미지 데이터의 블록들을 발생하는 단계; 및
    상기 이미지 데이터 블록 각각에 대해 형태 데이터(type data)의 블록을 발생하는 단계로서, 상기 형태 데이터의 블록 각각은 상기 이미지 데이터의 블록 내 모든 서브 블록들에 대한 상기 제 1 데이터 지점을 포함하는, 상기 형태 데이터의 블록을 발생하는 단계를 포함하는 방법.
  2. 청구항 1에 있어서,
    병렬 프로세싱 계산 요소들의 배열을 사용하여 상기 이미지 데이터의 블록들을 프로세싱하는 단계를 추가로 포함하고,
    상기 배열은 상기 이미지 데이터의 블록들 내 서브 블록들의 위치 및 크기를 상기 형태 데이터의 블록들을 사용하여 식별하도록 구성되는 방법.
  3. 청구항 1에 있어서,
    상기 이미지 데이터의 블록들은 상기 이미지 데이터의 행들을 포함하고,
    상기 형태 데이터의 블록들은 형태 데이터의 행들을 포함하고, 상기 형태 데이터의 행 각각은 상기 이미지 데이터의 블록들의 상기 이미지 데이터 행들 중 한 행에 대응하고, 상기 이미지 데이터 행들은 상기 서브 블록들의 임의의 상기 제 1 데이터 지점들을 포함하는 방법.
  4. 청구항 1에 있어서,
    상기 이미지 데이터의 블록들은 상기 이미지 데이터의 행들을 포함하고,
    상기 이미지 데이터의 블록들 내 상기 이미지 데이터의 행들의 미리 결정된 부분 집합(subset)만이 상기 서브 블록들의 임의의 상기 제 1 데이터 지점들을 포함하고, 및
    상기 형태 데이터의 블록들은 형태 데이터의 행들을 포함하고, 상기 형태 데이터의 행 각각은 상기 이미지 데이터의 블록들 내의 상기 이미지 데이터의 행들의 상기 미리 결정된 부분 집합 중 한 행에 대응하는 방법.
  5. 청구항 4에 있어서,
    상기 이미지 데이터의 블록들 내의 상기 이미지 데이터의 미리 결정된 행들 및 상기 형태 데이터의 블록들 내의 상기 데이터의 행들은 같은 길이를 가지는 방법.
  6. 청구항 4에 있어서,
    상기 이미지 데이터의 블록 각각은 상기 이미지 데이터의 16개 행과 16개 열을 포함하고,
    상기 서브 블록 각각은 상기 이미지 데이터의 2개, 4개 또는 8개 행 및 2개, 4개 또는 8개 열을 포함하고, 및
    상기 형태 데이터의 블록 각각은 상기 형태 데이터의 4개 행 및 16개 열을 포함하는 방법.
  7. 청구항 6에 있어서,
    상기 형태 데이터는 상기 서브 블록들에 대한 상기 제 1 데이터 지점들에 부가하여 보조(supplemental) 데이터를 포함하는 방법.
  8. 청구항 7에 있어서,
    상기 보조 데이터는 상기 이미지 데이터가 국소적으로 예측되는지, 이전의 움직임 벡터로부터 예측되는지, 또는 두 방향으로 예측되는지를 나타내는 데이터를 포함하는 방법.
  9. 청구항 3에 있어서,
    상기 이미지 데이터의 블록 각각에 대하여,
    상기 형태 데이터의 블록들을 사용하여, 상기 이미지 데이터의 블록들 내의 상기 서브 블록들의 위치 및 크기를 식별하는 단계; 및
    병렬 프로세싱 계산 요소의 배열을 이용하여, 상기 이미지 데이터의 행들을 한 번에 한 행씩 프로세싱하는 단계를 추가로 포함하는 방법.
  10. 이미지의 데이터의 블록들을 처리하도록 구성된 계산 요소들을 가진 병렬 프로세싱 배열에서 프로세싱의 방법을 위해 컴퓨터 실행 가능한 명령들을 갖는 컴퓨터 판독 가능형 매체로서, 상기 방법은
    이미지 데이터의 블록들을 발생하는 단계로서, 상기 이미지 데이터의 블록 각각은 서브 블록들로 분할되고, 서브 블록 각각의 제 1 데이터 지점이 상기 서브 블록의 선두 위치를 플래깅하는 상기 이미지 데이터의 블록들을 발생하는 단계; 및
    상기 이미지 데이터 블록 각각에 대해 형태 데이터의 블록을 발생하는 단계로서, 상기 형태 데이터의 블록 각각은 상기 이미지 데이터의 블록 내 모든 서브 블록들에 대한 상기 제 1 데이터 지점을 포함하는, 상기 형태 데이터의 블록을 발생하는 단계를 포함하는 컴퓨터 판독 가능형 매체.
  11. 청구항 10에 있어서,
    병렬 프로세싱 계산 요소들의 배열을 사용하여 상기 이미지 데이터의 블록들을 프로세싱하는 단계를 추가로 포함하고,
    상기 배열은 상기 이미지 데이터의 블록들 내 서브 블록들의 위치 및 크기를 상기 형태 데이터의 블록들을 사용하여 식별하도록 구성되는 컴퓨터 판독 가능형 매체.
  12. 청구항 10에 있어서,
    상기 이미지 데이터의 블록들은 상기 이미지 데이터의 행들을 포함하고,
    상기 형태 데이터의 블록들은 형태 데이터의 행들을 포함하고, 상기 형태 데이터의 행 각각은 상기 이미지 데이터의 블록들의 상기 이미지 데이터 행들 중 한 행에 대응하고, 상기 이미지 데이터 행들은 상기 서브 블록들의 임의의 상기 제 1 데이터 지점들을 포함하는 컴퓨터 판독 가능형 매체.
  13. 청구항 10에 있어서,
    상기 이미지 데이터의 블록들은 상기 이미지 데이터의 행들을 포함하고,
    상기 이미지 데이터의 블록들 내 상기 이미지 데이터의 행들의 미리 결정된 부분 집합만이 상기 서브 블록들의 임의의 상기 제 1 데이터 지점들을 포함하고, 및
    상기 형태 데이터의 블록들은 형태 데이터의 행들을 포함하고, 상기 형태 데이터의 행 각각은 상기 이미지 데이터의 블록들 내의 상기 이미지 데이터의 행들의 상기 미리 결정된 부분 집합 중 한 행에 대응하는 컴퓨터 판독 가능형 매체.
  14. 청구항 13에 있어서,
    상기 이미지 데이터의 블록들 내의 상기 이미지 데이터의 미리 결정된 행들 및 상기 형태 데이터의 블록들 내의 상기 데이터의 행들은 같은 길이를 가지는 컴퓨터 판독 가능형 매체.
  15. 청구항 13에 있어서,
    상기 이미지 데이터의 블록 각각은 상기 이미지 데이터의 16개 행과 16개 열을 포함하고,
    상기 서브 블록 각각은 상기 이미지 데이터의 2개, 4개 또는 8개 행 및 2개, 4개 또는 8개 열을 포함하고, 및
    상기 형태 데이터의 블록 각각은 상기 형태 데이터의 4개 행 및 16개 열을 포함하는 컴퓨터 판독 가능형 매체.
  16. 청구항 15에 있어서,
    상기 형태 데이터는 상기 서브 블록들에 대한 상기 제 1 데이터 지점들에 부가하여 보조 데이터를 포함하는 컴퓨터 판독 가능형 매체.
  17. 청구항 16에 있어서,
    상기 보조 데이터는 상기 이미지 데이터가 국소적으로 예측되는지, 이전의 움직임 벡터로부터 예측되는지, 또는 두 방향으로 예측되는지를 나타내는 데이터를 포함하는 컴퓨터 판독 가능형 매체.
  18. 청구항 12에 있어서,
    상기 이미지 데이터의 블록 각각에 대하여,
    상기 형태 데이터의 블록들을 사용하여, 상기 이미지 데이터의 블록들 내의 상기 서브 블록들의 위치 및 크기를 식별하는 단계; 및
    병렬 프로세싱 계산 요소의 배열을 이용하여, 상기 이미지 데이터의 행들을 한 번에 한 행씩 프로세싱하는 단계를 추가로 포함하는 컴퓨터 판독 가능형 매체.
KR1020087018364A 2006-01-10 2007-01-10 병렬 프로세싱 시스템에서 멀티미디어 데이터의 서브블록들을 프로세싱하기 위한 방법 및 장치 KR20080094005A (ko)

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)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20110134626A (ko) * 2010-06-09 2011-12-15 삼성전자주식회사 매크로블록의 연관관계를 고려하여 영상 데이터의 부호화 및 복호화를 병렬 처리하는 장치 및 방법

Families Citing this family (31)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7383421B2 (en) * 2002-12-05 2008-06-03 Brightscale, Inc. Cellular engine for a data processing system
US7451293B2 (en) * 2005-10-21 2008-11-11 Brightscale Inc. Array of Boolean logic controlled processing elements with concurrent I/O processing and instruction sequencing
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)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US3308436A (en) * 1963-08-05 1967-03-07 Westinghouse Electric Corp Parallel computer system control
US4212076A (en) * 1976-09-24 1980-07-08 Giddings & Lewis, Inc. Digital computer structure providing arithmetic and boolean logic operations, the latter controlling the former
US4575818A (en) * 1983-06-07 1986-03-11 Tektronix, Inc. Apparatus for in effect extending the width of an associative memory by serial matching of portions of the search pattern
JPS6224366A (ja) * 1985-07-03 1987-02-02 Hitachi Ltd ベクトル処理装置
US4907148A (en) * 1985-11-13 1990-03-06 Alcatel U.S.A. Corp. Cellular array processor with individual cell-level data-dependent cell control and multiport input memory
US4783738A (en) * 1986-03-13 1988-11-08 International Business Machines Corporation Adaptive instruction processing by array processor having processor identification and data dependent status registers in each processing element
GB2211638A (en) * 1987-10-27 1989-07-05 Ibm Simd array processor
US4873626A (en) * 1986-12-17 1989-10-10 Massachusetts Institute Of Technology Parallel processing system with processor array having memory system included in system memory
US5122984A (en) * 1987-01-07 1992-06-16 Bernard Strehler Parallel associative memory system
US4943909A (en) * 1987-07-08 1990-07-24 At&T Bell Laboratories Computational origami
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

Cited By (1)

* Cited by examiner, † Cited by third party
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