KR20090004574A - 연산 유닛 및 화상 필터링 장치 - Google Patents

연산 유닛 및 화상 필터링 장치 Download PDF

Info

Publication number
KR20090004574A
KR20090004574A KR1020080061002A KR20080061002A KR20090004574A KR 20090004574 A KR20090004574 A KR 20090004574A KR 1020080061002 A KR1020080061002 A KR 1020080061002A KR 20080061002 A KR20080061002 A KR 20080061002A KR 20090004574 A KR20090004574 A KR 20090004574A
Authority
KR
South Korea
Prior art keywords
data
register
motion vector
processing
period
Prior art date
Application number
KR1020080061002A
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 KR20090004574A publication Critical patent/KR20090004574A/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T5/00Image enhancement or restoration
    • 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
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T5/00Image enhancement or restoration
    • G06T5/20Image enhancement or restoration by the use of local operators
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T7/00Image analysis
    • G06T7/20Analysis of motion
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T7/00Image analysis
    • G06T7/20Analysis of motion
    • G06T7/223Analysis of motion using block-matching
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T2207/00Indexing scheme for image analysis or image enhancement
    • G06T2207/10Image acquisition modality
    • G06T2207/10016Video; Image sequence
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T2207/00Indexing scheme for image analysis or image enhancement
    • G06T2207/20Special algorithmic details
    • G06T2207/20021Dividing image into blocks, subimages or windows

Landscapes

  • Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • Multimedia (AREA)
  • Computer Vision & Pattern Recognition (AREA)
  • Image Processing (AREA)

Abstract

본 발명은 필터 처리를 고속으로 행할 수 있는 프로세서를 제공하는 것을 과제로 한다. 본 발명에 따른 연산 유닛은, 필터 처리를 행하기 위한 연산기(201)를 구비한다. 그 연산기(201)에의 데이터 공급은 플립플롭으로 구성된 내부 레지스터(100)에서 행한다. 내부 레지스터(100)로부터 판독한 데이터는 시프트 레지스터(200)에 출력되고, 사이클마다 데이터를 연산기(201)에 공급한다. 또한,움직임 벡터에 따라서 필터의 연산 방향을 변경하는 기구를 구비하고, 동일 명령으로 수평 필터나 수직 필터를 행함으로써, 분기 명령 등에 의한 성능 저하를 방지한다.
Figure P1020080061002
필터 처리, 레지스터, 연산 유닛, 움직임 벡터, 연산기, 화상 필터링

Description

