KR20090012269A - 차이 절대값들의 2개의 독립적인 합산값들을 생성하기 위한명령 - Google Patents

차이 절대값들의 2개의 독립적인 합산값들을 생성하기 위한명령 Download PDF

Info

Publication number
KR20090012269A
KR20090012269A KR1020087030050A KR20087030050A KR20090012269A KR 20090012269 A KR20090012269 A KR 20090012269A KR 1020087030050 A KR1020087030050 A KR 1020087030050A KR 20087030050 A KR20087030050 A KR 20087030050A KR 20090012269 A KR20090012269 A KR 20090012269A
Authority
KR
South Korea
Prior art keywords
source
sad
section
register
values
Prior art date
Application number
KR1020087030050A
Other languages
English (en)
Other versions
KR100996337B1 (ko
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 KR20090012269A publication Critical patent/KR20090012269A/ko
Application granted granted Critical
Publication of KR100996337B1 publication Critical patent/KR100996337B1/ko

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N7/00Television systems
    • H04N7/12Systems in which the television signal is transmitted via one channel or a plurality of parallel channels, the bandwidth of each channel being less than the bandwidth of the television signal
    • 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/43Hardware specially adapted for motion estimation or compensation

Landscapes

  • Engineering & Computer Science (AREA)
  • Multimedia (AREA)
  • Signal Processing (AREA)
  • Image Processing (AREA)
  • Advance Control (AREA)
  • Executing Machine-Instructions (AREA)
  • Complex Calculations (AREA)

Abstract

본 발명은 단일 SAD 명령(505, 705)을 수신할 때 2개의 독립적인 차이 절대값의 합(SAD) 연산들을 수행하기 위한 방법 및 장치에 관한 것이다. 2개의 독립적인 SAD 연산들은 병렬로 수행된다. 상기 연산들은 2개의 소스 레지스터들(405, 410) 내에 저장된 값들을 처리하며, 그 결과값들이 목적지 레지스터로 저장된다. 소스 및 목적지 레지스터들은 각각 2개의 독립적으로 액세스 가능한 섹션들을 포함하며, 따라서 제 1 SAD 연산(401)이 제 1 섹션에 액세스할 수 있는 동시에(병렬로) 제 2의 독립적인 SAD 연산(402)이 레지스터의 제 2 섹션에 액세스할 수 있다. 제2 SAD 동작은 소스 레지스터들의 제 1 섹션 내의 값들에 수행되며, 결과값은 목적지 레지스터의 제 1 섹션에 저장된다. 제 2 SAD 연산은 소스 레지스터들의 제 2 섹션 내의 값들에 수행되며, 결과값은 목적지 레지스터의 제 2 섹션에 저장된다. 상기 값들은 픽셀값들을 포함할 수 있다.

Description

차이 절대값들의 2개의 독립적인 합산값들을 생성하기 위한 명령{INSTRUCTION FOR PRODUCING TWO INDEPENDENT SUMS OF ABSOLUTE DIFFERENCES}
본 발명은 일반적으로 차이 절대값들의 2개의 독립적인 합산값들을 생성하기 위한 명령에 관한 것이다.
현재, 움직임 추정은 비디오 정보를 인코딩/압축하기 위해 광범위하게 사용되는 방법이다. 블럭-기반의 움직임 추정에서, 각각의 비디오 프레임은 16x16, 8x8, 또는 4x4 픽셀들과 같은 블럭들(픽셀 어레이들)로 분할된다. 도 1은 움직임 추정 방법의 개념도이다. 도 1에 도시된 것과 같이, 현재 프레임(105)의 현재 블럭(110)에 대하여, 참조 프레임(115, 예컨대 현재 프레임 이전 또는 이후 프레임)의 탐색 영역(120) 내에서 최적 매칭되는(픽셀값들과 관련하여) 블럭에 대한 탐색이 수행된다. 참조 프레임(115) 내에서 최적 매칭 블럭(125)이 획득되면, 움직임 벡터(130; 현재 블럭(110)과 관련하여 최적 매칭 블럭(125)의 변위(displacement)를 표시함) 및 현재 블럭(110)과의 픽셀값 차이들은 현재 블럭을 인코딩하기 위해 사용된다. 상기 프로세스는 현재 프레임의 각각의 블럭에 대하여 반복된다.
참조 프레임 내에서 현재 블럭과 최적 매칭되는 블럭을 결정하기 위한 기술은 일반적으로 차이 절대값들의 합(SAD) 연산들을 사용하여 결정되는 기준(평균 절 대 오차(MAE) 또는 평균 절대 차이(MAD) 기준과 같은)을 사용한다. 상기 기술들에서, 현재 블럭과 기준 영역의 탐색 영역 내의 각각의 블럭 사이의 픽셀값들의 차이 절대값들의 합이 계산된다. 픽셀값들 Ai을 가지는 현재 블럭 및 픽셀값들 Bi을 가지는 참조 블럭에 수행되는 SAD 연산은 하기의 식에 의해 표시될 수 있다:
Figure 112008084726694-PCT00001
SAD 연산은 탐색 영역 내의 각각의 참조 블럭에 대하여 수행되며, 최저 SAD값(C)을 가지는 참조 블럭이 최적 매칭 블럭으로 선택된다. 그러나, 움직임 추정에 필요한 다수의 SAD 연산들은 계산 집약적이고 다량의 처리 시간 및 자원들을 소비할 수 있다. 상기와 같이, SAD 연산들을 수행하기 위한 효율적인 방식이 필요하다.
개시된 일부 양상들은 단일 SAD 명령을 수신할 때 2개의 독립적인 SAD 연산들을 수행하기 위한 방법 및 장치를 제공한다. 몇몇 실시예들에서, 2개의 독립적인 SAD 연산들은 병렬로 수행된다. SAD 연산들은 2개의 소스 레지스터들 내에 저장된 소스 값들에 작용하며, 상기 연산의 2개의 합산 결과값들이 목적지 레지스터로 로딩된다. 몇몇 실시예들에서, 소스 및 목적지 레지스터들은 각각 한 쌍의 정렬된 레지스터들을 포함하는데, 상기 쌍 내의 제 1 레지스터는 상기 소스 또는 목적지 레지스터의 제 1 섹션이라 지칭되고, 상기 쌍 내의 제 2 레지스터는 상기 소스 또는 목적지 레지스터의 제 2 섹션이라 지칭된다. 몇몇 실시예들에서, 한 쌍의 정렬된 레지스터들의 각각의 섹션(레지스터)는 독립적으로 액세스 가능하며, 따라서 제 1 SAD 연산이 소스 또는 목적지 레지스터의 제 1 섹션(레지스터)에 액세스 할 수 있는 동시에(병렬로) 제 2의 독립적인 SAD 연산이 소스 또는 목적지 레지스터의 제 2 섹션에 액세스할 수 있다.
제 1 SAD 연산은 제 1 소스 레지스터의 제 1 섹션 내에 저장된 제 1 세트의 값들 및 제 2 소스 레지스터의 제 1 섹션 내에 저장된 제 2 세트의 값들에 수행된다. 그 후에 제 1 SAD 연산의 결과값은 목적지 레지스터의 제 1 섹션에 저장된다. 제 2 SAD 연산은 제 1 소스 레지스터의 제 2 섹션 내에 저장된 제 3 세트의 값들 및 제 2 소스 레지스터의 제 2 섹션 내에 저장된 제 4 세트의 값들에 수행된다. 그 후에 제 2 SAD 연산의 결과값은 목적지 레지스터의 제 2 섹션에 저장된다.
일부 실시예들에서, 2개의 독립적인 SAD 연산들에 의해 처리된 값들은 비디오 프레임의 블럭들의 픽셀값들이다. 일부 실시예들에서, 2개의 독립적인 SAD 연산들은 비디오 압축 및 움직임 추정을 위해 사용된다.
도 1은 움직임 추정 방법의 개념도이다.
도 2는 현재 블럭 및 참조 블럭에 수행되는 SAD 연산의 개념도를 도시한다.
도 3은 병렬 블럭 처리의 개념도를 도시한다.
도 4는 2개의 독립적인 SAD 연산들이 병렬로 수행되는 컴퓨터 구조의 개념도를 도시한다.
도 5는 도 4에 도시된 컴퓨터 구조 내에서 2개의 독립적인 SAD 결과들을 생 성하는 단일 SAD 명령의 명령 구문(syntax)을 도시한다.
도 6은 2개의 독립적인 SAD 연산들이 병렬로 수행되는 선택적인 컴퓨터 그루의 개념도를 도시한다.
도 7은 도 6에 도시된 선택적인 컴퓨터 구조 내에서 2개의 독립적인 SAD 결과들을 생성하는 단일 SAD 명령의 명령 구문을 도시한다.
도 8은 하드웨어 내에서 SAD 명령을 구현하기 위해 사용될 수 있는 컴파일러 인트린식들(intrinsics) 및 인코딩을 도시하는 테이블이다.
도 9는 2개의 소스 레지스터들 및 목적지 레지스터를 사용하여 2개의 독립적인 SAD 연산들을 수행하기 위한 방법의 흐름도이다.
도 10은 몇몇 실시예들에서 사용되는 범용 컴퓨터 구조의 개념도를 도시한다.
용어 "예시적인"은 본 명세서에서 "일 예, 경우 또는 설명으로서 제공되는"을 의미하도록 사용된다. 본 명세서에서 "예시적인" 것으로 설명된 임의의 실시예는 다른 실시예들에 비해 바람직하거나 유리한 것으로 간주될 필요는 없다.
도 2는 현재 프레임의 현지 블럭(205)과 기준 프레임의 기준 블럭(210)에 수행되는 SAD 연산의 개념도를 도시한다. 도 2의 예에서, 프레임의 블럭은 4x4 픽셀 어레이를 포함하며, 각각의 픽셀은 1 바이트 픽셀값을 포함한다. 다른 실시예들에서, 블럭은 서로 다른 크기의 픽셀 어레이를 포함하며, 각각의 픽셀은 서로 다른 크기의 픽셀값을 포함한다.
도 2에 도시된 것과 같이, 현재 블럭(205)은 다수의 픽셀들 A0-A15을 포함하고, 참조 블럭들(210)은 다수의 픽셀들 B0-B15을 포함한다. 현재 및 참조 블럭들에서 수행되는 SAD 연산은 먼저 현재 및 참조 블럭들(205, 210)의 상응하는 픽셀들의 픽셀값들 간의 차이값(즉, A0-B0, A1-B1, A2-B2, ... A15-B15)을 결정한다. SAD 연산은 그 후에 현재 및 참조 블럭들(205, 210)의 상응하는 픽셀들의 픽셀값들 간의 차이 절대값들을 포함하는 차이 절대값들의 세트(즉, |A0-B0|,|A1-B1|,|A2-B2|,...|A15-B15|)를 결정한다. 결국, SAD 연산은 차이 절대값들의 세트의 합산값(즉, |A0-B0|+|A1-B1|+|A2-B2|...+|A15-B15|)을 결정한다.
본 명세서에서 사용되는 것과 같이, SAD 연산은 적어도 2개의 값들(예컨대, 픽셀값들 A0 및 A1)을 포함하는 제 1 세트 및 적어도 2개의 값들(예컨대, 픽셀값들 B0 및 B1)을 포함하는 제 2 세트에 수행되며, 상기 SAD 연산은 제 1 및 제 2 세트 값들 중 특정값들 간의 적어도 2개의 차이 절대값들을 포함하는 차이 절대값들의 세트(예컨대, |A0-B0|및|A1-B1|) 및 적어도 2개의 차이 절대값들의 세트의 합(예컨대, |A0-B0|+|A1-B1|)을 결정한다. 일부 실시예들에서, 제 1 및 제 2 세트의 값들은 각각 2개 이상의 값들(예컨대, 픽셀값들 A0-A15 및 B0-B15)을 포함한다. 제 1 세트의 값들 Ai 및 제 2 세트의 값들 Bi에 수행되는 SAD 연산은 하기의 등식에 의해 표현될 수 있다:
Figure 112008084726694-PCT00002
상기 C는 SAD 연산의 결과값(즉, 생성된 값)을 표시한다.
움직임 추정을 위해 수행된 SAD 연산은 일반적으로 소프트웨어 또는 하드웨어(예컨대, 중앙 프로세싱 유니트, 마이크로 프로세서, 디지털 신호 프로세서 등등)를 통해 구현된다. SAD 연산들을 사용하여 다수의 블럭들과 현재 블럭을 비교하도록 하드웨어가 구성되는지 소프트웨어가 구성되는지에 따라, 블럭 비교는 직렬 또는 병렬로 수행될 수 있다. 직렬 블럭 비교에서, 현재 블럭의 픽셀들은 제 2 참조 블럭의 임의의 픽셀들에 대한 비교들이 시작하기 전에 제 1 참조 블럭의 모든 상응하는 픽셀들과 비교된다.
직렬 블럭 비교의 일 예가 현재 블럭(205)의 모든 픽셀 값들(A0-A15)이 참조 블럭(210)으로부터의 모든 픽셀값들(B0-B15)과 비교되고 그 후에 또다른 참조 블럭으로부터의 픽셀 값들과의 비교가 시작하는 도 2에 도시된다. 현재 블럭(205)으로부터의 픽셀값들(A0-A15) 및 참조 블럭(210)을부터의 픽셀값들(B0-B15)은 (일반적으로 레지스터들의 사이즈에 따라 둘 이상의 로드 사이클들이 필요함에도 불구하고) 또다른 참조 블럭으로부터의 임의의 픽셀값들이 메모리로부터 레지스터들로 로딩되기 전에 참조 블럭의 프로세싱을 완료하기 위해 메모리로부터 레지스터들로 로딩된다.
다른 실시예들에서, 병렬 블럭 비교가 수행되며, 따라서 현재 블럭의 픽셀들의 제 1 서브-세트(예를 들면, 픽셀들의 제 1 로우)는 제 1 참조 블럭의 픽셀들의 상응하는 서브-세트(예를 들면, 픽셀들의 제 1 로우)와 비교되는 동시에 제 2 참조 블럭의 픽셀들의 상응하는 서브-세트(예를 들면, 픽셀들의 제 1 로우)와 비교된다. 현재 블럭의 픽셀들의 다음 서브-세트(예를 들면, 픽셀들의 제 2 로우)는 제 1 참 조 블럭의 픽셀들의 상응하는 다음 서브-세트(예컨대, 픽셀들의 제 2 로우)와 비교되는 동시에 제 2 참조 블럭의 픽셀들의 상응하는 다음 서브-세트(예컨대, 픽셀들의 제 2 로우)와 비교되며, 이는 현재 블럭 및 제 1 및 제 2 참조 블럭들의 각각의 픽셀이 처리될 때까지 계속된다. 따라서, 병렬 블럭 비교에서, 현재 블럭 및 2개 이상의 참조 블럭들 사이에서의 비교는 병렬로 수행될 수 있다. 병렬 블럭 비교에서, 데이터 검색 시간들은 메모리로부터 더 적은 데이터 검색이 발생함에 따라 감소될 수 있음에 유의하자. 예를 들어, 값들(A0-A3)은 한번 검색되고, 2개의 SAD 연산들에서 사용된다(반면에, 직렬 블럭 비교에서, 더 긴 검색 시간을 필요로 하는 값들(A0-A7)이 검색된다).
도 3은 현재 블럭의 제 1 로우(305; 픽셀들 A0-A3을 포함함) 및 제 1 참조 블럭의 제 1 로우(310; 픽셀들 B0-B3을 포함함)에 제 1 SAD 연산이 수행되고, 현재 블럭의 제 1 로우(305) 및 제 2 기준 블럭의 제 1 로우(315; 픽셀들 C0-C3을 포함함)에 제 2 SAD 연산이 수행되는 병렬 블럭 프로세싱의 개념도를 도시한다. 일부 실시예들에서, 제 1 및 제 2 SAD 연산들은 병렬로 수행된다. 도 3의 예에서, 프레임의 블럭은 4x4 픽셀 어레이를 포함하는데, 상기 어레이 내의 각각의 로우는 4개 픽셀들을 포함하고, 각각의 픽셀은 1 바이트 픽셀값을 포함한다. 다른 실시예들에서, 블럭은 서로 다른 사이즈의 픽셀 어레이를 포함하고, 상기 어레이 내의 각각의 로우는 서로 다른 개수의 픽셀들을 포함하며, 각각의 픽셀은 서로 다른 사이즈의 픽셀값을 포함한다.
현재 블럭(205)으로부터의 픽셀값들(A0-A3) 및 제 1 및 제 2 참조 블럭들로 부터의 픽셀값들(B0-B3 및 C0-C3)은 일반적으로 프로세싱을 위해 레지스터들에 로딩된다. 현재 블럭의 제 1 로우(305) 및 제 1 참조 블럭의 제 1 로우(310; 픽셀들 B0-B3을 포함함)에 수행되는 제 1 SAD 연산은 상응하는 픽셀들 사이의 차이 절대값들을 결정하고(즉, |A0-B0|,|A1-B1|,|A2-B2|, 및|A3-B3|), 차이 절대값들을 합산하는(즉, |A0-B0|+|A1-B1|+|A2-B2|+|A3-B3|) 것을 포함한다. 현재 블럭의 제 1 로우(305) 및 제 2 참조 블럭의 제 1 로우(315; 픽셀들 C0-C3을 포함함)에 수행되는 제 2 SAD 연산은 상응하는 픽셀들 사이의 차이 절대값들을 결정하고(즉, |A0-C0|,|A1-C1|,|A2-C2|, 및|A3-C3|), 차이 절대값들을 합산하는(즉, |A0-C0|+|A1-C1|+|A2-C2|+|A3-C3|) 것을 포함한다. 제 3 및 제 4 SAD 연산들은 현재 블럭 및 제 1 및 제2 참조 블럭들에 대한 픽셀들의 제 2 로우에 수행될 것이며, 이는 현재 블럭의 모든 픽셀들이 처리될 때까지 계속될 것이다.
현재 블럭이 SAD 연산들을 사용하여 참조 블럭과 직렬로 비교되는지 또는 병렬로 비교되는지의 여부에 관계없이, SAD 연산들이 처리 시간 및 자원들의 사용이 감소되어 효율적으로 수행될 수 있다면 움직임 추정은 최적화될 수 있다. 일부 실시예들에서, 2개의 독립적인 SAD 연산들은 2개의 독립적인 SAD 연산들의 결과값들을 저장하기 위한 목적지 레지스터를 사용하여 병렬로 수행된다. 몇몇 실시예들에서, 2개의 독립적인 SAD 연산들을 규정하기 위해 단일 명령이 사용되며, 상기 단일 명령의실행은 2개의 독립적인 SAD 결과값들을 생성한다.
도 4는 2개의 독립적인 SAD 연산들(401, 402)이 2개의 소스 레지스터들 및 하나의 목적지 레지스터를 사용하여 병렬로 수행되는 컴퓨터 구조(400)의 개념도를 도시한다. 도 4는 단지 설명을 위한 것이며, SAD 연산의 개별 단계들을 설명하는 것에 유의하자. 다른 실시예들에서, SAD 연산은 다수의 단계들(도 4에 도시됨)을 사용하여 실행되는 것이 아니라 단일 단계에서 수행된다. 도 4에 도시된 것과 같이, 2개의 SAD 연산들(401, 402)은 제 1 소스 레지스터 Rss(405)에 로딩된 값들(X0-X7) 및 제 2 소스 레지스터 Rtt(410)에 로딩된 값들(Y0-Y7)에 수행된다. 본 명세서에서 참조되는 것과 같이, SAD 연산에 의해 처리된 입력 값들(예컨대, X0-X7 및 Y0-Y7)은 소스값들이라 지칭된다. 소스 레지스터 내의 각각의 값은 소스 레지스터 내의 다른 값들과 관련하여 특정 순서 또는 위치를 갖는다(제 1 값, 제 2 값 등등). 제 1 소스 레지스터 내의 특정값 및 제 2 소스 레지스터 내의 특정값은 그들이 제 1 및 제 2 소스 레지스터들 내에서 동일한 순서 또는 위치를 가지는 경우에 "상응하는 값들"로 고려된다. 예를 들어, 제 1 소스 레지스터 내의 제 1 값 및 제 2 소스 레지스터 내의 제 1 값은 상응하는 값들이다. 2개의 SAD 연산들의 결과값들(401, 402)은 목적지 레지스터 Rdd(425)에 로딩된다.
SAD 연산들(401, 402)은 직렬 블럭 프로세싱(예컨대, 값들(X0-X7)은 도 2의 값들(A0-A7)과 동일하고, 값들(Y0-Y7)은 도 2의 값들(B0-B7)과 동일함)에서 사용될 수 있다. SAD 연산들(401, 402)은 병렬 블럭 프로세싱(예컨대, 값들(X0-X3)은 도 3의 값들(A0-A3)과 동일하고, 값들(X4-X7)은 도 3의 값들(A0-A3)과 동일하며, 값들(Y0-Y3)은 도 3의 값들(C0-C3)과 동일하고, 값들(Y4-Y7)은 도 3의 값들(B0-B3)과 동일함)에서 사용될 수 있다. 다른 실시예들에서, SAD 연산들(401, 402)은 다른 타입의 프로세싱에서 사용될 수 있다. 일부 실시예들에서, SAD 연산들(401, 402) 은 2개의 벡터들을 포함하는 값들에 작용하여 하나의 스칼라값 결과를 생성한다.
제 1 SAD 연산(401)은 제 1 소스 레지스터(Rss; 405)의 제 1 섹션에 저장된 제 1 세트의 값들(X0-X3) 및 제 2 소스 레지스터(Rtt; 410)의 제 1 섹션에 저장된 제 2 세트의 값들(Y0-Y3)에 수행된다. 제 1 SAD 연산(401)은 제 1 및 제 2 소스 레지스터들의 제 1 섹션들 내에 저장된 제 1 및 제 2 세트의 값들 내의 상응하는 값들 사이의 차이 절대값들을 포함하는 제 1 차이 절대값 세트를 결정하고(즉, |X0-Y0|,|X1-Y1|,|X2-Y2|및|X3-Y3|), 상기 제 1 차이 절대값 세트들을 합산하는(즉, |X0-Y0|+|X1-Y1|+|X2-Y2|+|X3-Y3|) 것을 포함한다. 제 1 SAD 연산(401)의 합산 결과는 목적지 레지스터(Rdd; 425)의 제 1 섹션(W0) 내에 저장된다.
제 2 SAD 연산(402)은 제 1 소스 레지스터(Rss; 405)의 제 2 섹션에 저장된 제 3 세트의 값들(X4-X7) 및 제 2 소스 레지스터(Rtt; 410)의 제 2 섹션에 저장된 제 4 세트의 값들(Y4-Y7)에 수행된다. 제 2 SAD 연산(402)은 제 1 및 제 2 소스 레지스터들의 제 2 섹션들 내에 저장된 제 3 및 제 4 세트의 값들 내의 상응하는 값들 사이의 차이 절대값들을 포함하는 제 2 차이 절대값 세트를 결정하고(즉, |X4-Y4|,|X5-Y5|,|X6-Y6|및|X7-Y7|), 상기 제 2 차이 절대값 세트들을 합산하는(즉, |X4-Y4|+|X5-Y5|+|X6-Y6|+|X7-Y7|) 것을 포함한다. 제 2 SAD 연산(402)의 합산 결과는 목적지 레지스터(Rdd; 425)의 제 2 섹션(W1) 내에 저장된다.
몇몇 실시예들에서, 도 4에 도시된 프로세싱 단계들은 전술된 프로세싱 단계 들을 수행하도록 구성된 컴포넌트들(산술 논리 유니트들)을 구비한 실행 유니트에 의해 구현된다. 예를 들어, 다수의 AD 컴포넌트들(415)은 차이 절대값(AD) 연산들을 수행하도록 구성될 수 있고, 다수의 Add 컴포넌트들(420)은 가산 연산들을 수행하도록 구성될 수 있다. 다른 실시예들에서, 도 4에 개시된 프로세싱 단계들은 산술 논리 유니트 내에 포함된 실행 유니트에 의해 구현된다.
몇몇 실시예들에서, 실행 유니트에 의해 연산들을 수행하기 위해 사용되는 레지스터들의 구조는 하나 이상의 레지스터들이 단일 레지스터들로서 액세스되거나 정렬된 레지스터 쌍들로 액세스될 수 있도록 한다. 예를 들어, 레지스터들은 단일 레지스터들 또는 정렬된 64-비트 레지스터 쌍들로서 액세스 될 수 있는 다수의 32-비트 레지스터들을 포함할 수 있으며, 따라서 명령은 32-비트 또는 64-비트 값들에 작용할 수 있다. 몇몇 실시예들에서, 소스 및 목적지 레지스터들(Rss, Rtt, Rdd)은 각각 정렬된 레지스터들의 쌍을 포함하는데, 상기 쌍 내의 제 1 레지스터는 소스 또는 목적지 레지스터의 제 1 섹션이라 지칭되고, 상기 쌍 내의 제 2 레지스터는 소스 또는 목적지 레지스터의 제 2 섹션이라 지칭된다. 몇몇 실시예들에서, 한 쌍의 정렬된 레지스터의 각각의 섹션(레지스터)는 독립적으로 액세스 가능하며, 따라서 제 1 SAD 연산은 (예컨대, 제 1 섹션 내에 저장된 값들을 검색 및 처리하고, 값들을 제 1 섹션에 로딩하기 위해) 소스 또는 목적지 레지스터의 제 1 섹션에 액세스할 수 있는 동시에(병렬로) 제 2의 독립적인 SAD 연산은 (예컨대, 제 1 섹션 내의 저장된 값들을 검색 및 처리하고, 값들을 제 2 섹션에 로딩하기 위해) 소스 또는 목적지 레지스터의 제 2 섹션에 액세스할 수 있다. 몇몇 실시예들에서, 제 1 SAD 연산은 2개의 소스 레지스터들 및 목적지 레지스터의 제 1 섹션을 액세스/사용하고, 제 2 SAD 연산은 2개의 소스 레지스터들 및 상기 목적지 레지스터의 제 2 섹션을 액세스/사용하며, 각각의 레지스터의 제 1 및 제 2 섹션들은 독립적으로 액세스 가능하다.
예를 들어, 제 1 및 제 2 소스 레지스터들 Rss 및 Rtt 내의 각각의 값(X0-X7 및 Y0-Y7)이 1 바이트를 포함하며, 따라서 제 1 및 제 2 소스 레지스터들 Rss 및 Rtt이 640-비트(더블 워드)의 정렬된 레지스터 쌍들을 포함하고 각각의 가산 컴포넌트(420)는 32-비트 가산기라고 가정하자. 상기와 같이, 제 1 SAD 연산은 제 1 소스 레지스터 Rss의 제 1 32-비트(단일 워드) 섹션/레지스터 내에 저장된 값들(X0-X3)에 액세스하고, 제 2 소스 레지스터 Rtt의 제 1 32-비트(단일 워드) 섹션/레지스터 내에 저장된 값들(Y0-Y3)에 액세스한다. 또한 이와 동시에 제 2 SAD 연산은 제 1 소스 레지스터 Rss의 제 2 32-비트 섹션/레지스터 내에 저장된 값들(X4-X7)에 액세스하고, 제 2 소스 레지스터 Rtt의 제 2 32-비트 섹션/레지스터 내에 저장된 값들(Y4-Y7)에 액세스한다. 목적지 레지스터 Rdd는 64-비트(더블 워드)의 정렬된 레지스터 쌍이 될 것이다. 제 1 SAD 연산의 합산 결과값은 목적지 레지스터 Rdd의 제 1 32-비트 섹션/레지스터에 저장되고(워드 0에 대하여 "W0"), 제 2 SAD 연산의 합산 결과값은 목적지 레지스터의 제 2 32-비트 섹션/레지스터에 저장된다(워드 1에 대하여 "W1").
몇몇 실시예들에서, 도 4에 도시된 2개의 독립적인 SAD 연산들은 단일 SAD 명령에 의해 규정된다. 도 5는 도 4에 도시된 컴퓨터 구조(400)에서 2개의 독립적 인 SAD 결과들을 생성하는 단일 SAD 명령의 명령 구문(505)을 도시한다. 도 5는 또한 단일 SAD 명령이 수신되어 실행될 때(예컨대, 프로세서의 실행 유니트에 의해) 발생되는 작용/결과 단계들(540)을 도시한다.
명령 구문(505)은 SAD 연산을 규정하는 명령 식별자(510, 예컨대 "sad")를 포함한다. 명령 구문(505)은 또한 2개의 독립적인 SAD 결과값들이 저장되는 레지스터를 식별하는 목적지 레지스터 식별자(515, 예컨대 Rdd) 및 2개의 SAD 연산들에 의해 처리될 소스값들이 저장되는 2개의 레지스터들을 식별하는 2개의 소스 레지스터 식별자들(520, 예컨대 Rss 및 Rtt)을 포함한다. 몇몇 실시예들에서, 명령 구문(505)은 또한 SAD 연산들의 소스 값들(입력들) 또는 생성된 값들(출력)을 특징으로 하는 식별자들을 더 포함할 수 있다. 예를 들어, "vr"("감소된 벡터")은 소스 값들이 2개의 벡터들을 포함하고, 생성된 결과값이 스칼라값인 것을 표시하도록 사용될 수 있다. 추가 예로서, "ub"("무부호 바이트")는 소스 값들이 무부호 바이트 값들을 포함하는 것을 표시하도록 사용될 수 있다.
단일 SAD 명령의 실행에 의해 생성된 프로세스들은 도 5의 작용/결과 단계들(510)에 설명된다. 결과 단계들은 목적지 레지스터의 초기화 단계(Rdd=0), 소스 레지스터들의 제 1 섹션 내에 저장된 값들을 처리하기 위한 제 1 세트 단계들(545) 및 소스 레지스터들의 제 2 섹션 내에 저장된 값들을 처리하기 위한 제 2 세트 단계들(550)을 포함한다. 제 1 및 제 2 세트 처리 단계들은 각각 차이 절대값 연산 단계(565), 차이 절대값들의 목적지 레지스터로의 합산 단계(560) 및 연산 반복 단계(555, 특정 반복 회수 동안)를 포함한다. 몇몇 실시예들에서 제 1 및 제2 세트 처리 단계들은 병렬로 수행된다.
예를 들어, 제 1 세트 처리 단계들(545)은 소스 레지스터들 Rss 및 Rtt의 제 1 섹션(바이트 0 내지 3에서) 내에 저장된 값들의 차이 절대값을 결정하는 단계("ABS((Rss.ub[i]-Rtt.ub[i])"), 상기 차이 절대값들을 목적지 레지스터의 제 1 섹션(W0)에 합산하는 단계("Rdd.w[0]=(Rdd.w[0]+ABS((Rss.ub[i]-Rtt.ub[i])))") 및 특정 반복 회수 동안 상기 연산들을 반복하는 단계("i=0에 대하여; i<4; i++)를 포함한다. 제 2 세트 처리 단계들(550)은 소스 레지스터들 Rss 및 Rtt의 제 1 섹션(바이트 4 내지 7에서) 내에 저장된 값들의 차이 절대값을 결정하는 단계("ABS((Rss.ub[i]-Rtt.ub[i])"), 상기 차이 절대값들을 목적지 레지스터의 제 2 섹션(W1)에 합산하는 단계("Rdd.w[1]=(Rdd.w[1]+ABS((Rss.ub[i]-Rtt.ub[i])))") 및 특정 반복 회수 동안 상기 연산들을 반복하는 단계("i=4에 대하여; i<4; i++)를 포함한다.
도 6은 2개의 독립적인 SAD 연산들이 2개의 소스 레지스터들 Rss 및 Rtt 및 목적지 레지스터 Rdd를 사용하여 병렬로 수행되는 대안적인 컴퓨터 구조(600)의 개념도를 도시한다. 도 6은 단지 설명을 위한 것이며, SAD 연산의 개별 단계들을 설명한다. 다른 실시예들에서, SAD 연산은 다수의 단계들(도 6에 도시된 것과 같이)로 실행되는 것이 아니라 단일 단계에서 실행된다.
선택적인 컴퓨터 구조(600)는 상기 선택적인 컴퓨터 구조(600)가 각각의 SAD 연산에 대하여 누산 루프(605)를 포함하는 것을 제외하고 도 4의 컴퓨터 구조(400)와 유사하다. 누산 루프(605)는 2개 이상의 SAD 연산들의 목적지 레지스터 Rdd의 특정 섹션으로의 합산 결과들의 누산을 허용한다. 예를 들어, 제 1 SAD 연산이 목적지 레지스터의 제 1 섹션에 저장된 제 1 합산 결과를 생성하는 2개의 소스 레지스터들의 제 1 섹션들 내의 소스 값들에 수행된다고 가정하자. 그 후에, 새로운 소스값들이 2개의 소스 레지스터들의 제 1 섹션들에 로딩되고 제 2 SAD 연산은 제 2 합산 결과값을 생성하기 위해 새로운 소스값들에 수행된다. 누산 루프(605)는 제 2 합산 결과값이 상기 목적지 레지스터의 제 1 섹션 내에 저장된 제 1 합산 결과값과 누산/가산되도록 한다. 누산된 합산값(제 1 합산값+제 2 합산값)은 그 후에 목적지 레지스터의 동일한 제 1 섹션에 다시 저장된다. 선택적인 컴퓨터 구조(600) 내의 가산 컴포넌트들(420)은 목적지 레지스터 Rdd로부터 입력을 수신함에 유의하라.
상기와 같이, 누산 루프(605)의 사용을 통해, 현재 SAD 연산의 현재 합산 결과값은 하나 이상의 이전 SAD 연산들의 하나 이상의 이전 합산 결과값들(일반적으로 비-제로 값들을 포함함)과 가산/누산될 수 있다. 몇몇 실시예들에서 현재 SAD 연산의 합산 결과값은 목적지 레지스터의 특정 섹션 내의 비-제로값과 가산/누산되며(비-제로값은 하나 이상의 이전 SAD 연산들의 하나 이상의 합산 결과값들을 포함함), 상기 경우에 누산된 합산값(현재 합산값 + 하나 이상의 이전 합산값들)은 목적지 레지스터의 동일한 섹션에 다시 저장된다.
도 7은 도 6에 도시된 선택적인 컴퓨터 구조(600)에서 2개의 독립적인 SAD 결과값들을 생성하는 단일 SAD 명령의 명령 구문(705)을 도시한다. 도 7은 또한 단일 SAD 명령이 수신되고 실행될 때(예컨대, 프로세서의 실행 유니트에 의해) 발 생되는 작용/결과 단계들(740)을 도시한다. 도 6의 선택적인 컴퓨터 구조(600)에 대한 명령 구문(705)에서 레지스터들 Rss, Rtt, Rdd 내의 값들로부터 3개의 입력들이 필요함에 유의하자. 이는 단지 2개의 입력들(레지스터들 Rss 및 Rtt 내의 값들로부터)만을 필요로 하는 도 4의 컴퓨터(400) 구조에 대한 명령 구문(505)과는 대조적이다. 명령 구문(505)의 결과 단계들(540)에서, 목적지 레지스터는 제로값으로 초기화되는데(Rdd=0), 이는 명령 구문(505)의 결과 단계들(540)이 현재 및 이전 SAD 연산들의 합산값들을 누산하지 않기 때문이다. 그러나, 명령 구문(705)의 결과 단계들(740)에서, 목적지 레지스터는 제로값으로 초기화되지 않으며, 이는 목적지 레지스터가 하나 이상의 이전 SAD 연산들을 유지하고, 명령 구문(705)의 결과 단계들(740)이 현재 및 이전 SAD 연산들의 합산값들을 누산하기 때문이다.
합산값들의 누산은 특히 현재 블럭 및 참조 블럭의 모든 픽셀들의 차이 절대값들의 전체 합산이 필요한 블럭 비교에서 유리하다. 다수의 SAD 연산들이 각각의 블럭 비교를 위해 요구되며, 이는 단일 SAD 연산이 현재 및 참조 블럭들의 일부분만을 처리할 수 있기 때문이다. 예를 들어, 픽셀들의 4개 로우들을 가지는 현재 및 참조 블럭들에 대하여, 상기 현재 및 참조 블럭들을 비교하기 위해 일반적으로 4개의 SAD 연산들이 요구된다(각각의 로우에 대하여 하나의 SAD 연산). 따라서, 4개의 SAD 연산들의 결과값들의 전체 합산값(즉, 4개의 합산 결과값들의 누산)이 결저오디어야 한다. 누산 루프(605)는 동일한 현재 및 참조 블럭들에 수행된 개별 SAD 연산들의 합산 결과값이 각각의 SAD 연산 이후에 누산되도록 한다. 상기와 같이, 개별 SAD 연산들의 합산 결과값들은 개별 명령들을 통해 이후에 함께 가산되어 야 할 필요는 없다.
도 8은 하드웨어 내의 SAD 명령을 실행하기 위해 사용될 수 있는 인트린식들(intrinsics) 및 인코딩을 도시하는 테이블이다. 컴파일러 인트린식들은 상위-레벨 언어(C언어와 같은)로 코드를 기록할 때 프로그래머에게 유용하다. 프로그래머는 어셈블리 레벨에서 Rdd=vrsadub(Rss, Rtt) 또는 Rxx+=vrsadub(Rss, Rtt)(도 8에 도시된 것과 같이)에 상응하여 컴파일러에게 명령을 사용할 것을 지시하는 컴파일러 인트린식들을 사용할 수 있다. 인코딩은 프로세서(예컨대, 디지털 신호 프로세서)의 명령 유니트를 설계하도록 사용될 수 있다. 다른 실시예들에서, 서로 다른 컴파일러 인트린식들 및 인코딩은 하드웨어 내의 SAD 명령을 실행하기 위해 사용된다.
도 9는 2개의 소스 레지스터들 및 하나의 목적지 레지스터를 사용하여 2개의 독립적인 SAD 연산들을 병렬로 수행하기 위한 방법(900)의 흐름도이다. 몇몇 실시예들에서, 방법(900)의 일부 단계들은 하드웨어 또는 소프트웨어 내에서 (예컨대, 프로세서의 실행 유니트에 의해) 실행된다. 방법(900)의 단계들은 단지 설명을 위한 것이며, 단계들의 순서 또는 개수는 다른 실시예들에서 변화되거나 상호교환될 수 있다.
방법(900)은 단일 SAD 명령이 수신될 때 시작하며(905에서), 상기 명령은 SAD 연산을 규정하고, 제 1 및 제 2 소스 레지스터들은 소스 값들을 저장하며, 목적지 레지스터는 SAD 연산 결과값들을 포함한다(예컨대, "Rdd=vrsadub(Rss, Rtt)"). 단일 SAD 명령의 수신에 응답하여, 상기 방법(900)은 그 후에 2개의 독립 적인 SAD 연산들을 수행한다. 상기와 같이 수행하기 위해, 상기 방법은 907에서, 메모리로부터 제 1 세트 값들(예컨대, X0-X3)을 제 1 소스 레지스터의 제 1 섹션에 로딩하고, 제 2 세트 값들(예컨대, Y0-Y3)을 제 2 소스 레지스터의 제 1 섹션에 로딩하고, 제 3 세트 값들(예컨대, X4-X7)을 제 1 소스 레지스터의 제 2 섹션에 로딩하고, 제 4 세트 값들(예컨대, Y4-Y7)을 제 2 소스 레지스터의 제 2 섹션에 로딩한다. 상기 방법은 그 후에 소스 레지스터들의 제 1 섹션 내에 저장된 소스 값들에 제 1 SAD 연산을 수행하기 위해 제 1 세트 단계들(910-920)을 수행하고, 소스 레지스터들의 제 2 섹션 내에 저장된 소스 값들에 제 2 SAD 연산을 수행하기 위해 제 2 세트 단계들(925-935)을 수행한다. 몇몇 실시예들에서, 제 1 및 제 2 세트 단계들(즉, 제 1 및 제 2 SAD 연산들)은 병렬로 수행된다.
단계(910)에서, 방법(900)은 제 1 및 제 2 소스 레지스터들의 제 1 섹션들 내에 저장된 제 1 및 제 2 세트 값들 내의 상응하는 값들의 차이 절대값들을 포함하는 제 1 세트 차이 절대값들을 결정한다. 상기 방법은 그 후에 상기 제 1 세트 차이 절대값들을 합산한다(915). 선택적으로, 상기 방법은 그 후에 목적지 레지스터의 제 1 섹션 내에 저장된 하나 또는 그 이상의 이전 SAD 연산들의 하나 이상의 이전 합들(일반적으로 비-제로 값)과 제 1 세트의 차이 절대값들의 합을 가산/누산한다(917). 상기 방법은 그 후에 목적지 레지스터의 제 1 섹션에 상기 합산 또는 누산 결과값을 로딩한다(920).
단계(925)에서, 상기 방법(900)은 제 1 및 제 2 소스 레지스터들의 제 2 섹션들 내에 저장된 제 3 및 제 4 세트 값들 내의 상응하는 값들의 차이 절대값들을 포함하는 제 2 세트 차이 절대값들을 결정한다. 상기 방법은 그 후에 상기 제 2 세트 차이 절대값들을 합산한다(930). 선택적으로, 상기 방법은 그 후에 목적지 레지스터의 제 2 섹션 내에 저장된 하나 또는 그 이상의 이전 SAD 연산들의 하나 이상의 이전 합들(일반적으로 비-제로 값)과 제 2 세트의 차이 절대값들의 합을 가산/누산한다(932). 상기 방법은 그 후에 목적지 레지스터의 제 2 섹션에 상기 합산 또는 누산 결과값을 로딩한다(935). 상기 방법은 종료한다.
도 10은 몇몇 실시예들에서 사용된 범용 컴퓨터 구조(1000)의 개념도를 도시한다. 구조(1000)는 메모리(1010), 프로세싱 유니트(1030) 및 상기 메모리(1010)를 프로세싱 유니트(1030)에 접속하는 하나 이상의 버스들(1020)을 포함한다.
메모리(1010)는 데이터(예컨대, 비디오 프레임의 블럭들의 픽셀값들) 및 적어도 하나의 SAD 명령을 포함하는 명령들을 저장한다. 데이터 및 명령들은 상기 데이터 또는 명령들을 메모리(1010)로부터 검색하는데 사용되는, 상기 메모리(1010) 내의 특정 어드레스를 갖는다. 메모리에 대한 어드레싱 방식은 당업자에게 공지되어 있고, 본 명세서에서 상세히 논의되지 않는다. 메모리(1010) 내의 데이터 및/또는 명령들은 버스들(1020)을 통해 프로세싱 유니트(1030)에 로딩된다.
프로세싱 유니트(1030)는 순차기(1035), 다수의 실행 유니트들(1045)에 대한다수의 파이프라인들(1040), 범용 레지스터 파일(1050, 다수의 범용 레지스터들을 포함함) 및 제어 레지스터 파일(1060)을 포함한다. 프로세싱 유니트(1030)는 또한 중앙 프로세싱 유니트, 마이크로 프로세서, 디지털 신호 프로세서, 등등을 포함할 수있다. 몇몇 실시예들에서, 다수의 실행 유니트들(1045)은 SAD 연산들을 수행하 도록 구성된 하나 이상의 실행 유니트들(SAD 실행 유니트라 지칭됨)을 포함한다. SAD 실행 유니트는 SAD 연산들을 위해 필요한 프로세싱 단계들을 수행하도록 구성된 컴포넌트들(산술 논리 유니트들과 같은)을 포함한다(차이 절대값 연산들을 수행하기 위한 다수의 AD 컴포넌트들(415) 및 값들을 누산/합산하기 위한 다수의 가산 컴포넌트들(420)과 같은). 다른 실시예들에서, SAD 실행 유니트는 산술 논리 유니트 내에 포함된다.
일반적으로, 각각의 명령은 상기 명령을 처리하는데 필요한 실행 유니트(1045)의 타입과 관련된 정보를 포함하며, 상기 경우에 각각의 실행 유니트가 특정 타입의 명령들만을 처리할 수 있다. 순차기(1035)는 메모리(1010)로부터 명령들을 수신하고, 상기 명령들을 디코딩하며, 각각의 명령에 대하여(상기 명령 내에 포함된 정보를 사용하여) 적절한 실행 유니트(1045)를 결정한다. 명령에 대한 상기 결정을 수행한 후에, 순차기(1035)는 제어 신호를 적절한 실행 유니트(1045)로 전송하고, 적절한 실행 유니트(1045)에 의한 처리를 위해 상기 명령을 적절한 파이프라인(1040) 내에 입력한다.
명령을 수신하는 각각의 실행 유니트(1045)는 범용 레지스터 파일(1050)을 사용하여 명령을 수행한다. 당업자에게 공지된 것과 같이, 범용 레지스터 파일(1050)은 레지스터들의 어레이를 포함한다. 명령을 수행하는데 필요한 임의의 데이터(예컨대, 픽셀값들)은 메모리(1010)로부터 검색되어 범용 레지스터 파일(1050) 내의 레지스터에 로딩된다. 명령이 실행 유니트(1045)에 의해 수행된 후에, 결과 데이터(예컨대, SAD 연산 결과들)은 범용 레지스터 파일(1045)에 저장되 고, 메모리(1010)에 로딩되고 저장된다. 데이터는 버스들(1020)을 통해 메모리(1010)로/부터 로딩된다. 명령을 실행하기 위해, 실행 유니트(1045)는 제어 레지스터 파일(1060)을 사용할 수 있다. 제어 레지스터들(1060)은 일반적으로 변경자(modifier), 상태 및 술어(predicate) 레지스터들과 같은 특정 레지스터들의 세트를 포함한다. 제어 레지스터들(1060)은 루프 카운트(반복 카운트)와 같은 소프트웨어 또는 하드웨어 루프들과 관련된 정보를 저장하기 위해 사용될 수 있다.
예를 들어, 만약 순차기(1035)가 SAD 명령을 수신하면, 순차기(1035)는 SAD 실행 유니트(1045)에 의한 처리를 위해 상기 명령을 적절한 파이프라인(1040) 내로 입력할 것이다. 또한, SAD 명령을 수행하는데 필요한 데이터(예컨대, 픽셀값들)은 범용 레지스터 파일(1050) 내의 2개의 소스 레지스터들로 로딩된다. 상기와 같이, SAD 명령은 프로세싱 유니트(1030)가 (SAD 실해 유니트들(1045)을 사용하여) 2개의 독립적인 SAD 연산들을 수행하고, 2개의 합산 결과값들을 생성하도록 한다. 2개의 합산 결과들은 범용 레지스터 파일(105) 내의 목적지 레지스터에 저장되며, 그후에 버스(1020)를 통해 메모리(1010)로 로딩되고 저장된다. 몇몇 실시예들에서, SAD 실행 유니트(1045)에 의해 사용되느 소스 및 목적지 레지스터들은 각각 독립적으로 액세스 가능한 정렬된 레지스터들의 쌍을 포함한다.
당업자는 정보 및 신호들이 임의의 다수의 상이한 기술들 및 테크닉들을 사용하여 표현될 수 있음을 인식할 것이다. 예를 들어, 상기 설명을 통해 참조될 수 있는 데이터, 지시들, 명령들, 정보, 신호들, 비트들, 심볼들 및 칩들은 전압들, 전류들, 전자기파들, 전자기장들, 또는 전자기 입자들, 광학계들 또는 광학 입자 들, 또는 그들의 임의의 조합에 의해 표시될 수 있다.
당업자는 또한 본 명세서에 개시된 실시예들과 관련하여 설명된 논리적인 블럭들, 모듈들, 회로들, 및 알고리즘 단계들이 전자하드웨어, 컴퓨터 소프트웨어, 또는 그들의 조합으로서 실행될 수 있음을 인식할 것이다. 상기 하드웨어 및 소프트웨어의 상호교환가능성을 명백히 설명하기 위해, 다양한 요소들, 블럭들, 모듈들, 회로들, 및 단계들이 그들의 기능성에 관련하여 전술되었다. 상기 기능성이 하드웨어로 실행되는지 또는 소프트웨어로 실행되는지의 여부는 전체 시스템에 부과된 특정 애플리케이션 및 설계 제약에 따라 결정한다. 당업자는 각각의 특정 애플리케이션을 위해 다양한 방식들로 설명된 기능성을 실행할 수 있지만, 상기 실행 결정들은 본 발명의 영역으로부터 벗어나는 것으로 해석될 수 없다.
본 명세서에서 개시된 실시예와 관련하여 다양하게 설명되는 논리 블럭들, 모듈들, 및 회로들은 범용 프로세서, 디지털 신호 처리기(DSP), 응용 집적 회로(ASIC), 현장 프로그램가능한 게이트 어레이(FPGA), 또는 다른 프로그램가능한 로직 디바이스, 이산 게이트 또는 트랜지스터 로직, 이산 하드웨어 요소들, 또는 본 명세서에 개시된 기능을 수행하도록 설계된 그들의 임의의 조합을 사용하여 실행되거나 수행될 수 있다. 범용 프로세서는 마이크로프로세서가 될 수 있지만, 선택적으로 프로세서는 임의의 종래의 프로세서, 제어기, 마이크로제어기, 또는 상태 기계가 될 수 있다. 프로세서는 또한 예를 들어, DSP 및 마이크로프로세서의 조합, 복수의 마이크로프로세서, DSP 코어와 결합된 하나 또는 그이상의 마이크로프로세서, 또는 임의의 다른 구성과 같은 컴퓨팅 장치들의 조합으로서 실행될 수 있 다.
본 명세서에 개시된 실시예와 관련하여 설명되는 방법 또는 알고리즘의 단계는 하드웨어에서, 프로세서에 의해 실행되는 소프트웨어 모듈에서, 또는 그들의 조합에서 즉시 구현될 수 있다. 소프트웨어 모듈은 RAM 메모리, 플래시 메모리, ROM 메모리, EPROM 메모리, EEPROM 메모리, 레지스터들, 하드디스크, 제거가능한 디스크, CD-ROM 또는 임의의 다른 저장 매체 형태로 당업자에게 공지된다. 예시적인 저장 매체는 저장매체로부터 정보를 판독하고 정보를 기록할 수 있는 프로세서에 접속된다. 선택적으로, 저장 매체는 프로세서의 필수 구성요소이다. 프로세서 및 저장 매체는 ASIC 내에 상주할 수 있다. ASIC은 사용자 터미널 내에 상주할 수 있다. 선택적으로, 프로세서 및 저장 매체는 사용자 디바이스내에서 이산요소들로서 상주할 수 있다.
개시된 실시예의 전술된 설명은 당업자가 본 발명을 구현하고 이용하기에 용이하도록 하기 위하여 제공되었다. 이들 실시예에 대한 여러 가지 변형은 당업자에게 자명하며, 여기서 한정된 포괄적인 원리는 본 발명의 사용 없이도 다른 실시예에 적용될 수 있다. 따라서, 본 발명은 설명된 실시예에 한정되는 것이 아니며, 여기에 개시된 원리 및 신규한 특징에 나타낸 가장 넓은 범위에 따른다.

Claims (28)

  1. 컴퓨터 판독가능 매체로서,
    상기 매체 내에 포함되어 차이 절대값들의 합(sum-of-absolute-differences; SAD) 연산 결과들을 저장하기 위한 목적지 레지스터를 규정하고, 프로세싱 유니트에 의해 실행될 때 상기 프로세싱 유니트가 2개의 독립적인 SAD 연산들을 수행하도록 하는 SAD 명령을 포함하며,
    제 1 SAD 연산의 결과값은 상기 목적지 레지스터의 제 1 섹션 내에 저장되고, 제 2 SAD 연산의 결과값은 상기 목적지 레지스터의 제 2 섹션 내에 저장되는 컴퓨터 판독가능 매체.
  2. 제 1항에 있어서,
    상기 프로세싱 유니트는 상기 2개의 SAD 연산들을 병렬로 수행하는 것을 특징으로 하는 컴퓨터 판독가능 매체.
  3. 제 1항에 있어서,
    상기 SAD 명령은 2개의 소스 레지스터들이 상기 2개의 SAD 연산들에 의한 프로세싱을 위한 소스값들을 저장하도록 추가로 규정하고, 상기 프로세싱 유니트는,
    제 1 소스 레지스터의 제 1 섹션 및 제 2 소스 레지스터의 제 1 섹션 내에 저장된 소스 값들에 상기 제 1 SAD 연산을 수행하고, 그리고
    상기 제 1 소스 레지스터의 제 2 섹션 및 상기 제 2 소스 레지스터의 제 2 섹션 내에 저장된 소스 값들에 상기 제 2 SAD 연산을 수행함으로써 상기 2개의 독립적인 SAD 연산들을 수행하고,
    상기 목적지 및 소스 레지스터들은 각각 한 쌍의 정렬된 레지스터들을 포함하는데, 상기 쌍 내의 제 1 레지스터는 상기 소스 또는 목적지 레지스터의 제 1 섹션을 포함하고, 상기 쌍 내의 제 2 레지스터는 상기 소스 또는 목적지 레지스터의 제 2 섹션을 포함하는 것을 특징으로 하는 컴퓨터 판독가능 매체.
  4. 제 3항에 있어서,
    상기 소스 및 목적지 레지스터들은 각각 2개의 독립적으로 액세스할 수 있는 섹션들을 포함하며, 따라서 상기 제 1 SAD 연산이 상기 레지스터의 제 1 섹션에 액세스할 수 있는 동시에 상기 제 2 SAD 연산이 상기 레지스터의 제 2 섹션에 액세스 할 수 있는 것을 특징으로 하는 컴퓨터 판독가능 매체.
  5. 제 3항에 있어서,
    상기 프로세싱 유니트는 상기 제 1 및 제 2 소스 레지스터들의 제 1 섹션들 내에 저장된 상응하는 소스 값들의 차이 절대값들을 포함하는 제 1 세트의 차이 절대값들의 합을 결정함으로써 상기 제 1 SAD 연산을 수행하고, 그리고
    상기 프로세싱 유니트는 상기 제 1 및 제 2 소스 레지스터들의 제 2 섹션들 내에 저장된 상응하는 소스 값들의 차이 절대값들을 포함하는 제 2 세트의 차이 절 대값들의 합을 결정함으로써 상기 제 2 SAD 연산을 수행하는 것을 특징으로 하는 컴퓨터 판독가능 매체.
  6. 제 3항에 있어서,
    상기 제 1 및 제 2 소스 레지스터들 내에 저장된 소스 값들은 비디오 프레임들의 픽셀값들을 포함하고, 그리고
    상기 제 1 소스 레지스터는 현재 프레임의 현재 블럭의 픽셀값들을 저장하고 상기 제 2 소스 레지스터는 참조 프레임의 2개의 서로 다른 블럭들의 픽셀값들을 저장하는 것을 특징으로 하는 컴퓨터 판독가능 매체.
  7. 제 1항에 있어서, 상기 프로세싱 유니트는,
    상기 목적지 레지스터의 제 1 섹션 내에 저장된 또다른 SAD 연산의 결과값을 상기 제 1 SAD 연산의 결과값들과 합산하고 상기 합산값을 상기 목적지 레지스터의 제 1 섹션 내에 저장하고, 그리고
    상기 목적지 레지스터의 제 2 센션 내에 저장된 또다른 SAD 연산의 결과값을 상기 제 2 SAD 연산의 결과값들과 합산하고 상기 합산값을 상기 목적지 레지스터의 제 2 섹션 내에 저장함으로써 상기 2개의 독립적인 SAD 연산들을 수행하는 것을 특징으로 하는 컴퓨터 판독가능 매체.
  8. 차이 절대값들의 합(sum-of-absolute-differences; SAD) 연산들을 수행하기 위한 방법으로서,
    SAD 연산 결과들을 저장하기 위한 목적지 레지스터를 규정하는 단일 SAD 명령을 수신하는 단계; 및
    상기 단일 SAD 명령의 수신에 응답하여, 2개의 독립적인 SAD 연산들을 수행하는 단계를 포함하며,
    제 1 SAD 연산의 결과값은 상기 목적지 레지스터의 제 1 섹션 내에 저장되고, 제 2 SAD 연산의 결과값은 상기 목적지 레지스터의 제 2 섹션 내에 저장되는 방법.
  9. 제 8항에 있어서,
    상기 2개의 SAD 연산들은 병렬로 수행되는 것을 특징으로 하는 방법.
  10. 제 8항에 있어서,
    상기 SAD 명령은 2개의 소스 레지스터들이 상기 2개의 SAD 연산들에 의한 프로세싱을 위한 소스값들을 저장하도록 추가로 규정하고, 상기 2개의 독립적인 SAD 연산들을 수행하는 단계는,
    제 1 소스 레지스터의 제 1 섹션 및 제 2 소스 레지스터의 제 1 섹션 내에 저장된 소스 값들에 상기 제 1 SAD 연산을 수행하는 단계; 및
    상기 제 1 소스 레지스터의 제 2 섹션 및 상기 제 2 소스 레지스터의 제 2 섹션 내에 저장된 소스 값들에 상기 제 2 SAD 연산을 수행하는 단계를 더 포함하 며,
    상기 목적지 및 소스 레지스터들은 각각 한 쌍의 정렬된 레지스터들을 포함하는데, 상기 쌍 내의 제 1 레지스터는 상기 소스 또는 목적지 레지스터의 제 1 섹션을 포함하고, 상기 쌍 내의 제 2 레지스터는 상기 소스 또는 목적지 레지스터의 제 2 섹션을 포함하는 것을 특징으로 하는 방법.
  11. 제 8항에 있어서,
    상기 소스 및 목적지 레지스터들은 각각 2개의 독립적으로 액세스할 수 있는 섹션들을 포함하며, 따라서 상기 제 1 SAD 연산이 상기 레지스터의 제 1 섹션에 액세스할 수 있는 동시에 상기 제 2 SAD 연산이 상기 레지스터의 제 2 섹션에 액세스 할 수 있는 것을 특징으로 하는 방법.
  12. 제 10항에 있어서,
    상기 제 1 SAD 연산을 수행하는 단계는 상기 제 1 및 제 2 소스 레지스터들의 제 1 섹션들 내에 저장된 상응하는 소스 값들의 차이 절대값들을 포함하는 제 1 세트의 차이 절대값들의 합을 결정하는 단계를 더 포함하고, 그리고
    상기 제 2 SAD 연산을 수행하는 단계는 상기 제 1 및 제 2 소스 레지스터들의 제 2 섹션들 내에 저장된 상응하는 소스 값들의 차이 절대값들을 포함하는 제 2 세트의 차이 절대값들의 합을 결정하는 단계를 더 포함하는 것을 특징으로 하는 방법.
  13. 제 10항에 있어서,
    상기 제 1 및 제 2 소스 레지스터들 내에 저장된 소스 값들은 비디오 프레임들의 픽셀값들을 포함하고, 그리고
    상기 제 1 소스 레지스터는 현재 프레임의 현재 블럭의 픽셀값들을 저장하고 상기 제 2 소스 레지스터는 참조 프레임의 2개의 서로 다른 블럭들의 픽셀값들을 저장하는 것을 특징으로 하는 방법.
  14. 제 8항에 있어서, 상기 2개의 SAD 연산들을 수행하는 단계는,
    상기 목적지 레지스터의 제 1 섹션 내에 저장된 또다른 SAD 연산의 결과값을 상기 제 1 SAD 연산의 결과값들과 합산하고 상기 합산값을 상기 목적지 레지스터의 제 1 섹션 내에 저장하는 단계; 및
    상기 목적지 레지스터의 제 2 센션 내에 저장된 또다른 SAD 연산의 결과값을 상기 제 2 SAD 연산의 결과값들과 합산하고 상기 합산값을 상기 목적지 레지스터의 제 2 섹션 내에 저장하는 단계를 포함하는 것을 특징으로 하는 방법.
  15. 차이 절대값들의 합(sum-of-absolute-differences; SAD) 연산들을 수행하기 위한 장치로서,
    SAD 연산 결과들을 저장하기 위한 목적지 레지스터를 규정하는 단일 SAD 명령을 수신하는 수단; 및
    상기 단일 SAD 명령의 수신에 응답하여, 2개의 독립적인 SAD 연산들을 수행하는 수단을 포함하며,
    제 1 SAD 연산의 결과값은 상기 목적지 레지스터의 제 1 섹션 내에 저장되고, 제 2 SAD 연산의 결과값은 상기 목적지 레지스터의 제 2 섹션 내에 저장되는 장치.
  16. 제 15항에 있어서,
    상기 2개의 SAD 연산들은 병렬로 수행되는 것을 특징으로 하는 장치.
  17. 제 15항에 있어서,
    상기 SAD 명령은 2개의 소스 레지스터들이 상기 2개의 SAD 연산들에 의한 프로세싱을 위한 소스값들을 저장하도록 추가로 규정하고, 상기 2개의 독립적인 SAD 연산들을 수행하는 수단은,
    제 1 소스 레지스터의 제 1 섹션 및 제 2 소스 레지스터의 제 1 섹션 내에 저장된 소스 값들에 상기 제 1 SAD 연산을 수행하는 수단; 및
    상기 제 1 소스 레지스터의 제 2 섹션 및 상기 제 2 소스 레지스터의 제 2 섹션 내에 저장된 소스 값들에 상기 제 2 SAD 연산을 수행하는 수단을 더 포함하며,
    상기 목적지 및 소스 레지스터들은 각각 한 쌍의 정렬된 레지스터들을 포함하는데, 상기 쌍 내의 제 1 레지스터는 상기 소스 또는 목적지 레지스터의 제 1 섹 션을 포함하고, 상기 쌍 내의 제 2 레지스터는 상기 소스 또는 목적지 레지스터의 제 2 섹션을 포함하는 것을 특징으로 하는 장치.
  18. 제 17항에 있어서,
    상기 소스 및 목적지 레지스터들은 각각 2개의 독립적으로 액세스할 수 있는 섹션들을 포함하며, 따라서 상기 제 1 SAD 연산이 상기 레지스터의 제 1 섹션에 액세스할 수 있는 동시에 상기 제 2 SAD 연산이 상기 레지스터의 제 2 섹션에 액세스 할 수 있는 것을 특징으로 하는 장치.
  19. 제 17항에 있어서,
    상기 제 1 SAD 연산을 수행하는 수단은 상기 제 1 및 제 2 소스 레지스터들의 제 1 섹션들 내에 저장된 상응하는 소스 값들의 차이 절대값들을 포함하는 제 1 세트의 차이 절대값들의 합을 결정하는 수단을 더 포함하고, 그리고
    상기 제 2 SAD 연산을 수행하는 수단은 상기 제 1 및 제 2 소스 레지스터들의 제 2 섹션들 내에 저장된 상응하는 소스 값들의 차이 절대값들을 포함하는 제 2 세트의 차이 절대값들의 합을 결정하는 수단을 더 포함하는 것을 특징으로 하는 장치.
  20. 제 17항에 있어서,
    상기 제 1 및 제 2 소스 레지스터들 내에 저장된 소스 값들은 비디오 프레임 들의 픽셀값들을 포함하고, 그리고
    상기 제 1 소스 레지스터는 현재 프레임의 현재 블럭의 픽셀값들을 저장하고 상기 제 2 소스 레지스터는 참조 프레임의 2개의 서로 다른 블럭들의 픽셀값들을 저장하는 것을 특징으로 하는 장치.
  21. 제 15항에 있어서, 상기 2개의 SAD 연산들을 수행하는 수단은,
    상기 목적지 레지스터의 제 1 섹션 내에 저장된 또다른 SAD 연산의 결과값을 상기 제 1 SAD 연산의 결과값들과 합산하고 상기 합산값을 상기 목적지 레지스터의 제 1 섹션 내에 저장하는 수단; 및
    상기 목적지 레지스터의 제 2 센션 내에 저장된 또다른 SAD 연산의 결과값을 상기 제 2 SAD 연산의 결과값들과 합산하고 상기 합산값을 상기 목적지 레지스터의 제 2 섹션 내에 저장하는 수단을 포함하는 것을 특징으로 하는 장치.
  22. 차이 절대값들의 합(sum-of-absolute-differences; SAD) 연산들을 수행하기 위한 장치로서,
    SAD 연산 결과들을 저장하기 위한 목적지 레지스터를 규정하는 적어도 하나의 SAD 명령을 저장하는 메모리; 및
    상기 메모리에 결합되어 단일 SAD 명령을 수신하면 2개의 독립적인 SAD 연산들을 수행하도록 구성된 프로세싱 유니트를 포함하며, 상기 프로세싱 유니트는,
    SAD 연산들을 수행하도록 구성된 하나 이상의 실행 유니트들; 및
    목적지 레지스터를 포함하는 레지스터 세트를 포함하며,
    제 1 SAD 연산의 결과값은 상기 목적지 레지스터의 제 1 섹션 내에 저장되고, 제 2 SAD 연산의 결과값은 상기 목적지 레지스터의 제 2 섹션 내에 저장되는 장치.
  23. 제 22항에 있어서,
    상기 프로세싱 유니트는 상기 2개의 SAD 연산들을 병렬로 수행하도록 구성되는 것을 특징으로 하는 장치.
  24. 제 22항에 있어서,
    상기 SAD 명령은 2개의 소스 레지스터들이 상기 2개의 SAD 연산들에 의한 프로세싱을 위한 소스값들을 저장하도록 추가로 규정하고,
    상기 레지스터 세트는 2개의 소스 레지스터들을 더 포함하며, 그리고 상기 프로세싱 유니트는,
    제 1 소스 레지스터의 제 1 섹션 및 제 2 소스 레지스터의 제 1 섹션 내에 저장된 소스 값들에 상기 제 1 SAD 연산을 수행하고, 그리고
    상기 제 1 소스 레지스터의 제 2 섹션 및 상기 제 2 소스 레지스터의 제 2 섹션 내에 저장된 소스 값들에 상기 제 2 SAD 연산을 수행함으로써 상기 2개의 독립적인 SAD 연산들을 수행하도록 구성되고,
    상기 목적지 및 소스 레지스터들은 각각 한 쌍의 정렬된 레지스터들을 포함 하는데, 상기 쌍 내의 제 1 레지스터는 상기 소스 또는 목적지 레지스터의 제 1 섹션을 포함하고, 상기 쌍 내의 제 2 레지스터는 상기 소스 또는 목적지 레지스터의 제 2 섹션을 포함하는 것을 특징으로 하는 장치.
  25. 제 24항에 있어서,
    상기 소스 및 목적지 레지스터들은 각각 2개의 독립적으로 액세스할 수 있는 섹션들을 포함하며, 따라서 상기 제 1 SAD 연산이 상기 레지스터의 제 1 섹션에 액세스할 수 있는 동시에 상기 제 2 SAD 연산이 상기 레지스터의 제 2 섹션에 액세스 할 수 있는 것을 특징으로 하는 장치.
  26. 제 24항에 있어서,
    상기 프로세싱 유니트는 상기 제 1 및 제 2 소스 레지스터들의 제 1 섹션들 내에 저장된 상응하는 소스 값들의 차이 절대값들을 포함하는 제 1 세트의 차이 절대값들의 합을 결정함으로써 상기 제 1 SAD 연산을 수행하도록 구성되고, 그리고
    상기 프로세싱 유니트는 상기 제 1 및 제 2 소스 레지스터들의 제 2 섹션들 내에 저장된 상응하는 소스 값들의 차이 절대값들을 포함하는 제 2 세트의 차이 절대값들의 합을 결정함으로써 상기 제 2 SAD 연산을 수행하도록 구성되는 것을 특징으로 하는 장치.
  27. 제 24항에 있어서,
    상기 제 1 및 제 2 소스 레지스터들 내에 저장된 소스 값들은 비디오 프레임들의 픽셀값들을 포함하고, 그리고
    상기 제 1 소스 레지스터는 현재 프레임의 현재 블럭의 픽셀값들을 저장하고 상기 제 2 소스 레지스터는 참조 프레임의 2개의 서로 다른 블럭들의 픽셀값들을 저장하는 것을 특징으로 하는 장치.
  28. 제 22항에 있어서, 상기 프로세싱 유니트는,
    상기 목적지 레지스터의 제 1 섹션 내에 저장된 또다른 SAD 연산의 결과값을 상기 제 1 SAD 연산의 결과값들과 합산하고 상기 합산값을 상기 목적지 레지스터의 제 1 섹션 내에 저장하고, 그리고
    상기 목적지 레지스터의 제 2 센션 내에 저장된 또다른 SAD 연산의 결과값을 상기 제 2 SAD 연산의 결과값들과 합산하고 상기 합산값을 상기 목적지 레지스터의 제 2 섹션 내에 저장함으로써 상기 2개의 독립적인 SAD 연산들을 수행하도록 구성되는 것을 특징으로 하는 장치.
KR1020087030050A 2006-05-10 2007-05-07 차이 절대값들의 2개의 독립적인 합산값들을 생성하기 위한명령 KR100996337B1 (ko)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US11/431,301 US8290044B2 (en) 2006-05-10 2006-05-10 Instruction for producing two independent sums of absolute differences
US11/431,301 2006-05-10

Publications (2)

Publication Number Publication Date
KR20090012269A true KR20090012269A (ko) 2009-02-02
KR100996337B1 KR100996337B1 (ko) 2010-11-23

Family

ID=38658606

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020087030050A KR100996337B1 (ko) 2006-05-10 2007-05-07 차이 절대값들의 2개의 독립적인 합산값들을 생성하기 위한명령

Country Status (8)

Country Link
US (1) US8290044B2 (ko)
EP (1) EP2025175B1 (ko)
JP (1) JP4995897B2 (ko)
KR (1) KR100996337B1 (ko)
CN (1) CN101438598B (ko)
ES (1) ES2733022T3 (ko)
HU (1) HUE044078T2 (ko)
WO (1) WO2007134011A2 (ko)

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20200008539A (ko) 2019-12-27 2020-01-28 주식회사 성환산업 빗물의 재활용 방법 및 시스템
KR102267401B1 (ko) 2020-08-06 2021-06-18 주식회사 선샘산업 저장 용수의 수질 오염 방지 유닛 및 그 오염 방지 유닛을 이용한 저장 용수 수질 오염 방지 방법 및 방지 시스템
WO2022203785A1 (en) * 2021-03-26 2022-09-29 Intel Corporation Instruction and logic for sum of absolute differences

Families Citing this family (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN104025019B (zh) * 2011-12-23 2018-01-05 英特尔公司 用于执行双块绝对差求和的系统、装置和方法
US11294815B2 (en) * 2015-06-10 2022-04-05 Mobileye Vision Technologies Ltd. Multiple multithreaded processors with shared data cache
US11513796B2 (en) * 2017-02-23 2022-11-29 Arm Limited Multiply-accumulation in a data processing apparatus
US10481870B2 (en) 2017-05-12 2019-11-19 Google Llc Circuit to perform dual input value absolute value and sum operation

Family Cites Families (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP3545004B2 (ja) 1993-01-25 2004-07-21 ソニー株式会社 演算回路
KR0168136B1 (ko) * 1994-12-31 1999-03-20 김주용 움직임 추정 칩의 처리소자 장치
TW361051B (en) * 1997-01-09 1999-06-11 Matsushita Electric Ind Co Ltd Motion vector detection apparatus
JP3869947B2 (ja) * 1998-08-04 2007-01-17 株式会社日立製作所 並列処理プロセッサ、および、並列処理方法
GB2372848B (en) * 2001-02-20 2004-10-27 Advanced Risc Mach Ltd Data processing using a coprocessor
US7054895B2 (en) 2001-06-21 2006-05-30 Ligos Corporation System and method for parallel computing multiple packed-sum absolute differences (PSAD) in response to a single instruction
JP4699685B2 (ja) 2003-08-21 2011-06-15 パナソニック株式会社 信号処理装置及びそれを用いた電子機器
JP4170173B2 (ja) 2003-08-21 2008-10-22 株式会社ルネサステクノロジ ブロックマッチング演算装置
US20060002471A1 (en) * 2004-06-30 2006-01-05 Lippincott Louis A Motion estimation unit
US7555513B2 (en) * 2004-09-13 2009-06-30 Broadcom Corporation SIMD processor having enhanced operand storage interconnects

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20200008539A (ko) 2019-12-27 2020-01-28 주식회사 성환산업 빗물의 재활용 방법 및 시스템
KR102267401B1 (ko) 2020-08-06 2021-06-18 주식회사 선샘산업 저장 용수의 수질 오염 방지 유닛 및 그 오염 방지 유닛을 이용한 저장 용수 수질 오염 방지 방법 및 방지 시스템
WO2022203785A1 (en) * 2021-03-26 2022-09-29 Intel Corporation Instruction and logic for sum of absolute differences

Also Published As

Publication number Publication date
EP2025175A2 (en) 2009-02-18
US20070263730A1 (en) 2007-11-15
ES2733022T3 (es) 2019-11-27
HUE044078T2 (hu) 2019-09-30
JP2009536773A (ja) 2009-10-15
KR100996337B1 (ko) 2010-11-23
CN101438598B (zh) 2013-08-14
JP4995897B2 (ja) 2012-08-08
WO2007134011A3 (en) 2008-01-24
EP2025175B1 (en) 2019-04-03
CN101438598A (zh) 2009-05-20
WO2007134011A2 (en) 2007-11-22
US8290044B2 (en) 2012-10-16

Similar Documents

Publication Publication Date Title
KR100996337B1 (ko) 차이 절대값들의 2개의 독립적인 합산값들을 생성하기 위한명령
US7536430B2 (en) Method and system for performing calculation operations and a device
US5594679A (en) Adaptive video signal processing apparatus
US7778494B2 (en) FIR-based interpolation in advanced video codecs on VLIW processor
US7725520B2 (en) Processor
US7085795B2 (en) Apparatus and method for efficient filtering and convolution of content data
US20040148321A1 (en) Method and system for performing calculation operations and a device
JP2006107463A (ja) パック・データの乗加算演算を実行する装置
JP2015133132A (ja) Simd命令をサポートするプログラマブルデータ処理回路
WO1997044728A1 (en) A processor having a bus interconnect which is dynamically reconfigurable in response to an instruction field
CN107315717B (zh) 一种用于执行向量四则运算的装置和方法
US20030005267A1 (en) System and method for parallel computing multiple packed-sum absolute differences (PSAD) in response to a single instruction
Lee et al. Multi-pass and frame parallel algorithms of motion estimation in H. 264/AVC for generic GPU
JP2004519768A (ja) コプロセッサを使用したデータ処理
CN113554164A (zh) 神经网络模型的优化、数据处理方法及装置、存储介质
US7124280B2 (en) Execution control apparatus of data driven information processor for instruction inputs
US20130262819A1 (en) Single cycle compare and select operations
JPH06225287A (ja) 演算回路
CN108322759A (zh) 一种像素值获取方法及装置
JP2004334297A (ja) 並列演算処理装置及び並列演算処理方法
TWI489374B (zh) 判斷系統及方法
Diguet et al. VLSI high level synthesis of fast exact least mean square algorithms based on fast FIR filters
JP4696540B2 (ja) コンピュータ、データ処理方法およびプログラム
Shahbahrami et al. Limitations of special-purpose instructions for similarity measurements in media SIMD extensions
WO2023072791A1 (en) Performing a floating-point multiply-add operation in a computer implemented environment

Legal Events

Date Code Title Description
A201 Request for examination
E902 Notification of reason for refusal
E701 Decision to grant or registration of patent right
GRNT Written decision to grant
FPAY Annual fee payment

Payment date: 20131030

Year of fee payment: 4

FPAY Annual fee payment

Payment date: 20150930

Year of fee payment: 6

FPAY Annual fee payment

Payment date: 20161028

Year of fee payment: 7

FPAY Annual fee payment

Payment date: 20170929

Year of fee payment: 8

FPAY Annual fee payment

Payment date: 20180928

Year of fee payment: 9

FPAY Annual fee payment

Payment date: 20190924

Year of fee payment: 10