KR100714358B1 - 연산을 수행하기 위한 방법, 시스템 및 장치 - Google Patents

연산을 수행하기 위한 방법, 시스템 및 장치 Download PDF

Info

Publication number
KR100714358B1
KR100714358B1 KR1020057007986A KR20057007986A KR100714358B1 KR 100714358 B1 KR100714358 B1 KR 100714358B1 KR 1020057007986 A KR1020057007986 A KR 1020057007986A KR 20057007986 A KR20057007986 A KR 20057007986A KR 100714358 B1 KR100714358 B1 KR 100714358B1
Authority
KR
South Korea
Prior art keywords
data
pipeline stage
output
pipeline
input
Prior art date
Application number
KR1020057007986A
Other languages
English (en)
Other versions
KR20050065673A (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 KR20050065673A publication Critical patent/KR20050065673A/ko
Application granted granted Critical
Publication of KR100714358B1 publication Critical patent/KR100714358B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F17/00Digital computing or data processing equipment or methods, specially adapted for specific functions
    • G06F17/10Complex mathematical operations
    • 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/48Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices
    • G06F7/52Multiplying; Dividing
    • G06F7/523Multiplying only
    • G06F7/533Reduction of the number of iteration steps or stages, e.g. using the Booth algorithm, log-sum, odd-even
    • G06F7/5334Reduction of the number of iteration steps or stages, e.g. using the Booth algorithm, log-sum, odd-even by using multiple bit scanning, i.e. by decoding groups of successive multiplier bits in order to select an appropriate precalculated multiple of the multiplicand as a partial product
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F17/00Digital computing or data processing equipment or methods, specially adapted for specific functions
    • G06F17/10Complex mathematical operations
    • G06F17/16Matrix or vector computation, e.g. matrix-matrix or matrix-vector multiplication, matrix factorization
    • 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2207/00Indexing scheme relating to methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F2207/38Indexing scheme relating to groups G06F7/38 - G06F7/575
    • G06F2207/3804Details
    • G06F2207/386Special constructional features
    • G06F2207/3884Pipelining

Landscapes

  • Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • Computational Mathematics (AREA)
  • Mathematical Analysis (AREA)
  • Mathematical Optimization (AREA)
  • Pure & Applied Mathematics (AREA)
  • Mathematical Physics (AREA)
  • Data Mining & Analysis (AREA)
  • General Engineering & Computer Science (AREA)
  • Computing Systems (AREA)
  • Databases & Information Systems (AREA)
  • Software Systems (AREA)
  • Algebra (AREA)
  • Complex Calculations (AREA)
  • Image Processing (AREA)
  • Hardware Redundancy (AREA)
  • Mobile Radio Communication Systems (AREA)
  • Forklifts And Lifting Vehicles (AREA)
  • Preliminary Treatment Of Fibers (AREA)
  • Fishing Rods (AREA)
  • Advance Control (AREA)

Abstract

본 발명은 적어도 두 개 이상의 파이프라인 단계들로 된 군, 데이터 입력을 위한 적어도 한 개 이상의 데이터 인터페이스, 데이터 출력을 위한 적어도 한 개 이상의 데이터 인터페이스를 포함하는 파이프라인 연산 장치를 사용하여 연산을 수행하는 방법에 관한 것이다. 상기 파이프라인 단계들은 데이터 입력을 위한 적어도 한 개 이상의 데이터 인터페이스와 데이터 출력을 위한 적어도 한 개 이상의 데이터 인터페이스를 포함한다. 상기 방법에서 제 1 및 제 2 연산을 수행하기 위한 데이터는 상기 연산 장치로 입력된다. 상기 제 1 연산에서 적어도 한 개 이상의 파이프라인 스테이지의 출력 데이터는 메모리에 저장된다. 상기 제 2 연산에서 상기 저장된 데이터는 또 다른 파이프라인 스테이지의 입력 데이터로 사용된다. 본 발명은 또한 상기 방법이 사용되는 시스템과 장치에 관한 것이다.

Description

연산을 수행하기 위한 방법, 시스템 및 장치{Method and system for performing calculation operations and a device}
본 발명은 데이터 입력을 위한 적어도 두개 이상의 파이프라인 스테이지들로 구성된 군, 적어도 하나 이상의 데이터 인터페이스, 데이터 출력을 위한 적어도 하나 이상의 데이터 인터페이스를 포함하며, 상기 파이프라인 스테이지들은 각각 데이터 입력을 위한 적어도 하나 이상의 데이터 인터페이스, 데이터 출력을 위한 적어도 하나 이상의 데이터 인터페이스를 포함하는 파이프라인 연산 장치를 이용하여 연산을 수행하는 방법에 있어서, 제 1 및 제 2 연산을 수행하기 위한 데이터는 상기 연산 장치로 입력되는 것을 특징으로 하는 방법에 관한 것이다. 또한, 본 발명은 데이터 입력을 위한 적어도 두개 이상의 파이프라인 스테이지들로 구성된 군, 적어도 하나 이상의 데이터 인터페이스, 데이터 출력을 위한 적어도 하나 이상의 데이터 인터페이스를 포함하고, 상기 파이프라인 스테이지들은 각각 데이터 입력을 위한 적어도 하나 이상의 데이터 인터페이스, 데이터 출력을 위한 적어도 하나 이상의 데이터 인터페이스를 포함하는 파이프라인 연산 장치는 제 1 및 제 2 연산을 수행하기 위한 데이터 입력을 더 포함하는 상기 파이프라인 연산 장치에서 연산을 수행하기 위한 시스템에 관한 것이다. 또한, 본 발명은 데이터 입력을 위한 적어도 두개 이상의 파이프라인 스테이지들로 구성된 군, 적어도 하나 이상의 데이터 인터 페이스, 데이터 출력을 위한 적어도 하나 이상의 데이터 인터페이스를 포함하고, 상기 파이프라인 스테이지들은 각각 데이터 입력을 위한 적어도 하나 이상의 데이터 인터페이스, 데이터 출력을 위한 적어도 하나 이상의 데이터 인터페이스를 포함하는 파이프라인 연산 장치는 제 1 및 제 2 연산을 수행하기 위한 데이터 입력을 더 포함하는 상기 파이프라인 연산 장치에서 연산을 수행하기 위한 장치에 관한 것이다.
승산, 승산누적연산(Multiply-Accumulate; MAC), 및 다른 연산이 필요한 다수의 애플리케이션이 존재한다. 비제한적인 예로서, 디지털 신호 필터링 애플리케이션 및 영상/화상 처리 애플리케이션 등등과 같은 다수의 신호처리 애플리케이션은 실시간 승산이 구현되는 애플리케이션이다. 또한, 벡터 및/또는 행렬 연산이 필요한 다른 애플리케이션은 승산을 사용한다. 승산은 일반적으로 합산 및 비트단위(bit-wise) 이동(shifting)연산으로서 구현된다. 두 개의 오퍼랜드(operand) 사이의 하나의 승산은 승산결과를 계산하기 위해서 다수의 합산 및 이동연산을 필요로 하므로, 이러한 승산은 리소스 요구 태스크(task)이다.
실시간으로 구현되어야하는 다량의 계산은 영상/화상처리알고리즘에 대해 특수하다. 그러므로, 고속성능은 서로 다른 영상/화상처리알고리즘 또는 서브태스크를 위한 병렬로 특화된 구조(가속기)를 개발하기 위한 구동력이 되어왔다. 선행기술에 따른 영상/화상처리시스템은 여러개의 가속기(예를 들어, 절대 편차의 합(Sum of Absolute Differences (SAD), 코사인 변환 등등)에 관한 것으로, 상기 각각의 가속기는 다량의 하드웨어요소로 이루어진다. 그러나, 이동통신시스템이 발달함에 따라, 시스템의 비용에 영향을 미치는 하드웨어 면적 및, 전력/에너지 소비는 고속성능만큼 중요한 특성이다. 이러한 모든 기준을 만족시키는 하나의 방법은, 디지털 신호 처리기(Digital Signal Processor; DSP)를 보다 더 현대화하고 특수 가속기의 수를 줄이는 것이다. 이 분야가 약간은 개선되었어도, 상기 개발된 시스템은 여전히 고속 및 전력소비 요구사항을 항상 충족시키지 못한다.
표 1은 몇가지 핵심 산술패턴을 이러한 패턴이 자주 구현되는 영상/화상처리알고리즘의 예와 함께 요약한 것이다. 상기 패턴에 관한 연산은 매우 기본적인 연산이며 매우 친밀하다. 다량의 문구가 상기 패턴의 구현에 모두 사용된다. 여기서, 두 가지 특징이 상기 연산과 관련하여 영상/화상처리문맥에서 강조된다. 우선, 연산의 오퍼랜드는 대부분 중간(8비트 내지 16비트) 정도(精度) 정수이다. 두번째로, 대부분의 알고리즘은 대량으로 병렬연산을 사용한다. 어떤 경우에, 이러한 병렬연산은 동일한 오퍼랜드를 공유한다. 예를 들어, 스칼라(scalar) 양자화에 있어서, 화상의 다수의 픽셀에 동일한 수가 곱해지며, 행렬 벡터 곱에서는, 동일한 입력 벡터에 행렬의 서로 다른 행이 곱해지고, 유한 임펄스 응답(Finite Impulse Response; FIR) 필터링에서는, 동일한 계수가 다수의 MAC 연산 등등에 관여한다.
산술패턴 내용 알고리즘
병렬 가산/감산 di=ai±bi,i=1,...,k 동작보상, 밝기변경, DCT, DWT, SAD 등등에서의 서브연산
누적
Figure 112005023676823-pct00001
전처리 및 후처리에서의 평균필터, DWT, 벡터 벡터 및 행렬 벡터 내부 곱, 컨볼루션 등등에서의 서브연산
병렬 승산 mi=aixi, 또는 mi=aix, i=1,...,K 양자화, DCT, DWT, 벡터 벡터 및 행렬 벡터 내부 곱, 컨볼루션 등등에서의 서브연산
MAC si=si-1+aixi, i=1,...,K, s0은 소정의 정수이다 FIR 필터링 및 행렬 벡터 연산에서의 기본연산
벡터 벡터 내부 곱
Figure 112005023676823-pct00002
전처리 및 후처리, DCT, DWT, 벡터 벡터 및 행렬 벡터 내부 곱, 컨볼루션 등등에서의 서브연산
행렬 벡터 곱
Figure 112005023676823-pct00003
Figure 112005023676823-pct00004
색상변환, 기하학적 조작, 유사동작추정, 전처리 및 후처리, DCT 등등에서의 서브연산
FIR 필터링 (컨벌루션)
Figure 112005023676823-pct00005
Figure 112005023676823-pct00006
전처리 및 후처리(화상 필터링 향상, 보간, 보외),DWT의 기본연산
SAD(절대편차의 합)
Figure 112005023676823-pct00007
동작추정, 화상 충실도/기준 MAE
영상 및 화상처리 및 다른 신호처리작업을 위한 선행기술에 따른 방식은 대개 종래의 승산기 구조에 기초한다. 다수의 승산방법 및, 승산 및/또는 승산누적연산을 구현하는 매우 다양한 장치가 개발되었다. 이하, 승산방법, 및 두 개의 오퍼랜드(피승수 및 승수)가 미지수인 경우에 대한 일반적인 승산기 구조, 2의 보수 산술에 제시된 두 개의 고정점으로 표시된 정수의 승산, 및 소위 T 기수방법이 고려될 것이다.
n비트(부호 포함) 승수 의 2의 보수 표현이
Figure 112005023676823-pct00008
로, m비트(부호 포함) 피승수 x의 2의 보수표현이
Figure 112005023676823-pct00009
로 각각 표시된다.
Figure 112005023676823-pct00010
의 관계 (및 x
Figure 112005023676823-pct00011
의 유사관계)는 하기 수학식 1과 같다.
Figure 112005023676823-pct00012
T 기수 병렬승산방법에서, 곱 y=a·x의 상기 2의 보수
Figure 112005023676823-pct00013
는 수학식 2에 따라 구해진다.
Figure 112005023676823-pct00014
두 개의 주요 단계는 하기와 같다.
제1 단계: 수학식 2가 유효하도록 부분곱(PP) Ar·x,r = 0,...,nradix-T-1를 생성하는 단계.
제2 단계: 모든 부분곱을 병렬로 합산하고, rtradix-T 위치에 대한 r번째 부분곱 Ar·x,r = 0,...,nradix-T-1를 좌측으로 예비적으로 이동하는 단계.
T 기수 MAC 유닛은 또다른 수치(누적항)가 제2 단계에서의 부분곱과 함께 가산되는 차이를 두는 유사한 방식으로 연산한다.
이하, 제1 단계를 보다 상세히 설명한다. 수치 Ar·x,r = 0,...,nradix-T-1가 정의되고 구해지는 방식에 따라 서로 다른 승산방법이 유도될 수 있다. 차례로, 수 치 Ar·x,r = 0,...,nradix-T-1의 선택은 승수 a의 표현에 의해 표시된다. 가장 간단한 승산방법은 2기수방법으로, 수학식 1의 좌측항에 주어진 a의 기본적인 2의 보수표현을 사용한다. 이러한 경우, 상기 곱의 2의 보수는 수학식 3과 같이 구해진다.
Figure 112005023676823-pct00015
즉, nradix-2=n이고, 상기 부분곱 Ar·x,r=0,...,n-1은 r=0,...,n-2에 대한 Ar=ar에 의해 정의되고 r=n-1에 대한 An-1=-an-1에 의해 정의된다. 이들 부분곱은 승수
Figure 112005023676823-pct00016
와 피승수
Figure 112005023676823-pct00017
의 각각의 2의 보수비트 사이의 2입력 AND 게이트의 어레이를 사용하여 간단히(그리고 일반적으로) 성립될 수 있다. Ar·x,r=0,...,n-1의 값은 제2 단계에서 누적되기전에 2r에 곱해진다(즉, r 위치에 대해 좌측으로 이동된다). 이러한 방법에서, 때때로 보정인수라고도 불리우는 부분곱 An-1·x은 나머지 부분곱과 다르게 취급해야하는 것을 주목해야한다.
상기 부분곱의 불균일성은 또다른 2기수 승산방법에서 승수의 2의 보수비트
Figure 112005023676823-pct00018
를 중복 부호화된 숫자에 재부호화하는 부스(Booth) 재부호화에 기초하여 방지된다. 상기 곱은 수학식 4와 같이 구할 수 있다.
Figure 112005023676823-pct00019
즉, 전술한 바와 같이 nradix-2=n이나, 상기 부분곱 Ar·x,r=0,...,n-1은 Ar= -ar+ar-1에 의해 모두 정의된다. 이전 방법과 마찬가지로, Ar·x,r=0,...,n-1의 값은 제2 단계에서 가산되기전에 2r에 곱해진다. 상기 수학식에서 상기 부분곱은 0,±x 중에서 선택된다. 이들 2가지 값(0과 x)은, -x가
Figure 112005023676823-pct00020
의 비트를 반전하고 1을 가산할 것을 요구하는 것을 알아내면서 용이하게 사용할 수 있다. 일반적으로, 1의 가산은 상기 부분곱이 합산되는 제2 단계에서 수행된다.
전적으로 nradix-2=n 부분곱은, 부스 재부호화되거나 재부호화되지않은 방법이 사용되는지의 여부에 상관없이 2기수 승산방법에서 합산된다. 부분곱의 수를 줄이기 위해서, 제2 단계(부분곱 합산)의 지연, 4기수 수정 부스 알고리즘(Modified Booth Algorithm; MBA)에 기반한 방법이 개발되었다. 상기 MBA는 가장 대중적인 승산방법중의 하나이며 광범위하게 연구되고 최적화되고 있다.
n/k와 같은 항이 발생하는 모든 경우 하기 수학식을 단순화하기 위해서, n이 k의 정수배라고 가정한다. 이는, 2의 보수가 임의의 비트수(최상위비트(most significant bit; MSB) 반복)와 함께 보상될 수 있으므로 유효한 가정이다.
MBA에서, 상기 곱의 2의 보수는 수학식 5와 같이 nradix-4=n/2 부분곱의 합으로서 구해진다.
Figure 112005023676823-pct00021
여기서, Ar ∈ {-2,-1,0,1,2}, r=0,1,...,n/2-1는 상기 승수
Figure 112005023676823-pct00022
의 2의 보수표현의 세 개의 연속비트 a2r+1,a2r,a2r-1 (a-1=0)에 따라서 선택된다. 상기 부분곱 Arx, r=0,1,...,n/2-1은 제2 단계에서 가산되기전에 22r와 곱해진다(즉, 2r 위치의 좌측으로 하드웨어적으로 이동된다).
부분곱의 수를 줄이기 위한 재부호화되지않은 승산방법에 의해 2보다 큰 기수를 사용할 수도 있다. 예를 들어, 4기수 재부호화되지않은 승산방법에서, 상기 부분곱 Arx, Ar ∈ {0,1,2,3}, r=0,1,...,n/2-1은 상기 승수의 두 개의 연속비트 a2r+1,a2r에 따라서 선택된다. 이러한 방법에서 nradix-4=n/2 부분곱이 존재한다. 상기 포텐셜 부분곱 2x는 포텐셜 부분곱 x를 좌측으로 한번 이동함으로써 생성할 수 있다. 상기 홀수 부분곱 3x는 x의 추가합산을 필요로 한다. 음수의 승산이 또한 사용되면, 부호확장이 사용되어야 한다. 즉, r각각의 부분곱의 최상위비트(즉, 사인 비트)는 요구된 비트길이를 얻는 데에 필요한 만큼의 횟수로 복사된다.
8기수 재부호화되지않은 승산방법에서, 상기 부분곱 Arx, Ar ∈ {0,1,2,3,4,5,6,7}, r=0,1,...,n/3-1은 상기 승수의 세 개의 연속비트에 따라서 선택된다. 포텐셜 부분곱의 리스트는 0,x,2x,3x,...,7x이며, 3x=x+2x, 5x=x+4x, 7x=8x-x를 구하기 위해서 세 번의 독립 가산/감산을 실현함으로써 상기 모든 포텐셜 부분곱이 사용가능해진다. 상기 포텐셜 부분곱 6x는 상기 포텐셜 부분곱 3x를 좌측으로 하나의 위치를 이동함으로써 성립될 수 있다. 그러나, 16이하의 고차 기수의 경우, 한번의 가산/감산으로 구할 수 없는 몇개의 포텐셜 부분곱(예를 들어, 11x 및 13x)이 존재한다.
도 1은 수정 부스 알고리즘(MBA)을 수행하기 위한 일반장치(101)를 도시한다. n/2 부스 부호화 복호화 행들이 존재하는데, 각 행은 부스 인코더(102) 및 m+1번째 부스 디코더(103)로 이루어지며 2에 의해 그룹화될 수 있다. 각각의 부스 인코더(102)는 상기 승수
Figure 112005023676823-pct00023
의 2의 보수의 세 개의 연속적 비트를 하나의 비트를 중복하여 분석하며, q신호들을 상기 디코더(103)의 해당 행으로 출력한다. 최근의 몇몇 선행기술에서는, q=3의 값으로 설계한다. 이러한 q신호들에 따르면, 상기 디코더 행들은 입력에서 피승수의 비트
Figure 112005023676823-pct00024
를 갖는 부분곱 (Arx)∈{0,±x,±2x}을 형성한다. x의 음이 아닌 배수는, 2x가 하드웨어 자체에 들어있는 이동에 의해 형성되므로 용이하게 사용가능하다. x의 음의 배수는 x의 해당하는 양의 배수의 비트를 반전하고 그리고나서 1을 가산함으로써 형성되며, 일반적으로 상기 단계는 제2 단계에서 수행된다. 예를 들어, 미국 특허번호 6,173,304는 부스 인코더 및 디코더를 실현하는 시스템을 개시한다. 2기수방법에서 상기 부분곱은 MBA에서보다 더 용이하게 알 수 있으나, MBA가 사용되어 속도성능, 면적, 및 전력소비에서의 중요한 장점을 유발하는 경우, 상기 부분곱의 수는 n/2로 감소된다.
부분곱의 수를 더 줄이기 위해서, 부스 인코딩은 멀티비트(임의의 T기수)로 더 확장되었다. 상기 곱의 일반적인 수학식은 수학식 6과 같이 주어진다.
Figure 112005023676823-pct00025
즉, nradox-T=n/t 부분곱 (T=2t)이 존재하며, 각각의 부분곱은 -2t-1와 2t-1 사이의 범위에 있는 A를 갖는 포텐셜 부분곱 Ax의 리스트에서 승수
Figure 112005023676823-pct00026
의 t+1번째 연속비트들에 따라서 선택된다. 각각의 포텐셜 부분곱은 x의 2(T=8,16에 대해서) 이상 (T > 16에 대해서)의 2배수곱을 가산함으로써 상대적으로 용이하게 형성할 수 있으며, 1을 가산한 후에 얻어지는 비트를 반전할 수도 있다(제2 단계에서). 예를 들어, 8기수 재부호화의 경우, 포텐셜 부분곱의 리스트는 0,±x,±2x,±3x,±4x이다. 상기 리스트에서 음수가 아닌 모든 배수는 3x를 제외하고 용이하게 사용할 수 있다. 3x는 3x=x+2x의 한번의 가산으로 얻을 수 있다. 음의 배수는 전술한 바와 같이, 반전-가산-1 방법에 의해 구할 수 있다. 16기수 재부호화의 경우, 포텐셜 부분곱의 리스트는 0,±x,±2x,±3x,...,±8x이며, 3x=x+2x, 5x=x+4x, 7x=-x+8x를 구하기 위해서 세 번의 독립 가산/감산을 실현함으로써 상기 모든 포텐셜 부분곱이 사용가능해진다. 상기 포텐셜 부분곱 6x는 상기 포텐셜 부분곱 3x를 좌측으로 한번 이동함으로써 형성될 수 있다. 그러나, 고차 기수의 경우, 한번의 가산/감산으로 구할 수 없는 몇몇의 포텐셜 부분곱(예를 들어, 11x 및 13x)이 있다.
도 2는 종래기술에 따른 T 기수(T≥8) 멀티비트 부스 재부호화되고 T 기수(T≥4) 새로운 재부호화되지않은 ("4 이상의 기수") 승산기의 일반적 구조(201)를 도시한다. 이러한 구조는 포텐셜 부분곱 0,±x,±2x,...,±Tx의 리스트를 계산하는 가산기 어레이(202), n/t 부분곱을 상기 승수비트에 따라서 선택하는 선택블럭(203), 및 상기 선택된 부분곱을 합산하는 합산블럭(204)으로 이루어진다. 최종 가산기(205)는 상기 합산블럭(204)에 의해 발생한 합 S와 자리올림(carry) C 항들로부터 곱
Figure 112005023676823-pct00027
을 형성한다.
전형적인 종래기술에 따른 4보다 고차의 기수 승수의 가산기의 어레이는 s개의 가산기/감산기로 이루어진다. 여기서, s는 포텐셜 부분 곱의 리스트에 관련된 x의 홀수의 양의 배수들의 수이다.(T=8 부스 재부호화되고 T=4 재부호화되지않은 승수의 경우에 s=1이며, T=16 부스 재부호화되고 T=4 재부호화되지않은 승수의 경우에 s=3 이다.) 일반적으로, 포텐셜 부분곱의 리스트를 형성하는 것이 오히려 이러한 승수의 시간을 소모하는 부분이므로, 패스트 캐리 룩 어헤드(carry-look-ahead; CLA) 가산기가 사용된다. 미국 특허번호 5,875,125에서, 8기수 승수에 사용될 수 있는 특수 x+2x 가산기를 제안하고 있다. 혼합된 4/8기수 승산기가 예를 들어, 미국 특허번호 4,965,762에서 제안되기도 했음을 주목해야 한다. 그러나, 상기 미국 특허에 따른 혼합된 4/8 기수 승수는 부분곱이 생성되고 직렬로 누적되는 중복(병렬이 아닌) 승수에 주로 사용되는 것이다. 미국 특허번호 5,646,877는 승산기 구조를 개시한다. 여기서, 임의의 기수에 대한 모든 포텐셜 부분곱은, 3x를 생성하는 x+2x 가산기, 두 개의 시프터(shifter) 및 가산기/감산기로 이루어지는 가산기의 어레이 내에서 3x와 x의 이동 버전의 합 또는 차로서 구해진다.
전형적인 선행기술에 따른 4보다 고차의 기수 승수의 선택블럭은 n/t T기수 부스 인코더들 및 동일한 수의 디코더 행들로 이루어진다. 각각의 인코더는 상기 승수의 해당하는 t+1개의 승수 집합을 분석하고, 어떤 해당하는 부분곱들이 상기 디코더 행들에 의해 형성되는가에 따라서 복수의 제어신호들을 출력한다. 4기수 부스 인코더들 및 디코더들을 고차 기수들로 확장하는 방법에 대한 언급이 예를 들어, 미국 특허번호 6,240,438에서 주어진다.
이하, 부분곱을 합산, 즉, 제2 단계가 보다 상세히 설명될 것이다. 대부분의 병렬 승산기/MAC유닛 구조는 제1 단계에서 형성된 부분곱을 합산하는 패스트 가산기(최종 가산기)에 의해 수반된 압축 어레이로 이루어진 합산블럭을 사용한다(도 1 및 2 참조). 상기 압축 어레이는 nradix-T 부분곱 행들을, 최종 가산기와 함께 더해진 합 S와 자리올림 C 항들에 해당하는 두 개의 행들로 줄인다. 상기 압축 어레이는 대개 풀 앤드 하프 가산기(캐리 세이브 애더 트리 또는 월리스 트리) 또는 4:2 압축기로 이루어진다. 상기 최종 가산기는 대개 패스트 캐리 룩 어헤드 애더이며, 이는 상기 압축 어레이로부터 서로 다른 비트의 지연에 따라서 신중히 설계된다.
부스 재부호화 스킴(scheme)을 활용하면, 제1 단계 대신에 제2 단계에서 1의 가산을 수행한 결과로서, 각각의 부분곱 행은 하나의 비트값으로 동반되며, 이러한 값은 상기 부분곱이 상기 승수의 음이 아닌 배수이거나 1일 경우에 제로(zero)이다. 따라서, 실제로, 행들의 수는 2nradix-T이다. 이들 하나의 비트값이 행들의 수가 다시 nradix-T이거나 nradix-T+1이 될 수 있는 방식으로 부분곱 행들(하나의 비트에 의한)로 통합될 수 있다하더라도, 부분곱 행들의 길이가 증가되고 이러한 행들은 불규칙적으로 된다. 재부호화되지않은 스킴에서, 기껏해야 하나의 여분의 하나의 비트값이 존재하므로 보다 간단한 압축 어레이들이 설계될 수 있다.
부스 재부호화된 승수에서 상기 합산블럭에 관련한 또다른 문제점은, 상기 부분곱 행들이 가산되기 전에 서로에 대해서 이동되므로 부호확장을 처리하는 방법이다.
간단한 실현예에서, 각각의 부분곱(이동후)은 매우 비경제적인 접근방식이므로 n+m 비트수로 확장되어야했다. 특수 부호확장 방법 및 회로는 부호확장된 비트의 수를 매 행에서 두 개로 줄이기 위해 개발되었다. 재부호화되지않은 승수의 경우, 전부 또는 가능한 한 하나의 부분곱이 동일한 부호이므로, 부호확장은 여분의 부호비트없이 보다 용이하게 처리될 수 있다.
도 3a 및 도 3b에 도시된 바와 같이, 승산기 구조를 MAC 유닛으로 확장하는 두 가지 방법이 원칙적으로 존재한다. 첫번째 경우(도 3), 상기 압축 어레이(301)의 두 개의 출력들(합 S와 자리올림 C 항들)은 자체의 입력들로 피드백되므로 현재의 부분곱 값들은 현재의 누적값의 두 개의 가수들로 누적된다. 그리고나서, 최종 합 S와 자리올림 C 항들은 상기 최종 가산기(302) 내로 가산된다. 두번째 경우(도 3b), 이러한 출력들은 또다른 압축 어레이(303)로 공급되며, 상기 압축 어레이(303)의 출력들은 자체(제2 압축 어레이(303)) 입력으로 피드백된다. 이제, 상기 현재 곱의 합 S와 자리올림 C 항들은, 상기 최종 합 S와 자리올림 C 항들이 상기 최종 가산기(302)내에서 가산될 때 최종 주기까지 상기 현재의 누적값에 누적된다. 상기 전체 압축 어레이의 깊이(그러므로, 전체 지연)는 첫번째 경우에서 낮아질 수 있는 반면에, 그 폭, 면적, 및 전력소비는 두번째 경우에서 낮아질 수 있다.
고차 기수 승수의 요약으로서, 기수가 높을수록 제1 단계(부분곱 생성)의 복잡성이 증가되고 제2 단계(부분곱 합산)의 복잡성은 감소되는 것을 주목해야한다. 아마도, 가산기의 어레이 및 선택블럭을 포함하는 다소 시간과 면적을 소모하는 부분곱 생성기를 구비해야하므로, 상기 "4 이상의 기수" 승산방법은 대중성을 얻지 못했다. 일반적으로, 상기 4기수 MBA는 최선의 선행기술에 따른 병렬 승산방법으로 간주되며 다수의 산업적 승산기에 사용된다.
파이프라이닝(pipelining)이라 불리우는 방법이 연산과 연결하여 사용될 수 있다. 그러므로, 파이프라이닝을 활용하는 장치는 두 개 이상의 파이프라인 스테이지를 구비한다. 각각의 파이프라인 스테이지는 연산의 소정의 부분 또는 일부(예를 들어, 서브연산)를 수행하기 위한 것이다. 선행기술에 따르면, 상기 파이프라인 스테이지들의 연산은 서로 연관되므로, 각각의 파이프라인 스테이지는 수행될 연산의 하나 이상의 서브연산을 수행하며, 마지막 파이프라인 스테이지의 출력은 연산의 결과를 제공한다. 이러한 장치에서, 서로 다른 파이프라인 스테이지들은 연속적으로 연산한다. 다시 말해서, 이전의 파이프라인 스테이지들이 자체의 서브연산의 계산을 완료한 후에 다음의 파이프라인 스테이지들은 서브연산의 계산을 시작한다. 파이프라인 스테이지들이 순수하게 조절되면(예를 들어, 몇몇 스테이지들은 다른 스테이들보다 현저히 빠르다), 이는 하나를 제외한 모든 파이프라인이 대기중이거나 대부분의 시간에 휴지상태에 있는 것을 의미한다. 더욱이, 모든 파이프라인 스테이지들은 소정의 작업(소정의 서브연산의 계산)을 위해 비축되며, 이들은 다른 연산을 수행하는 데에 사용될 수 없다.
이하, 영상 및 화상처리관점에서 요구되는 바이나 선행기술 해결안에서는 존재하지않거나 미약한 몇몇의 승산기/MAC 유닛 특징이 설명될 것이다. 우선, 가장 대중적인 4기수 부스 재부호화된 승산기/MAC 유닛이 설명될 것이다. 이러한 방법의 일반적인 단점은, 고차의 기수방법보다 전력이 많이 소모된다는 점이다. 또다른 일반적인 단점은, 부분곱의 수가 2기수 승산에 비해 반으로 줄어들더라도 이러한 수는 고차 기수를 사용하여 여전히 줄일 수 있다는 점이다. 즉, 이러한 방법의 복잡성은 주로 제2 단계(부분곱 합산)에 집중되어 있다. 4기수 부스 재부호화된 승산기/MAC 구조를 파이프라이닝할 때, 일반적으로 상기 부분곱 생성블럭은 제1 파이프라인 스테이지로서 간주되나, 이는 나머지 파이프라인 스테이지들과 함께 순수하게 조절된다(예를 들어, 나머지 파이프라인 스테이지들보다 빠르다).
"4 이상의 기수" 부스 재부호화된 승수를 고려할 때, 이러한 승수들의 서로 다른 실현들은, 단지 승산만을 실현할 경우를 고려할 때 면적 및 시간 기준에 대해서 4기수 승수들에 대해 경쟁적으로 수행되며, 전력소비에 대해서 이러한 4기수 승수들을 능가하는 것을 알 수 있었다. 상기 "4 이상의 기수" 방법의 주요 단점은 부분곱 생성블럭에 가산기 어레이를 구비해야한다는 점이다.
또한 부스 재부호화 '4 이상의 기수' 승산기는 부호 확장을 해야될 뿐만 아 니라 피승수에 대한 음의 승산을 처리해야 될 필요성이 있다는 점에서 단점이 있다.
기수-T 재부호화하지 않는 승산기는 포텐셜 부분 곱 생성 블록 내에 기수-2T 부스 재부호화 승산기와 동일한 수의 가산기를 포함한다. 부스 재부호화하지 않는 '8 이상 기수' (radix-higher-than-eight) 승산기 또는 부스 재부호화 '16 이상 기수' 승산기를 사용하는 경우에 포텐셜 부분 곱을 생성하기 위해서는 1단계 이상의 덧셈 연산 (more than one level addition)이 필요하다.
승산기 타입 BR, T=4 BR, T=8 BR, T=16
AA 넓이, s - 1 3
포텐셜 부분 곱의 개수 5 9 17
SB의 구성요소 부호화 n/2 BR4 n/3 BR8 n/4 BR16
복호화 n/2 (m+1)-BD4 n/3 (m+2)-4:1 t/c n/4 (m+3)-8:1 t/c
SE Yes Yes Yes
SB의 지연 6t 12t 16t
CA의 입력 개수 n/2 (m+1)-bit+3n/2 1-bit n/3 (m+2)-bit +4n/3 1-bit n/4 (m+3)-bit +5n/4 1-bit
FA-CA의 입력 개수/레벨 개수/지연 n=13, x MAC 7/4/8t 9/5/10t 5/3/6t 8/4/8t 4/2/4t 6/3/6t
n=16, x MAC 8/4/8t 10/5/10t 6/3/6t 8/4/8t 4/2/4t 6/3/6t
n=64, x MAC 32/8/16t 34/9/18t 22/7/14t 24/7/14t 16/6/12t 18/6/12t
4:2-CA의 입력 개수/레벨 개수/지연 n=13, x MAC 7/2/6t 9/2(4:2)+FA/8t 5/(4:2)+FA/5t 7/2/6t 4/1/3t 6/2/6t
n=16, x MAC 8/2/6t 10/3/9t 6/2/6t 8/2/6t 4/1/3t 6/2/6t
n=64, x MAC 32/4/12t 34/5/15t 22/4/12t 24/4/12t 16/3/9t 18/4/12t
승산기 타입 NR, T=4 NR1, T=8 NR2, T=4 NR2, T=8
AA 넓이, s 2 4 1 3
포텐셜 부분 곱의 개수 4 8 4 8
SB의 구성 요소 부호화 No No 1 BR4 1 BR8
복호화 n/2 (m+1)-4:1 n/3 (m+2)-8:1 (m+1)-(BD4+n/2(4:1) (m*2)(4:1 t/c+n/3(8:1))
SE No No No No
SB의 지연 5t 6t 6t 12t
CA의 입력 개수 ((n-2)/2 +1) (m+2)-bit ((n-1)/3 +1) (m+3)-bit (n-1)/2 (m+4)-bit+1 1-bit (n-1)/3 (m+6)-bit+1 1-bit
FA-CA의 입력 개수/레벨 개수/지연 n=13, x MAC 7/4/8t 9/4/8t 5/3/6t 7/4/8t 6/3/6t 8/4/8t 4/2/4t 6/3/6t
n=16, x MAC 9/4/8t 11/5/10t 6/3/6t 8/4/8t 8/4/8t 10/5/10t 5/3/6t 7/4/8t
n=64, x MAC 33/8/16t 35/9/18t 22/7/14t 24/7/14t 32/8/16t 34/9/18t 21/7/14t 23/8/16t
4:2-CA의 입력 개수/레벨 개수/지연 n=13, x MAC 7/2/6t 9/2(4:2)+FA/8t 5/(4:2)+FA/5t 7/2/6t 6/2/6t 8/2/6t 4/1/3t 6/2/6t
n=16, x MAC 9/2(4:2)+FA/8t 11/3/9t 6/2/6t 8/2/6t 8/2/6t 10/3/9t 5/(4:2)+FA/5t 7/2/6t
n=64, x MAC 33/4(4:2)+FA/14t 35/5/15t 22/4/12t 24/4/12t 32/4/12t 34/5/15t 21/4/12t 23/4/12t
BR 부스 재부호화 기수-T 승산기
NR1 재부호화하지 않는 기수-T 승산기 타입 1
NR2 재부호화하지 않는 기수-T 승산기 타입 2
SE 부호 확장 회로 (sign extension circuitry)
BR4, BR8, BR16 해당 기수를 위한 부스 재부호화 회로
BD4 기수-4 부스 복호 회로
4:1, 8:1, 4:1 t/c, 8:1 t/c 해당 개수의 입력을 갖는 다중화기 또는 진수/보수 (true/complement) 다중화기
SB 선택 블록
CA, FA-CA, 4:2 CA 압축어레이, 전가산기와 반가산기로 구성된 압축어레이, 4:2 압축기로 구성된 압축어레이
표 2a는 n 비트의 승수와 m 비트의 피승수의 승산을 위한 종래의 부스 재부호화 기수-T 승산기/MAC 유닛에서 사용되는 서로 다른 블록들의 다양한 특성을 예시하고 있다. 표 1b는 n 비트의 승수와 m 비트의 승산을 위한 재부호화하지 않는 기수-T 승산기/MAC 유닛에서 사용되는 서로 다른 블록의 다양한 특징들을 예시하고 있다. 표 2b는 n 비트의 승수와 m 비트의 승산을 위한 종래의 재부호화하지 않는 기수-T 승산기에서 사용되는 서로 다른 블록들의 다양한 특성을 예시하고 있다. 표 2c는 표 2a와 2b에 사용된 약자가 가리키는 바를 예시하고 있다. 표 2a와 2b에 나타난 것과 마찬가지로, n과 m의 값 대부분에 대해 각 승산기/MAC 유닛에 사용되는 서로 다른 블록들의 지연시간은 서로 다르다는 것을 알 수 있다. 즉, 이들 승산기를 디렉트 파이프라인 형태로 구현하게 되면 파이프라인 스테이지들 간에 밸런스가 나빠질 수 있다. 이들 파이프라인 스테이지들 간의 밸런스를 맞추기 위해서 하나의 올림수 전파 블록 (carry-ripple block)내에 서로 다른 개수의 FA를 갖는 올림수 예견 (carry-look-ahead, 이하 CLA) 가산기를 설계함으로써 제 1 연산과 마지막 파이프라인 스테이지의 처리량 (throughput)을 유동적으로 증가시킬 수 있다. 이는 이들 블록의 지연시간이 표 2a와 2b에 예시된 바 없기 때문이다. 예를 들어 n이 작고, 기수 T가 높은 경우는 매우 작은 올림수 전파 블록을 의미할 수 있으며 그러므로 넓은 면적을 의미할 수 있다. 이같은 해법이 가장 효율적인 것은 아니라고 하더라도 CLA 가산기를 이용하는 방법은 이들 2 개의 처리 속도를 증가시킬 수 있는 한 방법이 될 수 있다. 중앙의 두 개의 중간 파이프라인 스테이지들 (SB와 CA)의 상황은 위와 다른데, 이들 블록에 대한 종래 회로가 임계 경로 (critical paths)를 최적화하여 이들 회로 간의 내부 파이프라이닝 (internal pipelining)이 불필요하게 함으로써 설계되기 때문이다. 게다가 이들 블록의 지연시간의 상대적 차이는 종래 승산기/MAC 유닛 구조의 각 타입(BR (T=8,16), NR1 (T=4,8))에 따라 다르고 또한 n의 값에 따라 크게 달라진다. n이 작고 기수-T가 큰 경우에 (즉, T=16이고 n이 임의의 값을 가질 때) 선택 블록은 압축 어레이에 비해 그 속도가 느리고 그 외의 경우에는 정반대의 모습을 나타낸다. 이는 하나 또는 그 이상의 블록을 위해 고속의 회로를 설계하는 것이 이들 파이프라인 스테이지 간의 밸런스와 관련된 문제에 대한 총체적 해결방법이 되지 못할 것임을 의미하는 것이다. 상기와 언급된 여러 문제점들은 종래의 승산기/MAC 구조를 서로 간에 잘 조율된 (well-balanced) 파이프라인 스테이지들과 파이프 라인화시킬 수 있는 체계적인 방법의 도출을 어렵게 한다.
반면, 만일 서로 독립된 종래의 승산기/MAC 유닛들의 병렬 어레이를 다수의 승산/MAC 연산을 구현하기 위해 채택하는 경우, 전체적인 처리량에 영향을 미치지 않으면서 처리 속도가 빠른 블록은 공유될 수 있다. 그러나 넓은 면적의 실리콘 영역을 필요로 한다. 게다가, 위에 언급한 바와 마찬가지로, 파이프라인화된 승산기와 MAC 유닛들을 병렬 어레이 형태로 구현하게 되면 파이프라인 스테이지들 간의 밸런스는 깨지게 될 수 있다.
매트릭스-벡터 연산을 위한 종래의 병렬 어레이 구조는 가산기 또는 서로 독립적인 복수 개의 MAC 유닛들과 결합된 서로 독립적인 복수 개의 승산기들을 사용할 수 있도록 설계된다. 서로 다른 종류의 연산을 처리하기 위한 복수 개의 회로를 포함하는 것도 일반적이다. 그러나, 고차 기수 (high radix) 승산기는 가산/감산, 또는 누산 등과 같은 다른 연산을 위해 재사용이 가능한 블록들 (즉 파이프라인 스테이지들)을 포함한다. 따라서, 매트릭스-벡터 연산에서, 좀더 자세히는, 비디오/이미지 처리에서 사용되는 승산기의 경우에는 하나의 피승수가 여러개의 승수와 곱해질 수 있다는 점에 유의할 필요가 있다. 이는 다시 말해 피승수의 포텐셜 부분 곱은 각각의 승산에서 재사용될 수도 있었음을 의미하는 것이다. 예를 들어, 동일한 승수가 여러번 반복적으로 사용되는 벡터와 매트릭스 연산의 경우에 동일한 부분 곱이 상기 연산 과정에 걸쳐 적어도 한번 이상 사용될 것이다. 상기와 같은 연산을 종래 연산 장치 (prior art architectures)에 구현하면 필요할 때마다 부분 곱을 구하게 되는데 이는 하드웨어 자원의 비효율적 사용을 초래하고 전력 사용량을 증가시킨다.게다가, 상기에 언급한 바와 같이, 종래 승산기의 파이프라인 스테이지들이 완벽하게 조율되어 상기 장치의 효율성을 떨어뜨리게 되는 여러 상황들이 존재한다.
본 발명은 전술한 바와 같은 종래 기술의 문제점을 해결하기 위한 것으로서 연산 과정 중간에서 도출된 중간 결과들을 저장할 수 있으며, 특히 승산 과정에서 얻은 포텐셜 부분 곱을 저장할 수 있는 개선된 연산 장치 및 방법을 제공하는 것을 목적으로 한다. 본 발명의 연산 방법에서는 어떠한 연산의 적어도 하나의 연산 단계에서 얻어진 출력 데이터, 예를 들어, 파이프라인 스테이지에서 얻어진 출력 데이터는 메모리에 저장된다. 이때 저장된 데이터는 다른 연산 시 입력 데이터로 사용된다. 상기 연산 장치의 메모리는 포텐셜 부분 곱을 저장시 뿐만 아니라 수많은 연산시 사용될 수 있다. 본 발명의 실시예에 따른 연산 장치는 다양한 기능을 갖고 있으며 일련의 제어 신호들을 이용하여 서로 다른 구조에 적합하도록 구성 가능하다. 본 발명의 구조는 VLSI 아키텍처 (architecture)로서 구현될 수 있다.
본 발명의 일부 다른 실시예들은 이후 본 명세서 내에서 좀 더 자세히 설명될 것이다.
제 1실시예에 따르면, 메모리부는 포텐셜 부분 곱의 저장 시 사용될 수 있다. 따라서 메모리부에 저장된 포텐셜 부분 곱은 이후 동일한 피승수가 다수의 승수에 곱해지는 연산 시 재사용될 수 있다. 상기 연산의 비 제한적인 예들은 매트릭스-벡터 승산, FIR 필터링 등이 될 수 있다. 이러한 방식으로 동일한 피승수를 갖는 다수의 승산 가운데 제 1 연산 승산은 완벽하게 구현되지만 그 외의 승산들은 부분적으로만 구현되어 가장 많은 리소스를 요구하는 연산 과정인 포텐셜 부분 곱 연산 과정을 회피할 수 있다. 예를 들어, 매트릭스를 벡터에 곱할 때 출력 벡터의 제 1 연산 구성 요소를 연산하기 위한 승산은 완벽하게 구현되지만 출력 벡터의 그 외의 구성 요소를 연산하기 위한 승산은 부분적으로만 구현된다. FIR 필터링을 구현할 때 제 1 연산 출력 샘플을 연산하기 위하여 전체 승산이 단지 한번 구현된다. 그러나 그 외의 출력 샘플을 연산하기 위한 승산은 불완전하게 구현된다.
제 2 실시예에서는 매트릭스-벡터 연산에 병렬 승산기 구조가 사용된다. 상기 병렬 승산기 구조는 보다 연산량이 적은 태스크에 알맞게 재구성될 수 있다.
본 발명의 제 2 실시예는 (a) 복수의 승산; (b) 복수의 MAC 연산; (c) 서로 다른 정확도 (비트 넓이)를 갖는 복수의 가산/감산 연산; 및/또는 (d) 병렬 누산을 포함하는 일련의 연산을 구현하도록 구성될 수 있는 장치로 구현될 수 있다.
제 3 실시예는 병렬 승산기 구조와 비디오와 이미지를 처리하는 (MAVIP) SAD 가속기 구조를 결합한 형태이다. 상기 구조는 다양한 기능을 갖는 구조로서 일련의 제어 신호들을 이용하여 상이한 아키텍처에 알맞게 구성될 수 있다.
구체적으로, 본 발명의 연산 방법에 따르면 제 1 연산에 하나 이상의 파이프라인 스테이지의 출력 데이터가 메모리에 저장되고, 제 2 연산 단계에서 상기 저장된 데이터가 파이프라인 스테이지의 입력 데이터로 사용된다. 본 발명의 연산 시스템은 상기 제 1 연산시 적어도 하나 이상의 파이프라인 출력 데이터를 저장하기 위한 메모리와 상기 제 2 연산에서 상기 저장된 데이터를 파이프라인 스테이지에 대한 입력 데이터로 사용하는 데이터 복구기를 포함한다. 본 발명에 따른 장치는 상기 제 1 연산 단계에서 적어도 하나 이상의 파이프라인 스테이지의 출력을 저장하기 위한 메모리 및 상기 제 2 연산에서 상기 저장된 데이터를 파이프라인 스테이지에 대한 입력 데이터로 사용하는 데이터 복구기를 포함한다.
본 발명은 종래 기술과 비교했을 때 놀랄 만한 이점을 제공한다. 비디오/이미지 처리 알고리즘과 같은 신호 처리 애플리케이션에 종종 적용되는 폭넓은 범위의 연산 패턴 (arithmetic patterns)의 효율적 구현에 적합한 VLSI 아키텍처를 개발할 수 있다. 본 발명에 따른 방법을 이용함으로써 비디오/이미지 처리와 관련된 승산을 종래 기술보다 신속하게 적은 전력을 소모하면서 수행할 수 있다. 본 발명은 복수 개의 승산들/MAC들을 구현하는데 효율적이며 하나의 공통된 피연산자 (즉 공통된 피승수)를 갖는 복수 개의 승산들/MAC들을 구현하는 데 효율적이다. 본 발명은 포텐셜 부분 곱을 저장하였다가 후속 연산에서 사용할 수 있기 때문에 면적 및 전력 소비를 크게 감소시킬 수 있다. 또한 필요없을 때는 상이한 파이프라인 스테이지들을 절전 모드로 설정할 수 있으며 상이한 연산들을 거의 동시에 수행하는 데 상이한 파이프라인 스테이지들을 사용할 수 있으므로 전력 소비를 한층 감소시킬 수 있다. 본 발명은 상이한 파이프라인 스테이지들의 지연을 유동적으로 조율하고 전체 구조의 주기가 가장 빠른 블록의 지연 시간 정도로 감소시킬 수 있도록 파이프라이닝을 수행함으로써 높은 처리 속도를 제공한다. 또한 종래의 단일 파이프라인 (4 혹은 그 이상의 기수) 승산기에 비교할 때 본 발명은 면적의 증가를 최소화하고 입력/출력 버스 넓이를 증가시키지 않으면서 처리량을 증가시킬 수 있다.
상기 메모리부는 다른 연산을 위한 첫번째 파이프라인 스테이지를 다른 파이프라인 스테이지들과 병렬적으로 사용할 수 있도록 한다. 즉, 승산과 병렬적으로 다양한 정확도를 갖는 가산/감산 연산이 다른 태스크를 위해 병렬적으로 구현될 수 있다.
본 발명의 실시예에서는 아키텍쳐, 즉 포텐셜 부분 곱을 연산하기 위한 가산기들의 어레이 구조의 첫번째 파이프라인 스테이지와 다른 단계들을 조율시킬 필요가 없다. 왜냐하면 첫번째 파이프라인 스테이지는 대부분의 주기 동안 임계 경로에서 벗어나 있기 때문이다.
본 발명의 실시예에 따른 구조는 동일한 장치를 서로 상이한 연산을 위해 재사용할 수 있도록 한다. 게다가 연산들은 일 예로, 8 개의 병렬 8-비트 가산 연산 혹은 4개의 16-비트 가산 연산 등과 같이, 입력 독립변수 (input argumnets)의 비트 정확도가 서로 상이하게 구현될 수 있다.
따라서 가장 많은 리소스를 요구하는 연산 과정인 포텐셜 부분 곱을 연산하는 과정이 대부분의 승산 연산에서 필요치 않게 되므로 연산 소요 시간과 전력/에너지 소비를 크게 줄일 수 있다.
본 발명의 바람직한 실시예는 다기능적이므로 많은 임의의 신호 처리 연산, 예를 들어, 영상/이미지 처리 연산을 위한 하드웨어 가속기들을 대체할 수 있다.
도 1은 종래의 4기수 부스 재부호화 승산기의 전형적인 구조를 도시한다.
도 2는 T기수 부스 재부호화 (T≥8) 또는 재부호화하지 않는 (T≥4) 승산기의 일반적인 구조를 도시한다.
도 3a는 n/t 선택된 부분곱 및 피드백 합과 자리 올림 항(carry term)을 위한 공통 압축 어레이로서 구현되고 병렬 T기수 MAC 유닛 구조 내의 합산 블록의 일 실시예를 도시한다.
도 3b는 분리 압축 어레이로서 구현되고 병렬 T기수 MAC 유닛 구조 내의 합산 블록의 다른 예를 도시한다.
도 4는 SAD(sum-of-absolute-differences)방식의 일반적인 구조를 보여주는 것으로서, DS 유닛은 XOR 게이트가 따르는 감산기로서 동작한다.
도 5는 DS 유닛의 일반적인 구조를 도시한 것이다.
도 6은 p=1, s=8, n=8일 때의 SAD방식의 예를 도시한 것이다.
도 7은 본 발명의 제 1 실시예에 따른 연산 장치의 일반적인 구조를 도시한 블록도이다.
도 8는 복수의 승산기/MAC 연산을 위한 본 발명의 제 2 실시예에 따른 구성 가능한 연산 장치의 일반적인 구조를 도시한 블록도이다.
도 9는 본 발명에 따른 두 개의 동시 (13×13) 비트 승산 누적 연산의 행렬 벡터 산술 방식의 바람직한 실시예를 도시한다.
도 10a는 순환 mod P 모드에서 동작하는 어드레싱 유닛을 갖는 레지스터 메모리를 도시한다.
도 10b는 순환 mod P 피드백 루트를 갖는 쉬프트 레지스터 메모리를 도시한다.
도 11은 본 발명에 따른 영상 및 이미지 처리용 다기능 방식의 일반적인 구조를 도시한다.
도 12는 AA/DSA 유닛 구현의 일례를 도시한다.
도 13은 도 6의 SAD방식 및 도 9의 행렬 벡터 산술방식을 통합하여 획득한 영상/이미지 처리용 다기능 방식 구현의 일례를 도시한다.
도 14는 본 발명의 바람직한 실시예에 따른 장치를 단순 블록도로서 도시한다.
이하, 본 발명의 바람직한 제1 실시예를 좀 더 상세히 설명한다. 본 발명에 따른 장치의 제1 실시예의 일반적인 구조는 도 7에 도시되어 있다. 장치(1)는 일련의 다른 파이프라인 스테이지들 (P1 내지 P4)로 구분된다. 본 실시예에서, 장치(1)는 네 개의 파이프라인 스테이지를 포함하나, 파이프라인 스테이지의 개수는 본 발 명의 범위 내에서 넷과 다르게 설정될 수 있는 것은 명백하다. 상기 구조는 하나의 연산과 대응하는 첫번째 파이프라인 스테이지의 출력이 기입되어 다른 연산을 위한 두번째 파이프라인 스테이지의 입력으로 재사용될 수 있도록 하는 메모리 블록을 또한 포함한다.
파이프라인법 (pipelining)은 복수 개의 유사한 연산, 예를 들어 승산 및/또는 MAC 연산 등을 구현하기 위한 시스템의 처리량을 증가시키기 위한 일반적인 방법이다. 종래 기술의 기수-T 부스 재부호화 승산기 (T=8, 16) 또는 기수-T 부스 재부호화하지 않는 승산기(T=4, 8)들을 파이프라인 형태로 구현한 경우에 첫번째 파이프라인 스테이지(P1)는 s개의 가산기들의 어레이(여기서 s는 표 2a에 주어져 있다)가 될 것이고, 두번째 파이프라인 스테이지(P2)는 선택 블록이 될 것이고, 세번째 파이프라인 스테이지(P3)는 압축 어레이가 될 것이고, 마지막 파이프라인 스테이지들(P4)은 최종 가산기를 구성하게 된다. 여기서 마지막 파이프라인 스테이지들(P4)의 수는 실시예에 따라 다르게 구현될 수 있다.
본 발명의 첫번째 실시예에 따른 장치는 복수 개의 승산기/MAC 유닛들을 포함한다. 복수 개의 기수-T 부스 기록 승산기 (T=8, 16) 또는 기수-T 부스 재부호화하지 않는 승산기 (T=4, 8)의 일반적인 구조는 도 7에 개략적으로 도시된 바와 같다. 실시예로 승산기/MAC 유닛들의 구조는 파이프라인 장치(1)로 기술될 수 있다. 파이프라인 장치(1)에서 첫번째 파이프라인 스테이지(P1)는 s개의 가산기(AAs, 2)로 구성된 복수 개의 어레이들, 예를 들어 p개의 어레이들로 구성되어 있다. 이들 어레이는 동일한 입력 라인(6)을 공유한다. 두번째 파이프라인 스테이지(P2)는 복 수 개의 선택 블록 (SBs)(3), 예를 들어 q개의 선택블록들로 구성되어 있다. 세번째 파이프라인 스테이지(P3)는 복수 개의 압축 어레이들 (CAs)(4), 예를 들어 u개의 압축 어레이들로 구성되어 있다. 네번째 파이프라인 스테이지(P4)는 복수 개의 파이널 CLA 가산기들(CLAs, 5)로 구성되어 있다. 상기 기본 기능 블록들 (AAs, SBs, CAs, 및 CLAs)는 해당 타입의 종래 승산기 및/또는 MAC 유닛에서 사용되는 것과 실질적으로 같다. 따라서,p=q=u=v=1은 종래의 승산기/MAC 유닛 구조에도 동일하게 적용된다. 본 발명과 종래 기술과의 주요 차이점은 상기 장치가 하나 이상의 연산에서 얻은 중간 연산 결과를 저장하는 데 사용할 수 있는 메모리(21)를 포함하고 있다는 점이다. 하나의 비제한적인 예로서, 상기 중간 연산 결과의 예로 포텐셜 부분 곱을 들 수 있다. 다중화기(22)은 첫번째 파이프라인 스테이지의 출력 또는 메모리(21)의 출력을 두번째 파이프라인 스테이지(P2)의 입력으로 선택하는 데 사용될 수 있다. 바람직한 실시예에서, 종래 기술 구조의 기본 블럭들의 적어도 일부는 하나 이상의 기본 블럭으로 대체된다. 상기 장치의 연산은 여러 개의 파라미터들(p, q, u, 및 v)에 의해 좌우되고, 이들 파라미터의 적절한 선택에 의해 균형잡힌 파이프라인 스테이지를 갖는 장치가 설계될 수 있다. 하나의 파이프라인 스테이지 내의 블럭들은 바람직하게는, 파이프라인 스테이지들을 서로 동일하게 하기 위해서 또한 원하는 연산 단계 지속시간을 맞추기 위해서 처리율이 다양할 수 있도록 시간 인터레이스 방식으로 연산한다.
복수개의 기능 블럭들의 시간 인터레이스 연산의 개념을 이하 간단히 설명한다. 상대적으로 큰 시스템의 파이프라인 스테이지에서 사용될 기능 블럭(FB)을 고 려하여, Tdes가 상기 시스템의 원하는 연산 단계 지속시간이라고 했을 때, 대략
Figure 112005023676823-pct00028
(단, DFB≤pTdes)의 지연을 갖는다고 가정한다. 파이프라인 스테이지(P1,...,P4)를 일 단계의 지속시간과 부합하는 처리율로 연산하도록 하기 위해서, 직렬 기능 블럭이 파이프라인 레지스터(래치)(R1,...,Rw)를 갖는 w개의 기능 블럭(FB1, FB2,...,FBw)들과 입력에서 대체되고 출력에서 w:1 다중화기(MUX)(602, 603, 604, 605)와 대체된다. 상기 파라미터 w는 상기 해당 파이프라인 스테이지에 의해 좌우된다. 상기 제1 파이프라인 스테이지(P1)에 있어서, 상기 파라미터 w는 파라미터 p와 대응하고, 즉, p개의 파이프라인 레지스터(R1,...,Rp)가 있고, 상기 제1 파이프라인 스테이지(P1)의 다중화기(602)는 p개의 입력중에서 하나를 출력으로서 선택한다. 상기 제2 파이프라인 스테이지(P2)에 있어서, 상기 파라미터 w는 파라미터 q와 대응하고, 즉, q개의 파이프라인 레지스터(R1,...,Rq)가 있고, 상기 제2 파이프라인 스테이지(P2)의 다중화기(603)는 q개의 입력중에서 하나를 각각의 출력으로서 선택한다.
상기 제3 파이프라인 스테이지(P3)에 있어서, 상기 파라미터 w는 파라미터 u와 대응하고, 즉, u개의 파이프라인 레지스터(R1,...,Ru)가 있고, 상기 제3 파이프라인 스테이지(P3)의 다중화기(604)는 각각 u개의 입력 중에서 하나를 출력으로서 선택하는 두 개의 다중화기(미도시)를 포함한다. 상기 제4 파이프라인 스테이지(P4)에 있어서, 상기 파라미터 w는 파라미터 v와 대응하고, 즉, v개의 파이프라인 레지스터(R1,...,Rv)가 존재하고, 상기 제4 파이프라인 스테이지(P4)의 다중화기(605)는 v개의 입력중에서 하나를 출력으로서 선택한다. 상기 파이프라인 스테이지(P1, P2, P3, P4)의 공유 입력은 w개의 파이프라인 레지스터(R1,...,Rw) 각각과 연결되어 있다. 그러나, 이들 레지스터 각각은 하나의 연산 단계의 타임 오프셋으로 w개의 연산단계중에서 단지 하나의 단계동안만 개방된다. 이런 방식으로, 각각의 모든 연산 단계에서, 각각의 파이프라인 스테이지를 구성하는 복수 개의 나머지 기능 블럭들의 입력 레지스터는 기입을 위해 폐쇄되므로, 나머지 연결들은 비활성되는 반면, 실제로 입력(I)은 단지 하나의 기능 블럭의 입력에만 연결된다. 상기 제1 기능 블럭(FB1)의 입력에서 레지스터(R1)는 각각의 w개의 연산단계의 첫 번째 단계 동안 개방되고, 상기 제2 기능 블럭(FB2)의 입력에서 상기 레지스터(R2)는 각각의 w개의 연산단계의 두 번째 단계 동안 개방된다. 일반적으로, 연산단계(t=1, 2,...,K)에서, 상기 입력(I)은 오직 FB f 의 입력에만 연결된다(단, f= (t-1)mod w+1). 따라서, 상기 입력(I)은 공간적으로는 공유되지만 시간적으로는 파이프라인 스테이지의 기능 블럭들(FB1,...,FPw) 사이에 분포된다. 상기 시스템의 연산동안, 연산단계(t=1, 2,...,K)에서, 파이프라인 스테이지로의 입력 데이터 스트림의 하나의 샘플(Xt)은 그 스테이지에서 초기화되는 기능 블럭(FB f )(f= (t-1)mod w+1)으로 들어간다. 일단 기능 블럭(FB f )이 연산 단계 t+w-1(t= 1, 2,...,K)의 말단에서 샘플 (Xt)에 대한 연산을 완료하면, 기능 블럭들의 출력에서의 w:1 다중화기(602, 603, 604, 605)는 FB f 에서 획득한 결과를 다음 연산 단계 t+w(t= 1, 2,...,K)의 스테이지 출력으로 전달한다. 이러한 이유로, 상기 다중화기(602, 603, 604, 605)는 순환 mod w 규칙에 따라 동작한다.
종래 기술의 승산기/MAC 유닛 구조의 모든 각 기능 블럭을 복수의 유사한 기능 블럭들로 대체하고 시간 인터레이스 연산의 개념을 이용함으로써, 소정의 연산 단계 지속시간에 대해 각 파이프라인 스테이지 내의 블럭들의 숫자(즉, 파라미터 p, q, u, 및 v)를 적절하게 선택하여 파이프라인 스테이지의 향상된 밸런싱을 획득할 수도 있다. 종래 기술의 승산기/MAC 유닛 구조 내의 네 개의 파이프라인 스테이지가 각각 DAA, DSB, DCA, 및 DCLA이고 시스템의 바람직한 처리율이 초 당 Ndes 승산 MAC/연산이라고 가정하면, Tdes ≤ 1/Ndes이 되기 위해서 바람직한 연산단계 지속시간은 Tdes 초가 되도록 선택되고, 언급된 각 설계 파라미터들은, 기호
Figure 112005023676823-pct00029
가 다음 정수 값으로의 올림을 의미할 때,
Figure 112005023676823-pct00030
,
Figure 112005023676823-pct00031
,
Figure 112005023676823-pct00032
, 및
Figure 112005023676823-pct00033
로 선택될 것이다.
도 8은 본 발명의 바람직한 제 2 실시예에 따른 연산 장치를 도시하고 있다. 본 발명의 바람직한 제 2 실시예에 따른 구조의 구성가능성은 하나 이상의 선택수단, 예를 들어, 다중화기(15, 16, 17)를 제1, 제3, 및 제4 파이프라인 스테이지(P1, P3, P4)의 입력에 포함함으로써 획득할 수 있다. 상기 다중화기(15, 16, 17) 는 바람직하게는 2:1 다중화기이다. 상기 다중화기(15, 16, 17) 각각은 신호(c1, c2, c3)에 의해 제어된다. 상기 구조는 제1 제어 신호(c1) 및 제2, 제3 제어 신호(c2, c3)의 OR 조합(즉,
Figure 112005023676823-pct00034
)에 의해 제어되는 출력 선택기(20)를 또한 포함한다. 상기 출력 선택기(20)는 제1파이프라인(P1)의 출력으로부터 또는 상기 구조의 출력 버스(14)와 연결된 마지막 파이프라인 스테이지(P4)의 출력으로부터 데이터를 선택한다. 상기 다중화기(15, 16, 17)의 제1 입력들은 상기 구조의 입력 버스(6)의 대응하는 라인들과 연결되고, 상기 다중화기(15, 16, 17)의 제2 입력들은, 만약 상기 제2 입력들이 활성화되었다면, 상기 구조가 승산/MAC 연산장치로서 동작하기 위해서 연결된다. 따라서, 상기 구조는 서로 다른 일련의 제어 신호(c1, c2, c3)에 대해 다르게 구성될 수 있다. 이들 신호의 구성 관계는 다음과 같다.
모든 제어신호(c1, c2, c3)가 논리 1 상태에 있을 때, 즉, c1 = c2 = c3 = 1일 때, 구조는 승산/MAC 연산 장치로서 기능한다. 제1 제어 신호(c1)가 논리 0 상태에 있고, 다른 두 제어신호(c2, c3)가 논리 1 상태에 있을 때, 즉, c1= 0; c2 = c3 = 1 일 때, 상기 구조는 sp 가산기/감산기의 어레이로서 기능한다. 나머지 파이프라인들은 휴지상태에 있는 동안, 단지 제1 파이프라인 스테이지(P1)(즉, 가산기 어레이(2))만이 활성화된다. 또는, 제2, 제3 제어 신호(c2, c3)가 논리 0 상태로 설정되는 반면, 상기 제1 제어신호(c1)가 논리 1 상태로 설정된다(즉, c1= 1; c2= 0; c3 = 0). 이는 상기 구조가 누산기로서 기능함을 의미한다. 상기 압축 어레이(4)와 상기 최종 가산기(5)만이 가산기들과 선택블럭들의 어레이가 휴지상태인 동안에 작동한다. 이와는 달리, 제1 제어 신호(c1) 및 제2 제어 신호(c2)는 모두 논리 1 상태로 설정되고, 제3 제어 신호(c3)는 논리 0 상태로 설정된다(즉, c1= c2= 1: c3 = 0). 이 경우, 상기 구조는 넓은 정도(精度)의 고속 가산기로서 기능한다. 그러나, 다른 경우에, c1 = c2 = c3 = 0 일 때, 상기 구조는 sp 가산기/감산기 및 누산기로서 동시에 기능한다. 상기 명시된 제어신호들(c1, c2, c3)의 상태에 따른 구조/연산 모드의 관계와 더불어 선택수단(16, 17, 20)은 여러 대안중의 한 가지 경우만이 가능하지만, 본 발명의 범위 내에서 다른 대안들 역시 적용될 수 있음이 명백하다. 이는 본 명세서에서 이하 설명될 다른 제어신호에 대해서도 적용된다.
도 8의 구조에서 구조를 재구성하지 않고 이 구성에 다기능을 부여하는 다른 두 개의 제어신호(c4, c5)가 더 있다. 제4 제어 신호(c4)는 제3 파이프라인 스테이지(P3)내의 압축 어레이(4)의 출력과 입력 사이의 피드백 루프를(예를 들어, c4 = 1 라면) 활성화하거나 또는 (예를 들어, c4 = 0 라면) 비활성화시킨다. 따라서, 상기 구조는 c1 = c2 = c3 = 1이고, c4 = 0일 때, 승산기로서 동작하고, c1 = c2 = c3 = c4 = 1일 때, MAC 유닛으로서 동작한다. (1비트, 2비트, 또는 3비트 신호일 수 있는) 제5 제어신호(c5)는 (c5의 대응 비트가 예를 들어, 논리 1이면) 완전(full) 가산기 (5)의 블럭들 사이에서 자리올림 확대를 허용하고 또는 (c5의 대응 비트가 예를 들어, 논리 0이면) 중단함으로써 제1 파이프라인 스테이지(P1) 내의 가산기/감산기의 정도(精度)를 제어한다. 이와같이, m비트 입력용 sp 가산기/감산기를 포함하는 복수의 가산기 어레이들이 (m/2)비트 입력용 복수개의 2sp 가산기/감산기로서 동작하거나 또는 (m/4)비트 입력용 복수개의 4sp 가산기/감산기 등등으로서 동작한다. 선택블럭들(3), 압축 어레이들(4), 및 최종 가산기들(5)을 약간씩 수정하여 다양한 정도(精度) 승산/MAC 연산의 실행이 가능한 제어신호에 의해 제어될 수 있도록 하는 것 역시 가능하다.
행렬 벡터 산술방식
이하, 본 발명에 따른 승산기/MAC 유닛의 바람직한 실시예가 스칼라와 벡터 또는 행렬의 승산, 행렬과 벡터의 승산 (예를 들어, 행렬과 행렬 승산, 역행렬 계산, 색상 전환, 고속 직교 변환, 예를 들어, FFT, 고속 DCT, 등), 및 예를 들어, 필터 뱅크, 특히, 이산 웨이블릿 변환의 실행과 같은 컨볼루션 또는 FIR 필터링과 같은 행렬 벡터 연산을 수행하기 위해 사용된다. 이런 연산에 있어 공통점은 하나의 피승수 x가 다수의 승수(ai, i=1,...,,K)와 곱해진다는 것이다. 반면에, 고차 기수 승산방법의 가장 중요한 특징은 중요한 복잡성이 제2 단계(부분곱들을 합산)에서 제1 단계(부분곱 생성)로 이동된다는 것이다. 기수가 높아질수록, 더 많은 복잡성이 이동된다.
본 적용례의 주된 의도는 공통 피승수 x를 제1 승수(a1)에 곱할 때, 공통 피 승수 x의 포텐셜 부분곱들을 단지 한 번만 계산하고, 이 포텐셜 부분곱들을 나머지 승수들(ai, i=1,...,,K)과 이 피승수를 곱할 때 재사용하는 것이다. 이러한 방식으로, 4 이상의 고차 기수 승산방법(즉, 포텐셜 부분곱 계산)의 가장 복잡한 부분을 계산하지 않고, K-1개의 승산이 불완전하게 구해지는 동안 K개의 승산중 하나는 완전하게 구해질 것이다. 따라서, 시간 및 전력/에너지 소비가 크게 감소될 것이다.
이러한 개념에 따르면, 상기 제안된 행렬 벡터 산술 방식의 일반적 구조는 본 발명의 바람직한 제 1 실시예의 승산기/MAC 유닛으로부터 성취될 수 있다. 즉, 도 7 및 도 8에 도시된 메모리(21)를 통합시킴으로써 성취될 수 있다. 제 6 제어 신호(c6)가 제공되어, 상기 제어 신호(c6)에 따라 메모리(21)가 기입을 위해 열리거나(예를 들면, 제 6 제어 신호(C6)가 논리 "0" (로우)로 설정됨) 닫힌다(예를 들면, 제 6 제어 신호(C6)가 논리 "1"(하이)로 설정됨). 상기 메모리(21)가 기입을 위해 열리도록 설정될 때, 포텐셜 부분곱은 복수개의 가산기어레이(2)의 출력으로부터 메모리(21)에 저장될 수 있다. 동일한 신호(C6)가 2:1 다중화기(22)를 제어하기 위해 사용될 수 있다. 다중화기(22)의 제1 입력은 복수개의 가산기 어레이(2)의 출력에 연결되고, 다중화기(22)의 제2 입력은 메모리(21)의 출력에 연결된다. 따라서, 포텐셜 부분곱은 가산기(2)의 복수개의 어레이의 출력으로부터 직접(예를 들면, 제 6 제어 신호 C6가 논리 "0"로 설정되는 경우) 또는 메모리(21)로부터(예를 들면, 제 6 제어 신호 C6 가 논리 "1"로 설정되는 경우) 복수개의 선택 블럭(3)으로 입력된 다.
도 9는 2개의 (13 x 13)비트 승산 누적 연산이 동시에 수행될 수 있는 경우에 대한 행렬 벡터 산술을 위한 예시적인 구조를 나타낸다. 상기 구조는 두개의 다른 승수의 비트들에 의해 제어되는 2개의 별도의 선택 블럭들(3a, 3b)을 통합한 구조이다. 동일한 피승수(c2=c3)의 포텐셜 부분곱 또는 두 개의 다른 피승수(c2≠c3)의 포텐셜 부분곱이 선택되어 선택 블럭들(3a, 3b)에 입력될 수 있다. 상기 두 개의 선택 블럭들의 출력들은 31비트 피드백(b=32는 이 경우 최종 누산된 결과에 대한 최대 비트 정도(精度)이다)을 갖는 두 개의 별도의 압축 어레이에 입력된다. 이 압축 어레이의 합 S와 자리올림항 C 출력은, 최종 가산기가 뒤에 이어지는 (4x31) 입력 압축 어레이내에서 조합되어 하나의 누산항을 생성하거나, 쌍으로 가산되어 두개의 누산항을 생성할 수 있다. 이러한 방식으로 더 작은 깊이, 따라서, 더 짧은 피드백 루프를 각각 갖는 두 개의 별도의 압축 어레이가 누산 스테이지에서 동작한다. 그 후, 두 쌍의 합 및 자리올림 항은 개별적으로(쌍으로) 두 개의 CPA에서 합산되거나 세번째 합산 블럭에서 연계되어 합산된다. 전자의 경우에는, 두 개의 별도의 연산들의 결과(예를 들어, 행렬 벡터 승산에서 두 개의 출력 성분)가 동시에 얻어진다. 후자의 경우에는, 하나의 복합 연산이 두 개의 더 작은 부분들로 나뉘어진 후 그 결과가 조합된다.
실제로, 임의의 판독/기록 메모리가 상기 행렬 벡터 산술 구조에서 사용될 수 있다. 도 10a 및 10b에 도시된 2가지 메모리 타입이 권고되고 있다. 도 10a에 도시된 메모리 타입은 길이 L의 R개의 레지스터들을 포함하는 레지스터메모리이다. 여기서, L은 하나의 피승수에 대한 포텐셜 부분곱을 하나의 레지스터에 저장할 수 있을 정도로 충분히 크고(L≥(m+t)s), m은 그 피승수의 비트 정도(精度)이며, t=logT, T는 사용된 승산방법의 기수이며, s는 모든 가산기의 어레이내의 가산기/감산기의 개수이다. 이러한 메모리 타입의 어드레싱 유닛은 임의의 양의 정수 P≤R 에 대한 순환 modP 규칙에 따라 어드레스들을 생성할 수 있어야 한다. 이는 연산 단계 t=1,2,..에서, 어드레싱 유닛이 현재 어드레스 값으로서 a(t)=(t-1)modP 를 생성한다는 것을 의미한다. 그리고 나서, 메모리에 입력되는 제6 제어 신호(c6)가 로우이면 입력 라인상의 포텐셜 부분곱 값이 레지스터 a(t), a(t)∈{0,1,...,R-1})에 기입된다. 또는, 메모리로부터 출력된 제6 제어 신호(c6)가 하이이면 레지스터 a(t), a(t)∈{0,1,...,R-1})의 콘텐츠, 즉, 이전에 저장된 포텐셜 부분곱 값이 출력 라인에 기입된다.
도 10b에 도시된 두번째 메모리 타입은 유사한 modP 방식으로 동작하지만 제어가능한 피드백을 가진 쉬프트 레지스터로 구성된다. 모든 연산 단계에서, p번째 (p=0,...,P-2) 레지스터 유닛으로부터 출력된 데이터는 다음 레지스터의 동작이 중지되지 않으면 p+1번째 레지스터 유닛으로 이동한다. 모든 레지스터 유닛에는 피드백 라인이 연결되어 있다. 모든 피드백 라인들은 입력 라인을 (메모리에 대한) 또다른 입력으로 갖는 (R+1):1 승산기로 입력된다. 이 승산기는 c6P의 설정값을 가진 logR비트 신호에 의해 제어되어, 입력라인으로부터의 데이터 (c6=0인 경우) 또는 P- 1번째 레지스터의 출력에서 시작하는 피드백 루프로부터의 데이터 (c6=1인 경우)가 0번째 레지스터에 기록된다. 메모리로부터의 출력은 항상 0번째 레지스터부터의 출력이다.
이하, 비디오 및 이미지 처리에서 일반적으로 사용되는 세가지 연산에 대해 상세히 설명한다. 그러나, 이는 단지 특정한 연산을 위한 예시적인 구현일 뿐이며 본 발명은 여기 제시된 연산들 또는 방법들로 제한되는 것은 아니다. 행렬 벡터 산술에 대한 본 발명에 따른 방식을 사용하여 공통 피승수와 다수의 승수들과의 승산을 포함한 모든 다른 연산들을 유사한 방식으로 계산할 수 있다. 또한, 이러한 연산을 위한 다른 유사한 알고리즘이 개발될 수 있다.
먼저, 공통 승수(스칼라) x를 벡터 a의 성분인 다수의 승수 ai(i=1,...,K)와 곱하는, 벡터 승산 xa의 스칼라 계산을 살펴보자. 첫번째 단계에서는, 공통 피승수와 제1 승수(a1)를 곱할 때, 제6 제어 신호(c6)가 로우로 설정되어 x의 포텐셜 부분곱이 제1 파이프라인 스테이지(P1)의 가산기 어레이(2)로부터 제2 파이프라인 스테이지(P2)의 복수개의 선택 블럭(3)으로 직접 통과하도록 하고, 동시에, 메모리(21)에 기입되도록 한다. 상기 메모리(21)는 mod1 모드에 따라 동작하도록 설정되고 0 번째 레지스터를 제외한 모든 내부 레지스터의 동작은 중지된다. 하나 또는 몇개의 벡터와 하나의 스칼라의 곱이 구해지면, 제1 파이프라인 스테이지의 제1 가산기 어레이(2a) 대부분의 동작도 또한 중지된다. 제2 연산 단계에서는, 제6 제어 신호(c6)가 하이로 설정되어 메모리(21)는 기입을 위해 닫히고 제1 단계이후에 메모리에 기 록된 x의 포텐셜 부분곱은 대응하는 2:1 다중화기(22)의 제2 입력을 통해 메모리 (21)로부터 선택 블럭(3)으로 페치된다. 동시에, 모든 가산기 어레이(2)(제1 가산기 어레이 포함)는 동작 중지되거나 다른 작업으로 전환된다. 따라서, 가장 어려운 부분, 즉, 포텐셜 부분곱의 계산을 없앰으로써 승산의 임계 경로가 축소되므로 시간이 절감된다. K개의 연산 단계들 중 k-1번째 연산 단계 동안 제 1 파이프라인 스테이지가 동작 중지되거나 다른 작업으로 전환되기 때문에 전력 및 에너지 소비도 또한 현저하게 감소된다. 또다른 이점은, 이러한 계산 스킴에서는, 제1 파이프라인 스테이지(P1)가 K개의 연산 단계들중 K-1번째 연산 단계동안 임계 경로 외부에 있기 때문에 다른 파이프라인 스테이지들(P2-P4)과 균형을 맞출 필요가 없다는 것이다. 또다른 이점은, 피승수 x가 K회수만큼 페치(fetch)되어야 하는 종래의 방식과는 다르게 외부 메모리(미도시)로부터 단 한번 페치된다는 것이다.
여기서 살펴볼 두번째 연산은 행렬 벡터 승산이다.
s=AX 또는 등가식
Figure 112005023676823-pct00035
, i=1,2,...,K
이 연산은 행렬-행렬 승산, 역행렬 계산, 이미지 색상 공간 변환, 고속 직교변환(예를 들면, FFT, 고속 DCT, 등등), 등비곱, 에지 검출 등등과 같은 많은 선형 대수이론 및 비디오/이미지 처리 알고리즘의 한 부분이다. 행렬-벡터 승산은 다중 벡터-벡터 승산으로 간주될 수 있으므로, MAC 유닛 또는 MAC 유닛들의 뱅크로 구현될 수 있다. 그러나, 입력 벡터 x의 모든 성분(피승수) xj(j=1,...,P)가 행렬 A의 j 번째 열의 성분들인 K 승수들과 곱해진다는 것을 주지해야 한다. 본 발명의 실시예에 따른 행렬-벡터 산술 구조내에서 메모리(21)를 사용함으로써 입력 벡터 x의 모든 성분 xj (j=1,...,P)에 대해 포텐셜 부분곱을 한번만 계산하는 것이 가능하다. 포텐셜 부분곱은 충분한 레지스터들(즉, P≤R)을 포함하는 메모리(21)에 저장된다.
그래프 이론으로부터 공지된 바, 상기 언급된 임계경로는 시작 노드에서 최종 노드까지의 최장 루트를 나타낸다. 본 발명에 적용될 때, 임계 경로는 파이프라인 시스템에서 계산 프로세스의 시작에서부터 끝까지의 최장 루틴을 나타낸다. 임계 경로의 길이는 계산이 수행되는 시간을 의미한다. 임계 경로를 분석함으로써, 그 임계 경로의 길이에 영향을 주는 시스템내 부분들을 발견할 수 있다. 그러한 부분들이 발견될 때, 그들을 분석하여 그 길이를 짧게할 가능성이 있는지를 알아낼 수 있다. 임계 경로에 속하지 않은 부분들을 짧게 하려는 시도는 일반적으로 불필요하며 유용하지 않다.
(KxP)행렬과 벡터의 승산을 초기화시키기 위해, 본 발명의 바람직한 실시예에 따르면 제어 신호에 적당한 값들을 설정하는 방법이 사용된다. 메모리(21)는 modP 모드에 따라 동작하도록 설정되며 메모리내의 레지스터(P 내지 R)는 동작 중지된다. 이 구조의 압축어레이(4)는 제5 제어 신호(c5)를 하이로 설정함으로써 누산기로서 동작하도록 설정된다. 제6 제어 신호(c6)는 모든 성분 xj (j=1,...,P)에 대한 포텐셜 부분곱이 P개의 연산 단계들 (t=p+1, ..., p+P)동안 생성되면서 초기에 로우로 설정된다. 여기서, p개의 단계들은 내부 가산기 어레이의 수와 같은 제1 파 이프라인 스테이지의 지연이다. 이러한 연산단계동안, 성분 xj(j=1,...,P)에 대한 포텐셜 부분곱은 다중화기(22)를 경유하여 제1 파이프라인 스테이지(P1)의 가산기어레이(2)로부터 제2 파이프라인 스테이지(P2)의 복수개의 선택 블럭(3)으로 직접 통과되는 동시에, 메모리(21)에 기입된다. 따라서, 행렬 A의 첫번째 행과 입력 벡터 x와의 승산이 얻어지고 실질적으로 동시에 모든 성분 xj (j=1,...,P)에 대한 포텐셜 부분곱이 일련의 레지스터에 저장된다. 연산 단계 p+P후에, 제6 제어신호(c6)는 하이로 설정되고 메모리(21)는 기입을 위해 닫히고 xj (j=1,...,P)에 대한 포텐셜 부분곱은 2:1 다중화기의 제2 입력을 통해 메모리(21)로부터 복수개의 선택블럭 (3)의 입력으로 순환적으로 페치된다. 또한, 제 5 제어 신호(c5)는 새로운 누산을 재시작하기 위해 한 단계동안 로우로 설정된다. 이 연산은 행렬 A의 모든 행들이 입력 벡터 x와 곱해질 때까지 K-1회 반복된다. 연산 단계 p+P로부터 시작하여, 모든 가산기 어레이(2)(제1 가산기 어레이 포함)는 동작 중지되거나 다른 작업으로 전환된다. 따라서, 가장 복잡한 첫번째 단계없이, PK개의 승산 중의 P(K-1) 개의 곱은 부분적으로 구해지고 P개의 곱만이 완전히 구해진다. 스칼라-벡터 승산의 경우와 유사하게, 이 연산은 시간 및 전력/에너지 소비를 현저하게 줄일 수 있다.
이하, 본 발명의 구조에 대한 콘벌루션 또는 FIR 필터링이 더 상세히 설명될 것이다. 이를 위해 다음과 같은 연산이 수행된다.
Figure 112005023676823-pct00036
, i=1, ..., K
여기서, 일반적으로 P≪K 이다. 행렬 벡터 산술에 대한 본 발명의 구조에 따른 FIR 필터링을 구현하기 위해 두가지 방법이 사용될 수 있다.
첫번째 방법에 따르면, FIR 필터링은, 음의 인덱스에 대응하는 P성분 xi (i=-P+1, ..., 0)이 더해지며 P개의 위치에 대해 아래로 쉬프트되는, 입력 벡터와 P-대각 (또는 P-테이프드) 행렬 A의 승산으로 간주된다. 행렬 A가 희소행렬이라는 점을 고려하면(P 대각선상에서만 0이 아닌 입력이 존재함), 행렬-벡터 승산에 대한 상기 일반적인 방법이 FIR 필터링의 경우로 약간 수정될 것이다. 행렬 A의 i번째 행(i=1,...,K)은, 열 i, i+1, ..., i+P-1에서, P개의 0이 아닌 입력, 필터 성분 aj (j=1,...,P)를 갖는다. 이 실시예에서, 입력 벡터의 모든 성분들에 대한 포텐셜 부분곱이 메모리내에 동시에 저장되지는 않지만, P 개의 입력에 대한 포텐셜 부분곱은 동시에 저장된다. P회의 연산 단계마다, 현재 입력 샘플에 대한 새로운 포텐셜 부분곱 집합이 복수개의 가산기 어레이내에서 계산되고 이것이 P 단계만큼 이전의 연산 단계에서 메모리에 저장된 포텐셜 부분곱 집합과 교체된다. 이 연산은 P 회의 연산 단계마다 제6 제어 신호(c6)를 로우로 설정함으로써 성취된다. 그러므로, 복수개의 가산기(2) 어레이의 동작이 완전히 중지될 수는 없지만 이들은 포텐셜 부분곱을 저장하지 않고 구현하는 경우보다 느리게 P회 동작할 수 있다. PK개의 승산 중 P+K개의 승산만이 완전히 구해지며 다른 승산들은 부분적으로만 구해진다.
FIR 필터링을 위한 두번째 방법에 따르면, 제1 출력샘플이 계산되는 동안 P 개의 필터 계수에 대한 포텐셜 부분곱이 메모리(21)에 저장된다. 그 후, 이 포텐셜 부분곱은 다른 (K-1)개의 출력 샘플들이 계산될 때 메모리(21)로부터 순환적으로 페치된다. 이는 PK개의 승산 중 P개의 승산만이 완전히 구해지고 다른 승산들은 부분적으로 구해진다는 것을 의미한다. 모든 가산기 어레이(2)는 모든 필터 계수들에 대한 포텐셜 부분곱이 메모리(21)에 저장되자마자 동작중지되거나 다른 작업으로 전환될 수 있다. 따라서, 두번째 방법이 첫번째 방법보다 유리하다. 그러나, 두번째 방법은 제1 파이프라인 스테이지(P1)의 가산기/감산기(2)가 필터 계수에 대한 포텐셜 부분곱을 계산할 수 있을 정도로 충분한 정도(精度)를 갖는 경우에만 가능하다.
비디오/이미지 처리용 다기능방식
본 발명의 구조는 비디오/이미지 처리(MAVIP)용 다기능방식으로서 구현될 수 있다. 도 11은 본 발명에 따른 비디오 처리 구조의 바람직한 일 실시예를 도시한 다. 이 구조는 상기 설명된 실시예들을 기반으로 하며 소위 'SAD' 방식(24)을 이용한다. SAD 방식의 일반적인 구조가 도 4에 도시되어 있다. SAD방식의 구조는 시간 인터레이스 방식으로 동작하는 소위 'DS(difference-sign)' 유닛(25)의 복수개의 p 어레이와 최종 가산기(5)로 이루어진다. 이 최종 가산기(5)의 뒤에는 동작 측정 프로세스(SAD 기반)에 필요하나 SAD 계산에는 불필요한 최소 평가 (M) 유닛(26)이 위치된다. DS 유닛들(25)(DS 어레이 또는 DSA)의 모든 어레이는, 사인(sign) 비트와 차이(diffrence) 비트의 나머지 사이에 XOR 게이트(28)가 이어지는 8비트감산기인 , s개의 DS 유닛들(도 5)로 이루어진다. 압축 어레이로의 입력은 s개의 1비트 수(사인 데이터), s개의 n비트수(차이 데이터, 일반적으로 n=8)및 두개의(n+logK-1)비 트 피드백(일반적으로, K=256)으로부터 생성된다. 최종 가산기는 (n+logK)비트 정도(精度)를 갖는다. 8개의 DS 유닛(감산기)으로 이루어지며 p=1, s=8, n=8, 및 K=256에 대응하는 SAD 방식의 일 예가 도 5에 도시되어 있다.
도 4의 SAD 구조를 도 8의 승수 기반 구조와 비교하면, 특히, 도 6의 예를 도 8 또는 9의 구조와 비교하면, 이 두 타입의 구조사이에는 본질적인 유사성이 있음을 알 수 있을 것이다. 이들 두 타입의 구조는 모두, SAD의 경우에 XOR 게이트가 이어지는 복수개의 가산기 또는 감산기(4,27)를 포함하는 블럭, 승수 기반 구조의 경우 선택블럭(3)이며 SAD 의 경우 직접 연결되는 데이터 경로지정 블럭, 및 압축 어레이(4)와 최종 가산기(5)로 이루어진 합산 블럭을 포함한다. 이러한 유사성은 이들 두가지 타입의 구조를 통합시키고, 몇개의 제어 신호들을 사용하여 이들 두가지 구조 중 하나로 구성될 수 있는 재구성가능한 방식으로 이들을 결합시키는 데 사용될 수 있다. 이러한 방식에 따라, 몇개의 신호들에 의해 제어되는 단순한 로직으로 부담을 최소화하면서 방식의 다기능화가 성취될 수 있다.
SAD 구조를 승수 기반 구조와 결합하기 위한 몇가지 대안이 있다. 도 11은 비디오/이미지 처리용 다기능방식의 일반적 구조들 중 하나를 보여준다. 도 11에 도시된 방식은 기본 승수 기반 구조의 모든 블럭에서 간단한 승산에 의해 유도된 다. 이 경우, 기본 구조는 도 8의 행렬 벡터 산술 방식이다. 도 13은 도 9의 행렬 벡터 산술 방식으로부터 유도된 비디오/이미지 처리용 다기능방식의 구현 예를 보여준다.
일 예에 따르면, 비디오/이미지 처리용 다기능방식은 제1 제어 신호(c1)와 제 5 제어 신호(c5)에 따라 가산기/감산기 또는 DS 유닛으로 구성될 수 있는 가산기(2) (따라서, AA/DSA로 표시됨)의 어레이(2)를 포함한다. 일반적인 경우, AA/DSA 유닛의 구현 예가 도 12에 개략적으로 도시되어 있다. m=16, r=2의 경우 AA/DSA 유닛의 전체 어레이의 예가 도 12b에 도시되어있다. 어레이의 모든 m비트 가산기/감산기는 XOR 게이트가 이어지는 r개의 일련의 (m/r)비트 가산기/감산기로 이루어진다. XOR 게이트는
Figure 112005023676823-pct00037
인 경우, 즉, 방식이 SAD 방식으로 동작할 때인 (c1, c5)=(1, 0)인 경우 활성이다. 반면, r개의 일련의 (m/r)비트 가산기/감산기들 사이의 자리올림항 확대는 c5=0인 경우에만 제공된다. 제1 제어 신호(c1)와 제5 제어 신호(c5)의 조합은 서로 다른 입력들(c1c5=0) (가수 또는 SAD 오퍼랜드)이 어레이로 입력되어야 하는지 또는 하나의 입력(c1c5=1)(피승수)이 어레이로 입력되어야 하는지를 제어하기 위해 사용된다. 가산이 수행되는지 감산이 수행되는지는 승산방식과 AA/DSA 유닛내의 상기 m비트 가산기/감산기의 위치에 따라 좌우되는 신호(cin)에 의해 제어된다. 예를 들면, 재부호화된 8기수 승산 방식에서는, m=16, r=2 이고, 신호(cin)는 가산기의 위치에 따라 cin=cs로 또는
Figure 112005023676823-pct00038
로 주어진다(도 12b 참조). 여기서, c1=0 인 경우 cs=0 은 합산을 의미하고 cs=0은 감산을 의미한다. 따라서, 제어신호(c1)과 (c5)에 따라, AA/DSA 유닛은 다음과 같이 다른 모드에서 동작하도록 구성된다.
(c1,c5) AA/DSA의 동작 모드 입력 출력 목적 사용
(0,0) rs개의 병렬 (m/r)비트 가산/감산 rs개의 (m/r)비트 쌍 (xi,yi), i=1,...,r rs 개의 (m/r+1)비트 합 ci=xi+yi 병렬 가산기/감산기
(0,1) s개의 병렬 m비트 가산/감산 rs개의 (m/r)비트 쌍 (xi,yi), i=1,...,r rs 개의 (m/r+1)비트 차 ci=xi+yi
(1,0) rs 개의 (m/r)비트 병렬 감산 후 XOR rs개의 (m/r)비트 쌍 (xi,yi), i=1,...,r rs 개의 (m/r)비트 차 데이터 및 rs개의 1비트 데이터 SAD방식의 제1 스테이지(다수의 DS 유닛)
(1,1) T기수 승산 알고리즘에 따른 s개의 합산 또는 감산 하나의 (m-t)비트 피승수 x (t=logT) s 개의 m비트 부분곱 및 rs 개의 1비트 0 T기수 승수의 제1 스테이지(AA)
도 11의 MAVIP의 실시예에 따르면, AA/DSA 유닛들의 블럭과, AA/DSA 유닛들로서 동일한 신호(c1) 및 (c5)에 의해 현재 제어되는 압축 어레이의 블럭 사이에는 데이터 경로지정 블럭이 위치한다. 선택 블럭들에 대한 클럭 신호(미도시)는, 그 선택 블럭들이 c1=0일 때 동작정지되도록, AND 게이트에 의해 신호(c1)와 병합된다. 방식은 이 경우 가산기/감산기의 병렬 어레이로서 동작한다. 제어 신호(c5)에 따라, 데이터 경로지정 블럭은 r개의 (m/r)비트 차 데이터와 r개의 1비트 데이터를 AA/DSA 유닛의 출력으로부터 압축 어레이의 블럭으로 직접 보내는 SAD 방식(c5=0인 경우)내에서 직접적인 연결부로 구성되거나, s개의 m비트 부분곱을 AA/DSA 유닛의 블럭으로부터 또는 메모리로부터 압축 어레이의 블럭으로 보내는 대응하는 승산기 구조(c5=1인 경우)내에서 표준 선택 블럭으로 동작한다. 이는 대응하는 라인으로부 터 데이터를 선택하는 데이터 결합기/다중화기 블럭(23)을 삽입함으로써 성취된다. 상기 데이터 결합기/다중화기 블럭(23)은 c5=0이면 AA/DSA 유닛의 블럭의 출력을 선택하고 c5=1이면 선택 블럭의 출력을 선택하여, 데이터 타입을 압축 어레이(4)에 적합한 데이터 타입으로 변환한다. 예를 들면, 도 13의 예에서 압축 어레이로의 입력은 5개의 25비트 수와 2개의 31비트 피드백 루프로 각각 이루어진 두개의 그룹으로 나뉘어진다. 각 그룹내의 입력 세트는 쉬프트후 상기 승산방식에서의 부분곱 집합에 대응한다. 그러므로, 상기 데이터 결합기/다중화기 블럭(23)은 부분곱을 변환시키지 않고 대응하는 쉬프트를 구현하며 c5=1이면 두 집합의 부분곱을 블럭 압축 어레이로 보낸다. 그러나, SAD가 구현될 때(c5=0), 상기 데이터 결합기/다중화기블럭
(23)은 8개의 8비트 및 8개의 1비트 차 및 사인 데이터를 압축어레이의 블럭으로 전달하기 전에 이들을 변환한다. 상기 8개의 1비트 데이터는 작은 압축 어레이내에서 2개의 2비트 수로 압축된 다음 (MSB 측에서) 0으로 보완되어 25비트 수가 된다. 또한, 8개의 8비트 수도 0으로 보완되어 25비트 수가 된다. 결과적으로 10개의 25비트 수가 5개의 수로 그룹화된다.
도 8의 행렬 벡터 산술에 대한 방식과 비교하여, 도 11의 방식 내의 합산 블럭(4)은 신호(c1)와 (c5)에 따라 구성가능하도록 변경될 필요가 있다. 무엇보다도, 합산 블럭(4)은 (c1,c2)=(0,1)이면 동작정지되어 그 구조가 병렬 가산기/감산기로 동작한다. (c1,c2)=(0,0)이면, 합산 블럭(4)은 입력 버스(6)으로부터 직접 데이터를 수신하는 누산기로서 동작하여, 방식은 실질적으로, 가산기/감산기의 병렬 어레이로 동작하는 제 1 부분과 누산기로서 동작하는 제 2 부분의 두 부분으로 나뉘어 진다. (c1,c2)=(1,1)이고 c5=0 이면, 합산 블럭(4)은, 모든 연산 단계에서 rs개의 (m/r)비트 차 데이터와 rs 개의 1비트 데이터를 데이터 결합기/다중화기블럭(23) 에 의해 예비적으로 변환된 AA/DSA 유닛의 블럭으로부터 수신하여 누산하는 SAD 방식에 대한 블럭으로 구성된다. 이 경우, (c1,c2)=(1,1)이고 c5=1이면, 합산 블럭(4)은, 모든 연산 단계에서, s개의 m비트 부분곱을 수신하고 이 부분곱을 상기 데이터 결합기/다중화기 블럭(23)내에서 구현되는 적당한 쉬프트와 합산하거나 누산하는 기본 승수 기반 구조(예를 들면, 도 8의 행렬 벡터 산술방식의 합산 블럭)에 대한 블럭으로 구성된다. 이러한 재구성가능한 합산 블럭을 설계하는 많은 방법들이 있다. 도 13의 예는 도 9의 예에서처럼 제3 합산 블럭(최종 가산기)가 이어지는 2개의 합산 블럭(압축 어레이)을 사용한다.
도 13은 (n=m=13)비트 피승수 및 승수기에서 도 9의 행렬 벡터 산술을 위한 방식으로부터 비디오/이미지 처리를 위한 다기능 구조의 실시예를 도시하고 있다. 이 구현예에서 상기 방식은 8개의 8비트나 4개의 16비트 가산기/감산기(2)의 재구성가능한 어레이, 상기 가산기/감산기(2)로부터 결과를 저장하는 메모리 유닛(21), 재구성가능한 데이터 라우팅 블럭(3), 두 개의 분리 합산/누산 블럭으로 동작도 하는 합산 블럭(4), 및 정확한 출력을 선택하는 출력 다중화기(20)로 구성되어 있다. 상기 방식은 7개의 제어 신호들(c1, ... c7)에 의해 제어된다. 상기 방식의 클럭신 호(미도시)는 수행되는 연산에 따라 상기 방식의 절반 가량 블럭들로 논리곱 게이트들을 통해 신호(c1 와 c2)에 결합된다. 예를 들어, (c1, c2) = (0,1)일때, 가산기/감산기의 어레이와 출력 다중화기는 기능적이다. 이 경우에, 상기 방식은 가산기/감산기의 병렬 어레이로만 동작한다. c1=1일때, 모든 블럭들은 기능적이지만 데이터 라우팅 블럭은 각각 c5=0 또는 c5=1에 따라 승산기 기반의 방식의 데이터 라우팅 블럭 또는 SAD 수행에 대한 직접 연결에 형성된다. 또한, 압축 어레이의 다른 부분들은 c5에 따라 동작한다. 이렇게 상기 방식은 신호(c5)에 따라 (c1= 1과 c5=0이면) SAD 구조나 (c1= 1과 c5=1이면) 승산기 기반의 구조에 형성된다. 차례로, c1=c5=1일 때, 승산기 기반의 구조는 명세서에서 언급한 것과 유사하게 신호들 c3, ...c7에 따라 가능한 구성들의 하나로 재구성된다. 또한, 합산 블럭은 즉시 한 쌍의 승산을 수행하기 위한 기회를 주는 (c6=1일 때) 두 개의 분리된 블럭들이나 다량의 부분 결과의 더 빠른 누산을 위한 (c6=0일 때) 단일 블럭으로 구성되기도 한다.
표 3은 제어신호(c1, ... c7)의 대응 선택과 함께 도 13의 MAVIP의 실현예에서 구현될 수 있는 연산들을 보여준다.
연산 제어신호 c1 c2 c3 c4 c5 c6 c7
병렬 8비트 가산/감산 0 x x x 0 1 1
SAD 1 x x x 0 0 1
13비트 승산 쌍 1 x 0 0 1 1 0
(kx1)에 대한 (1xk) 13비트 벡터 벡터 내부곱 (k<65) 1 0 0 1 1 0 1 (사용중인 메모리 없음)
(kx1)에 대한 (1xk)13비트 벡터 벡터 내부곱 (k<65) 1 1 1 1 1 0 0 (사용중인 메모리)
(pxk)에 대한 (kx1) 13비트 행렬 벡터 곱 1 c2 c3 1 1 0 0
(k<65) c2=c3=0 제1 (k/2) 사이클 및 그후 c2=c3= 1
길이 p를 가진 신호의 k탭 FIR 필터링 1 c2 c3 1 1 0 0 c2=c3=0 제1 (k/2) 사이클 및 그후 c2=c3= 1
승산기/MAC 유닛 구조들의 서로 다른 형태의 여러가지 다른 확장이 적용되므로 본 발명의 상기 실시예를 수행하는 많은 대체방법이 있다. 또한, 모든 구조에서 설계 파라미터들의 다른 선택들은 다른 대체방법으로 이어진다.
예를 들어, 본 발명의 실시예는 독립형 (타이트하게나 루스하게 연결된) 장치로 적용된다. 본 발명은 시스템 프로세서내의 기능 유닛으로 대체 구현된다. 이런 종류의 장치는 상기 프로세서내의 승산 유닛과 대체될 수 있다. 이를 수행하는 많은 대체방법들이 있다. 그들 중 하나는 다수의 가산기(제1 파이프라인 스테이지 (P1))어레이를 포함하지 않고 메모리(21)를 포함하지 않은 다른 실시예들의 한 부분이 상기 프로세서내의 기능 유닛으로서 사용된다. 상기 프로세서의 가산기/감산기들은 상기 다수의 가산기 어레이의 역할을 하면서 레지스터들은 행렬 벡터 연산을 위한 구조에 쓰이는 상기 메모리 역할을 할 것이다.
예를 들어, 텍사스 인스트루먼트사(Texas Instruments)의 TMS320C64x DSP는 8개의 기능 유닛을 포함하고 있는데, 여기서 6개의 기능 유닛은 64비트 가산기/감산기로서 동작하며 이들 각각은 2개의 32비트나 4개의 16비트, 또는 8개의 8비트 가산기/감산기로 동작한다. TMS320C64x DSP는 유사하게 각각 2개의 32비트나 4개의 16비트, 또는 8개의 8비트 가산기/감산기로 쓰이는 128개의 64비트 레지스터들을 포함한다. 도 5의 하나의 기능 유닛과 유사하지만 가산기 어레이를 구비하지 않는 다른 기능 유닛이 프로세서에 포함될 것이라고 가정한다. 그러면, 다수의 선택 블럭, 다수의 압축 어레이, 및 다수의 고속 최종 가산기를 포함하는 이 기능 유닛은 다음 두 사이클에서 승산과 승산 기반 연산을 위해 쓰인다.(기존의 TMS320C64x 승산기의 승산 또한 2개의 사이클을 취한다.) 제1 사이클에서, 가산기/감산기들은 피승수 x의 잠재 부분곱을 계산하고 그 결과를 레지스터에 저장한다. 다음 단계에서, 적절한 부분곱 집합을 선택하고 상기 기능 유닛에 합산한다. 피승수 x가 재사용되는 그런 경우에 제1 사이클은 x가 관련되는 제1 승산을 수행할 때 오직 한번 실행되나 시간과 전력소비를 확실히 줄이게 되는 x의 후항 승산에서는 생략될 수 있다. 또한, 아주 적은 수의 계수로 FIR 필터링(컨볼루션)을 수행할 때, 필터 계수를 위한 잠재 부분곱을 계산하고 그 결과를 레지스터에 저장하기 위하여 TMS320C64x 가산기/감산기는 초기에 몇몇 (하나의) 사이클에 사용될 것이다. 나머지 계산은 본 발명에 따른 기능 유닛과 다른 목적을 위해 가산기/감산기를 사용하는 기회를 주는 (또는 전력소비를 절약하기 위해 가산기/감산기의 동작을 중지하는) 로드/저장 유닛과 수행된다. FIR 필터링을 TMS320C64x에서 현재 수행하기 위하여 승산기와 가산기/감산기를 포함하는 모든 기능 유닛들은 바쁘게 움직인다.
다른 대체방법으로서 다양한 비트 정도(精度)를 위한 본 발명의 구조를 수행할 가능성이 있다. 예를 들어, 하나의 연산단계에서 하나의 n x m 승산, 2개의 승산 (n/2) x m 또는 n x (m/2) 승산, 또는 4개의 (n/2) x (m/2) 승산을 수행할 수 있는 승산기/MAC 유닛을 실행할 수 있다.
도 14는 본 발명의 실시예에 따른 장치(29)를 도시하고 있다. 상기 장치(29)는 연산을 제어하기 위한 제어 유닛(30)을 포함하고 있다. 상기 장치(29)는 신호 처리 태스크를 수행하거나 제어 태스크를 수행하는 마이크로프로세스를 수행하는 디지털 신호 처리기(31)를 포함한다. 그러나, 몇몇 신호처리 태스크, 특히, 비디오 신호처리에 관련된 태스크는 본 발명의 실시예에 따라 비디오/이미지 처리 유닛(32)에서 수행될 것이며, 이는 분리 유닛이거나 상기 디지털 신호 처리기(31) 내에서 수행될 것이다. 상기 장치(29)의 사용자 인터페이스(33)는 디스플레이 수단(34), 오디오 수단(35), 키보드(36), 및 예를 들어 비디오 카메라(37)를 포함하고 있다. 상기 장치(29)는 이동통신 수단과 같은 통신 수단(38)을 포함하여 통신 네트워크(미도시)와 통신하거나 알려진 바와 같이 다른 장치(미도시)와 정보를 교환할수 있다. 메모리 수단(39)은 상기 제어 유닛(30)을 위한 연산 명령과 같은 다른 종류의 데이터 및 프로그램을 저장하는 데에 이용된다.
본 발명은 상기 실시예들에만 국한되는 것이 아니라 특허청구 범위내에서 변형된 형태로 구현될 수 있다.

Claims (30)

  1. 적어도 두 개 이상의 파이프라인 스테이지들로 된 군, 데이터 입력을 위한 적어도 하나 이상의 데이터 인터페이스, 데이터 출력을 위한 적어도 하나 이상의 데이터 인터페이스를 포함하는 파이프라인 연산 장치를 이용하여 연산을 수행하는 방법에 있어서,
    상기 파이프라인 스테이지들은 데이터 입력을 위한 적어도 하나 이상의 데이터 인터페이스, 데이터 출력을 위한 적어도 하나 이상의 데이터 인터페이스를 포함하고,
    상기 연산 방법은,
    제 1 및 제 2 연산을 수행하기 위한 데이터를 상기 연산 장치로 입력하는 단계;
    상기 제 1 연산에서 적어도 하나 이상의 파이프라인 스테이지의 출력 데이터를 메모리에 저장하는 단계; 및
    상기 제 2 연산에서 상기 저장된 데이터를 다른 파이프라인 스테이지의 입력 데이터로 사용하는 단계를 포함하는 것을 특징으로 하는 연산 방법.
  2. 제 1항에 있어서, 상기 연산 방법은 높은 기수 부스(Booth) 재부호화하지 않는 승산 방법을 포함하는 것을 특징으로 하는 연산 방법.
  3. 제 1항 또는 제 2항에 있어서, 상기 연산 방법은
    상기 연산 동작을 제 1 서브 연산과 복수 개의 제 2 서브 연산들로 나누는 단계;
    상기 제 1 서브 연산의 결과를 저장하는 단계; 및
    저장된 연산 결과를 상기 복수 개의 제 2 서브 연산에 사용되는 단계를 포함하는 것을 특징으로 하는 연산 방법.
  4. 제 1항 또는 제 2항에 있어서, 상기 연산 방법은
    하나의 피승수를 승수와 곱하는 단계;
    첫번째 파이프라인 스테이지에서 상기 승수의 포텐셜 부분 곱의 연산을 수행하는 단계; 및
    상기 포텐셜 부분 곱을 상기 메모리에 저장되는 단계를 포함하는 것을 특징으로 하는 연산 방법.
  5. 제1항 또는 제2항에 있어서, 상기 연산 방법은
    피승수x를 복수 개의 승수 ai(i=1, ..., K)와 곱하여 공통 피승수x를 첫번째 승수 a1와 곱할 때 상기 공통 피승수x의 포텐셜 부분 곱을 연산하는 승산 단계;
    상기 포텐셜 부분 곱을 메모리에 저장하는 단계; 및
    상기 저장된 포텐셜 부분 곱을 사용하여 상기 공통 피승수x를 다른 승수 ai (i=2, ..., K)와 곱하는 단계를 포함하는 것을 특징으로 하는 연산 방법.
  6. 제 5항에 있어서, 상기 연산 방법은
    적어도 하나의 서브 연산을 복수 개의 부분 서브 연산으로 나누고 각각의 부분 서브 연산을 시간을 달리하여 수행함으로써 상기 연산 동작들을 적어도 부분적으로는 시간 인터레이싱(time interlacing)방식으로 수행하는 것을 특징으로 하는 연산 방법.
  7. 제 1항 또는 제 2항에 있어서, 상기 연산 방법은 비디오 정보의 처리와 관련되어 사용되는 것을 특징으로 하는 연산 방법.
  8. 제 5항에 있어서, 하나의 승산과 다른 하나의 승산을 파이프라인 방식으로 수행하며, 상기 다른 하나의 승산은 상기 하나의 승산이 끝나기 전에 시작하고, 상기 승산들은 적어도 제 1 및 제 2 서브 연산으로 나뉘고, 상기 제 1 및 제 2 서브 연산들 각각은 하나의 파이프라인 스테이지에서 수행되고, 상기 제 1 및 제 2 서브 연산들 중 적어도 하나는 하나의 파이프라인 스테이지에서 병렬적으로 수행되고, 제 2 승산을 위한 서브 연산은 제 1 승산을 위한 해당 서브 연산이 끝나기 전에 시작하는 것을 특징으로 하는 연산 방법.
  9. 제 1항 또는 제 2항에 있어서, 상기 연산 장치에서 선택적 데이터 라우팅 (selective data routing)이 수행되고, 선택적 데이터 라우팅 과정에서 적어도 하나의 데이터 인터페이스를 적어도 두개 이상의 다른 데이터 인터페이스들 가운데 선택된 하나의 데이터 인터페이스와 연결하여 데이터를 상기 적어도 하나의 데이터 인터페이스와 선택된 데이터 인터페이스 사이에서 라우팅시키기 위해 데이터 인터페이스를 선택하는 것을 특징으로 하는 연산 방법.
  10. 적어도 두 개 이상의 파이프라인 스테이지들로 된 군, 데이터 입력을 위한 적어도 하나 이상의 데이터 인터페이스, 데이터 출력을 위한 적어도 하나 이상의 데이터 인터페이스를 포함하는 연산 장치에서, 상기 파이프라인 스테이지들은 데이터 입력을 위한 적어도 하나 이상의 데이터 인터페이스와 데이터 출력을 위한 적어도 하나 이상의 데이터 인터페이스를 포함하는 연산 장치를 이용하여 제 1 및 제 2 연산을 위한 데이터 입력을 더 포함하는 파이프라인 연산 장치에서 연산을 수행하 는 시스템에 있어서 상기 제 1 연산에서 적어도 하나의 파이프라인 스테이지의 출력 데이터를 저장하기 위한 메모리(21)와 상기 제 2 연산에서 상기 저장된 데이터를 또 다른 파이프라인 단계의 입력 데이터로 사용하기 위한 데이터 복구장치(22)를 포함하는 것을 특징으로 하는 시스템.
  11. 제 10항에 있어서 상기 연산 장치는 고차 기수 부스 재부호화하지 않는 승산기인 것을 특징으로 하는 시스템.
  12. 제 10항 또는 제 11항에 있어서 상기 시스템의 연산 동작은 첫번째 파이프라인 스테이지에서 수행될 제 1 서브 연산과 다른 파이프라인 스테이지에서 수행될 복수 개의 제 2 서브 연산으로 나뉘고, 첫번째 서브 연산 결과는 메모리(21)에 저장될 수 있도록 배열되고, 상기 데이터 복구 장치는 메모리(21)의 출력을 상기 복수 개의 제 2 서브 연산에서 상기 저장된 연산 결과를 이용하기 위한 상기 다른 파이프라인 단계들 중 적어도 하나의 입력 데이터 인터페이스에 연결시키기 위한 다중화기를 포함하는 것을 특징으로 하는 시스템.
  13. 제 10항 또는 제 11항에 있어서, 상기 첫번째 파이프라인 스테이지는 가산기 어레이들(2)을 포함하고, 두번째 파이프라인 스테이지는 선택 블록들(3)을 포함하고, 세번째 파이프라인 스테이지는 압축 어레이들(4)을 포함하고, 네번째 파이프라인 스테이지는 올림수 예견 (carry-look-ahead) 가산기들(5)을 포함하고, 상기 첫번째 파이프라인 스테이지의 출력 데이터 인터페이스는 상기 메모리의 입력과 데이터 복구 장치의 하나의 입력에 연결되고, 상기 메모리의 출력은 상기 데이터 복구 장치의 또다른 입력에 연결되고, 데이터 복구 장치의 출력은 두번째 파이프라인 스테이지의 입력 데이터 인터페이스에 연결되는 것을 특징으로 하는 시스템.
  14. 제 10항 또는 제 11항에 있어서, 상기 메모리는 각각 하나의 값을 저장하도록 배열되는 복수 개의 레지스터들과 상기 레지스터들로부터 데이터를 독출하거나 기록하기 위해 상기 레지스터들을 한번에 하나씩 어드레싱하기 위한 어드레싱부를 포함하는 것을 특징으로 하는 시스템.
  15. 제 10항 또는 제 11항에 있어서, 상기 메모리는 각각 하나의 값을 저장하도록 배열되는 복수 개의 레지스터들과 상기 선택된 소스의 값을 첫번째 레지스터에 저장하기 위해 상기 메모리의 입력 또는 상기 레지스터들 중 하나의 출력을 선택하기 위한 다중화기를 포함하고, 첫번째 레지스터의 출력은 상기 메모리의 출력으로 연결되는 것을 특징으로 하는 시스템.
  16. 제 10항 또는 제 11항에 있어서, 상기 시스템은 적어도 첫번째 출력 데이터 인터페이스와 두번째 출력 데이터 인터페이스 가운데 적어도 하나로부터 파이프라인 스테이지 (P1, P2, P3, P4)으로의 입력 데이터 인터페이스를 선택하기 위한 적어도 하나의 멀티플렉스를 포함하고, 상기 첫번째 출력 데이터 인터페이스는 상기 해당 파이프라인 스테이지 이전의 파이프라인 단계의 출력인 것을 특징으로 하는 시스템.
  17. 제 10항 또는 제 11항에 있어서, 상기 시스템은 비디오 정보를 처리하기 위한 수단 (34, 37)을 포함하는 것을 특징으로 하는 시스템.
  18. 적어도 두 개 이상의 파이프라인 스테이지들로 된 군, 데이터 입력을 위한 적어도 하나 이상의 데이터 인터페이스, 데이터 출력을 위한 적어도 하나 이상의 데이터 인터페이스를 포함하는 파이프라인 연산 장치에서, 상기 파이프라인 스테이지들은 데이터 입력을 위한 적어도 하나 이상의 데이터 인터페이스와 데이터 출력을 위한 적어도 하나 이상의 데이터 인터페이스를 포함하는 파이프라인 연산 장치에서 연산을 수행하는 장치에 있어서 상기 장치는 상기 제 1 연산에서 적어도 하나의 파이프라인 스테이지의 출력 데이터를 저정하기 위한 메모리(21)와 상기 제 2 연산에서 상기 저장된 데이터를 또 다른 파이프라인 스테이지의 입력 데이터로 사용하기 위한 데이터 복구 장치를 포함하는 것을 특징으로 하는 장치.
  19. 제 18항에 있어서, 상기 장치는 고차 기수 재부호화하지 않는 부스 승산기인 것을 특징으로 하는 장치.
  20. 제 18항 또는 제 19항에 있어서, 상기 장치의 연산 동작은 첫번째 파이프라인 스테이지에서 수행될 제 1 서브 연산과 다른 파이프라인 스테이지에서 수행될 복수 개의 제 2 서브 연산으로 나뉘고, 첫번째 서브 연산 결과는 메모리(21)에 저장될 수 있도록 배열되고, 상기 데이터 복구 장치는 메모리(21)의 출력을 상기 복수 개의 제 2 서브 연산에서 상기 저장된 연산 결과를 이용하기 위한 상기 다른 파이프라인 단계들 중 적어도 하나의 입력 데이터 인터페이스에 연결시키기 위한 다중화기를 포함하는 것을 특징으로 하는 시스템.
  21. 제 18항 또는 제 19항에 있어서, 상기 첫번째 파이프라인 스테이지는 가산기 어레이들(2)을 포함하고, 두번째 파이프라인 스테이지는 선택 블록들(3)을 포함하고, 세번째 파이프라인 스테이지는 압축 어레이들(4)을 포함하고, 네번째 파이프라인 스테이지는 올림수 예견 (carry-look-ahead) 가산기들(5)을 포함하고, 상기 첫번째 파이프라인 스테이지의 출력 데이터 인터페이스는 상기 메모리의 입력과 데이터 복구 장치의 하나의 입력에 연결되고, 상기 메모리의 출력은 상기 데이터 복구 장치의 또다른 입력에 연결되고, 데이터 복구 장치의 출력은 두번째 파이프라인 스테이지의 입력 데이터 인터페이스에 연결되는 것을 특징으로 하는 시스템.
  22. 제 18항 또는 제 19항에 있어서, 상기 메모리는 각각 하나의 값을 저장하도록 배열되는 복수 개의 레지스터들과 상기 레지스터들로부터 데이터를 독출하거나 기록하기 위해 상기 레지스터들을 한번에 하나씩 어드레싱하기 위한 어드레싱부를 포함하는 것을 특징으로 하는 시스템.
  23. 제 18항 또는 제 19항에 있어서, 상기 메모리는 각각 하나의 값을 저장하도록 배열되는 복수 개의 레지스터들과 상기 선택된 소스의 값을 첫번째 레지스터에 저장하기 위해 상기 메모리의 입력 또는 상기 레지스터들 중 하나의 출력을 선택하기 위한 다중화기를 포함하고, 첫번째 레지스터의 출력은 상기 메모리의 출력으로 연결되는 것을 특징으로 하는 시스템.
  24. 제 18항 또는 제 19항에 있어서, 상기 시스템은 적어도 첫번째 출력 데이터 인터페이스와 두번째 출력 데이터 인터페이스로부터 파이프라인 스테이지 (P1, P2, P3, P4)으로의 입력 데이터 인터페이스를 선택하기 위한 적어도 하나의 멀티플렉스를 포함하고, 상기 첫번째 출력 데이터 인터페이스는 상기 해당 파이프라인 스테이지 이전의 파이프라인 단계의 출력인 것을 특징으로 하는 시스템.
  25. 제 18항 또는 제 19항에 있어서, 상기 시스템은 비디오 정보를 처리하기 위한 수단 (34, 37)을 포함하는 것을 특징으로 하는 시스템.
  26. 제 18항 또는 제 19항에 있어서, 하나의 승산 연산과 또 다른 승산 연산은 파이프라인 방식으로 수행되도록 배열되고, 상기 장치는 적어도 하나의 파이프라인 스테이지의 입력 데이터 인터페이스에 파이프라인 레지스터들, 상기 적어도 하나의 파이프라인 스테이지의 출력 데이터 인터페이스에 적어도 하나의 다중화기와 상기 파이프라인들이 한번에 하나씩만 오픈되어 상기 오픈된 파이프라인 스테이지의 입력 데이터 인터페이스에 데이터를 기록할 수 있도록 상기 파이프라인 레지스터들을 제어하는 제어 입력을 포함하고, 상기 승산 연산은 적어도 제 1 및 제 2의 서브 연산으로 나뉠 수 있도록 배열되며, 상기 제 1 및 제 2 서브 연산들 각각은 하나의 파이프라인 단계에서 병렬적으로 수행되도록 배열되고, 상기 서브 연산들 중 적어도 하나는 하나의 파이프라인 단계에서 병렬적으로 수행되도록 배열되고, 제 2 승산 연산을 위한 하위 연산은 제 1 승산 연산을 위한 해당 서브 연산이 끝나기 전에 시작되도록 배열되는 것을 특징으로 하는 장치.
  27. 제 18항 또는 제19항에 있어서, 상기 장치는 선택적 데이터 라우팅 (selective data routing)을 수행하기 위한 선택 수단들(2, 3, 4, 5)을 포함하고, 상기 선택 수단들은 하나의 데이터 인터페이스를 또다른 적어도 두개 이상의 데이터 인터페이스들 가운데 하나에 연결하여 상기 연결된 데이터 인터페이스들 간에 데이트를 라우팅하기 위한 연결 수단을 포함하는 것을 특징으로 하는 장치.
  28. 제 18항 또는 제 19항에 있어서, 상기 장치는 모바일 통신을 수행하기 위한 수단(38)을 포함하는 것을 특징으로 하는 장치.
  29. 제 18항 또는 제 19항에 있어서, 상기 장치는 집적 회로인 것을 특징으로 하는 장치.
  30. 제 18항 또는 제 19항에 있어서, 상기 장치는 컴퓨팅 장치인 것을 특징으로 하는 장치.
KR1020057007986A 2002-11-06 2003-11-05 연산을 수행하기 위한 방법, 시스템 및 장치 KR100714358B1 (ko)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
FI20021984 2002-11-06
FI20021984A FI118612B (fi) 2002-11-06 2002-11-06 Menetelmä ja järjestelmä laskuoperaatioiden suorittamiseksi ja laite

Publications (2)

Publication Number Publication Date
KR20050065673A KR20050065673A (ko) 2005-06-29
KR100714358B1 true KR100714358B1 (ko) 2007-05-02

Family

ID=8564893

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020057007986A KR100714358B1 (ko) 2002-11-06 2003-11-05 연산을 수행하기 위한 방법, 시스템 및 장치

Country Status (10)

Country Link
US (1) US7536430B2 (ko)
EP (1) EP1576494B1 (ko)
KR (1) KR100714358B1 (ko)
CN (1) CN100405361C (ko)
AT (1) ATE359559T1 (ko)
AU (1) AU2003276292A1 (ko)
DE (1) DE60313215T2 (ko)
FI (1) FI118612B (ko)
TW (1) TWI263167B (ko)
WO (1) WO2004042600A1 (ko)

Families Citing this family (56)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7565390B1 (en) * 2005-03-23 2009-07-21 Altera Corporation Circuitry for facilitating performance of multiply-accumulate operations in programmable logic devices
US8620980B1 (en) 2005-09-27 2013-12-31 Altera Corporation Programmable device with specialized multiplier blocks
US8301681B1 (en) 2006-02-09 2012-10-30 Altera Corporation Specialized processing block for programmable logic device
US8041759B1 (en) * 2006-02-09 2011-10-18 Altera Corporation Specialized processing block for programmable logic device
US8266199B2 (en) 2006-02-09 2012-09-11 Altera Corporation Specialized processing block for programmable logic device
US8266198B2 (en) 2006-02-09 2012-09-11 Altera Corporation Specialized processing block for programmable logic device
US7836117B1 (en) 2006-04-07 2010-11-16 Altera Corporation Specialized processing block for programmable logic device
US8386550B1 (en) 2006-09-20 2013-02-26 Altera Corporation Method for configuring a finite impulse response filter in a programmable logic device
US8386553B1 (en) 2006-12-05 2013-02-26 Altera Corporation Large multiplier for programmable logic device
US7930336B2 (en) 2006-12-05 2011-04-19 Altera Corporation Large multiplier for programmable logic device
US8650231B1 (en) 2007-01-22 2014-02-11 Altera Corporation Configuring floating point operations in a programmable device
US7865541B1 (en) 2007-01-22 2011-01-04 Altera Corporation Configuring floating point operations in a programmable logic device
US8645450B1 (en) 2007-03-02 2014-02-04 Altera Corporation Multiplier-accumulator circuitry and methods
US7949699B1 (en) 2007-08-30 2011-05-24 Altera Corporation Implementation of decimation filter in integrated circuit device using ram-based data storage
US8959137B1 (en) 2008-02-20 2015-02-17 Altera Corporation Implementing large multipliers in a programmable integrated circuit device
US8307023B1 (en) 2008-10-10 2012-11-06 Altera Corporation DSP block for implementing large multiplier on a programmable integrated circuit device
US8706790B1 (en) 2009-03-03 2014-04-22 Altera Corporation Implementing mixed-precision floating-point operations in a programmable integrated circuit device
US8645449B1 (en) 2009-03-03 2014-02-04 Altera Corporation Combined floating point adder and subtractor
US8468192B1 (en) 2009-03-03 2013-06-18 Altera Corporation Implementing multipliers in a programmable integrated circuit device
US8650236B1 (en) 2009-08-04 2014-02-11 Altera Corporation High-rate interpolation or decimation filter in integrated circuit device
US8396914B1 (en) 2009-09-11 2013-03-12 Altera Corporation Matrix decomposition in an integrated circuit device
US8412756B1 (en) 2009-09-11 2013-04-02 Altera Corporation Multi-operand floating point operations in a programmable integrated circuit device
US7948267B1 (en) 2010-02-09 2011-05-24 Altera Corporation Efficient rounding circuits and methods in configurable integrated circuit devices
US8539016B1 (en) 2010-02-09 2013-09-17 Altera Corporation QR decomposition in an integrated circuit device
US8601044B2 (en) 2010-03-02 2013-12-03 Altera Corporation Discrete Fourier Transform in an integrated circuit device
US8484265B1 (en) 2010-03-04 2013-07-09 Altera Corporation Angular range reduction in an integrated circuit device
US8510354B1 (en) 2010-03-12 2013-08-13 Altera Corporation Calculation of trigonometric functions in an integrated circuit device
US8539014B2 (en) 2010-03-25 2013-09-17 Altera Corporation Solving linear matrices in an integrated circuit device
US8589463B2 (en) 2010-06-25 2013-11-19 Altera Corporation Calculation of trigonometric functions in an integrated circuit device
US8862650B2 (en) 2010-06-25 2014-10-14 Altera Corporation Calculation of trigonometric functions in an integrated circuit device
US8577951B1 (en) 2010-08-19 2013-11-05 Altera Corporation Matrix operations in an integrated circuit device
US8645451B2 (en) 2011-03-10 2014-02-04 Altera Corporation Double-clocked specialized processing block in an integrated circuit device
US9600278B1 (en) 2011-05-09 2017-03-21 Altera Corporation Programmable device using fixed and configurable logic to implement recursive trees
US8812576B1 (en) 2011-09-12 2014-08-19 Altera Corporation QR decomposition in an integrated circuit device
US8949298B1 (en) 2011-09-16 2015-02-03 Altera Corporation Computing floating-point polynomials in an integrated circuit device
US9053045B1 (en) 2011-09-16 2015-06-09 Altera Corporation Computing floating-point polynomials in an integrated circuit device
US8762443B1 (en) 2011-11-15 2014-06-24 Altera Corporation Matrix operations in an integrated circuit device
US8543634B1 (en) 2012-03-30 2013-09-24 Altera Corporation Specialized processing block for programmable integrated circuit device
US9098332B1 (en) 2012-06-01 2015-08-04 Altera Corporation Specialized processing block with fixed- and floating-point structures
US9268742B2 (en) * 2012-06-05 2016-02-23 Intel Corporation Reconfigurable variable length fir filters for optimizing performance of digital repeater
US8996600B1 (en) 2012-08-03 2015-03-31 Altera Corporation Specialized processing block for implementing floating-point multiplier with subnormal operation support
US9207909B1 (en) 2012-11-26 2015-12-08 Altera Corporation Polynomial calculations optimized for programmable integrated circuit device structures
US9189200B1 (en) 2013-03-14 2015-11-17 Altera Corporation Multiple-precision processing block in a programmable integrated circuit device
US9348795B1 (en) 2013-07-03 2016-05-24 Altera Corporation Programmable device using fixed and configurable logic to implement floating-point rounding
US9684488B2 (en) 2015-03-26 2017-06-20 Altera Corporation Combined adder and pre-adder for high-radix multiplier circuit
CN107315718B (zh) * 2016-04-26 2020-08-21 中科寒武纪科技股份有限公司 一种用于执行向量内积运算的装置和方法
CN106168941B (zh) * 2016-06-30 2019-06-14 中国人民解放军国防科学技术大学 一种支持复数乘法的fft蝶形运算硬件实现电路
KR102631381B1 (ko) * 2016-11-07 2024-01-31 삼성전자주식회사 컨볼루션 신경망 처리 방법 및 장치
CN106970896B (zh) * 2017-03-30 2020-05-12 中国人民解放军国防科学技术大学 面向向量处理器的二维矩阵卷积的向量化实现方法
US10942706B2 (en) 2017-05-05 2021-03-09 Intel Corporation Implementation of floating-point trigonometric functions in an integrated circuit device
US10678507B2 (en) 2017-12-22 2020-06-09 Alibaba Group Holding Limited Programmable multiply-add array hardware
CN110190843B (zh) * 2018-04-10 2020-03-10 中科寒武纪科技股份有限公司 压缩器电路、华莱士树电路、乘法器电路、芯片和设备
JP7183079B2 (ja) * 2019-03-08 2022-12-05 株式会社東芝 半導体装置
TWI798640B (zh) * 2021-02-09 2023-04-11 新唐科技股份有限公司 常數乘法器
CN113870918B (zh) * 2021-09-30 2023-03-28 华中科技大学 存内稀疏矩阵乘法运算方法、方程求解方法以及求解器
CN115718724B (zh) * 2023-01-09 2023-05-09 阿里巴巴(中国)有限公司 Gpu、数据选择方法及芯片

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS6450828A (en) * 1987-08-05 1989-02-27 British Petroleum Co Homogeneous partial oxidation for methane containing paraffin hydrocarbon
JPH0644492A (ja) * 1992-07-23 1994-02-18 Aisin Aw Co Ltd 車両用経路誘導装置

Family Cites Families (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US3732410A (en) * 1969-12-22 1973-05-08 Postmaster Department Res Labo Self adaptive filter and control circuit therefor
US5220525A (en) * 1991-11-04 1993-06-15 Motorola, Inc. Recoded iterative multiplier
JP3546437B2 (ja) * 1993-03-31 2004-07-28 ソニー株式会社 適応形ビデオ信号演算処理装置
US5825680A (en) * 1996-06-21 1998-10-20 Digital Equipment Corporation Method and apparatus for performing fast division
US5935202A (en) * 1997-03-25 1999-08-10 International Business Machines Corporation Compressor circuit in a data processor and method therefor
US6085214A (en) * 1997-09-04 2000-07-04 Cirrus Logic, Inc. Digital multiplier with multiplier encoding involving 3X term
US6367003B1 (en) * 1998-03-04 2002-04-02 Micron Technology, Inc. Digital signal processor having enhanced utilization of multiply accumulate (MAC) stage and method
US6141674A (en) * 1998-06-10 2000-10-31 Hewlett-Packard Company Reducing the hardware cost of a bank of multipliers by combining shared terms
JP2000047852A (ja) * 1998-07-27 2000-02-18 Mitsubishi Electric Corp 乗算装置、該乗算装置を複数備える固定係数型firディジタルフィルタ
US6671708B1 (en) * 1998-11-26 2003-12-30 Matsushita Electric Industrial Co., Ltd. Processor and image processing device
US6353843B1 (en) * 1999-10-08 2002-03-05 Sony Corporation Of Japan High performance universal multiplier circuit
US7127482B2 (en) * 2001-11-19 2006-10-24 Intel Corporation Performance optimized approach for efficient downsampling operations

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS6450828A (en) * 1987-08-05 1989-02-27 British Petroleum Co Homogeneous partial oxidation for methane containing paraffin hydrocarbon
JPH0644492A (ja) * 1992-07-23 1994-02-18 Aisin Aw Co Ltd 車両用経路誘導装置

Also Published As

Publication number Publication date
CN1735881A (zh) 2006-02-15
US20040139131A1 (en) 2004-07-15
KR20050065673A (ko) 2005-06-29
DE60313215T2 (de) 2007-12-20
FI20021984A (fi) 2004-07-15
WO2004042600A1 (en) 2004-05-21
FI20021984A0 (fi) 2002-11-06
CN100405361C (zh) 2008-07-23
ATE359559T1 (de) 2007-05-15
DE60313215D1 (de) 2007-05-24
TW200411540A (en) 2004-07-01
FI118612B (fi) 2008-01-15
TWI263167B (en) 2006-10-01
EP1576494A1 (en) 2005-09-21
US7536430B2 (en) 2009-05-19
EP1576494B1 (en) 2007-04-11
AU2003276292A1 (en) 2004-06-07

Similar Documents

Publication Publication Date Title
KR100714358B1 (ko) 연산을 수행하기 위한 방법, 시스템 및 장치
KR100715770B1 (ko) 연산을 수행하는 방법 및 시스템 및 장치
US6601077B1 (en) DSP unit for multi-level global accumulation
US20080243976A1 (en) Multiply and multiply and accumulate unit
US5528529A (en) Electronic multiplying and adding apparatus and method
US6675286B1 (en) Multimedia instruction set for wide data paths
KR20220049212A (ko) 모듈러 연산을 위한 워드 병렬 연산 방법
US7607165B2 (en) Method and apparatus for multiplication and/or modular reduction processing
US7334011B2 (en) Method and system for performing a multiplication operation and a device
Kumar et al. Analysis of low power, area and high speed multipliers for DSP applications
JP4290203B2 (ja) リダクションアレイの装置および方法
Belyaev et al. A High-perfomance Multi-format SIMD Multiplier for Digital Signal Processors
JP3982965B2 (ja) 繰り返し型乗算器とアレイ型乗算器
Grossschadl et al. A single-cycle (32/spl times/32+ 32+ 64)-bit multiply/accumulate unit for digital signal processing and public-key cryptography
WO2008077803A1 (en) Simd processor with reduction unit
Patronik et al. Design of an RNS reverse converter for a new five-moduli special set
Guevorkian et al. A radix-8 multiplier design and its extension for efficient implementation of imaging algorithms
Guevorkian et al. A family of accelerators for matrix-vector arithmetics based on high-radix multiplier structures
Akram et al. Hybrid pipelined and multiplexed FIR filter architecture
Chen et al. Design methodology of a hardware-efficiency VLIW architecture with highly adaptable data path
RAO et al. DESIGN OF HIGH SPEED VEDIC MULTIPLIER WITH PIPELINE TECHNOLOGY
Rose et al. Segmented Arithmetic Operators for Graphics Processing
KR20030011978A (ko) 디에스피 프로세서 및 마이크로프로세서의 실시간영상데이터 처리를 위한 연산회로 및 그 연산방법

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: 20100622

Year of fee payment: 4

LAPS Lapse due to unpaid annual fee