연산 유닛 및 화상 필터링 장치{OPERATION UNIT AND IMAGE FILTERING DEVICE}
본 발명은 화상의 필터링 처리를 행하는 명령, 회로를 포함하는 프로세서에 관한 것이다.
동화상에서는, 프레임 내의 물체가 움직이거나, 카메라가 팬을 하는 등에 의해, 프레임간에서 움직임이 있어, 전의 프레임과 현재의 프레임은 완전히 동일한 것은 아니다. 그러나,전후의 화상에서의 상관은 크다.
움직임 보상이란, 프레임간 예측에서,전후의 프레임 화상과 비교하여 어느 방향으로 어느 정도 움직이고 있는가 라는 벡터 데이터를 사용하여, 화상의 해석을 행하는 기술을 말한다. 움직임 보상에 의해, 화상 데이터의 압축도를 높이는 것에 성공하였다.
대부분의 화상 프레임 부호화 방식에서는 화상 프레임을 소정의 블록으로 분할하여 처리를 행한다. 이 블록 사이즈를 작게 하면 상세한 예측이 가능하다. 한면으로 블록수가 증가하고, 이것에 의해, 움직임 벡터 정보 자체의 수가 늘어나 부호량이 늘어나는 경향이 있다. 그 결과 큰 처리 능력이 하드웨어에 요구된다.
또한, 화상을 저 비트 레이트로 부호화하는 경우, 어떠한 필터링 처리도 행하지 않으면 복호 화상에 블록 왜곡이 생긴 상태 그대로 프레임 메모리에 저장된다. 이 왜곡이 생긴 화상을 참조하여 다음 프레임을 복호하면, 더욱 화질의 열화가 전파한다는 문제가 있다. 이, 화질 열화의 전파 방지를 위해서, 필터링 처리가 이루어져 블록 왜곡의 발생을 방지하는 것은 필요 불가결하다. 그러나, 필터링 처리의 해결에도 큰 처리 능력이 하드웨어에 요구된다.
종래, 화상의 필터링 처리를 행하는 경우, 필터를 실시하는 탭수의 클럭 주기(사이클)가 필요하여, 클럭 주기마다 데이터를 메모리로부터 공급할 필요가 있다. 또한, 움직임 벡터에 의한 탐사 위치에 따라 수평 필터와 수직 필터가 변경되고, 그때마다 필터 처리의 방향을 판정하고, 필터 처리에 있던 프로그램으로 분기시킬 필요가 있었다. 이때, 사이클마다 화소 데이터를 메모리로부터 판독하는 것은 판독 사이클수를 필요 이상으로 소비하게 되어, 처리 성능이 저하한다.
특허 공개 2002-8025호 공보(이하 특허 문헌 1)에서는, 메모리로부터의 데이터 리드를 삭감하고, 입력 버퍼 등에서 데이터를 축적하여 연산기에 공급하는 방법을 제시한다.
[특허 문헌 1] 특허 공개 2002-8025호 공보
그러나, 화상의 필터링 처리시에 화소 데이터를 메모리로부터 판독하고 있던 것에서는 판독 사이클수를 필요 이상으로 소비하게 되어 처리 성능이 저하한다.
또한, 움직임 벡터에 따라서 수평 필터와 수직 필터를 변경할 필요가 있지만, 화상 이미지의 판독 방법도 변경할 필요가 있다. 그 때문에 분기 처리를 요하게 된다.
최근의 프로세서에서는 분기 예측에 의해 처리 성능의 저하를 방지하고는 있지만, 화상 처리의 경우 분기 예측은 어렵기 때문에 성능 저하는 현저하다.
또한, 회로 실장상의 문제로부터, 이들 필터링 처리에 대하여, 충분한 내부 레지스터를 준비할 수 없다는 점도 고려된다.
본 발명은, 상기 문제를 해결하기 위해 이루어진 것으로, 그 목적은 필터 처리를 고속으로 행할 수 있는 연산 유닛 및 화상 필터링 장치를 제공하는 것이다.
본 발명의 상기 및 기타 목적과 신규 특징은, 본 명세서의 기술 및 첨부 도면으로부터 명백해질 것이다.
본원에 있어서 개시되는 발명 중, 대표적인 것의 개요를 간단히 설명하면, 다음과 같다.
본 발명에 따른 연산 유닛은, 제1 주기에서 하나의 특정 처리를 행하는 제1 연산 처리와, 사이클이 서로 다른 제2 주기에서 다른 특정 처리를 행하는 제2 연산 처리를 실행 가능한 연산기를 복수 포함하는 SIMD 연산기와, 명령 디코더를 포함하며, 투입된 명령 코드를 따라 명령 디코더는 복수의 연산기 중 동작하는 수를 규정할 수 있는 것을 특징으로 한다.
이 연산 유닛에서, 상기 SIMD 연산기는 시프트 레지스터를 더 포함하며, 투 입된 명령 코드를 따라 명령 디코더는 시프트 레지스터에 데이터를 투입하는 것을 특징으로 하여도 된다.
또한, 이 연산 유닛은, 내부 레지스터와 인덱스 생성기를 더 포함하며, 명령 디코더로부터의 입력에 의해 내부 레지스터의 어드레스를 출력하고, 이 어드레스를 참조하여 내부 레지스터의 데이터를 시프트 레지스터에 투입하여도 된다.
또한, 이 연산 유닛의 제1 주기는 소정수의 클럭 주기로 구성되며, 제1 주기마다 제1 연산 결과를 출력하고, 제1 주기 중의 각 클럭 주기의 종료 후에 상기 시프트 레지스터 내의 데이터를 시프트하여도 된다. 이 연산 유닛은, 제1 연산 결과를 내부 레지스터에 저장하여도 된다.
또한, 이 연산 유닛의 제2 주기는 소정수의 클럭 주기로 구성되며, 제2 주기마다 제2 연산 결과를 출력하고, 제2 주기 중의 각 클럭 주기의 종료 후에 시프트 레지스터 내의 데이터를 시프트하여도 된다. 이 연산 유닛이 제2 연산 결과를 내부 레지스터에 저장하여도 된다.
이 연산 유닛은 제2 연산 처리에 제1 연산 결과를 상기 데이터로서 투입하여도 된다.
본 발명에 따른 화상 필터링 장치는, 시프트 레지스터와, 제1 주기에서 하나의 특정 처리를 행하는 제1 연산 처리와 제1 주기와 서로 다른 제2 주기에서 다른 특정 처리를 행하는 제2 연산 처리를 실행 가능한 연산기를 복수 포함하는 SIMD 연산기와, 명령 디코더와, 내부 레지스터와, 인덱스 생성기와, 움직임 벡터 레지스터를 포함하며, 투입된 명령 코드에 따라 명령 디코더는 복수의 연산기 중 동작하는 수를 규정하여, 투입된 명령 코드에 따라 명령 디코더는 움직임 벡터 레지스터에 움직임 벡터 데이터를 축적하고, 명령 디코더의 출력 및 움직임 벡터 데이터를 참조하여 인덱스 생성기는 내부 레지스터의 어드레스를 출력하며, 어드레스를 참조하여 내부 레지스터의 데이터를 시프트 레지스터에 투입하고, SIMD 연산기가 연산한다.
본 발명에 따른 화상 필터링 장치는, 시프트 레지스터와, 제1 주기에서 하나의 특정 처리를 행하는 제1 연산 처리와 제1 주기와 서로 다른 제2 주기에서 다른 특정 처리를 행하는 제2 연산 처리를 실행 가능한 연산기를 복수 포함하는 SIMD 연산기와, 복수의 움직임 벡터 데이터가 축적된 움직임 벡터 레지스터와, 명령 디코더와, 내부 레지스터와, 인덱스 생성기를 포함하며, 투입된 명령 코드에 따라 명령 디코더는 복수의 연산기 중 동작하는 수를 규정하여, 명령 디코더로부터의 출력에 따라 움직임 벡터 레지스터는 적절한 움직임 벡터 데이터를 인덱스 생성기에 출력하고, 명령 디코더의 출력 및 상기 움직임 벡터 데이터를 참조하여 인덱스 생성기는 내부 레지스터의 어드레스를 출력하며, 어드레스를 참조하여 내부 레지스터의 데이터를 시프트 레지스터에 투입하고, SIMD 연산기가 연산한다.
본원에 있어서 개시되는 발명 중, 대표적인 것에 의해 얻어지는 효과를 간단히 설명하면 이하와 같다.
본 발명에 따른 연산 유닛 및 화상 필터링 장치는, 하드웨어의 구성에 관계없이, 내부 레지스터에 화상 데이터를 축적하고, 그 데이터를 연산기에 투입함으로 써 효율적으로 처리를 실행하여, 메모리에의 데이터 액세스 삭감을 도모할 수 있다.
또한, 움직임 벡터를 고려한 필터 처리를 행함으로써 분기 처리를 없애고, 명령 캐쉬에의 액세스를 삭감하는 연산 유닛 및 화상 필터링 장치를 제공할 수 있다.
또한, 메모리에의 데이터 액세스나 명령 캐쉬에의 명령 펫치 액세스가 삭감됨으로써, 소비 전력을 억제하는 것이 가능해져서, 환경을 배려한 연산 유닛 및 화상 필터링 장치를 제공하는 것이 가능하게 된다.
본 발명의 실시예에 대하여, 도면을 참조하여 설명한다.
<상정하는 처리에 대하여>
우선 본 발명이 상정하는 움직임 보상 예측 처리에 대하여 설명한다.
움직임 보상 예측을 행할 때에는 참조 픽쳐의 화소값으로부터 정수 화소 이하의 화소 정밀도의 신호를 보간에 의해 생성하는 것이 일반적이다. MPEG-2나 MPEG-4에서는 1/2 화소 정밀도까지의, H.264/AVC에서는 1/4 화소 정밀도까지의 움직임 보상이 가능하도록 설계되어 있다.
H.264/AVC에서는 1/2 단위 화소(하프픽셀)를 도출할 때와, 1/4 단위 화소(쿼터픽셀)를 도출할 때에는 도출 수순이 2단계로 분리된다. 우선, 최초로 참조 화상의 데이터로부터 1/2 단위 화소의 데이터를 계산식으로 구한다(6탭 FIR 필터 처리). 그리고, 참조 화상 및 6탭에서 도출한 1/2 단위 화소로부터 1/4 단위 화소 및 3/4단위 화소를 도출한다(2탭 필터 처리).
도 1은 정수 화소로부터 6탭 FIR 필터 처리 및 2탭 필터 처리의 처리 내용을 표시하는 개념도이다. 도 1에서는 ○로 표시된 A1이 도출 대상으로 되는 1/2 화소이며, □로 표시된 B1, B2, B3, B4, B5, B6이 참조 화소(정수 화소)이다.
여기서, 1/2 단위 화소 A1을 도출할 때에는 전후하는 정수 화소 B1, B2, B3, B4, B5, B6의 화소로부터 이하의 수학식을 이용하여 계산한다.
Figure 112008046146148-PAT00001
또한,2탭 처리에서는,△로 표시된 1/4 단위 화소 C1을 이하와 같이 도출한다.
Figure 112008046146148-PAT00002
이상에 의해, 가로 8화소×세로 8화소의 데이터를 쿼터픽셀 단위로 처리할 때에는, 참조 화상으로서 가로 14화소×세로 14화소의 데이터가 처리에 필요해진다.본 발명에서도 이것은 마찬가지이다.
여기서, 14화소분의 데이터를 일괄적으로 메모리에 기억하여, 처리할 수 있으면 문제는 없지만, 14화소분(본 발명에서는 1화소 1바이트를 상정)의 연산기를 준비하는 것은 현실적으로는 회로 실장 규모상의 문제로부터 곤란한 경우가 많다.
도 2는 가로 방향의 6탭 FIR 필터 처리에 의해, (-1/2, -1)부터 (7+1/2, 8) 까지의 가로 9화소, 세로 10화소의 화상을 구하는 필터 처리를 도시하고 있다.
전술한 바와 같이, 화면 전체의 움직임 보상에 있어서는, 가로 14화소×세로 14화소의 데이터를 참조 화상(600)으로서 준비할 필요가 있다. 그러나, 실제로는, 이들 영역 전체를 한번의 데이터 판독으로 처리하도록 하면, 데이터 버스 폭 등의 균형에서 실장상 문제가 생기는 경우도 있다. 이것에 대하여, 이 가로 방향의 6탭FIR 필터 처리에 있어서는, (-3, -1), (10, -1), (10, 8), (-3, 8)로 둘러싸인 가로 14화소×세로 10화소를 참조한다. 따라서, 이들 화상을 내부의 레지스터 등에 일단 읽어들인다.
8개의 연산기를 이용하여 이 가로 9화소, 세로 10화소의 가로방향의 1/2 단위 화소(하프픽셀) 화상의 계산을 행할 때에, (0, 0)을 기점으로 하여, (-1/2, -1), (6+1/2, -1), (6+1/2, 6), (-1/2, 6)으로 둘러싸이는 화상(500; 점선으로 둘러싸인 범위)을 구한다. 화상(500)의 도출을 위해서는, 입력 화상(600)의 (-3, -1)부터 (9, -1), (9, 6), (-3, 6)으로 둘러싸인 화상 범위의 정수 화소의 데이터를 이용한다. 즉, 좌표 (-1/2, -1)은 (-3, -1)부터 (3, -1)까지의 6화소를 수학식 1에 대입하여 산출한다. 또한,(1/2, -1)부터 (7+1/2, -1), (7+1/2, 6), (1/2, 6)까지로 둘러싸인 화상 범위(501; 일점쇄선으로 둘러싸인 범위)를 구하기 위해서도, 가로 화소의 합계 8화소를 1라인으로서 산출한다.
마찬가지로, (-1/2, 0)을 기점으로 하는 가로 8화소×세로 8화소의 화상(502; 실선으로 둘러싸인 범위), (1/2, 0)을 기점으로 하는 가로 8화소×세로 8화소의 화상(503; 이점쇄선으로 둘러싸인 범위), (-1/2, 1)을 기점으로 하는 가로 8화소×세로 8화소의 화상(504; 세점선으로 둘러싸인 범위), (1/2, 1)을 기점으로 하는 가로 8화소×세로 8화소의 화상(505; 가는 실선으로 둘러싸인 범위)에서도 마찬가지의 처리를 행한다.
이들 결과로부터, 가로 9화소, 세로 10화소의 가로 방향의 1/2단위 화소(하프픽셀)의 데이터를 구할 수 있다.
도 3은 세로 방향의 6탭 FIR 필터 처리를 설명하기 위한 도면이다. (-1, -1/2)부터 가로 10화소, 세로 9화소의 화상을 구하는 필터 처리를 도시하고 있다. 도 2와 마찬가지로 (0, 0)을 기점으로 한 경우, (-1, -1/2)부터의 가로 8화소, 세로 8화소의 화상(510; 점선으로 둘러싸인 범위)을 구하기 위해서는, 입력 화상(600)의 (-1, -3)부터 (6, -3), (6, 9), (-1, 9)로 둘러싸인 화상 범위의 정수 화소의 데이터를 이용한다. 즉, 세로 방향에서도 (-1, -1/2) 도출 시에는 (-1, -3), (-1, -2), (-1, -1), (-1, 0), (-1, 1), (-1, 2)의 6화소분의 데이터를 수학식 1에 대하여 대입한다. 이 (-1, 1/2)을 기점으로 하는 가로 10화소, 세로 9화소의 화상(511; 실선으로 둘러싸인 개소)을 도출하기 위해서, 세로 화소는 합계 9화소를 1라인으로서 산출하고, 이 1라인의 데이터는 프로세서 내부의 레지스터에 저장된다.
아울러, (0, -1/2)을 기점으로 하는 화상(512; 일점쇄선으로 둘러싸인 개소), (0, 1/2)을 기점으로 하는 화상(513; 이점쇄선으로 둘러싸인 개소), (1, -1/2)을 기점으로 하는 화상(514; 세선으로 둘러싸인 범위), (1, 1/2)을 기점으로 하는 화상(515; 세파선으로 둘러싸인 범위)도 마찬가지의 처리로 구하고, 그 결과로서 가로 9화소, 세로 10화소의 세로 방향의 1/2 단위 화소의 데이터를 내부의 레지스터에 유지한다.
또한, 본 예에서는, 후술하는 경사 방향의 1/2 단위 화소(하프픽셀)를 이 세로방향의 1/2 단위 화소(하프픽셀)를 이용하여 도출함으로써, (-3, -1/2)부터 (10, -1/2), (10, 7+1/2), (-3, 7+1/2)의 화상(601)을 도출하고 있다.
이들 도출 결과를 기초로, 경사 방향에 대한 화소를 산출한다. 도 4는 이 경사 방향의 6탭 FIR 필터 처리를 설명하기 위한 도면이다. 이 경사 방향의 화소를 구하는 경우에도 6탭 FIR 필터 처리를 행하지만, 도 2의 가로 방향의 필터 처리 결과 또는 도 3의 세로 방향의 필터 처리 결과를 이용하여 산출한다.
경사 방향에서의 필터 처리로 구하는 화상은 (-1/2, -1/2)을 기점으로 하는 화상(520; 파선으로 둘러싸인 개소), (1/2, -1/2)을 기점으로 하는 화상(521; 세파선으로 둘러싸인 개소), (-1/2, 1/2)을 기점으로 하는 화상(522; 일점쇄선으로 둘러싸인 범위) 및 (1/2, 1/2)을 기점으로 하는 화상(523; 실선으로 둘러싸인 범위)이다. 이것을 합성하여 경사 방향의 가로 9화소, 세로 9화소의 화상을 작성한다.이 때, 세로 방향의 필터 처리 결과로부터 구하기 위해 필요한 참조 화소 데이터는 (-3, -1/2)부터 (10, 7+1/2)의 화상(601)이다. 이 화상(601)에 대하여, 가로 방향의 6탭 FIR 필터 처리를 행함으로써, 경사 방향의 가로 9화소, 세로 9화소의 필터 화상을 구할 수 있으며, 이 결과를 프로세서 내부의 레지스터에 보관한다.
산출한 세로, 가로, 경사 방향의 화상 데이터를 이용하여, 1/4 단위 화소(쿼터픽셀)의 화상을 구한다. 1/4 단위 화소는 수학식 2를 이용하여 산출한다. 그리 고 움직임 벡터에 의해 사용하는 화상 데이터가 결정된다.
도 5는 가로 4화소, 세로 4화소의 결과를 얻는 2회째의 필터 처리를 도시한다. 1 회째의 필터 처리는 6탭 FIR 필터 처리인 것에 대하여, 2 회째의 필터 처리는 2탭 필터 처리이다. 그 때문에,4×4화소의 화상을 구하기 위해서 9×9화소의 데이터를 사용한다. 내부 레지스터는 9바이트 폭의 데이터를 1엔트리에 저장하고, 계 9엔트리의 내부 레지스터에 참조 화상(610)을 저장한다. 도 5에 도시한 기준으로 되는 좌표로부터 (1/2, 1/2)의 위치의 화상을 얻는 방법은, 참조 화상(610)에서 엔트리 2 내지 5의 화상 데이터(700)를 사용하여, 가로 방향의 6탭 필터를 행하고, 하프픽셀 화상(611)을 생성한다. 또한, 모든 엔트리를 사용하여 세로 방향의 6탭 필터를 행하지만, 하프픽셀 화상(612)은 좌측으로부터의 바이트 위치에서 3바이트째부터 6바이트째만을 사용한다. 하프픽셀 화상(611, 6120)을 사용하여, 2회째의 필터 처리인 2탭 필터를 행하고, 쿼터픽셀 화상(613)을 생성한다. 이와 같이 내부 레지스타에 1라인의 데이터를 보존하고 있기 때문에, 판독과 연산을 용이하게 실행하는 것이 가능하게 된다.
본 발명은 이 일련의 처리를 한정된 하드웨어 자원을 이용하여 효율적으로 행하는 것을 고려하고 있는 것이다.
<제1 실시 형태>
도 6은 본 발명에 따른 연산 유닛(150)의 기본적인 데이터 플로우를 나타내는 개략도이며, 도 7은 이 연산 유닛(150)에 보내지는 명령(커맨드)의 데이터 형식을 나타내는 구성도이다. 또한, 도 8은 이 연산 유닛(150)을 탑재한 프로세서의 개략도이다.
이 연산 유닛(150)은 내부 레지스터(100), 명령 디코더(101), SIMD(Single Instruction Stream, Multi Data Stream) 연산기(102), 데이터 얼라이너(103), 움직임 벡터 레지스터(104), 인덱스 생성기(105)의 각 모듈로 구성된다. 또한, 이 연산 유닛(150)을 이용한 프로세서는, 연산 유닛(150)의 이외에 명령 캐쉬(151), 데이터 캐쉬(152), 메모리 I/F(153), I/O(154), 내부 버스(155)로 구성된다.
내부 레지스터(100)는 데이터 얼라이너(103)에 의해 정렬·구분된 참조 데이터를, 데이터마다 일시적으로 유지하기 위한 레지스터군이다. 전술한(상정하는 처리에 대하여)에서 설명한 프로세서 내부의 레지스터는 이곳을 상정하고 있다. 따라서, 본 발명에서는 가로 방향, 세로 방향, 경사 방향의 6탭 FIR 필터 처리를 행할 때 이용하는 참조 화상 데이터나 2탭 필터 처리를 행하기 위한 6탭 FIR 필터 처리 후의 화소 데이터를 보관하는, 등이 본 레지스터의 주요한 용도이다.
명령 디코더(101)는 명령 캐쉬로부터 송신되는 커맨드를 해독하고, SIMD 연산기(102), 움직임 벡터 레지스터(104), 인덱스 생성기(105)에 대하여 처리를 지시하기 위한 모듈이다. 또한, 여기서 커맨드를 해석하여, 움직임 벡터 레지스터(104)에 데이터를 기입하는 처리도 행한다.
SIMD 연산기(102)는 SIMD 처리를 취급하기 위한 연산기이다. 여기서 SIMD 처리란, 하나의 명령(커맨드 세트)에서, 복수의 데이터를 취급하는 처리 방식을 말하며, 대량의 데이터에 동종의 처리를 행할 때 이용된다. SIMD 연산기(102)는 시프트 레지스터(200), 연산기(201), 연산 결과 레지스터(202)로 구성된다. 본 발명 에서는, 하프픽셀이나 쿼터픽셀의 도출에, 복수의 참조 화소로부터, 한번에 복수의 결과를 도출할 목적으로, 하나의 커맨드로 처리를 지시하는 것을 목표로 한 것이다.
본 발명에서는,SIMD 연산기(102)는 전술한 수학식 1 및 수학식 2를 처리할 수 있으면 된다. 다만, 이 이외의 기능을 갖게 하여, 보다 다용도를 갖게 하여도 문제는 없다.
데이터 얼라이너(103)는 데이터 캐쉬(152) 또는 버스 I/F로부터 송신되는 데이터를 유의의 데이터로 절단하고, 내부 레지스터(100)에 기억시키기 위한 모듈이다.
움직임 벡터 레지스터(104)는, 명령 디코더(101)가 커맨드 내로부터 움직임 벡터의 정보를 읽어내고, 그것을 움직임 벡터 데이터로서 일시적으로 축적하기 위한 레지스터이다.
인덱스 생성기(105)는, 내부 레지스터(100)에 축적된 참조 데이터 중 어느 하나를 연산 대상으로 하거나,SIMD 연산기(102)의 시프트 레지스터(200)의 시프트량을 어느 정도로 할지를 지표하는 인덱스를 생성하는 모듈이다. 명령 디코더(101)로부터의 출력 및 움직임 벡터 레지스터(104)에 축적된 움직임 벡터 데이터를 참작하여 내부 레지스터(100)의 어드레스나 레지스터 번호를 특정하여 출력한다.
명령 캐쉬(151)는 내부 버스(155)에 접속되어 있으며, 명령 코드는 내부 버스(155)를 경유하여 공급된다. 그리고 명령 캐쉬(151)에 입력된 명령 코드는, 연 산 유닛(150)에 보내진다.
데이터 캐쉬(152)는 연산 유닛(150)이 필요로 하는 데이터를 공급하는 모듈이다. 데이터 캐쉬(152)에 해당하는 데이터가 없는 경우에는 메모리 I/F(153)를 통하여 외부 메모리(도시하지 않음)로부터 필요로 하는 데이터를 연산 유닛(150)이 판독한다.
메모리 I/F(153)는 외부 메모리(160)로부터 명령 코드나 데이터 등의 공급을 받기 위한 인터페이스부이다.
I/O(154)는 도시하지 않은 외부 프로세서 등과의 접속을 행할 때의 인터페이스부이다.
내부 버스(155)는 프로세서 중의 각 모듈과의 접속을 행하는 공용의 데이터통신로를 말한다.
이하 이 구성하에서의 동작에 대하여 설명한다.
명령 캐쉬(151)에 저장되어 있는 커맨드를 명령 디코더(101)가 펫치하고, 그 디코드 결과에 의해, 내부 레지스터(100)에 입력하기 위해, 참조 화상 데이터(정수화소 데이터)를 데이터 캐쉬(152)나 외부 메모리로부터 데이터 얼라이너(103)에 전송한다.
통상적으로, 데이터 캐쉬나 버스 I/F로부터의 데이터는 2의 누승의 데이터 폭이다. 그러나, 내부 레지스터(100)의 데이터 폭이나 SIMD 연산기(102)의 연산기의 수는 반드시 2의 누승에 한정되지 않으며, 실장 조건 등에 의해 정해진다. 명령 디코더(101)의 제어에 의해, 데이터 얼라이너(103)는 참조 화상 데이터(정수 화 소 데이터)를 이하와 같이 처리한다.
내부 레지스터(100)의 데이터 폭에 충족하지 않는 경우, 데이터 얼라이너(103)는 수취한 데이터를 지시된 데이터 폭으로 될 때까지 일단 유지하고, 데이터 캐쉬 또는 버스 I/F로부터의 데이터를 대기한다. 명령 디코더(101)에 지시된 데이터 폭으로 된 경우에는, 데이터 얼라이너(103)는 내부 레지스터(100)에 참조 화상 데이터를 기입한다.
명령 디코더(101)에 의해, 내부 레지스터(100)에 액세스를 행하기 위한 기준 인덱스 번호(300)와, 움직임 벡터 레지스터(104)에 저장한 움직임 벡터 데이터(305)에 의해, 내부 레지스터(100)의 인덱스 번호를 인덱스 생성기(105)에 의해 생성한다.
생성된 인덱스 번호에 의해 선택된 데이터는 SIMD 연산기(102)의 시프트 레지스터(200)가 수취한다. 또한 명령 디코더(101)에 의해 연산 제어 신호(301)를 출력하고, SIMD 연산기(102)의 연산기(201)에 보내진다.
이때의 데이터는, 이미 데이터 얼라이너(103)로 조정된 후의 것이며, 연산기(201)가 연산 명령을 실행하는데 필요한 데이터 폭에 맞춰 실장되어 있다. 즉, 본 실시 형태와 같이 연산기(201)가 8개 있는 것이면, SIMD 연산기(102)에 보내지는 데이터도 연산기 8개분의 것이 필요해진다.
또한, 이 연산기를 필요한 만큼 실장하면 회로 규모가 증대할 우려가 있다.따라서, 필요 성능을 고려하여 실장수를 삭감하는 것도 고려해야만 한다. 이 삭감에 의해서도 필요한 성능을 산출하는 것이 요구되는 것은 물론이다.
연산기(201)에 의해 연산한 라이트 백 데이터(302)가 2의 누승이 아닌 바이트수이었다고 하여도, 내부 레지스터(100)의 데이터 폭 이하이면, 라이트 백 데이터(302) 1 사이클에서 기입을 행하는 것이 가능하다.
이것에 의해, 연산 처리가 2의 누승이 아닌 데이터 폭을 필요로 한 경우에서도, 연산기(201)와 내부 레지스터(100)를 그 데이터 폭에 맞춤으로써 처리 성능을 향상시키는 것이 가능하다.
도 7은, 도 6의 연산 유닛(150)을 동작시키기 위한 명령 코드를 니모닉으로 기입한 경우를 도시하고 있다. 명령 코드는 연산기(201)의 처리 방법을 도시한 오피 코드(400), 연산 폭(401), 연산기(201)에 투입하는 연산 데이터를 저장하는 내부 레지스터(100)의 어디에 존재하는지를 나타내는 제1 소스 레지스터 번호(402), 제2 소스 레지스터 번호(403), 연산한 결과를 내부 레지스터(100)의 어디에 보관하는지를 나타내는 데스티네이션 레지스터 번호(404)로 구성된다.
이 명령 코드의 특징적인 개소는, 연산의 폭을 나타내는 연산 폭(401)의 필드를 갖는 점이다. 이 연산 폭(401)은 연산기(201)가 동작시키는 개수나, 내부 레지스터(100)의 데이터 폭을 나타내는 속성값이다. 단, 이 속성값의 상한은 연산기(201)의 개수나 내부 레지스터(100)의 데이터 폭에 제약되지 않는다. 이 경우, 2 사이클 이상 걸쳐 연산을 행하고, 그 결과를 출력한다.
본 발명의 니모닉은 데이터 폭을 기술할 필요가 있으며, 그것에 의해 명령 코드를 생성한다. 단, 연산 폭(401)은 반드시 기술할 필요는 없다. 오피 코드(400)에 의해 일의로 정해지는 경우에는 기술할 필요는 없다. 예를 들면, 8비트 의 가산 명령을 연산 폭 16 바이트, 즉 16 연산 병렬하는 경우에는, add8.w16으로 기술함으로써 표현하는 것을 상정하고 있다.
도 8은 도 6의 연산 유닛(150)을 탑재한 프로세서의 개략도이다. 기본적으로는 연산 유닛(150) 내부의 데이터 얼라이너(103)에 의해 데이터의 배열순을 변경하는 것을 상정하고 있기 때문에, 연산 유닛(150) 이외의 구조는 일반적인 프로세서의 구조와 다르지 않다.
연산한 결과를 스토어 명령 등에 의해 출력하는 경우, 데이터 캐쉬(152)에 일단 보내지거나, 내부 버스(155), 메모리 I/F(153)를 통하여 외부 메모리에서 유지된다.
또한, 비디오나 오디오 등의 저속 디바이스 등의 인터페이스인 I/O(154) 등과의 교환을 내부 버스(155) 경유로 행할 수도 있다.
도 9는 데이터 얼라이너(103)를 실현하는 방법 중 하나이다. 외부 메모리(160)는 64비트 폭으로, 내부 레지스터(100)는 80 비트 폭으로 한 경우를 도시한다.
명령 디코더(101)로부터의 커맨드에 의해, 바이트 인에이블 제어부(203)는 어드레스 신호를 생성한다. 이 어드레스 신호에 의해 외부 메모리(160)의 어드레스를 특정한다. 외부 메모리(160)로부터 판독하는 데이터를 내부 레지스터(100)에 기입할 때, 기입 타이밍인 인에이블 신호를 생성한다. 어드레스의 하위 비트에 의해 1회째의 외부 메모리(160)의 판독으로, 내부 레지스터(100)에 기입할 수 있는 위치를 판별 가능하다.
즉, 얼라인이 취해져 있는 외부 메모리 상의 데이터 라인(1000)은, 바이트 인에이블 제어부(203)에 의해, 내부 레지스터 데이터(1100)에 모든 데이터를 기입하는 것이 가능하다.
다음 사이클에서는, 내부 레지스터 데이터(1100)의 남은 데이터를 외부 메모리(160)의 데이터 라인(1001)으로부터 판독하여, 바이트 인에이블 제어부(203)에 의해 바이트 인에이블 신호(310)를 생성하고, 내부 레지스터 데이터(1100)에 기입을 행한다.
이때, 외부 메모리로부터 판독한 데이터 중, 내부 레지스터(100)에 기입을 행하지 않은 데이터에 관해서는 일시 유지하는 등에 의해, 차회의 액세스에서 사용 함으로써 판독 사이클을 삭감하는 것도 가능하다(어떻게 1차 유지하는 것인지는 도 9로부터는 불명확함).
도 10은 화상 처리로서 2회의 필터 처리를 행할 경우의 데이터 플로우를 도시한다. 도 10에서는,14 바이트의 데이터를 이용하여 6탭 필터 처리를 행하여, 세로, 가로, 경사 모두 9 바이트인 하프픽셀의 데이터를 생성한다. 그 후, 또한 그 9바이트의 데이터를 이용하여 2탭 필터 처리를 행하고, 그 결과 8 바이트인 쿼터픽셀의 데이터를 생성한다.
우선,14 바이트 폭 데이터(500) 중 적절하게 데이터를 SIMD 연산기(102)에 투입한다. 이때 9 바이트의 결과를 필요로 하기 때문에, SIMD 연산기의 8개의 연산기(201)를 동작시킨다.
6탭 FIR 필터 처리를 행하기 위해서, 데이터의 투입은 6사이클을 걸쳐 행하 고, 사이클마다 1바이트씩 어긋나게 하여 SIMD 연산기(102)에 투입한다. 이 때문에, 9바이트 + 6탭 -1의 바이트수가 필요해져서, 투입할 필요가 있는 바이트수는 14 바이트로 된다.
시프트 레지스터(200)에 의해 1바이트씩, 어긋나게 한 데이터를 SIMD 연산기(102)에 투입하는 것이 가능하며, 6 사이클 후에 9 바이트의 연산 결과를 얻는다. 이 연산 결과는 내부 레지스터(100)에 일단 다시 기입되고, 다음의 2탭 필터에서 다시 사용된다. 이때, 내부 레지스터(100)의 데이터 폭이 9 바이트가 아닌 경우, 9 바이트 이외의 부분은 어떠한 값이어도 된다.
내부 레지스터(100)에 보존된 9바이트의 데이터를, 다음의 2탭 필터 처리 때문에 연산기(201)에 투입한다. 이때, 연산기(201)을 8개 동작시킨다. 2 탭 필터 처리를 행하기 위해서, 1 사이클째는 선두의 8바이트를 투입하고, 다음 사이클에서 1바이트 시프트한 데이터를 투입한다. 2 사이클의 처리가 종료한 시점에서 8 바이트의 결과를 얻을 수 있고, 그 연산 결과(202)는 내부 레지스터(100)에 다시 기입된다. 이것에 의해,6탭 필터의 처리 후, 2탭 필터 처리를 실현하는 것이 가능하게 된다.
도 11은, 내부 레지스터(100)를 10 바이트 폭으로 정의한 경우의 14 바이트 폭의 데이터의 저장 방법을 도시하고 있다. 통상적으로는 14 바이트의 데이터 폭에 맞춰 내부 레지스터(100)의 데이터 폭을 규정하지만, 최대폭이 전체 처리에 대하여 극단적으로 사용 횟수가 적은 경우에는 내부 레지스터(100)의 회로 규모 삭감을 위해 복수의 레지스터에 걸쳐 저장함으로써, 회로 규모를 삭감하는 것이 가능하 다.물론, 이 경우 리드 포트수는 2로 된다.
레지스터 0과 레지스터 1에는 데이터(1300과 1301)가 보존되어 있으며, 화소 데이터 1의 14 바이트를 구성한다. 마찬가지로, 레지스터 2와 레지스터 3의 데이터(1302)와 데이터(1303)를 이용하여 화소 데이터 2의 14 바이트를 구성한다. 사용하는 경우, 예를 들면, 레지스터 4를 소스로서 지정하고, 데이터 폭 14와 니모닉 코드를 기술함으로써, 레지스터 4와 레지스터 5의 데이터를 시프트 레지스터(200)에 투입하는 것이 가능하다.
도 12는 10 바이트 폭의 내부 레지스터(100)에 14 바이트 폭의 데이터를 저장한 경우에 연산기에서의 필터 처리를 도시하고 있다.
화상 압축 기술에 의해, 6탭 필터 처리를 행한 후, 2탭 필터 처리를 행하도록 한 경우, 14화소로부터 9화소의 화상을 생성하고, 또한 2탭 필터 처리에 의해 8화소의 화상을 생성한다. 이와 같은 처리의 경우, 내부 레지스터(100)에 14화소분의 데이터를 유지할 필요가 있고, 1 라인째의 14화소의 화상 데이터 1 중, 상위 10바이트를 레지스터 0에 데이터(1300)를 보존하고, 하위 4 바이트는 레지스터 1에 데이터(1301)로서 보존한다. 이들 데이터는 SIMD 연산기(102)에 투입하고, 시프트 레지스터(200)에 의해 정형된다. 가로 방향의 6탭 필터 처리는, 14화소 데이터의 최초의 6화소로부터 구해진다. 그 때문에, 시프트 레지스터(200)에 의해 각 사이클에서 1 바이트씩 연산기(201)에 투입함으로써 구해지는 것이 가능하다. 6 사이클 후에 출력된 연산 결과(202)는, 내부 레지스터(100)에 라이트백되고, 다음 필터 처리에 투입된다.
이상과 같은 구성에 의해, 연산 처리가 2의 누승이 아닌 데이터 폭을 필요로 한 경우에서도, 연산기(201)과 내부 레지스터(100)을 그 데이터 폭에 맞춤으로써 처리 성능을 향상시키는 것이 가능하다.
<제2 실시 형태>
도 13은 움직임 벡터에 따라서 투입하는 데이터를 변경하고, 필터 처리를 1명령으로 행하는 것을 가능하게 한 연산 유닛의 데이터 플로우를 도시한다.
제1 실시 형태의 연산 유닛과 상위하는 개소는 움직임 벡터 레지스터(104)를 움직임 벡터 레지스터(170)로 치환하고, 상정되는 움직임 벡터의 처리를 버스 I/F로부터 기입할 수 있도록 한 것, 및, 인덱스 생성기(105)를 인덱스 생성기(171)로 변경한 점이다.
실제로는 H.264에서는 하나의 블록에 대한 움직임 벡터의 처리 패턴이 40-50정도의 처리로 한정된다.
따라서, 이 처리 패턴(움직임 벡터)을 데이터로서 모두 움직임 벡터 레지스터(170)에 기입할 수 있도록 해 둔다. 그리고, 이 움직임 벡터 레지스터(170)로부터 움직임 벡터 판정기(106)가 움직임 벡터를 추출하고, 움직임 벡터 판정기(106)로부터 적절한 처리를 행하도록 내부 레지스터(100)의 어드레스를 설정하고, SIMD 연산기(102)의 시프트 레지스터(200)에 설정하는 것을 가능하게 한다.
이하, 움직임 벡터 레지스터(170) 기입 후의 동작에 대해서 상세히 설명한다.
명령 디코더(101)에 의해 내부 레지스터(100)에 액세스를 행하기 위해서, 움 직임 벡터 선택 신호(304)에 의해 움직임 벡터 레지스터(170) 내로부터 적절한 데이터(움직임 벡터(305))를 선택하고, 움직임 벡터 판정기(106)의 적절한 움직임 벡터(305)를 참조한다.
또한, 명령 디코더(101)에 의해 출력되는 움직임 벡터 판정기 제어 신호(308)에 의해, 참조하고 있는 움직임 벡터(305)를 이용한 내부의 연산 방식을 변경한다. 예를 들면 2단계 필터 처리인 경우이면, 1단계째와 2단계째에서의 움직임 벡터(305)의 처리 방식을 변경하기 위해서 이용한다.
움직임 벡터 판정기(106)에 의해 결정된 오프셋 값과, 기본 인덱스 번호(300)를 가산하고, SIMD 연산기(102)에 입력하는 레지스터 데이터(303)를 선택한다. 선택한 데이터는 시프트 레지스터(200)가 수취한다. 그 후, 또한 명령 디코더(101)에 의해 연산 제어 신호(301)를 출력하고, SIMD 연산기(102)의 연산기(201)에 연산의 종류를 통지한다.
또한, 움직임 벡터 판정기(106)에 의해 시프트 레지스터(200)에 출력되는 제어 신호선(309)에 의해, 시프트 레지스터(200)로부터의 출력 데이터의 가중치 부여가 이루어지고, 그것을 이용하여 연산기(201)가 연산 처리를 행한다.
시프트 레지스터(200)의 데이터는 연산기(201)에 보내지지만, 이때 연산기(201)의 실장수는 연산 명령이 필요로 하는 데이터 폭에 맞춰 실장되어 있다. 즉, 연산 결과로서 9개의 연산 결과가 필요하면, 연산기(201)의 실장수도 9개로 된다. 이 연산기의 실장수는, 최대수를 실장하면 회로 규모가 증대할 우려가 있기 때문에, 필요 성능을 고려하여, 실장수를 삭감하는 것도 가능하다.
이와 같이 함으로써, 연산기(201)에 의해 연산한 라이트 백 데이터(302)가 2의 누승이 아닌 바이트수이었다고 하여도, 내부 레지스터(100)의 데이터 폭 이하이면 라이트 백 데이터(302)는 1 사이클에서 기입을 행하는 것이 가능하다.
이상, 본 발명자에 의해 이루어진 발명을 실시 형태에 기초하여 구체적으로 설명하였지만, 본 발명은 상기 실시 형태에 한정되는 것이 아니라, 그 요지를 일탈하지 않는 범위에서 다양하게 변경 가능한 것은 물론이다.
본 발명은 복수회의 필터 처리를 요하는 데이터 처리를 행할 때에 유효하다. 본서에서는 H.264AVC 등의 화상의 복호화, 부호화를 예로서 설명하였지만, 반드시 이것에 구애받지는 않으며, 음성 등의 처리에서도 적용 가능하다.
도 1은 6탭 FIR 필터 처리 및 2 탭 필터 처리를 설명하기 위한 개념도.
도 2는 본 발명에 의한, 가로 방향 6탭 FIR 필터 처리를 설명하기 위한 개념도.
도 3은 본 발명에 의한, 세로 방향 6탭 FIR 필터 처리를 설명하기 위한 개념도.
도 4는 본 발명에 의한, 경사 방향 6탭 FIR 필터 처리를 설명하기 위한 개념도.
도 5는 본 발명에 의한, 2탭 필터 처리를 설명하기 위한 개념도.
도 6은 본 발명의 제1 실시 형태에 따른 연산 유닛의 데이터 플로를 표시한 개념도.
도 7은 본 발명의 제1 실시 형태에 따른 연산 유닛에의 명령 코드의 구성을 표시한 구성도.
도 8은 본 발명의 연산 유닛을 이용한 프로세서의 구성을 표시한 구성도.
도 9는 본 발명의 연산 유닛에 포함되는 데이터 얼라이너에 의한 데이터의 정렬을 표시한 도면.
도 10은 본 발명의 제1 실시 형태에 따른 연산 유닛의 6탭 FIR 필터 처리 및 2탭 필터 처리의 흐름을 도시한 도면.
도 11은 내부 레지스터가 10 바이트 폭일 때에 본 발명의 제1 실시 형태에 따른 연산 유닛이 14 바이트인 데이터를 저장하는 것을 상정한 데이터의 저장 방법 을 도시한 개념도.
도 12는 도 11의 데이터를 본 발명의 제1 실시 형태에 따른 연산 유닛에 투입하는 방법을 도시한 도면.
도 13은 본 발명의 제2 실시 형태에 따른 연산 유닛의 데이터 플로를 표시한 개념도.
<도면의 주요 부분에 대한 부호의 설명>
100: 내부 레지스터
101: 명령 디코더
102: SIMD 연산기
103: 데이터 얼라이너
104: 움직임 벡터 레지스터
105: 인덱스 생성기
150: 연산 유닛
151: 명령 캐쉬
152: 데이터 캐쉬
153: 메모리 I/F
154: I/O
155: 내부 버스
200: 시프트 레지스터
201: 연산기
202: 연산 결과 레지스터
400: 오피 코드
401: 연산 폭
402: 제1 소스 레지스터 번호
403: 제2 소스 레지스터 번호
404: 데스티네이션 레지스터 번호

