KR100434391B1 - 디에스피 프로세서 및 마이크로프로세서의 실시간영상데이터 처리를 위한 연산회로 및 그 연산방법 - Google Patents

디에스피 프로세서 및 마이크로프로세서의 실시간영상데이터 처리를 위한 연산회로 및 그 연산방법 Download PDF

Info

Publication number
KR100434391B1
KR100434391B1 KR10-2001-0043711A KR20010043711A KR100434391B1 KR 100434391 B1 KR100434391 B1 KR 100434391B1 KR 20010043711 A KR20010043711 A KR 20010043711A KR 100434391 B1 KR100434391 B1 KR 100434391B1
Authority
KR
South Korea
Prior art keywords
data
bit
register
result
adder
Prior art date
Application number
KR10-2001-0043711A
Other languages
English (en)
Other versions
KR20030011978A (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 학교법인대우학원
Priority to KR10-2001-0043711A priority Critical patent/KR100434391B1/ko
Publication of KR20030011978A publication Critical patent/KR20030011978A/ko
Application granted granted Critical
Publication of KR100434391B1 publication Critical patent/KR100434391B1/ko

Links

Classifications

    • 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/38Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
    • G06F7/46Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using electromechanical counter-type accumulators
    • 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)
  • Theoretical Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Physics & Mathematics (AREA)
  • Computing Systems (AREA)
  • Signal Processing (AREA)
  • Multimedia (AREA)
  • Computational Mathematics (AREA)
  • Mathematical Analysis (AREA)
  • Mathematical Optimization (AREA)
  • Pure & Applied Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • Complex Calculations (AREA)

Abstract

본 발명은 DSP(Digital Signal Processor) 및 마이크로 프로세서 상에서 영상 신호처리를 위해 영상 데이터의 DCT(Discrete Cosine Transform)와 같은 벡터 연산 및 움직임 추정 알고리즘에서의 SAD(Sum of Absolute Differences) 값을 효과적으로 연산할 수 있도록 하는 연산 방법 및 그 회로에 관한 것이다.

Description

