KR20050084681A - 승산 방법 및 시스템과 그 장치 - Google Patents

승산 방법 및 시스템과 그 장치 Download PDF

Info

Publication number
KR20050084681A
KR20050084681A KR1020057007987A KR20057007987A KR20050084681A KR 20050084681 A KR20050084681 A KR 20050084681A KR 1020057007987 A KR1020057007987 A KR 1020057007987A KR 20057007987 A KR20057007987 A KR 20057007987A KR 20050084681 A KR20050084681 A KR 20050084681A
Authority
KR
South Korea
Prior art keywords
multiplication
pipeline stage
pipeline
partial
sub
Prior art date
Application number
KR1020057007987A
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 KR20050084681A publication Critical patent/KR20050084681A/ko

Links

Classifications

    • 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
    • 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
    • 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

  • Physics & Mathematics (AREA)
  • Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Mathematical Analysis (AREA)
  • Mathematical Optimization (AREA)
  • Pure & Applied Mathematics (AREA)
  • Computational Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • Computing Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Complex Calculations (AREA)
  • Image Processing (AREA)
  • Compression Or Coding Systems Of Tv Signals (AREA)

Abstract

본 발명은 제1피연산자와 제2피연산자 간에 승산을 수행하는 방법에 관한 것이다. 상기 방법에서, 승산은 적어도 두 개의 서브연산으로 나누어진다. 상기 서브연산들 중 적어도 하나는 타임 인터레이싱 방식을 이용하여 수행되고, 상기 적어도 하나의 서브연산은 부분 서브연산으로 더 나누어져서 각 부분 서브연산이 서로 다른 시간에 수행될 수 있다.

Description