Claims (12)

  1. 제1 주기에서 하나의 특정 처리를 행하는 제1 연산 처리와, 상기 제1 주기와 서로 다른 제2 주기에서 다른 특정 처리를 행하는 제2 연산 처리를 실행 가능한 연산기를 복수개 포함하는 SIMD 연산기와, 명령 디코더를 포함하는 연산 유닛으로서,
    투입된 명령 코드에 따라서 상기 명령 디코더는 상기 복수의 연산기 중 동작하는 수를 규정가능한 것을 특징으로 하는 연산 유닛.
  2. 제1항에 있어서,
    상기 SIMD 연산기는 시프트 레지스터를 더 포함하며,
    투입된 명령 코드에 따라서 상기 명령 디코더는 상기 시프트 레지스터에 데이터를 투입하는 것을 특징으로 하는 연산 유닛.
  3. 제2항에 있어서,
    내부 레지스터와 인덱스 생성기를 더 포함하며,
    상기 명령 디코더로부터의 입력에 의해 상기 내부 레지스터의 어드레스를 출력하고, 상기 어드레스를 참조하여 상기 내부 레지스터의 데이터를 상기 시프트 레지스터에 투입하는 것을 특징으로 하는 연산 유닛.
  4. 제3항에 있어서,
    상기 제1 주기는 소정수의 클럭 주기에 의해 구성되며, 상기 제1 주기마다 제1 연산 결과를 출력하고, 상기 제1 주기 중의 각 클럭 주기의 종료 후에 상기 시프트 레지스터 내의 데이터를 시프트 하는 것을 특징으로 하는 연산 유닛.
  5. 제4항에 있어서,
    상기 제1 연산 결과를 상기 내부 레지스터에 저장하는 것을 특징으로 하는 연산 유닛.
  6. 제5항에 있어서,
    상기 제2 주기는 소정수의 클럭 주기로 구성되며, 상기 제2 주기마다 제2 연산 결과를 출력하고, 상기 제2 주기 중의 각 클럭 주기의 종료 후에 상기 시프트 레지스터 내의 데이터를 시프트하는 것을 특징으로 하는 연산 유닛.
  7. 제6항에 있어서,
    상기 제2 연산 결과를 상기 내부 레지스터에 저장하는 것을 특징으로 하는 연산 유닛.
  8. 제7항에 있어서,
    상기 제2 연산 처리에 상기 제1 연산 결과를 상기 데이터로서 투입하는 것을 특징으로 하는 연산 유닛.
  9. 시프트 레지스터와, 제1 주기에서 하나의 특정 처리를 행하는 제1 연산 처리와 상기 제1 주기와 서로 다른 제2 주기에서 다른 특정 처리를 행하는 제2 연산 처리를 실행 가능한 연산기를 복수개 포함하는 SIMD 연산기와, 명령 디코더와, 내부 레지스터와, 인덱스 생성기와, 움직임 벡터 레지스터를 포함하는 화상 필터링 장치로서,
    투입된 명령 코드에 따라서 상기 명령 디코더는 상기 복수의 연산기 중 동작하는 수를 규정하고,
    투입된 명령 코드에 따라서 상기 명령 디코더는 상기 움직임 벡터 레지스터에 움직임 벡터 데이터를 축적하고 또한 출력하며,
    상기 명령 디코더의 출력 및 상기 움직임 벡터 데이터를 참조하여 상기 인덱스 생성기는 상기 내부 레지스터의 어드레스를 출력하고, 상기 어드레스를 참조하여 상기 내부 레지스터의 데이터를 상기 시프트 레지스터에 투입하여, 상기 SIMD 연산기가 연산하는 것을 특징으로 하는 화상 필터링 장치.
  10. 시프트 레지스터와, 제1 주기에서 하나의 특정 처리를 행하는 제1 연산 처리와 사이클이 서로 다른 제2 주기에서 다른 특정 처리를 행하는 제2 연산 처리를 실행 가능한 연산기를 복수개 포함하는 SIMD 연산기와, 복수의 움직임 벡터 데이터가 축적된 움직임 벡터 레지스터와, 명령 디코더와, 내부 레지스터와, 인덱스 생성기를 포함하는 화상 필터링 장치로서,
    투입된 명령 코드에 따라서 상기 명령 디코더는 상기 복수의 연산기 중 동작하는 수를 규정하며,
    상기 명령 디코더로부터의 출력에 따라서 상기 움직임 벡터 레지스터는 적절한 움직임 벡터 데이터를 상기 인덱스 생성기에 출력하고,
    상기 명령 디코더의 출력 및 상기 움직임 벡터 데이터를 참조하여 상기 인덱스 생성기는 상기 내부 레지스터의 어드레스를 출력하며, 상기 어드레스를 참조하여 상기 내부 레지스터의 데이터를 상기 시프트 레지스터에 투입하여, 상기 SIMD 연산기가 연산하는 것을 특징으로 하는 화상 필터링 장치.
  11. 제1항에 있어서,
    움직임 벡터가 유지되는 움직임 벡터 레지스터를 포함하고, 제1 연산 처리와 제2 연산 처리시에, 명령 코드에 의해 지정된 움직임 벡터 레지스터를 선택 가능하게 하는 명령을 해독하는 디코더를 포함하는 연산 유닛.
  12. 제11항에 있어서,
    선택된 움직임 벡터 레지스터로부터 출력되는 움직임 벡터에 따라서, 제1 연산 처리, 또는 제2 연산 처리의 수직 필터를 행할지, 수평 필터를 행할지의 처리 방법을 변경하는 명령을 해독하는 디코더를 포함하는 연산 유닛.