디에스피 프로세서 및 마이크로프로세서의 실시간 영상데이터 처리를 위한 연산회로 및 그 연산방법{The architecture and the method to process image data in real-time for DSP and Microprocessor}
본 발명은 DSP(Digital Signal Processor) 및 마이크로프로세서 상에서 영상 신호처리를 위해 영상 데이터의 DCT(Discrete Cosine Transform)와 같은 벡터 연산 및 움직임 추정 알고리즘에서의 SAD(Sum of Absolute Differences) 값을 효과적으로 연산할 수 있도록 하는 연산 방법 및 그 회로에 관한 것이다.
최근 멀티미디어 데이터의 처리와 통신이 요구되면서 방대한 양의 영상 데이터 처리를 위해 압축 알고리즘 영역이 큰 비중을 차지하게 되었다. 영상압축의 처리과정은 매우 복잡한 다중 처리과정을 요구하며 실시간 영상처리에 있어서 가장 연산량이 많은 과정이다. 따라서, 기존의 DSP 칩으로는 영상압축의 실시간 처리가 불가능하여 새로운 아키텍쳐의 개발이 필수적이므로 특수 목적용의 멀티미디어 DSP 칩들이 개발되었다.
DCT는 영상압축 기술에서 가장 많이 사용되는 영상변환 알고리즘으로 JPEG(Joint Photographic Experts Group) 및 MPEG(Moving Picture Experts Group)에서 허프만(Huffman) 부호화를 수행하기 전에 사용된다. 2차원 M ×N 영상에 대한 DCT는 수학식1과 같다.
여기서,
수학식1에서 보는 바와 같이 DCT는 1차원적으로 처리하려면 2 ×M ×N번의 곱셈과 (M-1)(N-1)번의 덧셈이 필요하다. 곱셈기는 하드웨어가 매우 크고 계산 속도가 느리기 때문에 연산량을 줄이기 위하여 행렬분리 계산방법(row column decomposition)과 첸(Chen)의 알고리즘을 많이 사용한다. 행렬 분리 계산은 행 단위로 1차원 DCT를 수행한 다음 이 결과를 열 단위로 1차원 DCT를 다시 수행함으로써 2차원 DCT의 결과를 얻는다. 상기 첸(Chen)의 알고리즘은 코사인(Cosine)의 주기 특성을 이용하여 불필요한 중복 계산을 줄인 것으로 DCT 행렬식인 수학식2는 수학식3과 수학식4로 표현할 수 있다. 상기 수학식2의 계수 행렬을 보면 중앙열을 기점으로 홀수(odd), 짝수(even) 행 그룹에 따라 좌우 대칭임을 알 수 있고, 따라서 수학식3과 수학식4로 나누어 표현 가능하므로 수학식2에 비해 연산수가 줄어드는 것을 알 수 있다. 수학식5와 수학식6은 IDCT 결과를 나타낸 것이다.
여기서,이다.
MPEG 알고리즘의 부호화 과정 중 가장 계산량이 많은 과정은 움직임 벡터를구하는 과정이며 따라서 부호화 과정이 복호화 과정보다 많은 계산량을 요구한다. 움직임 벡터는 여러 가지 방법으로 구할 수 있고 그 방법에 대한 표준은 없지만 가장 일반적인 방법은 BMA(Block Matching Algorithm)로서 수학식7과 같이 비교하고자 하는 영상(Picture)에서 현재 부호화하는 영상의 매크로(Macro) 블록을 이동시키면서 SAD 값을 구하고, 움직임 벡터(Motion Vector:MV)는 수학식8과 같이 SAD 값 중에 최소값을 구한다. 이 과정 역시 종래의 DSP 칩으로는 실시간 처리가 어려운 과정이다.
종래의 고정소수점 DSP 칩인 DSP56100, DSP1610, ADSP2100 및 TMS320C6x는 범용 DSP 프로세서로 벡터 연산 및 BMA의 SAD 연산을 처리하기 위한 특수 연산 구조를 가지고 있지 않기 때문에 자체 내장한 곱셈기 및 덧셈기와 쉬프트 연산기를 사용하여 데이터를 처리하고 결과값을 레지스터에 저장하는 과정을 반복함으로써 방대한 양의 연산을 수행한다. 따라서 다량의 데이터를 가지며 이것의 처리를 위해 많은 연산량을 요구하는 영상 및 멀티미디어 데이터를 실시간으로 고속 처리하기 위해 새로운 고성능 멀티미디어 DSP 칩들이 개발되었다.
썬(Sun)사의 Ultrasparc의 멀티미디어 전용 VIS(Visual Instruction Set) 명령어 집합은 움직임 추정 알고리즘을 지원하기 위해 두 64비트 오퍼런드 간의 8비트 단위의 차의 절대값을 구하는 Pdist 명령어를 가지고 있으며 필립스(Philips)사의 트라이미디어(TriMedia)도 이와 같은 연산을 하는 ume8ii 명령어를 가지고 있다. 이 명령어를 처리하기 위한 연산 구조는 8개의 8비트 뺄셈기와 덧셈기, 그리고 감산 연산 후 음수 값에 대한 절대값을 구하는 연산기로 이루어져 있다. 그러나 입력 데이터와 결과 저장에 사용되는 레지스터의 크기가 64비트라는 점에서 멀티미디어 데이터(32비트) 처리에 있어 효율성이 떨어진다. 휴렛팩커드(Hewlett Packard)사의 PA-RISC의 MAX-2 명령어 또한 움직임 추정 알고리즘에서의 두 데이터간의 차의 절대값을 구하는 연산을 지원한다. 그러나 각 입력 데이터에 대해 각각의 연산을 수행하기 때문에 다수의 데이터를 처리하는 데 있어 방대한 양의 연산을 처리해야함으로 연산량이 많아지는 단점이 있다.
인텔(Intel)사의 펜티엄(Pentium) 프로세서의 MMX 명령어 집합에서 지원하는 PMADDWD 경우 벡터 연산을 수행하는 데 있어 종래 DSP 프로세서들 보다 효율적인 구조(16 ×16 곱셈기 2개, 32비트 덧셈기 및 데이터 저장용 64비트 레지스터 3개)로서 연산 사이클 수를 줄이고 고속 동작을 할 수 있도록 구성되어 있으나 두 개의 연산 결과값을 다시 가산해야하는 점에서 연산에 필요한 사이클 수가 증가하는 단점이 있다.
또한, 종래의 멀티미디어 DSP 프로세서에서는 데이터를 바이트 혹은 워드 별로 패킹(Packing)하여 레지스터 1개에 다수의 데이터를 저장함으로써 레지스터의 사용 효율을 향상시키는 방식을 사용하였다. 도1은 인텔사의 펜티엄 프로세서의 MMX 명령어(PMADDWD)를 사용하는 벡터 연산 동작을 나타내고 있다. 패킹 명령어 PACKSS를 통해 네 개의 각 데이터는 64비트 레지스터 0(S[63:48], T[47:32], U[31:16], V[15:0])에 저장된다. 이 데이터들과 벡터 연산을 수행하기 위한 다른 데이터들도 마찬가지로 워드별로 패킹되어 레지스터 1(W[63:48], X[47:32], Y[31:16], Z[15:0])에 저장된다. 레지스터 0과 레지스터 1의 데이터들은 각각 워드(Word)별로 16 ×16 곱셈기의 입력부에 연결되어 곱셈 연산을 수행한다. 네 개의 결과 데이터들은 각각 두 개씩 32비트 덧셈기의 입력부에 연결되어 가산되고 두 결과 데이터들은 64비트 레지스터의 상위 32비트 레지스터와 하위 32비트 레지스터 영역에 저장됨으로써 명령어 연산을 마치게 된다. 최종 벡터 연산을 수행하기 위해 32비트 덧셈기가 필요하게 되며 64비트 레지스터에 저장된 두 연산결과는 다시 32 비트 덧셈 연산기에 입력되어 연산을 수행 후 레지스터에 저장되어 벡터 연산을 마치게 됨으로써 종래 기술에서는 벡터 연산 처리 시 명령어를 2개 더 추가해야 하는 문제점이 있다.
또한, 움직임 추정 알고리즘에서의 SAD값을 연산하는 데 있어 종래의 멀티미디어 연산을 지원하는 썬사의 Ultrasparc의 Pdist 명령어 및 멀티미디어 DSP 프로세서인 필립스사의 TriMedia32의 ume8ii는 도2에 도시된 바와 같은 연산 동작을 하게 된다. 위에서 언급한 것과 마찬가지로 레지스터의 효율을 위해 8개의 데이터를바이트별로 패킹을 시킨 후 각각을 a1[64:56], a2[55:48], a3[47:40], a4[39:32], a5[31:24], a6[23:16], a7[15:8], a8[7:0]의 바이트별로 64비트 레지스터 0에 저장을 시킨다. 저장된 데이타는 레지스터 1에 패킹되어 저장된 데이터(b1, b2, b3, b4, b5, b6, b7, b8)와 바이트 별로 8 ×8 뺄셈 연산기에 입력되어 감산 연산을 거친다. 연산 결과 음수인 결과값은 절대값(abs:absolute)을 취하게 되며 최종적으로 얻어진 8개의 양수 결과값들에 대하여 8 ×8 덧셈기에 입력됨으로써 가산 연산을 수행하게 되고 이들 4개의 결과 데이터들은 가중합 되어 레지스터에 저장함으로써 SAD 연산을 마치게 된다. 그리고 종래 기술에서는 데이터 저장 시 64비트의 레지스터를 사용하기 때문에 출력된 데이터에 비해 비트 수가 큰 레지스터를 사용하는 결과가 되어 공간 활용도를 감소시키고 큰 레지스터의 사용으로 하드웨어가 커지는 문제점이 있다.
이처럼, 종래의 멀티미디어 연산을 지원하는 DSP 프로세서인 썬사의 Ultrasparc이나 멀티미디어 DSP 프로세서인 필립스사의 TriMedia는 도2에 도시된 바와 같이 움직임 추정 알고리즘 처리 시 다량의 데이터 처리 전후에 입력 데이터 및 결과 데이터의 저장을 위해 64비트의 매우 큰 레지스터를 사용해야 한다는 것과 그 결과로 레지스터 사용 효율이 감소하고 하드웨어의 크기가 커진다는 문제점을 갖는다.
또한, 벡터 연산을 지원하는 인텔사의 MMX 명령어는 도1에 도시된 바와 같이 데이터의 연산 수행 후 최종 합을 얻기 위해 한 레지스터에 패킹되어 저장된 두 결과 데이터를 불러내어 다시 가산연산을 수행해야 하므로 2개의 명령어 사이클을 더소비하여 벡터 연산을 마쳐야 한다는 문제점이 있었다.
따라서 본 발명은 상술한 문제점들을 해결하기 위하여 DSP 프로세서에서의 영상신호처리에 있어서 데이터의 벡터 연산 및 움직임 추정을 위한 SAD 값을 효과적으로 계산할 수 있도록 하는 연산방법과 그 연산방법을 실행하기 위한 회로를 제공하여 디지털 필터와 DCT 연산 처리에 효율적이며 연산 사이클을 줄여 하드웨어의 부담을 줄이고 데이터의 실시간 처리를 위한 것을 목적으로 한다.
또한, 데이터 처리 후 저장 시 패킹 네트워크 구조를 제공함으로써 레지스터의 사용빈도를 줄여 활용도를 높일 수 있게 한 연산 회로를 제공하는 것을 또 다른 목적으로 한다.
상기 목적을 달성하기 위하여 본 발명은 입력되는 4개의 데이터를 바이트 별로 저장하는 제1레지스터와, 입력되는 또 다른 4개의 데이터를 바이트별로 저장하는 제2레지스터와; 상기 레지스터들에 저장되어 있는 데이터를 바이트 별로 동시에 곱셈을 수행하기 위한 4개의 8 × 8 곱셈기와; 상기 곱셈기들의 곱셈 연산값 4개를 두 개씩 덧셈을 수행하기 위한 두 개의 16비트 덧셈기와; 상기 두 개의 덧셈기들의 연산값을 다시 한번 덧셈을 수행하기 위한 하나의 32비트 덧셈기와; 상기 32비트 덧셈기의 결과값을 저장하기 위해 덧셈기의 오버플로우(overflow)를 감안한 40비트 제3레지스터를 포함하는 연산 회로와 그 회로를 이용한 영상 데이터 처리를 위한 연산방법을 그 특징으로 한다.
또한, 본 발명은 입력되는 4개의 데이터를 바이트별로 저장하는 32비트 제1레지스터와, 입력되는 다른 4개의 데이터를 바이트별로 저장하는 32비트 제2레지스터와, 상기 두 개의 레지스터로부터 바이트별로 출력되는 각 두 개의 데이터의 감산을 수행하기 위한 4개의 뺄셈기와; 상기 4개의 뺄셈기에서 감산된 결과값을 2의 보수로 연산을 위한 4개의 abs 연산기와, 그리고 상기 4개의 abs 연산기에서 출력된 결과값을 두 개씩 더하기 위한 제1, 제2 덧셈기와, 상기 제1, 제2 덧셈기에서 더해진 결과값을 다시 덧셈하기 위한 제3덧셈기와, 상기 제3덧셈기에서 더해진 16비트 결과값을 저장하기 위한 32비트의 제3레지스터를 포함하는 또 다른 연산 회로와 그 회로를 이용한 영상 데이터 처리를 위한 연산방법을 특징으로 한다.
도1은 종래 인텔사의 펜티엄 MMX 프로세서의 PMADDWD 명령어 동작의 흐름을 나타낸 도면.
도2는 종래 썬사의 Ultrasparc Pdist 명령어 동작 흐름을 나타낸 도면.
도3a는 본 발명에 따른 PMADB 명령어를 실행하기 위한 연산회로를 나타낸 도면.
도3b는 본 발명에 따른 PMADB16 명령어를 실행하기 위한 연산회로를 나타낸 도면.
도4a는 본 발명에 따른 PSADB 명령어를 실행하기 위한 연산회로를 나타낸 도면.
도4b는 본 발명에 따른 PSADB16 명령어를 실행하기 위한 연산회로를 나타낸 도면.
도5는 본 발명에 사용되는 abs연산기를 나타낸 도면.
도6a은 본 발명에 따른 Pack16 모드를 나타낸 도면.
도6b는 본 발명에 따른 Pack 모드를 나타낸 도면.
이하, 첨부된 도면을 참조로 하여 본 발명을 상세히 설명하기로 한다.
도3a 및 도3b는 본 발명에 따라 벡터 연산을 실행하기 위한 연산회로를 나타낸 것으로, 상기 연산회로의 연산실행방법은 PMADB 명령어와 PMADB16 명령어라 칭한다. 도3a는 상기 PMADB 명령어를 실행하기 위한 연산회로를 나타낸 것으로, 상기 연산 회로는 입력되는 4개의 데이터를 바이트 별로 저장하는 제1레지스터와; 입력되는 또 다른 4개의 데이터를 바이트별로 저장하는 제2레지스터와; 상기 레지스터들에 저장되어 있는 데이터를 바이트 별로 동시에 곱셈을 수행하기 위한 4개의 8 ×8 곱셈기와; 상기 곱셈기의 결과값 데이터의 지연경로를 줄이기 위한 제1파이프라인단과; 상기 곱셈기들의 곱셈 연산값 4개를 두 개씩 덧셈을 수행하기 위한 두 개의 16비트 덧셈기와; 상기 덧셈기의 결과값 데이터의 지연경로를 줄이기 위한제2파이프 라인단과; 상기 두 개의 덧셈기들의 덧셈 연산값을 다시 한번 덧셈을 수행하기 위한 하나의 32비트 덧셈기와; 상기 32비트 덧셈기의 결과값을 저장하기 위해 덧셈기의 오버플로우(overflow)를 감안한 40비트의 제3레지스터로 구성되며, PMADB16 명령어를 실행하기 위한 연산 회로는 도3b에서 도시된 바와 같이 PMADB 명령어를 실행하기 위한 연산 회로에 후술하는 도6의 구성 요소를 포함한 회로로 구성된다.
상기 벡터 연산을 처리하기 위한 PMADB 명령어를 실행하는 연산회로를 이용한 연산방법은 제1레지스터에 바이트별(A[31:24], B[23:16], C[15:8], D[7:0])로 저장된 4개의 데이터는 제2레지스터에 저장(E[31:24], F[23:16], G[15:8], H[7:0])된 데이터와 바이트별로 4개의 8 ×8 곱셈기에 입력되어 연산(A[31:24] ×E[31:24], B[23:16] ×F[23:16], C[15:8] ×G[15:8], D[7:0] ×H[7:0])을 수행하게 된다. 상기 곱셈기 각각의 연산 결과인 16비트 데이터 4개는 두 개씩 두 개의 16비트 덧셈기에 입력되어 가산되고 그 결과값인 2개의 16비트 데이터는 다시 32비트 덧셈기에 입력되어 가산 연산을 수행한 후 40비트의 제3 레지스터에 저장됨으로써 벡터 연산을 마치게 된다.
상기 가산된 데이터는 연산 결과가 16비트만이 유효한 경우 도3b와 같이 Pack 네트워크를 이용하는 PMADB16이라는 명령어을 통해 전 데이터가 저장된 레지스터의 일부에 값을 저장시킴으로써 데이터 저장 시 적은 수의 레지스터를 사용하고 남는 레지스터를 다른 용도로 사용하여 레지스터 파일 및 메모리의 활용도를 높인다. 이러한 다수의 연산은 파이프라인 처리되어 한 사이클 동안에 4개의 데이터를 처리하게 되며 파이프라인 구조를 이용함으로써 본 발명의 연산 구조는 고속의 데이터 처리가 가능하다.
다음에 도4a 및 도4b는 SAD 연산을 실행하기 위한 연산 회로를 나타낸 것으로, 상기 연산회로에 의한 연산방법을 각각 PSADB(Sum of Absolute Difference Byte) 명령어와 PSADB16(SAD with packing) 명령어라 칭한다. 도4a는 상기 PSADB 명령어를 실행하기 위한 연산 회로를 나타낸 것으로, 입력되는 4개의 데이터를 바이트별로 저장하는 32비트 제1레지스터와, 입력되는 다른 4개의 데이터를 바이트별로 저장하는 32비트 제2레지스터와, 상기 두 개의 레지스터로부터 바이트별로 출력되는 각 두 개의 데이터의 감산을 수행하기 위한 4개의 뺄셈기와; 상기 4개의 뺄셈기에서 감산된 결과값 데이터의 지연경로를 줄이기 위한 제1파이프라인단과; 상기 제1파이프라인 단을 통과한 결과값들을 2의 보수로 연산하기 위한 4개의 abs 연산기와; 상기 abs 연산기의 결과값 데이터의 지연경로를 줄이기 위한 제2파이프라인 단과; 상기 제2파이프라인 단을 통과한 abs 연산기의 결과값을 두 개씩 더하기 위한 제1, 제2 덧셈세기와; 상기 두 개의 덧셈기에서 더해진 결과값 데이터의 지연경로를 줄이기 위한 제3파이프라인 단과; 그리고 상기 제3파이프라인 단을 통과한 제1, 제2 덧셈기의 결과값을 다시 덧셈하기 위한 제3덧셈기와, 상기 제3덧셈기에서 더해진 16비트 결과값을 저장하기 위한 32비트의 제3레지스터로 구성되고, PSADB16 명령어를 실행하기 위한 연산 회로는 도4b에 도시된 바와 같이 도4a에 도시된 연산 회로에 도6의 구성 요소를 포함한 회로로 구성된다.
상기 SAD 연산을 처리하기 위한 PSADB 연산회로를 이용한 연산방법은 데이터의 절대합을 구하기 위해 제1레지스터에 패킹된 4개의 데이터를 제2레지스터에 패킹된 4개의 데이터와 각 바이트별로 8비트 4개의 뺄셈기에 입력하여 연산(A[31:24]-E[31:24], B[23:16]-F[23:16], C[15:8]-G[15:8], D[7:0]-H[7:0])을 수행한다. 상기 뺄셈기의 연산 결과인 4개의 데이터에 대해 최상위 비트([31])인 사인(sign)비트는 음수 값(사인비트가 '1')에 대해 양수 값(사인 비트가 '0')으로 변환하기 위해 2의 보수를 취할 목적으로 4개의 abs 연산기에 각각 입력된다.
상기 abs 연산기는 도5에 도시된 바와 같이 32비트 NOT 게이트 1개와 2-to-1 멀티플렉서 1개, 32비트 가산기 1개, 그리고 3-state buffer 1개로 구성되어 데이터를 NOT 연산시켜 모든 비트의 데이터가 토글('0'→'1', '1'→'0')되고 다음 덧셈기의 캐리(carry) 입력부에 '1' 신호를 가함으로써 2의 보수가 완성된다. 상기 2의 보수 연산은 데이터의 사인 비트를 멀티플렉서(multiplex)의 선택(select) 신호로 사용하여 데이터의 1의 보수 연산을 제어하는데 사용하고 또한, 덧셈기의 캐리 입력부의 '1' 신호 입력에 대한 3-State 버퍼(Buffer)의 인에이블(ENABLE) 컨트롤 신호로 사용함으로써 각 연산기들의 동작을 제어하게 된다.
상기 abs 연산기의 결과값인 4개의 데이터들은 각 2개씩 8비트의 제1덧셈기와 제2 덧셈기로 입력되어 덧셈을 수행하고, 상기 덧셈기들에서 연산된 두 개의 결과 값 은 최종적으로 16비트 덧셈기를 통해 가산되어 32비트 레지스터의 하위 16비트([15:0])에 저장되게 된다.
PMADB16과 마찬가지로 데이터의 연산 결과에 따라 PSADB16 명령어로 레지스터의 일부에 값을 저장시킴으로써 데이터 저장 시 적은 수의 레지스터를 사용하고 남는 레지스터를 다른 용도로 사용하여 레지스터 파일과 메모리의 활용도를 높인다.
다음에 도6a 및 도6b는 본 발명에 따라 레지스터의 사용 효율을 높이기 위해 사용되는 팩(Pack) 네트워크의 동작을 실행하기 위한 회로를 나타낸 것으로서, 16비트 멀티플렉서 1개를 사용하여 팩 모드에 따라 동작을 하게 된다.
도6의 데이터 저장 레지스터의 입력은 패킹된 데이터[15:0]와 패킹되지 않은 데이터[31:0]이다. 팩 네트워크는 크게 3가지 모드로 구분된다. 팩 네트워크에서 아무 연산을 수행하지 않는 노팩(No Pack) 모드와 과거의 연산 결과값을 16비트 쉬프트 레프트하고 현재의 결과값을 하위 16비트에 저장하는 팩16(Pack16) 모드, 그리고 32비트의 연산 결과를 16비트로 줄여 저장하는 팩 모드가 그것이다. 노팩 모드는 일반적인 명령어를 수행할 때 팩 네트워크에서 아무 연산도 수행하지 않는 모드이다. 팩16 모드는 연산 결과가 16비트만이 유효한 경우 과거의 연산결과 16비트를 상위 16비트로 쉬프트 시킨 후 하위 16비트에 현재 연산 결과값을 저장하는 모드이다. 팩 모드는 16 비트 연산의 중간 값이 32비트로 확장되었을 때 다시 16비트 데이터와 연산을 하기 위해 16비트로 데이터를 패킹해야 하는 경우 사용된다.
도6a 및 도6b는 팩16 모드와 팩 모드의 동작을 나타내는 것으로써 멀티플렉서를 사용, 팩 모드에 따른 선택 신호로써 데이터 저장 레지스터의 데이터 출력을 제어하게 된다. 연산 결과는 각 명령어에 따라 결과값의 형태를 예상할 수 있고, 다음 연산에 필요한 부분을 알 수 있으므로 데이터의 형태에 따른 팩 모드를 결정할 수 있다. 즉 프로세서에서 상기 명령어를 디코딩하여 그 특성에 따라 선택 신호를 생성시키고 이에 따라 팩 모드가 결정된다. 출력단에서의 이러한 패킹 네트워크는 상술한 바와 같이 데이터 저장에 사용되는 레지스터에 두 개의 결과 데이터를 저장함으로써 데이터 저장에 필요한 레지스터의 수를 반으로 줄이고 사용하지 않는 레지스터를 다른 용도로 사용할 수 있게 함으로써 사용 효율을 높인다.
본 발명에 사용된 곱셈기는 고속처리를 위하여 부분 곱의 수를 반으로 줄임으로써 하드웨어의 크기와 연산 수행 시간을 줄인 부스(Booth) 곱셈기로 이루어져 있다. 또한 각 단별로 파이프라인(Pipeline) 구조를 사용함으로써 데이터의 처리 지연 시간을 줄여 고속의 연산을 수행토록 한다.
본 발명은 연산 시 팩 네트워크를 입·출력단 동시에 사용함으로써 데이터를 원하는 형태로 변환하고 연산된 결과값을 바이트(Byte), 워드(Word) 단위로 레프트-쉬프트(Left-shift)시켜 저장시킨다. 따라서 레지스터를 효율적으로 사용하게 되며 바이트 단위의 어드레싱(Addressing)을 제거함으로써 레지스터 파일 복잡도를 줄일 수 있으며, 적은 클럭 사이클동안 다수의 연산을 동시에 처리함으로써 연산수의 부담을 줄이고 고속 동작을 할 수 있다.
또한, 본 발명의 벡터 연산 및 SAD 연산 아키텍쳐는 32비트의 레지스터를 사용함으로써 32비트로 이루어진 멀티미디어 데이터 처리에 효율적이고 또한 불필요한 사이클 수를 줄여 데이터의 고속 처리가 가능하도록 하며, 데이터의 패킹 구조를 연산부의 출력단에 사용하여 경우에 따라 결과 데이터를 패킹하여 저장함으로써출력단의 레지스터 사용공간을 반으로 줄인다. 또한 나머지 공간을 다른 데이터의 저장에 사용하여 레지스터 사용 효율을 높이고 이에 대한 결과로 적은 수의 레지스터를 사용함으로써 남는 레지스터를 다른 용도로 사용할 수 있게 하는 효과를 가진다.
즉, 본 발명은 다수의 데이터와 연산을 동시에 처리함으로써 벡터 연산시 종래 멀티미디어 DSP 프로세서에 비해 2개의 연산 사이클 수를 줄여 프로세서의 연산 부담을 감소시키고, 데이터의 처리속도를 향상시키며, 레지스터의 사용효율을 높일 수 있다.