승산 방법 및 시스템과 그 장치{Method and a system for performing a multiplication operation and a device}
본 발명은 파이프 라인 방법을 이용하여 한 승산과 다른 승산을 수행하는 방법에 관한 것으로, 상기 다른 승산은 상기 한 승산을 마치기 전에 시작하고, 상기 승산들은 적어도 제1 서브연산과 제2 서브연산으로 나뉘어지며, 각 제1 및 제2 서브연산은 하나의 파이프라인 스테이지에서 수행된다. 또한, 본 발명은 파이프라인 방법을 이용하여 한 승산과 다른 승산을 수행하는 장치에 관한 것으로, 상기 장치는 상기 한 승산과 다른 승산을 적어도 제1서브 연산과 제2서브연산으로 나누는 수단을 구비하며, 각 제1 및 제2서브연산은 하나의 파이프라인 스테이지에서 수행된다. 또한, 본 발명은 파이프라인 방법을 이용하여 한 승산과 다른 승산을 수행하는 수단을 구비하는 무선 터미날에 관한 것으로, 상기 무선 터미날은 상기 승산을 적어도 제1서브연산과 제2서브연산으로 나누는 수단을 구비하며, 각 제1 및 제2서브연산은 하나의 파이프라인 스테이지에서 수행된다. 또한, 본 발명은 파이프라인 방법을 이용하여 한 승산과 다른 승산을 수행할 수 있는 시스템에 관한 것으로, 상기 시스템은 상기 승산을 제1서브연산과 제2서브연산으로 나누는 수단을 구비하며, 각 제1 및 제2서브연산은 하나의 파이프라인 스테이지에서 수행된다.
승산, 승산누적연산(Multiply-Accumulate; MAC), 및 다른 연산이 필요한 다수의 애플리케이션이 존재한다. 비제한적인 예로서, 디지털 신호 필터링 애플리케이션 및 영상/화상 처리 애플리케이션 등등과 같은 다수의 신호처리 애플리케이션은 실시간 승산 및 MAC연산이 구현되는 애플리케이션이다. 또한, 벡터 및/또는 행렬 연산이 필요한 다른 애플리케이션은 승산을 사용한다. 승산은 일반적으로 합산 및 비트단위(bit-wise) 이동(shifting)연산으로서 구현된다. 두 개의 오퍼랜드(operand) 사이의 하나의 승산은 승산결과를 계산하기 위해서 다수의 합산 및 이동연산을 필요로 하므로, 이러한 승산은 리소스 요구 태스크(task)이다.
실시간으로 구현되어야하는 다량의 계산은 영상/화상처리알고리즘에 대해 특수하다. 그러므로, 고속성능은 서로 다른 영상/화상처리알고리즘 또는 서브태스크를 위한 병렬로 특화된 구조(가속기)를 개발하기 위한 구동력이 되어왔다. 선행기술에 따른 영상/화상처리시스템은 여러개의 가속기(예를 들어, 절대 편차의 합(Sum of Absolute Differences (SAD), 코사인 변환 등등)에 관한 것으로, 상기 각각의 가속기는 다량의 하드웨어요소로 이루어진다. 그러나, 이동통신시스템이 발달함에 따라, 시스템의 비용에 영향을 미치는 하드웨어 면적 및, 전력/에너지 소비는 고속성능만큼 중요한 특성이다. 이러한 모든 기준을 만족시키는 하나의 방법은, 디지털 신호 처리기(Digital Signal Processor; DSP)를 보다 더 현대화하고 특수 가속기의 수를 줄이는 것이다. 이 분야가 약간은 개선되었어도, 상기 개발된 시스템은 여전히 고속 및 전력소비 요구사항을 항상 충족시키지 못한다.
비디오 및 이미지 처리 및 다른 신호처리작업을 위한 선행기술에 따른 구조 는 일반적으로 종래의 승산기 구조에 기본한다. 다수의 승산방법 및, 승산 및/또는 승산누적연산을 수행하는 매우 다양한 장치가 개발되었다. 이하, 승산방법, 및 두 개의 피연산자 (피승수 및 승수)가 미지수인 경우에 대한 일반적인 승산기 구조, 2의 보수 산술에 제시된 두 개의 고정점으로 표시된 정수의 승산, 및 소위 T 기수방법이 고려될 것이다.
영상 및 화상처리 및 다른 신호처리작업을 위한 선행기술에 따른 방식은 대개 종래의 승산기 구조에 기초한다. 다수의 승산방법 및, 승산 및/또는 승산누적연산을 구현하는 매우 다양한 장치가 개발되었다. 이하, 승산방법, 및 두 개의 오퍼랜드(피승수 및 승수)가 미지수인 경우에 대한 일반적인 승산기 구조, 2의 보수 산술에 제시된 두 개의 고정점으로 표시된 정수의 승산, 및 소위 T 기수방법이 고려될 것이다.
n비트(부호 포함) 승수 의 2의 보수 표현이 로, m비트(부호 포함) 피승수 x의 2의 보수표현이 로 각각 표시된다. 의 관계 (및 x의 유사관계)는 하기 수학식 1과 같다.
T 기수 병렬승산방법에서, 곱 y=a·x의 상기 2의 보수 는 수학식 2에 따라 구해진다.
두 개의 주요 단계는 하기와 같다.
제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과 같이 구해진다.
즉, nradix-2=n이고, 상기 부분곱 Ar·x,r=0,...,n-1은 r=0,...,n-2에 대한 Ar=ar에 의해 정의되고 r=n-1에 대한 An-1=-an-1에 의해 정의된다. 이들 부분곱은 승수 와 피승수 의 각각의 2의 보수비트 사이의 2입력 AND 게이트의 어레이를 사용하여 간단히(그리고 일반적으로) 성립될 수 있다. Ar·x,r=0,...,n-1의 값은 제2 단계에서 누적되기전에 2r에 곱해진다(즉, r 위치에 대해 좌측으로 이동된다). 이러한 방법에서, 때때로 보정인수라고도 불리우는 부분곱 An-1·x은 나머지 부분곱과 다르게 취급해야하는 것을 주목해야한다.
상기 부분곱의 불균일성은 또다른 2기수 승산방법에서 승수의 2의 보수비트 를 중복 부호화된 숫자에 재부호화하는 부스(Booth) 재부호화에 기초하여 방지된다. 상기 곱은 수학식 4와 같이 구할 수 있다.
즉, 전술한 바와 같이 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가 의 비트를 반전하고 1을 가산할 것을 요구하는 것을 알아내면서 용이하게 사용할 수 있다. 일반적으로, 1의 가산은 상기 부분곱이 합산되는 제2 단계에서 수행된다.
전적으로 nradix-2=n 부분곱은, 부스 재부호화되거나 재부호화되지않은 방법이 사용되는지의 여부에 상관없이 2기수 승산방법에서 합산된다. 부분곱의 수를 줄이기 위해서, 제2 단계(부분곱 합산)의 지연, 4기수 수정 부스 알고리즘(Modified Booth Algorithm; MBA)에 기반한 방법이 개발되었다. 상기 MBA는 가장 대중적인 승산방법중의 하나이며 광범위하게 연구되고 최적화되고 있다. MBA에서, 상기 곱의 2의 보수는 nrad-4=n/2의 부분곱의 합으로서 다음 수학식 5와 같이 구해진다.
여기서, Ar ∈ {-2,-1,0,1,2}, r=0,1,...,n/2-1는 상기 승수 의 2의 보수표현의 세 개의 연속비트 a2r+1,a2r,a2r-1 (a-1=0)에 따라서 선택된다. 상기 부분곱 Arx, r=0,1,...,n/2-1은 제2 단계에서 가산되기전에 22r와 곱해진다(즉, 2r 위치의 좌측으로 하드웨어적으로 이동된다).
아래의 수식들을 간단하게 만들기 위해서, n/k가 사용되는 모든 경우에 n은 k의 정수배라고 가정한다. 2의 보수가 임의의 비트수 (최상위 비트를 반복해서 얻어지는 비트수)를 이용하여 완전한 수가 될 수 있기 때문에, 상기 가정은 타당한 가정이다.
도 1은 일반적인 수정 부스 알고리즘(MBA)(101)을 도시한다. n/2 부스 부호화 복호화 행들이 존재하는데, 각 행은 부스 인코더(102) 및 m+1번째 부스 디코더(103)로 이루어지며 2에 의해 그룹화될 수 있다. 각각의 부스 인코더(102)는 상기 승수 의 2의 보수의 세 개의 연속적 비트를 하나의 비트를 중복하여 분석하며, q신호들을 상기 디코더(103)의 해당 행으로 출력한다. 최근의 몇몇 선행기술에서는, q=3의 값으로 설계한다. 이러한 q신호들에 따르면, 상기 디코더 행들은 입력에서 피승수의 비트 를 갖는 부분곱 (Arx)∈{0,±x,±2x}을 형성한다. x의 음이 아닌 배수는, 2x가 하드웨어 자체에 들어있는 이동에 의해 형성되므로 용이하게 사용가능하다. x의 음의 배수는 x의 해당하는 양의 배수의 비트를 반전하고 그리고나서 1을 가산함으로써 형성되며, 일반적으로 상기 단계는 제2 단계에서 수행된다. 예를 들어, 미국 특허번호 6,173,304는 부스 인코더 및 디코더를 실현하는 시스템을 개시한다. 2기수방법에서 상기 부분곱은 MBA에서보다 더 용이하게 알 수 있으나, MBA가 사용되어 속도성능, 면적, 및 전력소비에서의 중요한 장점을 유발하는 경우, 상기 부분곱의 수는 n/2로 감소된다.
부분곱의 수를 더 줄이기 위해서, 부스 인코딩은 멀티비트(임의의 T기수)로 더 확장되었다. 상기 곱의 일반적인 수학식은 수학식 6과 같이 주어진다.
즉, nradox-T=n/t 부분곱 (T=2t)이 존재하며, 각각의 부분곱은 -2t-1와 2t-1 사이의 범위에 있는 A를 갖는 포텐셜 부분곱 Ax의 리스트에서 승수 의 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) 멀티비트 부스 재부호화된 ("4 이상의 기수"로 재부호화된) 승산기들의 일반적 구조(201)를 도시한다. 상기 구조는 포텐셜 부분곱 0,±x,±2x,,,,±Tx의 리스트를 계산하는 가산기 어레이(202), n/t 부분곱을 상기 승수비트에 따라서 선택하는 선택블럭(203), 및 상기 선택된 부분곱을 합산하는 합산블럭(204)으로 이루어진다. 최종 가산기(205)는 상기 합산블럭(204)에 의해 발생한 합 S와 자리올림(carry) C 항들로부터 곱 을 형성한다.
전형적인 종래의 4이상의 고차기수 승수의 가산기 어레이는 포텐셜 부분곱 리스트에 포함된 x의 홀수의 양의 배수들과 동수(同數))의 가산기들(T가 8인 경우는 하나, 16인 경우는 세 개 등)로 이루어진다. 일반적으로, 포텐셜 부분곱의 리스트를 형성하는 것이 오히려 상기 승산기들에서 시간을 소모하는 부분이므로, 패스트 예견 자리 올림 (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보다 고차의 기수 승수의 선택블럭(203)은 n/t T기수 부스 인코더들 및 동일한 수의 디코더 행들로 이루어진다. 각각의 인코더는 상기 승수의 해당하는 t+1개의 승수 집합을 분석하고, 해당하는 부분곱들이 상기 디코더 행들에 의해 형성되는가에 따라서 복수의 제어신호들을 출력한다. 4기수 부스 인코더들 및 디코더들을 고차 기수들로 확장하는 방법은 예를 들어, 미국 특허번호 6,240,438에 개시되어 있다.
이하, 부분곱을 합산, 즉, 제2 단계가 보다 상세히 설명될 것이다. 대부분의 병렬 승산기/MAC유닛 구조는 제1 단계에서 형성된 부분곱을 합산하는 고속 가산기(최종 가산기)에 의해 수반된 압축 어레이로 이루어진 합산블럭을 사용한다(도 1 및 2 참조). 상기 압축 어레이는 nradix-T 부분곱 행들을, 최종 가산기와 함께 더해진 합 S와 자리올림 C 항들에 해당하는 두 개의 행들로 줄인다. 상기 압축 어레이는 대개 풀 앤드 하프 가산기(캐리 세이브 애더 트리 또는 월리스 트리) 또는 4:2 압축기로 이루어진다. 상기 최종 가산기는 대개 패스트 캐리 룩 어헤드 애더이며, 이는 상기 압축 어레이로부터 서로 다른 비트의 지연에 따라서 신중히 설계된다.
도 3a 및 도 3b에 도시된 바와 같이, 승산기 구조를 MAC 유닛으로 확장할 때 두 가지 방법이 주로 사용된다. 첫번째 경우(도3a 참조), 상기 압축 어레이(301)의 두 개의 출력들(합(S)과 자리올림항(C))은 출력들의 입력값들로 피드백되므로 현재의 부분곱 값들은 현재의 누적값의 두 개의 가수들로 누적된다. 그 후, 합(S)과 자리올림항(C)들은 상기 최종 가산기(302) 내로 가산된다. 두번째 경우(도3b 참조), 이러한 출력들은 또다른 압축 어레이(303)로 공급되며, 상기 압축 어레이(303)의 출력들은 출력의 입력값(제2 압축 어레이(303))의 입력)으로 피드백된다. 이제, 상기 현재 곱의 합(S)과 자리올림항(C)들은, 상기 최종 합(S)과 자리올림항(C)들이 상기 최종 가산기(302)내에서 가산될 때, 최종 주기까지 상기 현재의 누적값에 누적된다. 상기 전체 압축 어레이의 깊이 (그러므로, 전체 지연)는 첫번째 경우에서 낮아질 수 있는 반면에, 그 폭, 면적, 및 전력소비는 두번째 경우에서 낮아질 수 있다.
고차 기수 승수를 요약해보면, 기수가 높을수록 제1 단계(부분곱 생성)에서 계산이 더 복잡해지고, 제2 단계(부분곱 합산)에서 계산은 더 단순해진다. 가산기 어레이 및 선택블럭을 포함하는 다소 시간과 면적을 소모하는 부분곱 생성기를 구비해야하므로, 상기 "4 이상의 기수" 승산방법은 대중성을 얻지 못한 것으로 추측된다. 일반적으로, 상기 4기수 MBA는 최선의 선행기술에 따른 병렬 승산방법으로 간주되며 다수의 산업적 승산기에 사용된다.
본 발명의 주요목적은 비디오 및 이미지 처리시 요구되지만 선행기술 해결안에서는 존재하지않거나 미약한 몇몇의 승산기/MAC 유닛 특성을 향상시키는 것이다. 우선, 가장 대중적인 4기수 부스 재부호화 승산기/MAC 방법을 설명한다. 상기 방법의 일반적인 단점은 고차의 기수방법보다 전력이 많이 소모된다는 점이다. 또 다른 일반적인 단점은, 부분곱의 수가 2기수 승산에 비해 반으로 줄었지만, 고차 기수를 사용하면 그 수를 더 줄일 수 있다는 점이다. 즉, 이러한 방법의 복잡성은 주로 제2 단계(부분곱 합산)에 집중되어 있다. 4기수 부스 재부호화된 승산기/MAC 구조를 파이프라이닝할 때, 일반적으로 상기 부분곱 생성블럭은 제1 파이프라인 스테이지로서 간주되나, 이는 나머지 파이프라인 스테이지들과 함께 완전히 조절된다 (예를 들어, 나머지 파이프라인 스테이지들보다 빠르다).
"4 이상의 기수" 부스 재부호화된 승수를 고려할 때, 이러한 승수들의 서로 다른 실현들은, 단지 승산만을 실현할 경우를 고려할 때 면적 및 시간 기준에 대해서 4기수 승수들에 대해 경쟁적으로 수행되며, 전력소비에 대해서 이러한 4기수 승수들을 능가하는 것을 알 수 있었다. 상기 "4 이상의 기수" 방법의 주요 단점은 부분곱 생성블럭에 가산기 어레이를 구비해야한다는 점이다.
또한, 부스 재부호화 승산기는 부호확장 뿐 아니라 피승수의 음의 배수를 처리해야 하는 단점이 있다. 보다 중요한 사항으로, "16 이상의 기수" 부스 재부호 승산기는 포텐셜 부분곱을 구하기 위해 1-레벨 이상의 가산을 수행해야 한다.
따라서, 본 발명의 기술적 과제는 부스 재부호화없이 고차 기수 승산을 수행하는 것이다.
독립적인 선행 또는 새로 제안된 고차 기수승산/MAC 유닛들의 병렬 어레이를 사용하여 해당 복수의 연산들을 수행하는 경우, 전체 처리량을 변화시키지 않으면서 고속 블럭(faster blocks)을 공유할 수 있다고 하더라도 넓은 실리콘 면적이 필요하다.
따라서, 본 발명의 다른 기술적 과제는 승산기 뱅크 및/또는 공통 블럭을 가지는 MAC 유닛을 제공하는 것이다.
종래의 파이프 라인 승산기 및/또는 MAC 유닛의 가장 큰 단점은 파이프라인 스테이지를 조절(balancing)하는 것이 어렵다는 점이다.
도 1은 종래의 4기수 부스 재부호화된 승산기의 전형적인 구조를 도시한다.
도 2는 T기수 부스 재부호화된 (T≥8) 또는 재부호화되지않은 (T≥4) 승산기의 일반적인 구조를 도시한다.
도 3a는 n/t 선택된 부분곱 및 피드백 합과 자리 올림 항(carry term)을 위한 공통 압축 어레이로서 구현되고 병렬 T기수 MAC 유닛 구조 내의 합산 블럭의 일 실시 예를 도시한다.
도 3b는 분리 압축 어레이로서 구현되고 병렬 T기수 MAC 유닛 구조 내의 합산 블럭의 다른 실시예를 도시한다.
도 4는 본 발명에 따른 복수의 승산/MAC 연산을 위한 구성장치의 일반적인 구조의 단순 블럭도를 도시한다.
도 5a는 연속 기능블럭을 도시한다.
도 5b는 본 발명의 지연 (인터레이스) 병렬계산 법칙에 따라 작동되는 복수의 유사 병렬 기능블럭을 도시한다.
도 6a는 도 5b의 지연 병렬 기능블럭 내의 입력 레지스터의 작동모드의 타이밍도를 도시한다.
도 6b는 도 5b의 지연 병렬 기능블럭 내의 기능블럭들의 작동모드의 타이밍도를 도시한다.
도 6c는 도 5b의 지연 병렬 기능블럭 내의 출력 다중화기의 작동모드의 타이밍도를 도시한다.
도 7은 본 발명에 따른 피승수를 산술 부정화시키는 가산기를 구비하는 제1타입의 8 기수 승산기의 바람직한 실시예를 도시한다.
도 8은 도 7에 도시된 승산기 구조 내의 SEL 유닛의 실시예를 도시한다.
도 9는 m=13이고 n=16일 때, 도 7에 도시된 승산기 구조의 완전(full) 가산기 및 반(half) 가산기들을 구비하는 압축 어레이를 도시한다.
도 10은 본 발명의 바람직한 실시예에 따른 장치의 단순 블럭도를 도시한다.
도 11은 본 발명의 다른 실시예에 따른 복수의 승산/MAC 연산을 위한 구성장치의 일반구조의 단순 블럭도를 도시한다.
본 발명의 목적은 하기 두 개의 표에 도시되어 있다. 표 1a는 선행기술인 n 비트 승수를 m 비트 피승수와 곱하는 부스 재부호화 T 기수 승산/MAC 유닛에서 사용된 상이한 블럭들의 다양한 특성을 보여준다. 표 1b는 n 비트 승수를 m 비트 피승수와 곱하는 새로운 부스 비 재부호화 T 기수 승산/MAC 유닛에서 사용된 상이한 블럭들의 다양한 특성을 보여준다. 표 1c는 표 1a와 표 1b에서 사용된 두문자어(頭文字語)를 보여준다. 표 1a와 표 1b를 참조하면, 대부분의 n과 m의 값에서 각 승산/MAC 유닛 타입의 각 승산기의 블럭들의 지연에는 아주 중요한 차이가 있다는 것을 알 수 있다. 즉, 직접 상기 승산기를 파이프라인 구현시키면 파이프라인 스테이지 간에 균형을 맞추는 것이 어렵다. 상기 파이프라인 스테이지 간의 균형을 맞추기 위해서, 하나의 캐리 리플(carry-ripple) 블럭 내에서 각각 다른 수의 FA들을 구비하는 예견 자리올림 (carry-look-ahead) 가산기를 설계하여 유동적으로 첫번째와 마지막 파이프라인 스테이지들의 처리량을 늘릴 수 있다. 이런 이유로 상기 블럭들의 지연은 표 1a와 표 1b에는 도시되어 있지 않다. 어떤 경우에, 작은 n의 값과 고차 T 기수를 가졌다는 것은 캐리-리플 블럭들의 크기가 아주 작다(면적이 넓다)는 의미로 이해할 수 있다. 아주 효율적인 방법은 아니지만, CLA들을 이용하면 상기 두 개의 스테이지의 속도를 높일 수 있다. 그러나 내부회로 파이프라이닝을 적정 수준으로 실행하여 임계경로를 최적화시킴으로써 상기 블럭들의 최신 회로를 설계하기 때문에, 상기 방법은 중간의 두 파이프 라인 스테이지에는 적용할 수 없다. 나아가, 상기 블럭들의 상대적인 지연 차이는 다른 n의 값들의 선행기술 승산/MAC 유닛 구조의 타입별로 예를 들어 BR (T =8, 16)와 NR1 (T = 4, 8)에서 매우 다르다. 작은 n의 값과 고차 T 기수 (예를 들어 T =16, n은 임의의 수)의 경우 선택블럭의 속도는 압축어레이의 속도보다 느리고, 그 외의 경우에는 그 반대이다. 즉, 하나 또는 다른 블럭의 회로의 속도를 빠르게 설계하는 것이 상기 스테이지 간의 균형을 맞추기 위한 보편적인 해결책이 될 수는 없다. 따라서, 종래에는 균형잡힌 파이프라인 스테이지들을 가지는 승산/MAC 유닛 구조들을 체계적으로 파이프라이닝하는 것이 어려웠다.
[표 1a]
승산기 타입 BR, T = 4 BR, T = 8 BR, T = 16
AA 폭, s - 1 3
포텐션 PP들의 수 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
SB의 지연 6t 12t 16t
CA의 입력의 수 n/2(m+1)-bit+3n/21-bit n/3(m+2)-bit+4n/31-bit n/4(m+3)-bit+5n/41-bit
FA-CA의 입력의 수/레벨/지연 n=13, xMAC 7/4/8t9/5/10t 5/3/6t8/4/8t 4/2/4t6/3/6t
n=16, xMAC 8/4/8t10/5/10t 6/3/6t8/4/8t 4/2/4t6/3/6t
n=64, xMAC 32/8/16t34/9/18t 27/7/14t24/7/14t 16/6/12t18/6/12t
4:2-CA의 입력의 수/레벨/지연 n=13, xMAC 7/2/6t9/2(4:2)+FA/8t 5/(4:2)/+FA/5t7/2/6t 4/1/3t6/2/6t
n=16, xMAC 8/2/6t10/3/9t 6/2/6t8/2/6t 4/1/3t6/2/6t
n=64, xMAC 32/4/12t34/5/15t 22/4/12t24/4/12t 16/3/9t18/4/12t
[표 1b]
승산기 타입 NR1, T = 4 NR1, T = 8 NR2, T = 4 NR2, T = 8
AA 폭, s 2 4 1 2
포텐션 PP들의 수 4 8 4 8
SB의 구성요소 인코더 아니오 아니오 아니오 아니오
디코더 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 아니오 아니오 아니오 아니오
SB의 지연 5t 6t 6t 12t
CA의 입력의 수 ((n-1)/2+1)(m+2)-비트 ((n-1)/3+1)(m+3)-비트 (n-1)/2(m+4)-비트+1 1-비트 (n-1)3 (m+6)-비트+1 1-비트
FA-CA의 입력의 수/레벨/지연 n=13, xMA 7/4/8t9/4/8t 5/3/6t7/4/8t 6/3/6t8/4/8t 4/2/4t6/3/6t
n=16, xMA 9/4/8t11/5/10t 6/3/6t8/4/8t 8/4/8t10/5/10t 5/3/6t7/4/8t
n=64, xMA 33/8/16t35/9/18t 22/7/14t24/7/14t 32/8/16t34/9/18t 21/7/14t23/8/16t
4:2-CA의 입력의 수/레벨/지연 n=13, xMA 7/2/6t9/2(4:2)+FA/8t 5/(4:2)+FA/5t7/2/6t 6/2/6t8/2/6t 4/1/3t6/2/6t
n=16, xMA 9/2(4:2)+FA/8t11/3/9t 6/2/6t8/2/6t 8/2/6t10/3/9t 5/(4:2)+FA/5t7/2/6t
n=64, xMA 33/4(4:2)+FA/14t35/5/15t 22/4/12t24/4/12t 32/4/12t34/5/15t 21/4/12t23/4/12t
[표 1c]
BR 부스 재부호화 T 기수 승산기
NR1 비 재부호화 T 기수 승산기 타입1
NR2 비 재부호화 T 기수 승산기 타입2
SE 부호확장 회로
BR4, BR8, BR16 해당 기수의 부스 재부호 회로
BD4 기수-4 부스 디코더 회로
4:1, 8:1, 4:1 t/c, 8:1 t/c 다중화기 또는 해당 수의 입력을 가지는 트루/보수 다중화기
SB 선택블럭
CA, FA-CA, 4:2 CA 압축 어레이, 풀(FA) 및 하프 가산기 (HA)를 구비하는 CA, 4::2 압축기들을 구비하는 CA
본 발명의 목적은 파이프라인 스테이지가 잘 조절되는 병렬 파이프라인 방법으로 고정점 승산을 위한 개선된 계산 구조 및 방법을 구현하는 것이다.
본 발명의 기본 아이디어는 병렬 승산기 또는 MAC 유닛을 사용하여 적어도 부분적으로 시간 인터레이스(interlaced) 방법을 사용하여 계산연산을 수행하는 것이다. 간략히 말해서, 본 발명의 구조는 선행기술 T 기수 부스 재부호 승산/MAC 유닛 (T = 8, 16) 또는 새로운 비 재부호화 승산/MAC 유닛 (기수 T = 4, 8) 구조로부터, 각 파이프라인 스테이지를 병렬계산의 다른 레벨에서 병렬수행하여 상대적으로 느린 블럭에서도 병렬계산을 할 수 있도록 하는 파이프라인 방법을 이용하여 얻어진다. 상기 방법은 승산/MAC 유닛 설계에 높은 유연성을 도입한다. 어떤 측면에서 상기 방법은 하나의 선행기술인 승산/MAC 유닛과 비교하여 최소한의 하드웨어/전력소비 비용으로 높은 처리량을 얻을 수 있게 한다. 다른 측면에서 상기 방법을 이용하면 시스템 면적을 많이 절약할 수 있으며 파이프라인 스테이지 간의 균형을 맞출 수 있어서, 선행기술인 독립 승산/MAC 유닛의 뱅크와 비교할 때 하드웨어 이용률을 높이고 전력소비를 낮출 수 있다. 본 발명에 따른 상기 방법의 또 다른 중요한 장점은 입력/출력 버스 폭을 늘리지 않고도 병렬계산을 가능하게 한다는 점이다.
고차기수 승산/MAC 유닛 구조들은 독립적으로 다른 유용한 연산을 수행하는데 사용될 수 있는 블럭들을 구비하고 있다. 상기 블럭들은 가산기/감산기 어레이 또는 합산 블럭이다. 본 발명의 목적은 승산블럭 서브세트만을 포함하여 승산의 서브연산을 상기 장치를 이용하여 수행할 수 있게 하는 재구성 가능한 고차 기수 승산/MAC 유닛 구조를 제공하는 것이다.
정확히, 본 발명에 따른 방법은, 고차 기수 승산에 포함된 적어도 하나의 서브연산을 하나의 파이프라인 스테이지와 병렬로 수행하는 것이 주된 특징이다. 즉, 상기 방법에서 제2승산의 서브연산은 제1 승산의 해당 서브연산을 마치기 전에 수행된다. 본 발명에 따른 장치는 하나의 파이프라인 스테이지와 병렬로 고차 기수 승산에 포함된 적어도 하나의 서브연산을 수행하는 수단과 상기 하나의 승산의 해당 서브연산을 마치기 전에 상기 다른 승산의 서브연산을 실행하는 수단을 더 포함하는 것이 주된 특징이다. 본 발명에 따른 무선 단말기는 하나의 파이프라인 스테이지와 병렬로 고차 기수 승산에 포함된 적어도 하나의 서브연산을 수행하는 수단과 상기 하나의 승산의 해당 서브연산을 마치기 전에 상기 다른 승산의 서브연산을 실행하는 수단을 더 포함하는 것이 주된 특징이다. 본 발명에 따른 계산장치는 하나의 파이프라인 스테이지와 병렬로 고차 기수 승산에 포함된 적어도 하나의 서브연산을 수행하는 수단과 상기 하나의 승산의 해당 서브연산을 마치기 전에 상기 다른 승산의 서브연산을 실행하는 수단을 더 포함하는 것이 주된 특징이다. 본 발명에 따른 시스템은 하나의 파이프라인 스테이지와 병렬로 고차 기수 승산에 포함된 적어도 하나의 서브연산을 수행하는 수단과 상기 하나의 승산의 해당 서브연산을 마치기 전에 상기 다른 승산의 서브연산을 실행하는 수단을 더 포함하는 것이 주된 특징이다.
본 발명은 종래 기술에 비해 두드러진 장점을 보여준다. 본 발명에 따른 방법을 사용하여 비디오/이미지 처리와 연관된 곱 연산을 선행 기술 방법 및 장치보다 적은 전력으로 더 빠르게 실행할 수 있다. 본 발명은 복수의 곱/MAC를 실행하는 데 특히 효과적이다. 서로 다른 파이프라인 스테이지들을 파워 절약 모드로 설정하고 또/혹은 다른 계산 동작을 실질적으로 동시에 실행하는 다른 파이프라인 스테이지들을 사용하는 능력으로 소비 전력의 현저한 감소를 이룰 수 있다. 종래의 독립 승산기 어레이와 비교해보면, 파이프라인 스테이지 간의 균형을 유지하여 시스템 면적과 전력소비를 줄일 수 있다. 파이프라이닝시 다른 파이프라인 스테이지들의 지연을 균형잡고 전체 구조의 지속시간을 가장 빠른 블럭의 지연 만큼으로 유연하게 줄일 수 있으므로 고속실행(높은 처리량)을 가능하게 한다. 선행 기술의 단일 파이프라인(기수 4 혹은 그 이상) 승산기에 비해 최소한의 면적증가와, 입력/출력 버스 폭의 증가없이 처리율을 높일 수 있다.
첨부된 도면을 참고로 본 발명을 좀 더 상세히 설명한다.
이하, 본 발명의 바람직한 제1 실시 예를 좀 더 상세히 설명한다. 본 발명에 따른 장치의 제1 실시예의 일반적인 구조는 도 4에 도시되어 있다. 장치(401)는 일련의 다른 파이프라인 스테이지들(P1, P2, P3, P4)로 이루어진다. 본 실시 예에서, 장치(104)는 네 개의 파이프라인 스테이지를 포함하나, 파이프라인 스테이지의 개수는 본 발명의 범위 내에서 다르게 설정될 수 있다.
본 명세서에서 비제한적 예로서 사용된 본 발명의 바람직한 실시예는 일련의 승산 yi = aixi, i = 1,...,k, 또는 복수의 MAC 연산, 즉, 내부의 벡터 대 벡터 곱 을 수행하는 장치이다. 상기 장치는 실질적으로 고차 기수 부스 재부호화/비 재부호화 승산기 또는 MAC 유닛의 병렬 어레이(뱅크)로서 동작하고, 그 중 몇몇 블럭들은 승산기/MAC 유닛을 통해 공유된다.
파이프라이닝은 복수의 유사 연산(예를 들어, 승산 및/또는 MAC)을 실행하기 위한 시스템의 처리량을 높이는 일반적인 방법이다. 선행기술 T 기수 부스 재부호화 (파이프라인 T = 8, 16) 또는 비 재부호화 (T = 4, 8) 승산 구조 (도2 참조)의 전형적인 구현을 고려해보면, 제1스테이지(P1)는 표 1a에 나타나 있는 s값을 갖는 s가산기 어레이이고, 제2스테이지(P2)는 선택블럭이고, 제3스테이지(P3)는 압축 어레이이고, 마지막 스테이지들(P4) (상기 숫자는 구현형태에 따라 달라진다)은 최종 가산기를 구성할 수 있다.
본 발명을 승산공정에 대입시키려면, 임의의 부호를 가지는 2의 보수정수 (complement integer)의 새로운 비 재부호화 "4" 이상의 기수 승산방법은 수학식 3을 변형하여 다음과 같이 유도할 수 있다:
여기서 T = 2t,
또는,
수학식 7을 사용하면, (n-1)/t+1 포텐셜 부분곱이 얻어지며, 제1 (n-1)/t 부분곱은 0으로부터 2t-1의 범위를 가지는 피승수 Ar의 음이 아닌 배수 Arx, r = 0,1,...,n/t-1가 되고, 마지막 포텐셜 부분곱은 (-an-1x)가 된다. 수학식 8을 사용하면, n/t 포텐셜 부분곱 Arx, r = 0,1,...,n/t-1이 얻어지며, Ar의 값은 제1 n/t-1 포텐셜 부분곱의 경우 0과 2t-1 사이에서 변동되며 마지막 포텐셜 부분곱의 경우 -2t-1과 2t-1-1 사이에서 변동된다. 이 경우, 최상위 t+1 비트는 부스 재부화되는 반면에, 나머지 비트들은 t로서 그룹화된다. 수학식 7 또는 8에 기본한 승산기의 구조는 선택 블럭(203)과 포텐셜 부분곱의 수가 다른 점을 제외하고, 도2에 도시된 승산기의 구조와 유사하다. 승수는 부호화되지 않기 때문에, 선택블럭은 승산기 어레이로서 간단하게 실행될 수 있으며, 수학식 8을 사용한 경우, 최상위 t+1 비트의 경우 오직 부스 인코더/디코더의 한 행만을 사용한다. 수학식 8을 사용한 경우 1비트를 제외하고, 대부분의 모든 포텐셜 부부곱들은 피승수의 음이 아닌 배수이기 때문에 합산 블럭 내에서 1과 함께 더할 필요는 없다. 따라서, 선택블럭의 사이즈를 최소화할 수 있고 연결 네트워크를 보다 간편하게 사용할 수 있게 된다.
본 발명의 바람직한 실시예에 따른 장치는 복수(뱅크)의 승산/MAC 유닛을 집적시킨다. 상기 장치는 변수값들에 따라 다르게 작동하는데, 변수값을 적절히 선택하여 균형잡힌 파이프라인 스테이지를 갖는 장치를 설계할 수 있다. 제안된 T 기수 부스 재부호화 (T = 8, 16)/비 재부호화 (T = 4, 8) 승산기의 다양한 뱅크들의 일반적인 구조는 도 4에 도시되어 있다. 본 발명의 바람직한 실시예에 따른 승산/MAC 유닛의 뱅크구조는 일반적으로 파이프라인 장치(401)로서 기술된다. 상기 구조에서 제1파이프라인 스테이지(P1)은 복수 개의, 예를 들어 p개의 s 가산기(AAS) 어레이(402)를 구비하고, 모든 s가산기 어레이(402)는 동일한 입력라인들(406)을 공유한다. 제2파이프라인 스테이지(P2)는 복수 개의, 예를 들어 q개의 선택 블럭(SB's)(403)을 구비하며, 제3 파이프라인 스테이지(P3)는 복수 개의, 예를 들어 u개의 압축 어레이(CA's)(404)를 구비하며, 제4파이프라인 스테이지(P4)는 복수 개의, 예를 들어 개의 최종 예견 자리올림 가산기(CLA's)(405)를 구비한다. 기본 기능블럭들(AA's, SB's, CA's 및 CLA's)은 대응하는 선행기술 4, 8 또는 16 부스 재부호화 승산기 및/또는 MAC 유닛 또는 새로 제안된 8 또는 16 기수 비 재부호화 승산/MAC 유닛에서 사용되는 최종블럭들과 실제적으로 동일하다. 따라서 p = q = u = v =1의 경우의 구조는 선행기술 승산/MAC 유닛 구조에 대응한다. 본 발명의 바람직한 실시예에 따른 장치와 선행기술은 선행기술 구조의 모든 기본 블럭들이 본 발명에서는 다른 수의 복수의 기본 블럭들로 대체되었다는 점에서 큰 차이가 있다. 하나의 파이프라인 스테이지 내의 블럭들은 각 파이프라인의 처리량을 서로 동일하게 하고 원하는 동작단계 기간으로 조절할 수 있도록 하기의 타임-인터레이스(time-interlaced) 방식으로 작동된다.
복수의 기능 블럭들을 타임-인터레이스하는 원리를 도 4, 5a와 5b를 참조하여 하기에서 설명한다. FB는 승산/MAC 구조들의 기본 기능블럭들(AA, SB, CA, CLA) 중 하나일 수 있다. 기능블럭 FB는 대용량 시스템의 파이프라인 스테이지에서 사용될 수 있으며, Tdes가 시스템의 바람직한 연산단계 지속시간이라고 했을 때, 대략 DFB pTdes (단, DFB≤pTdes)의 지연을 갖는다고 가정한다. 파이프라인 스테이지(P1,...,P4)를 일 단계의 지속시간과 부합하는 처리율로 연산하도록 하기 위해서, 직렬 기능 블럭은 파이프라인 레지스터(래치)(R1,...,Rw)를 갖는 w 개의 기능 블럭(FB1, FB2,...,FBw)들과 입력(406, 407, 408, 409)에서 대체되고 출력(410, 411, 412, 413)에서 w:1 다중화기 (MUX) (602, 603, 604, 605)와 대체된다. 변수 w는 파이프라인 스테이지에 좌우된다. 제1 파이프라인 스테이지(P1)에 있어서 변수w는 변수 p와 대응하고, 즉, p 개의 파이프라인 레지스터(R1,...,Rp)가 있고, 제1 파이프라인 스테이지(P1)의 다중화기(410)는 p개의 입력 중 하나를 선택하여 출력한다. 제2 파이프라인 스테이지(P2)에 있어서, 변수 w는 변수 q와 대응하고, 즉, q개의 파이프라인 레지스터(R1,...,RA)가 있고, 제2 파이프라인 스테이지(P2)의 다중화기(411)는 q개의 입력 중에서 하나를 선택하여 각각 출력한다. 제3 파이프라인 스테이지(P3)에 있어서, 변수w는 변수u와 대응하고, 즉, u개의 파이프라인 레지스터(R1,...,Ru)가 있고, 제3 파이프라인 스테이지(P3)의 다중화기(412)는 각각 u개의 입력 중에서 하나를 선택하여 출력하는 두 개의 다중화기(미도시)를 포함한다. 제4 파이프라인 스테이지(P4)에 있어서, 변수w는 변수와 대응하고, 즉, 개의 파이프라인 레지스터(R1,...,Rv)가 존재하고, 제4 파이프라인 스테이지(P4)의 다중화기(413)는 개의 입력 중 하나를 출력(414)으로 선택한다. 파이프라인 스테이지(P1, P2, P3, P4)의 공유 입력(406, 407, 408, 409)은 w개의 파이프라인 레지스터(R1,...,Rw) 각각과 연결되어 있다. 그러나, 모든 레지스터는 한 연산 단계의 타임 오프셋으로 w개의 동작 단계 중에서 단 한 번만 개방된다. 이것은 도 6a의 타이밍도에 도시되어 있다. 이런 방식으로, 각각의 모든 연산 단계에서, 각각의 파이프라인 스테이지를 구성하는 복수 개의 다른 기능 블럭들의 입력 레지스터는 기록을 위해 폐쇄되므로, 다른 연결들은 비활성화되는 반면 실제로 입력(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) 사이에 분포된다. 타이밍도인 도6b에 도시된 바와 같이, 시스템의 동작 동안 연산 단계( 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 다중화기(410, 411, 412, 413)는 FB f 에서 획득한 결과를 다음 연산 단계 t+w (t= 1, 2,...,K)의 스테이지 출력으로 전달한다. 이러한 이유로, 도 6c에 도시된 바와 같이 다중화기(410, 411, 412, 413)는 순환 mod w 규칙에 따라 동작한다.
제1파이프라인 스테이지(P1)의 출력은 제2파이프라인 스테이지(P2)의 출력과 연결된다. 제2파이프라인 스테이지(P2)의 출력은 제3파이프라인 스테이지(P3)의 출력과 연결되며, 제3파이프라인 스테이지(P3)의 출력은 제4파이프라인 스테이지(P4)의 출력과 연결된다. 본 발명의 바람직한 실시예에 따른 장치에서 마지막 파이프라인 스테이지 (즉, 제4파이프라인 스테이지(P4))의 출력은 제3파이프라인 스테이지(P3)의 출력과 시스템의 출력과 연결된다.
따라서 종래 기술의 승산기/MAC 유닛 구조의 모든 각 기능 블럭을 복수의 유사한 기능 블럭들로 대체하고 시간 인터레이스 연산의 개념을 이용함으로써, 소정의 연산 단계 지속시간에 대해 각 파이프라인 스테이지 내의 블럭들의 숫자(즉, 파라미터 p, q, u, 및 v)를 적절하게 선택하여 파이프라인 스테이지의 향상된 밸런싱을 획득할 수도 있다. 종래 기술의 승산기/MAC 유닛 구조 내의 네 개의 파이프라인 스테이지가 각각 DAA, DSB, DCA, 및 DCLA이고 시스템의 바람직한 처리율이 초 당 Ndes 승산 MAC/연산이라고 가정하면, Tdes ≤ 1/Ndes이 되기 위해서 바람직한 연산단계 지속시간은 Tdes 초가 되도록 선택되고, 언급된 각 설계 파라미터들은, 기호 가 다음 정수 값으로의 올림을 의미할 때, p=, q=, u=, 및 v=로 선택될 것이다.
클락 Tdes 에서 동작하는 제안된 승산/MAC 유닛 구조의 표면적은 다음과 같이 구한다:
Sprop = pSAA + qSSB + uSCA + vSCLA + Soverhead,
상기 식에서 SAA, SSB, SCA, 및 SCLA 는 각각 대응하는 블럭들의 면적을 의미하고, Soverhead는 복수의 기능 블럭들을 각 파이프라인 스테이지에서 통합하는 연결 및 조절수단의 오버헤드를 의미한다.
한편, 종래의 단일 고차기수 파이프라인 승산기에서, Tpipe = max{DAA, DSB, DCA, DCLA 이라고 할 때, 처리량을 Npipe = 1/Tpipe라고 정의내릴 수 있다. 비록 Npipe ≥ Ndes, 즉, 단일 파이프라인 승산기가 작업을 처리할 수 있다고 해도, 상기 구조를 사용하면 표 1a에 도시된 바와 같이 DAA, DSB, DCA, DCLA 간에 큰 차가 생겨서 스테이지 간에 균형을 맞추기가 어려워진다. 그 결과, 하드웨어 이용률이 낮아지고, 효율적인 전력소비가 어려워진다. 그러나 예를 들어, 신호처리를 할 때는 단일 파이프라인 승산기 사용으로 얻어지는 처리량보다 몇 배 높은 처리량이 요구된다. 즉, 대부분의 경우, 신호처리 시스템은 n=독립 승산/MAC 유닛의 어레이 (뱅크)를 구비해야 할 수도 있다. 즉, n = max{p,q,u,v}. 종래의 승산/MAC 유닛 어레이의 총 면적은 다음과 같이 계산된다:
Sconv = n(SAA + SSB + SCA + SCLA) + Soverhead
Sprop과 Sconv를 비교해보면, 종래의 독립 승산/MAC 유닛 어레이에 비하여 본 발명에 따른 구조의 면적이 상당히 작다. 본 발명은 신호처리시 (예를 들어, 이미지/비디오 처리) 뿐 아니라 실시간 승산을 필요로 하는 다른 많은 공정 중 유용하게 사용될 수 있다.
따라서 본 발명의 바람직한 실시예에 따른 방법을 이용하면 제1파이프라인 스테이지(P1)로부터 제4파이프라인 스테이지(P4)까지 균형을 맞출 수가 있으며, 최소한의 면적만 확장해도 단일 고차기수 파이프라인 승산/MAC 유닛의 처리량을 늘릴 수 있다. 파이프라인 스테이지 간의 균형을 유지하여 하드웨어 이용률을 높이기 때문에 면적이 확장되는 것보다 훨씬 빠른 속도로 처리량이 늘어난다. 덧붙여서, 입력/출력버스 폭을 늘리지 않고도 처리량을 높일 수 있는데, 대부분의 많은 디지털 신호 처리기들이 필요로 하는 입력/출력버스 폭이 좁기 때문에 이것은 본 발명의 큰 장점이 될 수 있다.
도 7은 본 발명이 적용되는, 수학식 7에 기초한 비 재부호화 8기수 승산구조 (NR1, T = 8) 타입1을 도시한다. 승산기(701)의 기능은 이하에서 설명한다.
를 각각 n 비트(부호비트 포함)의 승수 a와 m 비트(부호비트 포함)의 피승수 x의 2의 보수라고 하자. 또한, 피승수를 n = 3n'+1 (n'은 정수)이 되도록 확장된 부호라고 가정하자. 이 경우, 곱 y = a.x의 (n+m) 비트(부호비트 포함)의 2의 보수는 다음과 같다:
상기 식에서,
또한, 상기 수학식들은 의 최하위 m+2 비트의 2의 보수 표현으로부터 얻어지는 부분곱 수치이고, k = min{n-1, m+2}. 는 다음과 같은 부호보정항이다:
상기 식에서,
Ar0일때, 은 식 xm-1C(n)2m+2-k 에 포함된 Ar.의 부호비트를 제거하면 얻어진다. 그러나, Ar = 0일때, 음의 (10...0) 또는 양의 (00...0)은 피승수 x의 부호에 따라 사용된다.
위에 기재된 바와 같이, 다음의 승수 알고리즘을 사용할 수 있다.
알고리즘1
승수 a의 2의 보수인 (n = 3n'+1)과 피승수 x의 2의 보수인 은 알고리즘1의 입력 데이터로 주어진다. 알고리즘1의 출력은 곱 y = a.x의 2의 보수인 이 된다. 알고리즘 1은 다음 단계들로 구성된다.
1단계: 포텐셜 부분곱 을 형성한다. 상기 부분곱은 가산기/감산기들(702b, 702c, 702d)와 같은 조합수단을 이용하여 각각 형성할 수 있다. 2의 보수 형식에서 부호 수정식는 예를 들어 제1가산기/감산기(702a)를 이용하여 얻을 수 있다. 는 피승수 x를 제1, 2, 3 위치에서 각각 왼쪽으로 쉬프트시켜서 얻는다. 를 어느 한 위치에서 왼쪽으로 쉬프트시켜서 얻는다. 임의의 3비트의 음이 아닌 수와 피승수 x의 모든 포텐셜 부분곱 수치인 는 1단계에서 구해진다. 1단계에서 얻어지는 모든 수는 하나의 피연산자 와 임의의 수의 위치들에서 왼쪽으로 쉬프트된 다른 피연산자 를 가지고 가산 또는 감산연산을 한 번 수행하여 얻어진다. 따라서, 1단계는 하나의 연산 단계에서 네 개의 평행 가산기/감산기(702a, 702b, 702c, 702d) 어레이를 이용하여 수행할 수 있다.
2단계: 승수의 각각의 연속하는 세 개의 비트 와 r =0,...,n'-1 군에서, n' 포텐셜 부분곱 을 1단계에서 구한 모든 포텐셜 곱 수치 리스트인 에서 선택한다. 상기 부분곱 선택은 선택수단(703b. 703c, 703d)에서 수행될 수 있다. 또한, an-1 = 0인 경우, 부호보정식의 값은 으로 설정되고. an-1 = 1인 경우, 부호보정식의 값은 으로 설정된다. 여기서, 는 1단계에서 구해진 값이다. 상기 설정은 상기 값 an의 출력으로 입력값 중 하나를 선택하는 제 1선택수단(703a)에서 수행된다. 부분곱 들은 으로부터 부호 비트를 제거하여 얻어지는 (m+2) 비트 수들이고, x의 부호와 상관없이 항상 양의 수가 된다.
3단계: 곱는 n' 개의 선택된 부분곱 의 값을 합산하여 구해진다. 상기 합산을 예를 들어 압축 어레이(704a)에서 수행하기 전에, 의 값들은 2k와 곱해지고, 의 값은 2r과 곱해진다. 도 7을 참조하면, 상기 승산은 선택블럭(703)과 합산블럭 (704) 사이에 화살표를 이용하여 도시된 쉬프트 연산으로 도시된다. 본 발명에 따른 승산방법의 3단계에서는 모든 (부분곱 열)를 더하는 반면에, 부스 승산방법에서 상기 수는 부호확장을 처리하는 방법에 따라 또는 가 된다. 나아가, 부호보정식 뿐만 아니라 각각의 부분곱 수치를 세 위치만큼 쉬프트시키기 때문에, 상기 열들의 일부는 서로 합해질 수 있다. 예를 들어, 두개의 열, 즉, 000101과 011000는 서로 합해져서 011101이 된다. 상기 일부 열들을 합하면, 총 부분곱열의 수는 이 된다. 모든 부분곱 들은 양의 수이고 는 (m+n) 비트수이기 때문에, 상기 합산을 하는 과정에서 부호확장은 필요하지 않다. 부호보정식의 수를 형성하고 합산할 때, 다른 방법들을 이용할 수도 있으나, 이 경우 알고리즘1을 조금 수정해야 한다. 제안된 승산방법은 3단계의 결과를 전단계에서 얻어진 결과들과 더하는 경우, 승산누적(MAC)으로 쉽게 확장될 수 있다.
도 7에 도시된 승산기(701)는 알고리즘1에 기초를 두고 있다. 승산기(701)는피승수 로부터 부호보정항 와 포텐셜 부분곱 집합인 를 계산하는 가산기 어레이(702); 부분곱 집합 , r = 0,...,n'-1 및 승수 의 비트에 따른 를 형성하는 선택블럭(703); 및 3r 위치에서 를 좌측으로 예비적으로 쉬프트하고 K 위치에서 를 예비적으로 좌측으로 쉬프트하는 선택블럭(703)의 출력인를 합산하여 곱를 계산하는 합산블럭(704)를 구비한다.
도 7에 도시된 승산기 구조는 전체 합산 블럭 또는 압축 어레이의 출력들의 피드백을 전체 합산블럭 또는 압축 어레이의 입력값들과 합하여 선택블럭(703)의 값들을 합한 결과를 선행하는 동작 단계에서 구해지는 값에 누적시킴으로써 승산누적 구조로 쉽게 확장될 수 있다.
도 7에 도시된 승산기 구조의 서로 다른 블럭들은 다른 실시예로 구현될 수 있다. 이하, 피승수 를 가산기 어레이(702)의 모든 네 개의 가산기/가산기(702a 702b, 702c, 702d)에 가능한 쉬프트 연산을 수행하면서 비트-병렬 방식으로 입력한다고 가정하자. 제1가산기(702a)는 상수 로부터 를 감산하여 를 얻는다. 합산블럭(704)에서 값 an을 가산할 수 있는 경우, 가산기(702a)는 m개의 반전기로 대체할 수 있다. 제2가산기(702b)와 제3가산기(702c)는 그들의 제2입력값에서 를 수신하고, 제2입력값에서 하나 또는 두 개의 위치에서 각각 왼쪽으로 쉬프트된 를 수신하다 (단 하나의 입력값을 갖는 가산기도 고려해볼 수 있다). 그 결과 값으로 각각 가 얻어진다. 마찬가지로, 제4가산기(702d)는 로부터 를 감산하여 을 구한다. 가산기 (702a 702b, 702c, 702d) 어레이는 제1파이프라인 스테이지(P1)을 구성한다.
가산기 어레이(702)의 출력은 본 발명의 실시예에 따른 선택블럭(703)으로 입력된다. 상기 선택블럭(703)은 제2파이프라인(P2)을 구성하고, (n+m-k) 비트 2:1 다중화기(703a)와 n'개의 선택블럭(SEL)(703a 703b, 703c, 703d)을 구비한다. 다중화기(703a)는 제1입력값과 제2입력값으로 각각 를 입력받고, an으로 컨트롤되어 식를 출력한다. 모든 선택유닛(703b, 703c 및 703d)는 0, , , 를 입력값을 갖고 대응하는 승수 의 세 개의 비트로 제어된다. 출력값은 다음의 표 3에 도시되어 있다.
[표3]
Ar 선택 입력 좌측 쉬프트 출력값
000 0 0 0 xm-10...0
001 1 0
010 1 1
011 2 0
100 1 2
101 3 0
110 2 1
111 4 0
도 8은 선택유닛(703b, 703c 및 703d)으로 실행되는 회로의 비제한적인 예를 도시한다. 상기 회로는 다른 일부의 입력값들의 비트들을 쉬프트시켜서 입력값들을 구하는 8대1 다중화기를 구비한다. 일반적으로 선택유닛(703b, 703c 및 703d)은 표3에 따른 작용을 하는 임의의 회로일 수 있다.
본 발명의 실시예에 따를 다중화기 구조의 합산블럭(704)은 (뒤에서 최종가산기라고 정의될) 가산기(705)에 잇따라서 압축어레이(CA)(704a)를 구비한다. 합산블럭(704)은 제3파이프라인 스테이지(P3)와 제4파이프라인 스테이지(P4)를 구성한다. 압축어레이(704a)를 사용하면 n'+1개의 부분곱 열을 두 개의 열로 줄일 수 있다. 압축어레이(704a)는 3:2 비율의 완전(full) 가산기(FAs), 반(half) 가산기(HAs) 및/또는 4:2 비율의 압축기를 구비할 수 있다. 본 실시예에서 사용될 수 있는 압축어레이와 최종가산기를 구성하는 기술은 선행기술에 잘 나타나 있다. 그러나, 합산블럭 내에서 추가되는 열의 수는 선행기술인 4기수 부스 재부호화 승산기에 비해 적다. 따라서, 압축어레이 내의 레벨의 수와 지연 및 사이즈를 상당 부분 줄일 수 있다. 예를 들어, 승산기와 MAC 유닛 실행을 위해 4기수 방법 대신에 8기수 방법을 사용하면 13비트의 피승수(m = 13)과 16비트의 승수(n = 16)의 경우 추가되는 열의 수는 각각 9개에서 6개로, 11개에서 8개로 줄어든다. 이 경우, 완전(full) 가산기및 반(half) 가산기들로 구성된 압축어레이의 예가 도 9에 도시되어 있다. 상기 예에서, 최신의 4기수 부스 승산 및 MAC 유닛과 비교해보면, 레벨(지연)의 수들은 각각 4에서 3으로(8t에서 6t, 여기서 t는 NAND 게이트 지연을 의미한다), 5에서 4로(10t에서 8t로) 줄어든다. 4기수 방법 대신에 8기수 방법을 사용하는 경우, 13x16 다중화기에서 완전(full) 가산기(FAs)의 수와 반(half) 가산기(HAs)의 수는 72개에서 14개로, 36개에서 13개로 줄어든다.
[표4]
구조 PP 발생의 지연 CA의 지연 최종 가산기의 지연 CC 기간 하나의 다중화기 또는 하나의 MAC의 CC's/레이턴시 k개의 다중화기 또는 p-길이의 벡터 승산의 CC's/레이턴시
종래 4기수 부스 다중화기, p=q=v=u=1 6t 8t (4레벨) 8t(7스테이지) 8t 9/72t k+8=40/320t
종래 8기수 NR1 다중화기,p=q=v=u=1 24t 6t (3레벨) 22t(3스테이지) 24t 4/96t k+4=36/864t
제안된 다중화기,p=2, q=v=u=1 12t 6t (3레벨) 12t(5스테이지) 12t 7/84t k+6=38/456t
제안된 다중화기,p=4, q=v=u=1 8t 6t (3레벨) 8t(7스테이지) 8t 9/72t k+8=40/320t
선행기술 부스 MAC 6t 6t (3레벨) 6t(10스테이지) 6t 12/72t k+11=43/258t
종래 부스 MAC 6t 10t (5레벨) 10t(7스테이지) 10t 9/90t k+8=40/400t
종래 8기수 NR1 MAC,p=q=v=u=1 24t 8t (4레벨) 22t(3스테이지) 24t 5/120t k+4=36/864t
제안된 MAC,p=2, q=v=u=1 12t 8t (4레벨) 12t(6스테이지) 12t 8/96t k+7=39/468t
제안된 MAC,p=3, q=v=u=1 8t 8t (4레벨) 8t(8스테이지) 8t 10/80t k+9=41/328t
제안된 MAC,p=4, q=v=u=1 6t 8t (4레벨) 8t(8스테이지) 8t 10/80t k+9=41/328t
제안된 MAC,p=6, q=1, v=2, u=4 4t 4t (4레벨) 4t(4x4스테이지) 4t 6/24t k+7=39/156t
[표5]
구조 FAs의 수 + HAs의 수 부스 인코더 부스 디코더
종래 부스 다중화기 스테이지1, PP 발생 스테이지2, CA 스테이지3,최종가산기 총계
제안된 다중화기, p=1 없음 72 + 14 28 100 + 14 8 96
제안된 다중화기, p=2 4 x 13 36 + 13 28 116 + 13 없음 없음
제안된 다중화기,p=1 8 x 13 36 + 13 28 168 + 13 없음 없음
[표5](계속)
구조 다중화기(SB) INV 및/또는 게이트, 총계
2:1 3:1 4:1 8:1 2 3 4
종래 부스 다중화기 3 0 0 0 24 30 32 8 1225
제안된 다중화기, p=1 15 0 0 75 26 13 0 0 1630
제안된 다중화기, p=2 75 0 0 75 52 13 0 0 2040
제안된 다중화기, p=3 15 60 0 75 78 13 0 0 2460
제안된 다중화기, p=4 15 0 60 75 104 13 0 0 2750
표 4와 표 5는 각각 13 비트 피승수(m=13)와 16 비트 승수 (n=16)의 경우, K=32 승수를 MAC 유닛 내에 누적시킨다고 할 때, 종래의 부스 승산기와 부스 MAC 유닛 구조에 대한 본 발명의 바람직한 실시예에 따른 비 재부호화 8기수 승산 및 MAC 유닛 구조 타입1 (제안된 다중화기)의 예상 시간특성과, 예상 하드웨어 자원과 게이트 카운트를 비교하여 보여준다. 상기 표들을 모두 표준 캐리-리플(carry-ripple) 가산기들을 제1파이프라인 스테이지에서 사용하고, 파이프라인 가산기들을 최종가산기(표4에 도시된 수의 스테이지들과 함께 사용한다)로서 사용한다는 가정 하에서 만들어진 것이다. 도시된 바와 같이, 8기수 승산기의 압축 어레이의 지연(6t)은 4기수 보스 승산기(8t)에서보다 짧다. 그러나 단 하나의 가산기 어레이만 사용하는 경우, 전체 지연(864t)는 4기수 부스 승산기 지연(320t)보다 길어지는데, 작동단계 기간이 제1파이프라인 스테이지(24t)로 결정되기 때문이다. 파이프라인 스테이지들은 완전하게 균형을 유지할 수 있다. 또한, 선택블럭때문에 표5를 보면, 8기수 승산기의 전체 게이트 카운트(1630G)는 4기수 승산기(1225G)보다 커진다.
반면에, 유닛구조에 설치되는 가산기 어레이의 수를 늘리면, 8기수 승산기의지연을 게이트 카운트의 증가보다 비례적으로 줄일 수가 있다. p=4의 가산기 어레이들을 설치하는 경우, 파이프라인 간의 밸런스를 잘 맞출 수가 있으며 전체 지연(258t)는 p=1의 가산기 어레이보다 3.34배 줄어든다 (K값이 큰 경우는 4배 줄어든다). 게이트 카운트는 2750/1630 = 1.67 정도로만 줄어든다. MAC 유닛의 경우, p=6, q=1, v=2 및 u=4일 때 (즉, 여섯 개의 가산기 어레이와 두 개의 압축 어레이를 사용하는 경우) 스테이지 간의 밸런싱이 제일 잘 이루어진다. 이 경우, p=q=v=u=1일 때와 비교할 때 게이트 카운트가 비용 면에서 대략 2.65배 늘어나면서 대략 5.54배 성능이 빨라진다.
본 발명의 구조는 다른 많은 시스템과 장치에 적용될 수 있다. 특히, 본 발명이 비디오 인코딩/디코딩 분야에 사용되면 많은 자원을 요구하는 계산연산을 처리할 수 있다. 시스템의 특수 요구에 따라 변수 p, q, v 및 u를 선택하면 각 파이프라인 스테이지 P1,...,P4의 지연을 최적레벨로 조정할 수 있다.
본 발명에 따른 구조는 예를 들어 서로 다른 스테이지들 P1,...,P4의 개별적인 유닛일 수 있다. 각 파이프라인 스테이지에는 당해 응용분야에 따라 그 양이 결정되는 필수 기능블럭들이 포함된다. 본 발명은 또한 디지털 신호 처리기(DSP), 마이크로프로세서 (MPU) 또는 주문형 집적회로 (ASIC) 등에 적용될 수 있다.
이하, 본 발명의 다른 바람직한 실시예를 자세하게 기술한다. 본 발명의 실시예에 따른 장치의 일반적인 구조는 도 11에 도시되어 있다. 상기 장치의 중요한 특징은 주요 블럭들 (파이프라인 스테이지들)의 서로 다른 서브세트를 포함하여 구성할 수 있다는 데에 있다. 상기 장치는 하나 이상의 선택수단, 예를 들어 각각 제1파이프라인 스테이지(P1), 제3파이프라인 스테이지(P3) 및 제4파이프라인 스테이지(P4)의 입력값을 수신하는 다중화기 (21, 22, 23)를 구비한다. 상기 다중화기 (21, 22, 23)는 2:1 다중화기인 것이 바람직하다. 다중화기 (21, 22, 23)는 각각 신호(c1, c2, c3)에 의해 제어된다. 상기 구조는 또한 제1 제어 신호(c1) 및 제2, 제3 제어 신호(c2, c3)의 OR 조합(즉, c2ˇc3)에 의해 제어되는 출력 선택기(24)를 또한 포함한다. 출력 선택기(24)는 제1파이프라인(P1)의 출력으로부터 혹은 출력 버스(14)와 연결된 마지막 파이프라인 스테이지(P4)의 출력으로부터 데이터를 선택한다. 다중화기(21, 22, 23)의 제1 입력들은 입력 버스(25)의 대응하는 라인들과 연결되고, 제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= c3 = 0). 즉, 상기 구조가 누적기로서 기능한다. 압축 어레이(404)와 최종 가산기(405)만이 작동하고 가산기 어레이(402)들과 선택 블럭들 어레이(403)는 휴지 상태에 들어간다. 네 번째 대안으로, 제1 제어 신호(c1) 및 제2 제어 신호(c2)가 모두 논리 1 상태로 설정되고, 제3 제어 신호(c3)는 논리 0 상태로 설정된다. 이 경우, 상기 구조는 고정밀도를 가지는 고속 가산기로서 기능 한다. 그러나 다른 경우에, c1 = c2 = c3 = 0 일 때, 상기 구조는 동시에 sp 가산기/감산기 및 누적기로서 기능 한다. 상기 명시된 제어 신호들(c1, c2, c3)의 상태에 따른 구조/연산 모드의 관계와 더불어 상기 선택 수단(22, 23, 24)은 여러 대안 중의 한 가지일 뿐이며 본 발명의 범위 내에서 다른 대안들도 역시 적용될 수 있음이 명백하다. 이는 본 명세서에서 이하 설명될 다른 제어 신호에 대해서도 적용된다.
도 11의 구조에서 구조의 재구성없이도 상기 구성에 다기능을 부여하는 다른 두 개의 제어신호(c4,c5)가 더 있다. 제4제어 신호(c4)는 제3 파이프라인 스테이지(P3) 내의 압축 어레이(404)의 출력과 입력 사이의 피드백 루프를 (예를 들어, c4 = 1이 라면) 활성화하거나 혹은 (예를 들어, c4 = 0 라면) 비활성화시킨다. 따라서, 상기 구조는 c1 = c2 = c3 = 1이고 c4 = 0 일 때 승산기로서 동작하고, c1 = c2 = c3 = c4 = 1 일 때 MAC 유닛으로서 동작한다. 1, 2 혹은 3비트 신호일 수 있는 제5 제어 신호(c5)는 (c5의 대응 비트가 예를 들어, 논리 1이면) 완전(full) 가산기(405)의 블럭들 사이에서 자리올림 확대를 허용하고 (c5의 대응 비트가 예를 들어, 논리 0이면) 중단함으로써 제1 파이프라인 스테이지(P1) 내의 가산기/감산기의 정도(精度)를 조절한다. 이와 같이, m비트 입력용 sp 가산기/감산기를 포함하는 복수의 가산기 어레이들은 (m/2)-비트 입력용 복수 개의 2sp 가산기/감산기로서 동작하거나 혹은 (m/4)-비트 입력용 복수 개의 4sp 가산기/감산기 등등으로서 동작한다. 선책 블럭들(403), 압축 어레이들(404), 및 최종 가산기들(405)을 제어 신호(c4)에 의해 제어될 수 있도록 구조를 조금 변경하거나 제조하면 다양한 정밀 곱/MAC 연산이 가능해진다.
본 발명에 따른 구조는 하나 이상의 프로세서, 로직회로와 메모리 등을 사용하여, 예를 들어, 직접회로로 구현될 수 있다.
도 10은 본 발명의 바람직한 실시예에 따른 장치(10)을 도시하고 있다. 상기 장치(10)는 동작을 제어하기 위한 제어 유닛(11)을 구비하고 있다. 상기 장치(10)는 또한 승산기 또는 승산/누적부(MAC)(13)를 포함하는 마이크로프로세서부 (12), 또는 본 발명의 바람직한 실시예에 따른 재구성가능한 장치를 포함하고 있다. 상기 장치의 사용자 인터페이스(14)는 디스플레이부(15), 오디오부(16), 키보드(17) 및 예를 들어 비디오 카메라(18)를 포함한다. 상기 장치(10)는 통신네트워크(미도시)와 통신하고 다른 이와 같은 장치(미도시)와 정보를 주고받기 위한 통신부(19)(예를 들어 이동통신수단)를 구비한다. 메모리부(20)은 제어부(11)로 입력되는 작동명령과 같은 다른 종류의 데이터와 프로그램을 저장하기 위해 사용된다.
본 발명은 상기 실시예에 국한되지 않고, 첨부된 특허청구범위의 권리범위 내에서 변형된 형태로 구현될 수 있다.

Claims (27)

  1. 다른 승산은 하나의 연산을 마치기 전에 수행되며, 상기 승산들은 적어도 제1서브연산과 제2서브연산으로 나누어지며, 각 제1 및 제2서브연산은 하나의 파이프라인 스테이지에서 수행되는 하나의 승산과 다른 승산을 파이프라인 방식으로 수행하는 방법에 있어서,
    고차기수 승산에 포함된 상기 서브연산들 중 적어도 하나는 파이프라인 스테이지에서 병렬로 처리되며,
    제2승산의 서브연산은 제1승산의 대응하는 서브연산을 마치기 전에 시작되는 것을 특징으로 하는 하나의 승산과 다른 승산을 파이프라인 방식으로 수행하는 방법.
  2. 제1항에 있어서, 상기 서브연산들 중 적어도 하나는 타임 인터레이스 방식으로 수행되며, 상기 적어도 하나의 서브연산은 부분 서브연산으로 더 나뉘어져서 각 부분 서브연산의 수행이 서로 다른 시간에 시작되는 것을 특징으로 하는 하나의 승산과 다른 승산을 파이프라인 방식으로 수행하는 방법.
  3. 제1항 또는 제2항에 있어서, 파이프라인 스테이지(P1,...,P4) 사이의 데이터 라우팅을 재구성할 수 있는 것을 특징으로 하는 하나의 승산과 다른 승산을 파이프라인 방식으로 수행하는 방법.
  4. 제1항, 제2항, 또는 제3항에 있어서, 상기 각각의 승산들은 적어도 두 개의 파이프라인 스테이지(P1,...,P4)에서 수행되며, 적어도 두 개의 서브연산들은 서로 다른 파이프라인 스테이지에서 수행되는 것을 특징으로 하는 하나의 승산과 다른 승산을 파이프라인 방식으로 수행하는 방법.
  5. 제1항 내지 제4항 중 어느 한 항에 있어서, 상기 하나의 승산과 상기 다른 승산은 제1피연산자와 제2피연산자 간에 수행되는 것을 특징으로 하는 하나의 승산과 다른 승산을 파이프라인 방식으로 수행하는 방법.
  6. 제5항에 있어서, 상기 승산은 적어도 세 개의 파이프라인 스테이지에서 수행되며, 제1피연산자는 제1피연산자의 부분곱 집합이 형성되는 제1파이프라인 스테이지에 입력되며, 제2피연산자는 제1파이프라인 스테이지에 형성되는 상기 부분곱 집합에서 선택되는 적어도 하나의 부분곱을 선택하는 제2파이프라인 스테이지에 입력되며, 선택된 부분곱들은 제3파이프라인 스테이지에서 더해져서 제1, 제2피연산자 간의 승산의 합(S)과 올림항들(C)을 형성하는 것을 특징으로 하는 하나의 승산과 다른 승산을 파이프라인 방식으로 수행하는 방법.
  7. 제6항에 있어서, 가산연산이 상기 합과 올림항들을 더하여 승산의 결과를 얻는 제4파이프라인 스테이지에서 수행되는 것을 특징으로 하는 하나의 승산과 다른 승산을 파이프라인 방식으로 수행하는 방법.
  8. 제7항에 있어서, 몇몇의 데이터 부분들은 한 번에 처리되며, 승산은 하나 이상의 연산단계에서 수행되며, 연산단계 기간은 정해져 있으며, 파이프라인 스테이지들의 지연이 정해져 있으며,
    인테레이싱 레벨은 상기 각 파이프라인 스테이지마다 정해져 있는 것을 특징으로 하는 하나의 승산과 다른 승산을 파이프라인 방식으로 수행하는 방법.
  9. 제8항에 있어서, 인테레이싱의 레벨은 각 파이프라인 스테이지들이 가능하면 동일하게 지연되고 상기 소정의 연산단계 기간보다는 짧도록 정해지는 것을 특징으로 하는 하나의 승산과 다른 승산을 파이프라인 방식으로 수행하는 방법.
  10. 제9항에 있어서, 파이프라인 스테이지들의 지연은 각 파이프라인 스테이지에서 한 번에 처리되는 상기 데이터 부분의 수가 상기 소정의 연산단계 기간에 대응되도록 정해지는 것을 특징으로 하는 하나의 승산과 다른 승산을 파이프라인 방식으로 수행하는 방법.
  11. 제8항, 제9항, 또는 제10항에 있어서, 상기 소정의 연산단계 기간은 Tdes 초로 정의되고,
    각 파이프라인 스테이지에서 수행되는 상기 부분 서브연산들의 수는 제1파이프라인 스테이지의 부분 서브연산들의 수 , 제2파이프라인 스테이지의 부분 서브연산들의 수 , 제3파이프라인 스테이지의 부분 서브연산들의 수 , 및 제4파이프라인 스테이지의 부분 서브연산들의 수 들로 정해지며, 여기서, DAA, DSB, DCA 및 DCLA 는 제1파이프라인 스테이지의 지연, 제2파이프라인 스테이지의 지연, 제3파이프라인 스테이지의 지연, 및 제4파이프라인 스테이지의 지연을 각각 나타내는 것을 특징으로 하는 하나의 승산과 다른 승산을 파이프라인 방식으로 수행하는 방법.
  12. 제5항 내지 제11항 중 어느 한 항에 있어서, 상기 제1피연산자(a)와 상기 제2피연산자(x) 간의 승산을 수행하기 위해 임의의 부호화된 2의 정수인 보수의 비 재부호화 4이상 고차기수 승산 방법이 아래와 같이 구해지는 것을 특징으로 하는 하나의 승산과 다른 승산을 파이프라인 방식으로 수행하는 방법.
    , 또는
    [여기서, T = 2t]
  13. 제1항 내지 제12항 중 어느 한 항에 있어서, 비디오 정보 처리에 사용되는 것을 특징으로 하는 하나의 승산과 다른 승산을 파이프라인 방식으로 수행하는 방법.
  14. 승산을 적어도 제1서브연산과 제2서브연산으로 나누는 수단(P1, P2, P3, P4)을 구비하고, 상기 제1 및 제2서브연산은 각각 하나의 파이프라인 스테이지에서 수행되도록 배열되는 하나의 승산과 다른 승산을 파이프라인 방식으로 수행하는 장치에 있어서,
    고차기수 승산에 포함되는 적어도 하나의 서브연산을 하나의 파이프라인 스테이지에서 병렬로 수행하는 수단(402, 403, 404, 405); 및
    상기 다른 승산의 서브연산을 상기 하나의 승산의 대응하는 서브연산을 마치기 전에 시작하는 수단을 더 포함하는 것을 특징으로 하는 하나의 승산과 다른 승산을 파이프라인 방식으로 수행하는 장치.
  15. 제14항에 있어서, 각 부분 서브연산을 서로 다른 시간에 시작하기 위하여 적어도 하나의 서브연산을 부분 서브연산으로 나누는 수단(R1,...,Rp)을 구비하는 것을 특징으로 하는 하나의 승산과 다른 승산을 파이프라인 방식으로 수행하는 장치.
  16. 제14항 또는 제15항에 있어서, 파이프라인 스테이지(P1, P2, P3, P4) 간의 데이터 라우팅을 선택하기 위한 적어도 하나의 다중화기(410, 411, 412, 413)를 포함하는 것을 특징으로 하는 하나의 승산과 다른 승산을 파이프라인 방식으로 수행하는 장치.
  17. 제14항, 제15항, 또는 제16항에 있어서, 상기 각 서브승산을 파이프라인 방식으로 수행하기 위한 적어도 두 개의 파이프라인 스테이지(P1,...,P4)를 구비하며,
    적어도 두 개의 서브연산들은 서로 다른 파이프라인 스테이지에서 수행되도록 배열되는 것을 특징으로 하는 하나의 승산과 다른 승산을 파이프라인 방식으로 수행하는 장치.
  18. 제14항 내지 제17항 중 어느 한 항에 있어서, 상기 하나의 승산과 다른 승산은 제1피연산자와 제2피연산자 간에 수행되도록 배열되고,
    파이프라인 방식으로 상기 각 승산을 병렬로 수행하는 제1파이프라인 스테이지(P1), 제2파이프라인 스테이지(P2) 및 제3파이프라인 스테이지(P3);
    제1파이프라인 스테이지로 상기 제1피연산자를 입력하는 수단; 및
    제2파이프라인 스테이지로 상기 제2피연산자를 입력하는 수단을 적어도 구비하고,
    제1파이프라인 스테이지는 제1피연산자의 부분곱 집합을 형성하는 수단을 구비하고,
    제2파이프라인 스테이지는 제2피연산자를 이용하여 제1파이프라인 스테이지에 형성된 부분곱 집합으로부터 적어도 하나의 부분곱을 선택하는 선택부를 포함하고,
    제3파이프라인 스테이지는 선택된 부분곱들을 합하여 제1, 제2피연산자 간에 합(S)과 승산항(C)을 형성하는 결합부를 포함하는 것을 특징으로 하는 하나의 승산과 다른 승산을 파이프라인 방식으로 수행하는 장치.
  19. 제18항에 있어서, 제4파이프라인 스테이지를 더 포함하고,
    제4파이프라인 스테이지는 상기 합과 올림항 간의 가산연산을 수행하여 승산의 결과를 얻는 가산기를 구비하는 것을 특징으로 하는 하나의 승산과 다른 승산을 파이프라인 방식으로 수행하는 장치.
  20. 제19항에 있어서, 적어도 하나의 파이프라인 스테이지는 처리할 데이터를 부분 서브연산으로 나누어 상기 데이터의 몇몇 데이터 부분들을 한 번에 처리하는 수단을 구비하고,
    상기 적어도 하나의 파이프라인 스테이지는 파이프라인 스테이지의 각 데이터 부분을 거의 동시에 처리하는 각 데이터 부분을 위한 데이터 처리블럭을 구비하는 것을 특징으로 하는 하나의 승산과 다른 승산을 파이프라인 방식으로 수행하는 장치.
  21. 제20항에 있어서, 각 파이프라인 스테이지에 포함되는 데이터 처리블럭의 수는 각 파이프라인 스테이지에서 상기 데이터의 처리시간이 실질적으로 동일하도록 결정되는 것을 특징으로 하는 하나의 승산과 다른 승산을 파이프라인 방식으로 수행하는 장치.
  22. 제20항 또는 제21항에 있어서, 상기 처리시간은 Tdes 초로 정의되고,
    각 파이프라인 스테이지의 상기 데이터 처리블럭의 수는 제1파이프라인 스테이지의 부분 서브연산들의 수 , 제2파이프라인 스테이지의 부분 서브연산들의 수 , 제3파이프라인 스테이지의 부분 서브연산들의 수 , 및 제4파이프라인 스테이지의 부분 서브연산들의 수 들로 정해지며, 여기서, DAA, DSB, DCA 및 DCLA 는 제1파이프라인 스테이지의 데이터 처리블럭의 처리시간, 제2파이프라인 스테이지의 데이터 처리블럭의 처리시간, 제3파이프라인 스테이지의 데이터 처리블럭의 처리시간, 및 제4파이프라인 스테이지의 데이터 처리블럭의 처리시간을 각각 나타내는 것을 특징으로 하는 하나의 승산과 다른 승산을 파이프라인 방식으로 수행하는 장치.
  23. 제14항 내지 제22항 중 어느 한 항에 있어서, 비디오 처리 장치인 것을 특징으로 하는 하나의 승산과 다른 승산을 파이프라인 방식으로 수행하는 장치.
  24. 제14항 내지 제23항 중 어느 한 항에 있어서, 집적회로인 것을 특징으로 하는 하나의 승산과 다른 승산을 파이프라인 방식으로 수행하는 장치.
  25. 승산을 적어도 제1 및 제2서브연산으로 나누는 수단(P1, P2, P3, P4)을 구비하고, 각 제1 및 제2서브연산은 하나의 파이프라인 스테이지에서 수행되도록 배열되는 하나의 승산과 다른 승산을 파이프라인 방식으로 수행하는 수단을 구비하는 무선 단말기에 있어서,
    고차기수 승산에 포함된 적어도 하나의 서브연산을 하나의 파이프라인 스테이지에서 병렬로 수행하는 수단(402, 403, 404, 405); 및
    상기 다른 승산의 서브연산을 상기 하나의 승산의 대응하는 서브연산을 마치기 전에 시작하는 수단을 더 구비하는 것을 특징으로 하는 무선 단말기.
  26. 승산을 적어도 제1, 제2서브연산으로 나누는 수단(P1, P2, P3, P4)을 구비하고, 각 제1, 제2서브연산은 하나의 파이프라인 스테이지에서 수행되도록 배열되는 하나의 승산과 다른 승산을 파이프라인 방식으로 수행하는 수단을 구비하는 계산장치에 있어서,
    고차기수 승산에 포함된 적어도 하나의 서브연산을 하나의 파이프라인 스테이지에서 병렬로 수행하는 수단(402, 403, 404, 405); 및
    상기 다른 승산의 서브연산을 상기 하나의 승산의 대응하는 서브연산을 마치기 전에 시작하는 수단을 더 구비하는 것을 특징으로 하는 계산장치.
  27. 승산을 적어도 제1, 제2서브연산으로 나누는 수단(P1, P2, P3, P4)을 구비하고, 각 제1, 제2서브연산은 하나의 파이프라인 스테이지에서 수행되도록 배열되는 하나의 승산과 다른 승산을 파이프라인 방식으로 수행하는 수단을 구비하는 시스템에 있어서,
    고차기수 승산에 포함된 적어도 하나의 서브연산을 하나의 파이프라인 스테이지에서 병렬로 수행하는 수단(402, 403, 404, 405); 및
    상기 다른 승산의 서브연산을 상기 하나의 승산의 대응하는 서브연산을 마치기 전에 시작하는 수단을 더 구비하는 것을 특징으로 하는 시스템.
KR1020057007987A 2002-11-06 2003-11-05 승산 방법 및 시스템과 그 장치 KR20050084681A (ko)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
FI20021982A FI115862B (fi) 2002-11-06 2002-11-06 Menetelmä ja järjestelmä kertolaskuoperaation suorittamiseksi ja laite
FI20021982 2002-11-06

Publications (1)

Publication Number Publication Date
KR20050084681A true KR20050084681A (ko) 2005-08-26

Family

ID=8564891

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020057007987A KR20050084681A (ko) 2002-11-06 2003-11-05 승산 방법 및 시스템과 그 장치

Country Status (8)

Country Link
US (1) US7334011B2 (ko)
EP (1) EP1558994A1 (ko)
KR (1) KR20050084681A (ko)
CN (1) CN1735857A (ko)
AU (1) AU2003279421A1 (ko)
FI (1) FI115862B (ko)
TW (1) TWI235954B (ko)
WO (1) WO2004042554A1 (ko)

Families Citing this family (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2008030916A2 (en) * 2006-09-06 2008-03-13 The Research Foundation Of State University Of New York A parameterized vlsi architecture and method for binary multipliers
EP3480710A1 (en) * 2017-11-03 2019-05-08 Nokia Technologies Oy Computer architectures and instructions for multiplication
CN108255463B (zh) * 2017-12-28 2020-12-22 深圳市紫光同创电子有限公司 一种数字逻辑运算方法、电路和fpga芯片
CN110399117B (zh) * 2019-07-31 2021-05-28 上海燧原智能科技有限公司 一种混合乘法加法处理方法及装置
US11270196B2 (en) 2019-10-15 2022-03-08 International Business Machines Corporation Multi-mode low-precision inner-product computation circuits for massively parallel neural inference engine
CN111596887B (zh) * 2020-05-22 2023-07-21 威高国科质谱医疗科技(天津)有限公司 一种基于可重构计算结构的内积计算方法

Family Cites Families (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5025408A (en) * 1989-07-31 1991-06-18 Shographics, Inc. Bit serial multiplier with parallel-in-serial-out carry and partial product shift registers
US4965762A (en) * 1989-09-15 1990-10-23 Motorola Inc. Mixed size radix recoded multiplier
US5150322A (en) * 1990-06-05 1992-09-22 Vlsi Technology, Inc. Mixed-radix serial/parallel multipliers
US5636155A (en) 1993-04-27 1997-06-03 Matsushita Electric Industrial Co., Ltd. Arithmetic processor and arithmetic method
US5646877A (en) * 1995-05-25 1997-07-08 Texas Instruments Incorporated High radix multiplier architecture
US5729485A (en) * 1995-09-11 1998-03-17 Digital Equipment Corporation Fast determination of carry inputs from lower order product for radix-8 odd/even multiplier array
US5825680A (en) * 1996-06-21 1998-10-20 Digital Equipment Corporation Method and apparatus for performing fast division
US5761106A (en) * 1996-06-24 1998-06-02 Motorola, Inc. Horizontally pipelined multiplier circuit
JP3678512B2 (ja) 1996-08-29 2005-08-03 富士通株式会社 乗算回路、該乗算回路を構成する加算回路、該乗算回路の部分積ビット圧縮方法、および、該乗算回路を適用した大規模半導体集積回路
US5875125A (en) 1997-07-07 1999-02-23 International Business Machines Corporation X+2X adder with multi-bit generate/propagate circuit
US6173304B1 (en) 1998-08-20 2001-01-09 Lucent Technologies, Inc. Joint optimization of modified-booth encoder and partial product generator
US6353843B1 (en) * 1999-10-08 2002-03-05 Sony Corporation Of Japan High performance universal multiplier circuit
DE60208926T2 (de) * 2001-12-14 2006-08-31 Koninklijke Philips Electronics N.V. Fliessbandkern in einem montgomery-multiplizierer

Also Published As

Publication number Publication date
FI20021982A0 (fi) 2002-11-06
AU2003279421A1 (en) 2004-06-07
FI115862B (fi) 2005-07-29
US7334011B2 (en) 2008-02-19
FI20021982A (fi) 2004-05-07
TWI235954B (en) 2005-07-11
CN1735857A (zh) 2006-02-15
TW200419445A (en) 2004-10-01
WO2004042554A1 (en) 2004-05-21
US20040133618A1 (en) 2004-07-08
EP1558994A1 (en) 2005-08-03

Similar Documents

Publication Publication Date Title
KR100714358B1 (ko) 연산을 수행하기 위한 방법, 시스템 및 장치
KR100715770B1 (ko) 연산을 수행하는 방법 및 시스템 및 장치
JP5273866B2 (ja) 乗算器/アキュムレータ・ユニット
US6601077B1 (en) DSP unit for multi-level global accumulation
EP0955576A1 (en) High-speed digital accumulator with wide dynamic range
US5528529A (en) Electronic multiplying and adding apparatus and method
US5133069A (en) Technique for placement of pipelining stages in multi-stage datapath elements with an automated circuit design system
Arunachalam et al. Efficient dual-precision floating-point fused-multiply-add architecture
CN113032723B (zh) 一种矩阵乘法器的实现方法及矩阵乘法器装置
KR20050084681A (ko) 승산 방법 및 시스템과 그 장치
US5212782A (en) Automated method of inserting pipeline stages in a data path element to achieve a specified operating frequency
KR100513160B1 (ko) 감소된 면적을 갖는 캐리 예측 가산기
US20080071852A1 (en) Method to perform a subtraction of two operands in a binary arithmetic unit plus arithmetic unit to perform such a method
US5696986A (en) Computer processor utilizing logarithmic conversion and method of use thereof
WO2002073395A2 (en) A method and apparatus for multiplication and/or modular reduction processing
Belyaev et al. A high-perfomance multi-format simd multiplier for digital signal processors
CN110506255B (zh) 节能型可变功率加法器及其使用方法
KR20150015369A (ko) 데이터 처리장치 및 내로우잉 앤 라운딩 산술연산을 행하는 방법
Bowlyn et al. A novel distributed arithmetic multiplierless approach for computing complex inner products
Patronik et al. Design of an RNS reverse converter for a new five-moduli special set
Akram et al. Hybrid pipelined and multiplexed FIR filter architecture
WO2004025453A2 (en) Apparatus and method for adding multiple-bit binary strings
JP2608090B2 (ja) 高基数非回復型除算装置
CN117667011A (zh) 一种数字信号处理模块中的后加器
Bouraoui et al. Design of an on-line Euclidian Processor

Legal Events

Date Code Title Description
A201 Request for examination
E902 Notification of reason for refusal
E902 Notification of reason for refusal
E902 Notification of reason for refusal
E902 Notification of reason for refusal
E701 Decision to grant or registration of patent right
NORF Unpaid initial registration fee