KR1020080061002A 2007-07-05 2008-06-26 연산 유닛 및 화상 필터링 장치 KR20090004574A (ko)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
JP2007177299A JP2009015637A (ja) 2007-07-05 2007-07-05 演算ユニット及び画像フィルタリング装置
JPJP-P-2007-00177299 2007-07-05

Publications (1)

Publication Number Publication Date
KR20090004574A true KR20090004574A (ko) 2009-01-12

Family

ID=40213710

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020080061002A KR20090004574A (ko) 2007-07-05 2008-06-26 연산 유닛 및 화상 필터링 장치

Country Status (5)

Country Link
US (1) US20090013152A1 (ko)
JP (1) JP2009015637A (ko)
KR (1) KR20090004574A (ko)
CN (1) CN101339649A (ko)
TW (1) TW200915883A (ko)

Families Citing this family (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2010192983A (ja) * 2009-02-16 2010-09-02 Renesas Electronics Corp フィルタ処理装置及び半導体装置
US8171258B2 (en) * 2009-07-21 2012-05-01 Apple Inc. Address generation unit with pseudo sum to accelerate load/store operations
WO2013095597A1 (en) * 2011-12-22 2013-06-27 Intel Corporation Systems, apparatuses, and methods for performing an absolute difference calculation between corresponding packed data elements of two vector registers
US20190205738A1 (en) * 2018-01-04 2019-07-04 Tesla, Inc. Systems and methods for hardware-based pooling
CN110522441B (zh) * 2019-08-01 2022-03-08 北京今科医疗科技有限公司 一种心电数据处理方法及装置

Also Published As

Publication number Publication date
US20090013152A1 (en) 2009-01-08
TW200915883A (en) 2009-04-01
CN101339649A (zh) 2009-01-07
JP2009015637A (ja) 2009-01-22

Similar Documents

Publication Publication Date Title
KR100995205B1 (ko) 비디오 데이터 처리
US7623575B2 (en) Method and apparatus for sub-pixel motion compensation
KR101578052B1 (ko) 움직임 추정 장치 및 이를 구비하는 동영상 부호화 장치
US9800874B2 (en) Image decoding apparatus executing successive tile decoding and filtering around tile boundary
EP0767588A2 (en) Method and apparatus for calculating a pixel block from one or two prediction blocks
KR20090004574A (ko) 연산 유닛 및 화상 필터링 장치
US20100321579A1 (en) Front End Processor with Extendable Data Path
JPH11225334A (ja) Mpeg−2画像復号器の分散値算定アクセラレータ
US8014618B2 (en) High-speed motion compensation apparatus and method
US20050047502A1 (en) Method and apparatus for the efficient representation of interpolated video frames for motion-compensated coding
US6985528B2 (en) Apparatus and method for encoding and decoding moving picture using wavelet transformation and motion estimation
Zheng et al. A novel VLSI architecture of motion compensation for multiple standards
CN100469146C (zh) 视频图像运动补偿装置
KR20090102646A (ko) 에이치 닷 264 표준에 근거한 디코더용 움직임 보상기의 보간 연산기 구조
CN109089124B (zh) 一种面向运动估计的帧间数据重用方法及装置
CN102215404A (zh) 嵌入式系统中视频的解码方法和系统
Imen et al. Real time H264 HD intra coding process implementation on TMS320DM642 DSP
US8812572B2 (en) Filter processing device and semiconductor device
TWI423680B (zh) 可重組式移動補償架構之設計空間探索方法
KR19990065349A (ko) 움직임 보상 장치
US20100211623A1 (en) Filter processing module and semiconductor device
KR101742765B1 (ko) 인터폴레이터 및 인터폴레이터 픽셀 생성 방법
Duanmu et al. A vector based fast block motion estimation algorithm for implementation on SIMD architectures
KR100836534B1 (ko) 저전력 서브 픽셀 보간 블록 구조
Haihua et al. VLSI implementation of sub-pixel interpolator for h. 264/avc encoder

Legal Events

Date Code Title Description
A201 Request for examination
E902 Notification of reason for refusal
E601 Decision to refuse application