Claims (9)

  1. 삭제
  2. 입력되는 4개의 데이터를 바이트 별로 저장하는 제1레지스터와;
    입력되는 또 다른 4개의 데이터를 바이트별로 저장하는 제2레지스터와;
    상기 레지스터들에 저장되어 있는 데이터를 바이트 별로 동시에 곱셈을 수행하기 위한 4개의 8×8 곱셈기와;
    상기 곱셈기의 결과값 데이터의 지연경로를 줄이기 위한 제1 파이프라인 단과;
    상기 제1 파이프라인 단을 통과한 상기 곱셈기들의 곱셈 연산값 4개를 두 개씩 덧셈을 수행하기 위한 두 개의 16비트 덧셈기와;
    상기 덧셈기의 결과값 데이터의 지연경로를 줄인기 위한 제2파이프라인 단과;
    상기 제2파이프라인 단을 통과한 상기 두 개의 덧셈기들의 덧셈 연산값을 다시 한번 덧셈을 수행하기 위한 하나의 32비트 덧셈기와;
    16비트의 패킹된 연산 결과값과 32비트의 패킹되지 않은 연산 결과값의 연산을 수행하는 멀티플렉서와;
    상기 연산 결과값을 저장하는 결과 저장 레지스터와;
    상기 32비트 덧셈기의 결과값을 저장하기 위해 덧셈기의 오버플로우를 감안한 40비트 제3레지스터를 포함하는 것을 특징으로 하는 DSP 프로세서 및 마이크로 프로세서에서의 실시간 연산 데이터 처리를 위한 연산회로.
  3. 삭제
  4. 입력되는 4개의 데이터를 바이트별로 저장하는 32비트 제1레지스터와,
    입력되는 다른 4개의 데이터를 바이트별로 저장하는 32비트 제2레지스터와;
    상기 두 개의 레지스터로부터 바이트별로 출력되는 각 두 개의 데이터의 감산을 수행하기 위한 4개의 뺄셈기와;
    상기 뺄셈기들의 결과값 데이터의 지연경로를 줄이기 위한 제1파이프라인 단과;
    상기 제1파이프라인 단을 통과한 4개의 뺄셈기에서 감산된 결과값을 2의 보수로 연산하기 위한 4개의 abs(absolute) 연산기와; 그리고
    상기 4개의 abs 연산기에서 출력된 결과값을 두 개씩 더하기 위한 제1, 제2 덧셈기와;
    상기 덧셈기들의 결과값 데이터의 지연경로를 줄이기 위한 제2파이프라인 단과;
    상기 제2파이프라인 단을 통과한 제1, 제2 덧셈기에서 더해진 결과값을 다시 덧셈하기 위한 제3덧셈기와;
    상기 제3덧셈기에서 더해진 16비트 결과값을 저장하기 위한 32비트의 제3레지스터를 포함하는 것을 특징으로 하는 DSP 프로세서 및 마이크로 프로세서에서의 실시간 연산 데이터 처리를 위한 연산회로.
  5. 제 4 항에 있어서,
    상기 제3덧셈기와 32비트 레지스터 사이에 16비트의 패킹된 연산 결과값과 32비트의 패킹되지 않은 연산 결과값의 연산을 수행하는 멀티플렉서와, 상기 연산 결과값을 저장하는 결과 저장 레지스터를 더 포함하여서 상기 레지스터의 사용효율을 증가시키는 것을 특징으로 하는 DSP 프로세서 및 마이크로 프로세서에서의 실시간 연산 데이터 처리를 위한 연산회로.
  6. 제 2 항에 있어서,
    상기 회로의 입출력 데이터의 비트 수가 변하더라도 제2항의 회로와 동일하게 구성되는 것을 특징으로 하는 DSP 프로세서 및 마이크로 프로세서에서의 실시간 연산 데이터 처리를 위한 연산회로.
  7. 제 2 항에 있어서,
    상기 회로 내의 데이터패스(datapath)의 크기가 변하더라도 제2항의 회로와 동일하게 구성되는 것을 특징으로 하는 DSP 프로세서 및 마이크로 프로세서에서의 실시간 연산 데이터 처리를 위한 연산회로.
  8. 제 2 항에 있어서,
    상기 연산을 수행하기 위해 프로그램 작성시 데이터의 오퍼랜드(operand)의 크기가 변하더라도 제2항에서의 회로와 동일하게 구성되는 것을 특징으로 하는 DSP 프로세서 및 마이크로 프로세서에서의 실시간 연상데이터 연산 데이터 처리를 위한 연산회로.
  9. 입력되는 8개의 데이터를 4개씩 두 그룹으로 나누어 바이트 별로 저장하는 단계와;
    상기 두 그룹으로 저장된 데이터들을 바이트별로 추출하여 뺄셈을 수행하는 단계와;
    상기 뺄셈된 결과값을 2의 보수로 연산하는 단계와;
    상기 2의 보수로 연산된 4개의 결과값을 두 개씩 덧셈을 수행하여 두 개의 덧셈 결과값을 출력하는 단계와;
    상기 두 개의 덧셈의 결과값을 다시 한번 더하여 하나의 덧셈 결과값을 출력하여 저장하는 단계를 포함하는 것을 특징으로 하는 DSP 프로세서 및 마이크로 프로세서에서의 실시간 연산 데이터 처리를 위한 연산방법.
KR10-2001-0043711A 2001-07-20 2001-07-20 디에스피 프로세서 및 마이크로프로세서의 실시간영상데이터 처리를 위한 연산회로 및 그 연산방법 KR100434391B1 (ko)

Priority Applications (1)

Application Number Priority Date Filing Date Title
KR10-2001-0043711A KR100434391B1 (ko) 2001-07-20 2001-07-20 디에스피 프로세서 및 마이크로프로세서의 실시간영상데이터 처리를 위한 연산회로 및 그 연산방법

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR10-2001-0043711A KR100434391B1 (ko) 2001-07-20 2001-07-20 디에스피 프로세서 및 마이크로프로세서의 실시간영상데이터 처리를 위한 연산회로 및 그 연산방법

Publications (2)

Publication Number Publication Date
KR20030011978A KR20030011978A (ko) 2003-02-12
KR100434391B1 true KR100434391B1 (ko) 2004-06-04

Family

ID=27715879

Family Applications (1)

Application Number Title Priority Date Filing Date
KR10-2001-0043711A KR100434391B1 (ko) 2001-07-20 2001-07-20 디에스피 프로세서 및 마이크로프로세서의 실시간영상데이터 처리를 위한 연산회로 및 그 연산방법

Country Status (1)

Country Link
KR (1) KR100434391B1 (ko)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8407276B2 (en) 2009-07-27 2013-03-26 Electronics And Telecommunications Research Institute Apparatus for calculating absolute difference

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS5672739A (en) * 1979-11-16 1981-06-17 Hitachi Ltd High-speed multiplying circuit
JPS6086671A (ja) * 1983-10-19 1985-05-16 Hitachi Ltd 除算回路
US5278781A (en) * 1987-11-12 1994-01-11 Matsushita Electric Industrial Co., Ltd. Digital signal processing system
US5282150A (en) * 1990-03-12 1994-01-25 Ricoh Company, Ltd. Statistical processor
KR19990050434A (ko) * 1997-12-17 1999-07-05 정선종 대용량 키용 모듈러 승산장치

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS5672739A (en) * 1979-11-16 1981-06-17 Hitachi Ltd High-speed multiplying circuit
JPS6086671A (ja) * 1983-10-19 1985-05-16 Hitachi Ltd 除算回路
US5278781A (en) * 1987-11-12 1994-01-11 Matsushita Electric Industrial Co., Ltd. Digital signal processing system
US5282150A (en) * 1990-03-12 1994-01-25 Ricoh Company, Ltd. Statistical processor
KR19990050434A (ko) * 1997-12-17 1999-07-05 정선종 대용량 키용 모듈러 승산장치

Also Published As

Publication number Publication date
KR20030011978A (ko) 2003-02-12

Similar Documents

Publication Publication Date Title
EP1576493B1 (en) Method, device and system for performing calculation operations
US6546480B1 (en) Instructions for arithmetic operations on vectored data
RU2273044C2 (ru) Способ и устройство для параллельного объединения данных со сдвигом вправо
US6629115B1 (en) Method and apparatus for manipulating vectored data
EP1576494A1 (en) Method and system for performing calculation operations and a device
JP2006107463A (ja) パック・データの乗加算演算を実行する装置
US6574651B1 (en) Method and apparatus for arithmetic operation on vectored data
US5583806A (en) Optimized binary adder for concurrently generating effective and intermediate addresses
US7020671B1 (en) Implementation of an inverse discrete cosine transform using single instruction multiple data instructions
Tyler et al. AltiVec/sup TM: bringing vector technology to the PowerPC/sup TM/processor family
JP3857308B2 (ja) 逆離散余弦変換を実行する装置および方法
JP2001147799A (ja) データ移動方法および条件付転送論理ならびにデータの配列換え方法およびデータのコピー方法
Tung et al. MMX-based DCT and MC algorithms for real-time pure software MPEG decoding
Olivares et al. Minimum Sum of Absolute Differences implementation in a single FPGA device
KR100434391B1 (ko) 디에스피 프로세서 및 마이크로프로세서의 실시간영상데이터 처리를 위한 연산회로 및 그 연산방법
Agha et al. A high throughput two-dimensional discrete cosine transform and MPEG4 motion estimation using vector coprocessor
Furht Processor architectures for multimedia: a survey
Shahbahrami et al. Versatility of extended subwords and the matrix register file
Belyaev et al. A high-perfomance multi-format simd multiplier for digital signal processors
JP2002519957A (ja) 符号関数を処理する方法および装置
Mou et al. VIS-based native video processing on UltraSPARC
JP4243277B2 (ja) データ処理装置
Faroqui et al. A programmable data-path for MPEG-4 and natural hybrid video coding
Chen et al. A reconfigurable digital signal processor architecture for high-efficiency MPEG-4 video encoding
Guevorkian et al. A method for designing high-radix multiplier-based processing units for multimedia applications

Legal Events

Date Code Title Description
A201 Request for examination
N231 Notification of change of applicant
E902 Notification of reason for refusal
E701 Decision to grant or registration of patent right
GRNT Written decision to grant
LAPS Lapse due to unpaid annual fee
R401 Registration of restoration
FPAY Annual fee payment

Payment date: 20120521

Year of fee payment: 9

LAPS Lapse due to unpaid annual fee