KR101086560B1 - 부스 곱셈 방법들 및 시스템들을 위한 전력-효율적인 부호 확장 - Google Patents

부스 곱셈 방법들 및 시스템들을 위한 전력-효율적인 부호 확장 Download PDF

Info

Publication number
KR101086560B1
KR101086560B1 KR1020087021913A KR20087021913A KR101086560B1 KR 101086560 B1 KR101086560 B1 KR 101086560B1 KR 1020087021913 A KR1020087021913 A KR 1020087021913A KR 20087021913 A KR20087021913 A KR 20087021913A KR 101086560 B1 KR101086560 B1 KR 101086560B1
Authority
KR
South Korea
Prior art keywords
booth
sign
tree
multiplication
bit
Prior art date
Application number
KR1020087021913A
Other languages
English (en)
Other versions
KR20080094813A (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 KR20080094813A publication Critical patent/KR20080094813A/ko
Application granted granted Critical
Publication of KR101086560B1 publication Critical patent/KR101086560B1/ko

Links

Images

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
    • 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
    • G06F7/5336Reduction 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 overlapped, i.e. with successive bitgroups sharing one or more bits being recoded into signed digit representation, e.g. using the Modified Booth Algorithm
    • G06F7/5338Reduction 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 overlapped, i.e. with successive bitgroups sharing one or more bits being recoded into signed digit representation, e.g. using the Modified Booth Algorithm each bitgroup having two new bits, e.g. 2nd order MBA
    • 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
    • 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/499Denomination or exception handling, e.g. rounding or overflow
    • 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/499Denomination or exception handling, e.g. rounding or overflow
    • G06F7/49994Sign extension
    • 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/544Methods 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 for evaluating functions by calculation
    • 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/544Methods 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 for evaluating functions by calculation
    • G06F7/5443Sum of products

Landscapes

  • Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • Mathematical Optimization (AREA)
  • Mathematical Analysis (AREA)
  • Pure & Applied Mathematics (AREA)
  • Computational Mathematics (AREA)
  • Computing Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Complex Calculations (AREA)
  • Compression, Expansion, Code Conversion, And Decoders (AREA)
  • Mobile Radio Communication Systems (AREA)

Abstract

통신(예컨대, CDMA) 시스템에서의 전송을 처리하는 것을 포함해서 디지털 신호 프로세서의 설계 및 사용을 위한 기술들이 설명된다. 부스 곱셈 처리들을 위한 전력-효율적인 부호 확장은 부스 곱셈에 부호 비트를 적용하는 것을 포함한다. 그 부호 비트는 부스 곱셈 처리가 부호 확장 단계를 수행하도록 허용한다. 이는 또한 미리 결정된 부분곱 행의 정확한 부호를 보존하기 위한 부호 비트를 사용하여 부스 곱셈 트리의 미리 결정된 부분곱 행을 1-확장하는 것을 포함한다. 처리 및 시스템은 부스 곱셈 트리에서 부호-확장 비트를 생성함으로써 부호 비트의 신호 값을 결정한다. 부호-확장 비트는 부스 곱셈 처리의 곱을 확장하기 위해서 캐리-아웃 열에 위치된다. 다음으로, 그 방법 및 시스템은 부스 곱셈 트리의 미리 결정된 열에 위치한 부호 비트에 캐리-아웃 값을 더함으로써 부스 곱셈 트리로부터의 최종 곱을 형성한다. 그 결과로 부호를 갖는 최종 곱의 합 성분이 효과적으로 확장되고, 또한 그 최종 곱의 캐리 성분이 제로-확장된다.

Description

부스 곱셈 방법들 및 시스템들을 위한 전력-효율적인 부호 확장{POWER-EFFICIENT SIGN EXTENSION FOR BOOTH MULTIPLICATION METHODS AND SYSTEMS}
본 발명은 디지털 신호 프로세서들 내의 수치연산 프로세서들(math processors) 분야에 관한 것으로, 더 상세히는, 높은 속도로 수치들의 곱셈을 수행하기 위해 수치연산 프로세서들에서 사용되는 부스 곱셈기들(Booth multipliers)에 관한 것이다. 더 상세하게는, 본 발명은 부스 곱셈 방법들 및 시스템들에서 사용하기 위한 부호 및 비부호 이진 값들에 대한 전력-효율적인 부호 확장에 관한 것이다.
점차적으로, 전자 기기 및 보조 소프트웨어 애플리케이션들은 디지털 신호 처리를 수반한다. 홈시어터, 컴퓨터 그래픽들, 의학 화상 및 원격통신들 모두가 디지털 신호 처리 기술에 의존한다. 디지털 신호 처리는 복잡하지만 반복적인 알고리즘들을 통한 고속 수치연산을 필요로 한다. 많은 애플리케이션들이 실시간적으로 계산들을 필요로 하는데, 즉, 신호는 연속적인 시간의 함수이고, 상기 신호는 수치적인 처리를 위해서 샘플링되어 디지털로 변환되어야 한다. 그 프로세서는 샘플들이 도달할 때 상기 샘플들에 대해 이산적인 계산들(discrete computations)을 수행하는 알고리즘들을 실행해야 한다. 디지털 신호 프로세서(DSP)의 구조는 이러 한 알고리즘들을 처리하도록 최적화된다. 양호한 신호 처리 엔진의 특징들은 고속의 융통성있는 수학 계산 유닛들, 그 계산 유닛들로 및 그 계산 유닛들로부터의 비구속된 데이터 흐름, 그 계산 유닛들에서의 확장된 정확성 및 다이내믹한 범위, 이중 어드레스 생성기들, 효율적인 프로그램 시퀀싱, 및 프로그래밍의 편이성을 포함한다.
DSP 기술의 하나의 유망한 애플리케이션은 위성 또는 지상 링크를 통해서 사용자들 간에 음성 및 데이터 통신을 지원하는 CDMA(code division multiple access) 시스템과 같은 통신 시스템들을 포함한다. 다중 액세스 통신 시스템에서 CDMA 처리를 사용하는 것은 "SPREAD SPECTRUM MULTIPLE ACCESS COMMUNICATION SYSTEM USING SATELLITE OR TERRESTRIAL REPEATERS"이란 명칭의 미국 특허 제 4,901,307호, 및 "SYSTEM AND METHOD FOR GENERATING WAVEFORMS IN A CDMA CELLULAR TELEHANDSET SYSTEM"이란 명칭의 미국 특허 제 5,103,459호에 개시되어 있는데, 그 두 미국 특허들은 본 출원의 양수인에게 양도되었다.
CDMA 시스템은 통상적으로 하나 이상의 원격통신들 및 현재 스트리밍 비디오 표준들을 따르도록 설계된다. 하나의 이러한 제 1 세대 표준으로는 이후로 IS-95 표준으로 지칭되는 "TIA/EIA/IS-95 Terminal-Base Station Compatibility Standard for Dual-mode Wideband Spread Spectrum Cellular System"이 있다. IS-95 CDMA 시스템들은 음성 데이터 및 패킷 데이터를 전송할 수 있다. 패킷 데이터를 더욱 효율적으로 전송할 수 있는 더 새로운 세대의 표준이 "3rd Generation Partnership Project"(3GPP)란 이름의 컨소시엄에 의해 제공되었으며, 문헌 번호들 3G TS 25.211, 3G TS 25.212, 3G TS 25.213 및 3G TS 25.214를 포함하는 문헌 세트들에 삽입되어 있는데, 상기 문헌들은 대중적으로 쉽게 입수가능하다. 3GPP 표준은 이후로는 W-CDMA 표준으로 지칭된다. MPEG-1, MPEG-2, MPEG-4, H.263 및 WMV(Window Media Video)와 같은 비디오 압축 표준들뿐만 아니라, 무선 핸드셋들이 점점 많이 이용할 많은 다른 것들이 또한 존재한다.
고속의 융통성있는 수학 계산 유닛들을 달성하기 위해서, 고속 곱셈 연산들을 수행할 필요가 있다. 이러한 연산들을 수행하기 위한 하나의 처리가 부스 곱셈(Booth multiplication)으로 공지되어 있다. 부스 곱셈은 곱해지는 수치들을 레코딩함으로써 더 작으면서 더 빠른 곱셈 회로들을 가능하게 하는 처리이다. 부스 처리를 사용하는 곱셈은 통상적으로 부분곱들(partial products)의 생성에 의해 수행된다. 다음으로, 상기 부분곱들은 최종 결과를 얻기 위해서 가산된다. 부스 곱셈 처리를 통해서, 부분곱들의 수는 승수(multiplier) 행렬에서 행들의 수와 동일하다. "부분곱"이란 용어는 곱셈 트리(multiplication tree)에서의 행을 지칭한다.
본래의 부스 알고리즘에 대한 많은 변경들이 존재하지만, 기본적인 원리는 부스 인코딩 처리를 사용하여 더 적은 부분곱들을 생성하는 것이다. radix-4 부스 레코딩의 처리를 사용함으로써 거의 절반만큼 부분곱들의 수를 감소시킬 수 있다. radix-4 부스 레코딩은 0 및 1의 이진 값들로 본래 표현되는 승수(B)의 비트들을 -2, -1, 0, 1 또는 2의 값들을 취할 수 있는 곱셈 인자들 세트에 매핑시킨다. 이 러한 방법은 발생한 부분곱들의 수를 거의 절반으로 줄이는 이점을 제공한다. 이는 회로의 실행에 있어서의 전파 지연 및 그 회로의 구현에 있어서의 복잡성 및 전력 소모에 관련해서 상기 회로의 구현에 있어 중요하다. 0, 1 또는 2를 곱하는데 있어서 그리고 단지 다중화기나 그와 같은 것에 있어서는 비교적 작은 복잡성의 결점이 존재한다.
일단 상기 부분곱들이 부스 인코딩의 처리를 사용하여 생성되면, 상기 부분곱들은 감소 기술들을 이용함으로써 모두 가산된다. 그 감소 처리는 반가산기들(half-adders), 전가산기들(full-adders) 및 다중-피연산자 가산기들(multi-operand adders)을 사용하여 병렬 처리에서 부분곱 비트들로 이루어진 다수의 행들을 합산하는 것을 포함한다. 이러한 감소는 그 합이 캐리-전파 가산기(carry propagate adder)를 사용하여 구해질 때 최종 곱을 나타내는 중복 형태로 있는 것으로서 말해지는 비트들의 두 행들을 유도한다. 이러한 행들 중 하나는 합(S)으로 지칭되고, 나머지 행은 캐리(C)로 지칭된다. MAC(multiply-accumulate) 연산들에 있어서, [Z+(A×B)]에서의 Z 항은 통상적으로 최종 CPA에 앞서 감소 트리에 포함된다. 이러한 처리는 중복 포맷에서 곱셈 곱(multiplication product)의 결과값(resolution) 및 후속적인 누산을 위해 CPA들을 이용할 때 절감된다.
일부 부분곱들은 네거티브적일 수 있기 때문에, 2의 보수화를 위해 필요한 하드웨어가 부스 곱셈기의 양상이다. 이러한 하드웨어를 통해, 곱셈 곱의 덧셈 역원(additive inverse)을 생성할 수 있는 부스 곱셈기를 제공하는 것이 필요하다. 현재로서는, DSP 애플리케이션들에 대해 효율적으로 -(A×B)를 생성할 수 있는 공 지된 방법 또는 시스템이 존재하지 않는다. 따라서, DSP 애플리케이션에서 곱의 덧셈 역원, 즉, -(A×B)를 생성하기 위해 부스 곱셈 처리를 사용할 수 있는 방법 및 시스템의 필요성이 존재한다.
일단 이러한 곱이 생성되면, 그러나, 곱셈의 곱 "A×B"에 대해 누산될 값 "Z"이 곱 "A×B"보다 더 큰 비트폭을 갖는 경우에는, 중복적인 곱의 "합" 및 "캐리" 성분들이 적절히 부호 확장될 필요가 있다는 문제점이 있다.
때로는, 넓은 범위의 비트들에 걸쳐 부호 확장을 수행하는 것이 필요할 수 있다. 따라서, DSP에서의 부스 곱셈 처리들 동안에 적절한 부호 확장의 처리가 필요하다. 통상적으로, 곱셈의 중간 중복 곱들 양쪽 모두는 부호 확장될 것이다.
중복 곱의 단지 합 성분만이 부호 확장될 필요가 있는 상황에서 전력-효율적인 처리가 또한 필요하다.
최종 곱의 생성에 있어 합 및 캐리 성분 양쪽 모두를 부호-확장하는 것이 부스 곱셈 처리로부터 회피될 필요가 있다.
부스 곱셈 처리 동안에 중간 32-비트 곱의 부분곱들을 부호-확장하는 것으로부터 발생하는 전력 소모를 감소시키는 것이 또한 필요하다.
부스 곱셈의 부호 확장 단계 동안에 동작하는 다중화 회로의 수를 감소시키는 것이 또한 필요하다.
부스 곱셈 방법들 및 시스템들을 위한 전력-효율적인 부호 확장을 제공하는 기술들이 설명되는데, 이러한 처리들은 개인용 컴퓨터들, 개인용 디지털 어시스턴트(PDA), 무선 핸드셋들, 및 유사한 전자 장치들을 위한 점차적으로 강력한 소프트웨어 애플리케이션들을 처리할 뿐만 아니라 연관된 디지털 신호 프로세서 속도 및 서비스 품질을 증가시키기 위한 디지털 신호 프로세서 명령들의 효율적인 사용 및 디지털 신호 프로세서의 동작 양쪽 모두를 향상시킨다.
일양상에 따르면, 설명되는 방법 및 시스템은 부스 곱셈 처리를 위한 전력-효율적인 부호 확장 방법 및 시스템을 포함한다. 설명되는 요지는 다수의 부분곱 행들을 포함하는 부스 곱셈 트리에 부호 비트를 도입한다. 그 부호 비트는 부호 확장 단계를 필요로 하는 부스 곱셈 처리의 경우에 유용하다. 여기서 설명되는 방법 및 시스템은 미리 결정된 부분곱 행의 정확한 부호를 보존하기 위한 부호 비트를 사용하여 부스 곱셈 트리의 미리 결정된 부분곱 행을 1-확장(즉, 부호가 "1"일 때의 부호 확장)하는 능력을 포함한다. 부호 비트의 신호 값을 결정(resolve)하는 것은 부스 곱셈 트리에서 부호-확장 비트를 생성하는 것을 포함한다. 그 부호-확장 비트는 부스 곱셈 처리의 곱을 확장하기 위해서 캐리-아웃 열에 위치될 수 있다. 다음으로, 본 발명은 부호 비트의 캐리-아웃 값을 부스 곱셈 트리의 적어도 미리 결정된 열에 더함으로써 그 부스 곱셈 트리로부터 최종 곱을 형성한다. 이는 부호를 갖는 최종 곱의 합 성분을 확장하고 또한 그 최종 곱의 캐리 성분을 제로-확장하는 효과를 갖는다.
기재된 요지의 이러한 및 다른 장점들과 또한 추가적인 신규한 특징들이 본 명세서에서 제공되는 설명으로부터 자명해질 것이다. 이러한 요약의 의도는 청구되는 요지의 포괄적인 설명인 것이 아니며, 오히려 요지의 기능 중 일부에 대한 간략한 개요를 제공하는 것이다. 여기서 제공되는 다른 시스템들, 방법들, 특징들 및 장점들이 아래의 도면들 및 실시예를 검토함으로써 당업자에게 자명해질 것이다. 모든 이러한 추가적인 시스템들, 방법들, 특징들 및 장점들은 본 설명 내에 포함되고 또한 첨부된 청구항들의 범위 내에 포함되도록 의도된다.
설명된 요지의 특징들, 속성, 및 장점들이 도면들과 연계하여 이루어지는 아래의 설명으로부터 더욱 자명해질 것이고, 도면들 전반에 걸쳐서는 동일한 참조 문자들이 동일한 것을 나타낸다.
도 1은 본 실시예를 구현할 수 있는 통신 시스템의 간략한 블록도를 나타낸다.
도 2는 본 실시예의 교지들을 이후로 설명하기 위한 DSP 구조를 나타낸다.
도 3은 설명된 요지의 기술적인 장점들을 제공하는 디지털 신호 프로세서의 일실시예에 대한 구조 블록도를 제공한다.
도 4는 설명된 요지의 다양한 구현들을 위한 데이터 경로도를 나타낸다.
도 5는 설명된 요지에 적용가능한 변경된 16×16 radix-4 부스 곱셈 트리를 제공한다.
도 6은 설명된 요지에 대한 부스 레코더를 구현하기 위한 로직 셀을 제공한다.
도 7은 설명된 요지를 갖는 도 7의 로직 셀에 대한 비트 그룹화를 설명한다.
도 8은 -(A×B) 곱을 위한 부스 레코딩 로직을 구현하기 위한 로직 셀을 제 공한다.
도 9는 설명된 요지가 부스 곱셈에서 감산을 어떻게 처리하는지에 대한 표를 나타낸다.
도 10은 설명된 요지의 다른 교지에 따른 16×16 부스 곱셈 감소 트리를 나타낸다.
여기서 제공되는 부스 곱셈 방법들 및 시스템들을 위한 전력-효율적인 부호 확장에 대해 설명된 요지는 다중-스레드 처리(multi-threaded processing)를 수반하는 것을 포함해서 매우 광범위한 디지털 신호 처리 애플리케이션들에서 사용된다. 하나의 이러한 애플리케이션은 원격통신에서, 특히, 하나 이상의 디지털 신호 처리 회로들을 이용하는 무선 핸드셋들에서 나타난다. 그 결과, 아래의 도 1 내지 도 3은 본 교지들이 유용할 수 있는 원격통신 DSP를 설명한다. 도 4는 개선된 부스 곱셈 연산에 대한 본 발명이 동작할 수 있는 곱셈 처리의 데이터 경로를 설명한다. 그러나, 여기서 설명되는 구현은 설명된 요지가 적용될 수 있는 가상적으로 무제한적인 애플리케이션 세트 중 하나를 제공한다는 것을 기억하자.
무선 핸드셋이 어떻게 사용되는지를 설명하기 위해서, 도 1은 설명된 인터럽트 처리 방법 및 시스템의 제공된 실시예들을 구현할 수 있는 통신 시스템(10)의 간략한 블록도를 제공한다. 전송기 유닛(12)에서는, 데이터가 통상적인 블록들의 형태로 데이터 소스(14)로부터 전송(TX) 데이터 프로세서(16)에 전송되는데, 상기 전송 데이터 프로세서(16)는 하나 이상의 아날로그 신호들을 생성하기 위해서 데이터를 포맷, 코딩, 및 처리한다. 다음으로, 그 아날로그 신호들은 전송기(TMTR)(18)에 제공되고, 그 전송기(TMTR)(18)는 변조된 신호를 생성하기 위해서 기저대역 신호들을 변조, 필터링, 증폭, 및 상향변환한다. 다음으로, 그 변조된 신호는 안테나(20)를 통해서 하나 이상의 수신기 유닛들에 전송된다.
수신기 유닛(22)에서는, 전송된 신호가 안테나(24)에 의해 수신되어 수신기(RCVR)(26)에 제공된다. 수신기(26) 내에서, 수신된 신호는 동위상(I) 및 직교위상(Q) 샘플들을 생성하기 위해서 증폭, 필터링, 하향변환, 복조, 및 디지털화된다. 다음으로, 그 샘플들은 전송된 데이터를 복원하기 위해서 수신(RX) 데이터 프로세서(28)에 의해 디코딩되고 처리된다. 수신기 유닛(22)에서의 인코딩 및 처리는 전송기 유닛(12)에서 수행되는 코딩 및 처리에 상보적인 방식으로 수행된다. 다음으로, 복원된 데이터가 데이터 싱크(30)에 제공된다.
위에 설명된 신호 처리는 음성, 비디오, 패킷 데이터, 메시징, 및 한 방향으로의 다른 타입들의 통신을 전송하는 것을 지원한다. 양방향성 통신 시스템은 2-방향 데이터 전송을 지원한다. 그러나, 다른 방향에 대한 신호 처리는 간략성을 위해서 도 1에 도시되어 있지 않다. 통신 시스템(10)은 CDMA(code division multiple access) 시스템, TDMA(time division multiple access) 통신 시스템(예컨대, GSM 시스템), FDMA(frequency division multiple access) 통신 시스템들, 또는 지상 링크를 통해 사용자들 간의 음성 및 데이터 통신을 지원하는 다른 다중 액세스 통신 시스템일 수 있다. 특정 실시예에서, 통신 시스템(10)은 W-CDMA 표준을 따르는 CDMA 시스템이다.
도 2는 도 1의 전송 데이터 프로세서(16) 및 수신 데이터 프로세서(28)로서 기능할 수 있는 DSP(40) 구조를 나타낸다. 다시 한번, DSP(40)가 여기서 제공되는 교지들 및 개념들을 효과적으로 사용할 수 있는 매우 많은 수의 가능한 디지털 신호 프로세서 중 하나의 실시예만을 나타낸다는 것이 강조된다. DSP(40)에서는, 따라서, 스레드들(threads) T0:T5(참조번호들 42 내지 52)이 다른 스레드들로부터의 명령들 세트들을 포함한다. 회로(54)는 명령 액세스 메커니즘을 나타내고, 스레드들 T0:T5에 대한 명령들을 페칭하기 위해 사용된다. 회로(54)에 대한 명령들은 명령 대기열(56)에서 대기된다. 명령 대기열(56) 내의 명령들은 프로세서 파이프라인(66)에 발행되기 위해 대기한다(아래 참조). 명령 대기열(56)로부터, 단일 스레드, 예컨대 스레드 T0가 발행 로직 회로(58)에 의해서 선택될 수 있다. 선택된 스레드의 레지스터 파일(60)이 판독되고, 판독된 데이터가 슬롯 0 내지 슬롯 3에 대한 실행 데이터 경로들(62)에 전송된다. 슬롯 0 내지 슬롯 3은, 본 예에서는, 본 실시예에서 이용되는 패킷 그룹화 결합을 제공한다.
실행 데이터 경로들(62)로부터의 출력은 DSP(40)의 연산들의 결과들을 반환하기 위해 개별적인 스레드들 T0:T5를 수용하도록 구성되는 파일 기록 회로(64)로 간다. 따라서, 회로(54)로부터 다양한 스레드들에 따라 분할되는 레지스터 파일 기록 회로(64) 이전까지의 데이터 경로는 처리 파이프라인(66)을 형성한다.
본 실시예는 최대 6 개의 스레드들 T0:T5을 갖는 단일 마이크로프로세서를 사용하는 헤테로지니어스 엘리먼트 프로세서(HEP) 시스템의 하이브리드를 이용할 수 있다. 프로세서 파이프라인(66)은 회로(54)로부터의 데이터 아이템을 레지스터들(60 및 64)에 페칭하는데 필요한 최소 수의 프로세서 사이클들에 일치하는 6 개의 스테이지들을 갖는다. DSP(40)는 프로세서 파이프라인(66) 내에서 상이한 스레드들 T0:T5의 명령들을 동시에 실행한다. 즉, DSP(40)는 6 개의 독립적인 프로그램 카운터들, 프로세서 파이프라인(66) 내에서 스레드들 T0:T5의 명령들을 구별하기 위한 내부 태깅(tagging) 메커니즘, 및 스레드 스위치를 트리거링하는 메커니즘을 제공한다. 스레드-스위치 오버헤드는 제로 사이클부터 단지 수 사이클까지 변한다.
그러므로, DSP(40)는 광범위한 신호, 이미지 및 비디오 처리 애플리케이션들에 대해 고성능 및 저전력을 위해 설계된 범용 디지털 신호 프로세서를 제공한다. 도 3은 설명된 요지의 한 표현을 위한 연관된 명령 세트 구조의 일부 양상들을 포함해서 DSP(40) 구조의 간략한 개요를 제공한다. DSP(40) 구조의 구현들은 인터리빙된 다중스레딩(IMT)을 지원한다. 이러한 실행 모델에 있어서, 하드웨어는 파이프라인의 상이한 스레드들로부터의 명령들을 인터리빙함으로써 다수의 하드웨어 스레드들 T0:T5의 동시적인 실행을 지원한다. 이러한 특징은 DSP(40)로 하여금 적극적인(aggressive) 클록 주파수를 포함하는 동시에 높은 코어 및 메모리 활용을 유지하도록 한다. IMT는 비순차적(out-of-order) 실행, 광범위한 전송 네트워크들 등과 같은 고비용의 보상 메커니즘들을 필요로 하지 않고도 높은 스루풋(throughput)을 제공한다.
도 3은, 더 상세하게, 설명된 요지의 교지들을 이용할 수 있는 단일 스레드에 대한 프로그래밍 모델의 일실시예의 구조 블록도를 제공한다. 블록도(70)는 AXI 버스(74)로부터 명령들을 수신하는 전용 명령 캐시들(72)을 나타내는데, 그 명 령들은 스레드들 T0:T5의 시퀀서(76), 사용자 제어 레지스터(78) 및 슈퍼바이저 제어 레지스터(80)에 대한 혼합된 16-비트 및 32-비트 명령들을 포함한다. 시퀀서(76)는 하이브리드 2-방향 슈퍼스칼라 명령들 및 4-방향 VLIW 명령들을 S-파이프 유닛(82), M-파이프 유닛(84), Ld-파이프(86), 및 Ld/St-파이프 유닛(88)에 제공한다. AXI 버스(74)는 또한 공유 데이터 캐시(90)를 통해서 스레드들 T0:T5에 LD/ST 명령들을 통신한다. 외부 DMA 마스터(94)를 통해, 공유 데이터 TCM(96)은 LD/ST 명령들을 통신하는데, 상기 LD/ST 명령들은 또한 스레드들 T0:T5로 간다. AHB 주변 버스(98)로부터, MSM 특정 제어기(100)는 인터럽트 제어기 명령들, 디버깅 명령들, 및 타이밍 명령들을 포함하는 TO:T5를 가진 인터럽트 핀들을 통신한다. 글로벌 제어 레지스터들(102)이 스레드들 T0:T5를 가진 제어 레지스터 명령들을 통신한다.
도 3의 M-파이프(84)에서 제공되는 바와 같은 단일-스레드 처리의 구조 내에서는, 고속의 수학 처리가 발생한다. 전력-효율성은 DSP(40)의 동작에 중요하고, M-파이프(84)는 그것의 동작에 있어 이러한 고려사항을 포함할 필요가 있다. 이러한 곱셈 처리에서 발생하는 것은 곱셈의 결과들이 이러한 중복 형태로 이용될 수 있다는 것이고, 이러한 중복 결과들이 곱셈-누산 연산들에서 사용될 것이다. 이러한 중복 결과들을 통해, 부호 확장은 중복 곱들의 양쪽 모두에서 발생할 필요가 있을 수 있다. 설명된 요지는 각 곱셈의 두 중복 곱들 중 단지 하나에 적용될 부호 확장을 제공한다. 이는 중간 중복 곱들이 더 큰 비트 범위에 걸쳐 부호 확장될 필요가 있는 경우들에서 상당한 전력 절감들로 바뀐다.
유사한 전력-효율적인 고려사항들이 설명된 요지가 적용될 수 있는 임의의 애플리케이션에 존재하기 매우 쉽다. 따라서, 부스 곱셈 처리가 발생하는 속도는 여기서 설명되는 요소의 독특하고 신규한 양상을 제공한다.
설명된 요지는 부분곱들의 마지막 행이 '1'-확장되는 부분곱 생성 방법을 이용하는 곱셈을 위한 부스 인코딩 처리들을 제공한다. 곱셈기의 감소 트리의 가장 중요한 열들의 감소를 적절히 조정함으로써, 설명된 처리는 단지 '합' 중복 곱이 부호 확장될 필요가 있고 '캐리' 중복 곱이 제로 확장될 수 있다는 것을 보장한다. 단지 '합'만이 부호 확장되기 때문에, 설명된 처리 및 연관된 구조들은 곱셈의 중복 곱을 부호 확장하는데 수반되는 전력 비용을 감소시킨다. 설명된 요지가 이러한 전력 절감들 및 관련된 효율성들을 어떻게 달성하는지를 이해하기 위해서, 특정 실시예에 대한 추가적인 증명이 여기서 제공된다.
그러므로, 도 4는 설명된 요지의 다양한 구현을 위한 데이터 경로도(180)를 나타내고, 본 부스 곱셈 처리가 이루어질 수 있는 데이터 흐름을 설정한다. 특히, 곱셈 블록(118)은 Rs 및 Rt 입력을 수신한다. 곱셈 블록(118) 내에는 곱셈 유닛들(M0:M3)이 존재한다. 특히, MO 곱셈기 유닛(182), M1 곱셈기 유닛(184), M2 곱셈기 유닛(186), 및 M3 곱셈기 유닛(188)은 개별적으로 Rs 및 Rt 입력을 수신하여, 시프트/부호-확장 유닛(148)으로 출력되는 SOCO(즉, Sum0 및 Carry0), S1C1, S2C2, 및 S3C3를 각각 생성한다. 시프트/부호-확장 유닛(148)은 이러한 중간 중복 곱들의 로직컬 시프트들 및 부호 확장을 담당한다.
따라서, 곱셈 블록(118)은 M-파이프(84)에 대한 곱셈 관련 명령들을 수행한 다. 이러한 명령들은 16×16 곱셈 처리를 기본적으로 사용하는 복합 명령들로서 처리될 수 있다. 그 곱셈 블록은 4 개의 16×16 곱셈기 유닛들(MO:M3)로 구성된다. 각각의 곱셈기 유닛(M0:M3)은 매우 다양한 M-타입 명령들을 지원하기 위하여 몇몇 모드들에서 기능할 수 있다. 부호 및 비부호 모드들이 지원된다. 그 곱셈기들은 또한 곱에 대해 감산이 수행될 필요가 있는 경우에 그들의 곱들의 2의 보수를 생성할 수 있다.
설명된 요지를 통해서, MO:M3 곱셈기들(182 내지 188)은 radix-4 부스 인코딩을 사용한다. 비부호 모드에 있어서, 그들은 부호 비트로서 가능한 가외의 17번째 비트를 갖는 17×17 곱셈기와 비슷하다. 배정밀도 곱셈(즉, 32×32 곱셈)을 제외하고, 모든 다른 곱셈 명령들은 "부호×부호" 또는 "비부호×비부호"이다. 16×16 곱셈기들을 사용하여 배정밀도 32×32 곱셈들 및 32×16 곱셈들을 계산하는 것도 역시 "부호×비부호" 및 "비부호×부호" 곱셈들을 필요로 한다. 이러한 모드들 모두는 MO:M3 곱셈기들(182 내지 188)의 곱셈기 피연산자들 및 곱셈의 부호 비트들을 제어함으로써 지원된다.
시프트/부호-확장 유닛(148)으로부터의 출력은 다중-피연산자 가산기(150)로 가고, RO:R3 입력으로 분석될 수 있다. 다중-피연산자 가산기(150)는 이러한 RO:R3 입력들을 수신하고, 궁극적으로는, 한 세트의 압축 및 누산 스테이지들 이후에, Rdd 출력들(170)을 제공한다.
데이터 경로(180)는 4 개의 단계들로 분할될 수 있는 것으로 이해될 수 있다. 무엇보다도, 데이터 라운딩 단계에 있어서는 Rs 및 Rt 소스 레지스터들로부터 의 데이터가 곱셈 블록(118)에 제공된다. 곱셈 블록(118) 내에서는, 소스 피연산자들로부터의 16-비트 하프-워드들(half-words)이 명령에 기초하여 4 개의 MO:M3 곱셈기 유닛들(182 내지 188)에 라우팅된다. 다음으로, 부분곱 생성 및 감소 벡터 가산 또는 감산이 발생하는데, 여기서는 MO:M3 곱셈기 유닛들(182 내지 188)이 radix-4 부스 인코딩을 사용하여 부분곱들을 생성하고, 중복적인 출력들 쌍에 대해 감소를 사용하여 상기 부분곱들을 감소시킨다.
다중-피연산자 감소 단계 동안에, 곱셈 블록(118)으로부터의 중복 출력들은 다중-피연산자 가산기에 입력되고, 상기 다중-피연산자 가산기에서는 이러한 입력들 및 선택적인 누산기/라운드 값을 두 쌍들의 중복 출력들로 감소시킨다. 마지막으로, 가간/감산 단계에서는, 중복 출력들이 캐리 전파 가산을 사용하여 결정되고, 포화가 적용가능할 때 수행된다.
따라서, 설명된 요지는 이러한 값들의 변경된 부스 곱셈을 제공한다. 이러한 복소 값들을 통해, 입력들은 낮은 하프워드의 실수 16-비트 값 및 높은 하프워드의 허수 16-비트 값을 갖는다. 곱셈 결과들은 0-1 비트들에 의해서 선택적으로 스케일링된다. 라운딩 컨스턴트가 각각의 실수 및 허수 합에 가산된다. 실수 및 허수 부분들은 32 비트들까지 각각 포화된다. 32-비트 결과들 각각의 상위 16-비트들은 32-비트 목적 레지스터에 팩킹된다(packed).
본 예에서, SO:S3 및 C0:C3은 33-비트들의 범위에 걸친다. 비록 16×16 곱셈의 출력이 32-비트들로 표현될 수 있지만, 일부 명령들은 비부호 모드에서 동작하고, 가외의 비트가 이 경우에는 부호 확장을 용이하게 하기 위해 부호 비트로서 사용된다. SO:S3 및 CO:C3이 시프트/부호-확장 유닛(148)을 통해 보내진다. SO:S1 및 CO:C1이 팩킹 이전에 최종 결과의 낮은 차수의 32-비트들에 기여한다. 이는 그 결과의 실수 부분을 형성한다. 이러한 4 개의 수치들은 명령에 명시되는 경우에 1-비트의 좌측 시프트에 의해 선택적으로 스케일링된다.
이러한 수치들의 시프트된 버전은 RO:R3으로 라벨링된다. RO:R3은 다중-피연산자 가산기(150)를 통해 보내진다. 다중-피연산자 가산기(150)로부터의 출력은 포화/가산 유닛(170)으로 간다.
이제, 설명된 요지는 다양한 부스 곱셈 처리들로 수행될 수 있다. 그러나, 설명된 요지의 특정 사용을 이해하는 것은 이러한 애플리케이션이 발생할 수 있는 특정 부스 곱셈 처리의 표현을 통해서 가장 잘 이루어질 수 있다. 따라서, 도 5는 설명된 요지에 적용가능한 변경된 16×16 radix-4 부스 곱셈 트리를 제공함으로써 그 설명된 요지의 부스 곱셈 처리를 이해하는데 도움을 준다. 개념적인 도 5의 도표(200)는 설명된 요지의 16×16 곱셈기들 상에서의 radix-4 부스 인코딩을 나타내는데, 이는 9 개의 부분곱들(202, 204, 206, 208, 210, 212, 214, 216, 및 218)을 유도한다. 그 9 개의 부분곱들은 4:2 압축의 한 레벨이 후속하는 3:2의 두 레벨들로 구성된 감소 트리를 사용하여 두 개의 32-비트 중복 출력들(S0:S3 및 C0:C3)까지 감소된다. 비록 32-비트들의 정밀도가 16×16 곱셈의 경우에 충분하지만, 33번째 비트가 또한 비부호 곱셈의 경우에 부호 비트로서 기능하도록 보존된다. 33번째 열로부터의 추가적인 캐리-아웃 비트(carry-out bit)가 또한 부호 확장에 있어 도움을 주기 위해 곱셈기로부터 출력된다.
도 5를 추가적으로 참조하면, 각각의 부분곱 행(220 내지 236)은 수평으로 도시된 다수의 피승수 비트들(238)이다. 열의 수치들이 도 5의 상단에 표시되어 있다. 승수 비트들(240)이 수직으로 도시되어 있고, 이러한 비트들은 부분곱 행들(220 내지 236)을 형성하기 위해서 곱셈 인자들을 생성하도록 레코딩된다. 도 5에 도시된 신호들(n0 내지 n7)은 네거티브 가중치를 수신하는 부분곱 행들(220 내지 236)에 가산되는 스틱키 "1"을 나타낸다. 이들은 곱의 마지막 인버전을 필요로 하지 않는 곱셈을 처리하기에 충분하다. 곱셈기에서 절대적으로 -(A×B)의 경우를 처리하기 위해서, 추가적인 신호(n8)가 제공된다.
신호들(s0 내지 s7)은 곱셈 연산의 곱이 곱셈기 트리 내에서 절대적으로 감산될 때 부호 확장을 처리한다. 만약 A 및 B가 피승수 및 승수인 것으로 각각 가정되면, radix-B 부스 인코딩은 곱셈기 피연산자(B)의 3 비트들의 그룹들을 인코딩하고 또한 세트 {-2A, -A, 0, A, 2A}로부터 부분곱들을 선택하기 위해 이러한 인코딩을 사용함으로써 진행한다. 이제, 만약 최종 곱(A×B)이 감산될 필요가 있다면, 그것은 A×-(B)를 가산하는 것과 동일한데, 이는 또한 곱((-A)×B)을 가산하는 것과 동일하다. 승수는 이제 B로부터 -(B)로 변경된다.
설명된 요지가 적용될 수 있는 부스 곱셈 처리의 일부로서, 도 6은 설명된 요지를 구현하기 위한 부스 레코더 회로(250)를 제공한다. 부스 레코더 셀(250)은 XOR(256)에서의 LSB 입력(254)부터 인버터 XOR(260)에서의 MSB 입력(258)까지의 범위에 있는 승수 그룹 입력(252)을 포함한다. MSB 입력(258)은 또한 부스 레코더 회로(250)로부터 출력되는 "neg"를 제공한다. XOR(256)로부터의 출력은 부스 레코 더(250)로부터의 A×1 신호(A)를 나타내고, 또한 인버터 XOR(264)에 입력을 제공한다. 인버터 XOR(260)로부터의 출력은 또한 부스 레코더 회로(250)로부터 A×2 신호(2A)를 생성하기 위해서 인버터 XOR(264)에 입력을 제공한다. XOR(264)은 부스 레코더 회로(250)로부터의 니게이션("neg":negation)을 나타내기 위해서 출력을 제공한다. 따라서, 부스 레코더 회로(250)는 승수(B)의 3-비트들을 검사하고, 그 3-비트들을 신호들 "A", "2A" 및 "neg"에 레코딩한다. 감산이 수행될 필요가 있을 때, "neg" 신호는 곱 A×B의 2의 보수를 생성할 부분곱들을 생성하기 위해서 인버팅된다.
도 7은 설명된 요지를 통해 도 6의 로직 셀에 대한 비트 그룹화를 나타낸다. 특히, radix-4 부스 레코딩은 9 개의 부분곱들을 생성하기 위해서 A의 승수들로서 사용되는 16-비트 승수(B)로부터의 9 개의 곱셈 인자들을 생성한다. 0 내지 8의 범위에 있는 "n"에 대해서, 도 7의 표는 비트 그룹들에 대한 부스 곱셈 인자 B[2n+1:2n-1]를 결정한다. 본 실시예의 레코딩 방식에 있어서, B[-1]은 제로인 것으로 가정된다. B[16] 및 B[17]은 B가 비부호 수인 경우에 제로이고, B가 부호 수인 경우, 즉, B[17]=B[16]=B[15]인 경우에 B의 부호 확장이다. 곱셈 인자들은 3 개의 신호들, 즉, XOR(256)로부터의 A, XOR(264)로부터의 2A 및 MSB 입력(262)으로부터의 "neg"로 기록된다. 따라서, A에 대한 곱셈 인자가 -2일 때, 신호들(2A 및 neg)는 하이이다. 마찬가지로, +1의 경우에는, 단지 A만이 하이일 것이고, 모든 3 개의 신호들은 +/-0에 대해서 로우일 것이다. 또한, 곱 A×B를 생성하는 경우에는 최상위비트 그룹에 대한 곱셈 인자 B[17:15]는 항상 파저티브라는 것을 주시하자. 이제는, B[17:15]에 대한 단지 가능한 비트 그룹들이 B가 비부호화된 경우에는 [000] 또는 [001]이고, B가 부호화된 경우에는 [000] 또는 [111]이다. 도 7로부터, 모든 이러한 그룹들은 파저티브 곱셈 인자를 유도한다. 따라서, 여기서 설명되는 부스 곱셈 멀티플렉서들은 부분곱들을 생성하기 위해서 세트 {0, A, 2A}로부터 선택할 수 있다.
도 8은 -(A×B) 곱에 대한 부스 레코딩 로직을 구현하는 부스 레코더 회로(270)를 제공한다. 부스 레코더 셀은 XOR(276)에서의 LSB 입력(274)부터 인버터 XOR(280)에서의 MSB 입력(278)까지의 범위에 있는 승수 그룹 입력(272)을 포함한다. "감산" 입력(282) 및 MSB 입력(278)은 XOR(284)로 간다. XOR(276)로부터의 출력은 부스 레코더(270)로부터의 피승수 A를 나타내고, 또한 인버터 XOR(286)에 입력을 제공한다. 인버터 XOR(280)로부터의 출력은 또한 부스 레코더 회로(270)로부터 2A 신호를 생성하기 위해서 인버터 XOR(286)에 입력을 제공한다. XOR(864)은 부스 레코더 회로(270)로부터의 "neg" 출력을 제공한다.
본 발명의 요지가 사용될 수 있는 부스 곱셈 처리의 설명된 애플리케이션에 있어서, 따라서, 도 8은 피승수(A)와 승수(B)의 곱의 네거티브 값이 A와 B의 네거티브 값의 곱을 계산함으로써 획득된다는 특성을 이용한다. 따라서, 이는 곱 A×B를 제일먼저 계산하고 이어서 -(A×B)를 얻기 위해 그 곱의 2의 보수를 계산하는 공지된 두 단계 처리를 회피한다. 부스 레코더 회로(270)는 곱셈 스테이지와 병렬로 니게이션(negation)을 수행한다.
곱의 2의 보수는 -(A×B)가 A×(-B)와 동일하다는 사실을 활용한다. 이 경 우에, 피연산자(-B)는 승수로서 처리된다. (-B)를 승수로서 사용하여 생성되는 부스 곱셈 인자들은 B를 곱셈기 피연산자로서 사용하여 생성되는 상응하는 곱셈 인자들의 덧셈 역원들이다. 곱 A×B를 계산하는데 사용된 부스 곱셈 하드웨어 구조가 부스 곱셈 인자들 각각의 부호들을 인버팅함으로써 A×(-B)를 계산하기 위해 재사용될 수 있다. 이러한 부호는 부스 레코더 회로(270)의 "neg" 신호에 의해 결정되는데, 이는 곱을 니게이팅(negating)하는데 있어서 "-neg" 신호를 생성하기 위한 레코딩 하드웨어에 대한 변경이다.
부스 레코더 회로(270)에서는 XOR 게이트(284)가 비-핵심 경로(non-critical path) 상에 있어서 핵심 경로에 기여하지 않는다는 것을 주시하자. 대신에, 핵심 경로는 신호들(A 및 2A)을 생성하기 위한 승수 비트들을 포함한다. 부분곱들을 위한 곱셈 인자들의 부호를 인버팅시키는 이러한 처리는 마지막 부분곱 행의 부호가 네거티브일 수 있는 경우들을 유도한다. 따라서, 신호 "n8"가 위의 도 5에서 나타난 바와 같이 곱셈 트리에 가산될 수 있다. 행을 추가하는 것은 추가적인 행을 수용하기 위해서 감소 스테이지를 변경함으로써 감소될 수 있다. 그러나, 이는 추가적인 지연 및 연관된 하드웨어를 의미할 수 있다.
여기서 제공되는 처리는 감소 스테이지에서 추가적인 행을 포함하지 않고, 대신에 곱셈 트리에 대해 논리적인 변경을 수행함으로써 부분곱들의 기존의 9 개의 행들에 n8 신호를 포함시키는 것에 초점을 둔다. 곱셈 트리에 추가되는 지연은 최소적이다.
PProw _ columm 형태의 각 "도트"를 지칭하는 표기는 설명된 요지의 이러한 양상에 대한 이해를 획득하는데 도움을 준다. 도 9를 참조하면, 곱셈 트리의 각각의 이진 비트(도트)는 행렬에서 고유의 가중치 및 위치를 갖는다. 동일한 열 내의 모든 비트들은 동일한 가중치를 갖고, 그 가중치들이 유지되는 한은 임의의 순서에 따라 감소될 수 있다. 행들은 '0'에서 시작해서 상단으로부터 하단까지 번호가 매겨지고, 열들은 '0'에서 시작해서 우측으로부터 좌측으로 번호가 매겨진다. 이러한 표기를 사용하면, n8은 PP10 _ 16와 동일하다. PP0 _16, PP0 -17, PP0 -18 및 PP0 -19가 radix-4 부스 인코딩을 갖는 공지된 스케일링 및 부호 확장 처리들을 사용하여 생성된다. 이러한 해결법을 통해, n8을 곱셈 트리에 포함시키는 것이 가능하다. 따라서, 부호 및 비부호 곱셈 모드들 양쪽 모두에서 PP0 _16, PP0 -17, PP0 -18 및 PP0 -19에 대한 모든 가능한 비트 값들을 분석함으로써, n8이 삽입될 수 있는 위치가 모든 가능한 부스 곱셈 인자들에 대해 결정될 수 있다.
도 9는 부분 곱 행 '0'의 4개의 최상위 비트들에 대한 값들의 범위 및 신호 n8을 이러한 4-비트 필드에 더한 효과를 열거한다. MUX 구조는 n8이 하이일 때 4-비트 필드의 변경된 값을 선택하는 것을 허용한다. 즉, 설명된 처리는, 만약 신호 n8이 열 16, 즉, P0_16에서 더해진다면 부분곱 행 '0'의 4 최상위 비트들의 값을 사전에 계산하고, 이러한 변경된 4-비트 필드를 감소 스테이지에서 사용한다. MUX 구조는 일단 PP0_16(표에서 "a"로 도시되었음)이 표준 부스 다중화 회로를 사용하여 계산되도록 최적화된다. n8에 기초한 변경된 4-비트 필드가 그 이후에 최소의 지연을 통해 결정된다. 곱셈 처리의 나머지는 곱 A×B를 생성하기 위한 정규 변경 흐름과 동일하다.
도 10은 설명된 요지의 추가적인 양상들에 적용될 수 있는 변경된 16×16 radix-4 부스 곱셈 트리를 제공한다. 도 10으로부터, 본 발명의 중요한 부호 확장 및 라운딩 컨스턴트 함수들을 이해하는 것이 가능하다. 16×16 곱셈기의 감소 스테이지에 대한 변경은 9개의 부분곱 행들을 통한 핵심 경로를 최소화하고, 곱이 중복 합-캐리 형태로 이용될 수 있을 때 부호 확장을 효율적으로 제공한다. 도 10은 16×16 radix-4 부스 곱셈기에 대한 변경된 감소 트리(304)를 나타낸다. 변경된 감소 트리(304)는 부호 및 비부호 피연산자들을 수용하고, 곱을 니게이팅하는 잠재성을 갖는다.
제 1 감소 스테이지는 전가산기들의 3 개의 행들을 사용하여 9 개의 행들을 6 개의 행들로 감소시킨다. 제 2 감소 스테이지는 전가산기들의 2 개의 행들을 사용하여 6 개의 행들을 4 개의 행들로 감소시킨다. 제 3 및 마지막 감소 스테이지는 4 개의 행들을 최종적인 중복 합 및 캐리 행들로 감소시키기 위해서 4:2 다중-피연산자 가산기들의 행을 이용한다. 비록 합 및 캐리의 32 비트들이 16×16 곱을 나타내기에 충분하지만, 추가적인 비트가 부호 확장이 비부호 곱셈을 위해 정확히 처리되는 것을 보장한다.
도 10은 또한 곱을 형성하는 하부 32 비트들보다 높은 열들(306)을 나타낸다. 본 발명은 마지막 부분곱 행(308)에 대한 부호 비트 n8를 도입하기 위해서 열 #32 위로부터의 부스 곱셈 트리를 변경한다. 이러한 부호 비트 s8는 만약 곱이 부호 확장을 필요로 하지 않는다면 필요하지 않다. 이제는, 부분곱 행(8)의 정확한 부호를 보존하기 위해서, 처리는 부분곱 행(308)을 1비트씩 확장하는 것을 포함한다. #32보다 높은 열들은 마지막 감소 스테이지까지 영향을 받지 않는다. 이러한 점에서, 신호(~s8)는 열 #31로부터 캐리-아웃을 통해 결정되고, "
Figure 112008063572779-pct00001
"로서 도시된 캐리-아웃(310)을 생성한다.
캐리-아웃 "
Figure 112008063572779-pct00002
"(310)를 열 #33 위로부터의 한 확장에 더함으로써 최종적인 곱이 형성된다. 그 결과로
Figure 112008063572779-pct00003
를 부호로서 갖는 마지막 곱의 합 성분이 부호-확장되고, 반면에 마지막 곱의 캐리 성분들이 제로-확장된다. 이러한 단계들은 합 및 캐리 성분들 양쪽 모두를 부호-확장할 필요성을 제거한다. 예컨대, 만약 16×16 곱셈이 32-비트 곱에 16-비트 값을 누산하는 것을 필요로 하는 MAC 연산의 일부라면, 32-비트 곱을 64 비트 수에 가산하기 이전에 그 32-비트 곱을 64-비트들로 부호-확장하는 것이 필요할 것이다. 만약 중간 32-비트 곱이 중복 형태로 남고 또한 여기서 제공되는 부호 확장 처리가 적용된다면, 캐리 성분들을 31-비트들 이상으로 부호-확장하기 위해 사용된 MUX들을 제거할 수 있는 가능성으로 인해서 상당한 전력 절감이 발생할 수 있다.
도 10을 다시 참조하면, 본 발명은 라운딩 컨스턴트를 승수(B)에 더하는 능력을 또한 제공한다. DSP 연산들에서 16×16 곱셈에 통상적인 라운딩 컨스턴트는 0x8000이다. 16×16 곱셈의 곱을 라운딩하는 것은 일반적인 연산인데, 이는 통상 적으로 2 단계 연산으로서 수행되고, 여기서 곱셈기는 곱을 생성하기 위해 제일먼저 사용되고, 이어서 라운딩 컨스턴트가 그 곱에 더해진다.
위에 설명된 표기를 사용함으로써, PP8_15는 '0'이라는 것을 도 10에서 주시하자. 곱셈 행렬의 이러한 비트 위치에 "1'을 삽입함으로써, 곱을 제일먼저 생성하고 이어서 0x8000인 값을 그 곱에 더함으로써 획득되어진 동일한 결과를 생성하는 것이 가능하다. 이러한 처리는 또한 핵심 경로에 어떠한 레이턴시도 추가하지 않는다.
만약 곱셈 블록(118)의 하드웨어가 곱셈의 곱에 하나의 누산-피연산자를 더할 수 있는 능력으로 제한된다면, 곱셈의 곱이 라운딩될 필요가 있을 때 누산-피연산자를 통해 라운딩 컨스턴트를 다중화하는 것이 일반적이다. 이는 곱셈의 곱에 대해 라운딩 및 누산 연산들 양쪽 모두를 단일 단계에서 수행하는 것을 어렵게 한다. 그러나, 여기서 설명된 처리를 사용함으로써 이러한 제한들이 제거된다.
요약하면, 설명된 요지는 통신(예컨대, CDMA) 시스템에서 전송을 처리하는 것을 포함해서 디지털 신호 프로세서의 설계 및 사용을 위한 처리들을 제공한다. 설명된 방법 및 시스템은 부스 곱셈 처리를 위한 전력-효율적인 부호 확장 방법 및 시스템을 포함한다. 설명된 요지는 다수의 부분곱 행들을 포함하는 부스 곱셈 트리에 부호 비트들을 도입한다. 그 부호 비트는 부호 확장 단계를 필요로 하는 부스 곱셈 처리의 경우에 유용하다. 여기서 설명되는 방법 및 시스템은 미리 결정된 부분곱 행의 정확한 부호를 보존하기 위한 부호 비트를 사용하여 부스 곱셈 트리의 미리 결정된 부분곱 행을 1-확장한다. 부호 비트의 신호 값을 결정(resolve)하는 것은 부스 곱셈 트리에서 부호-확장 비트를 생성하는 것을 포함한다. 그 부호-확장 비트는 부스 곱셈 처리의 곱을 확장하기 위해서 캐리-아웃 열에 위치될 수 있다. 다음으로, 본 발명은 부호 비트의 캐리-아웃 값을 부스 곱셈 트리의 적어도 미리 결정된 열에 더함으로써 그 부스 곱셈 트리로부터 최종 곱을 형성한다. 이는 부호를 갖는 최종 곱의 합 성분을 확장하고 또한 그 최종 곱의 캐리 성분을 제로-확장하는 효과를 갖는다.
본 발명은 또한 [Z + -(A×B) + 라운딩 컨스턴트]의 형태인 MAC 연산들에서 사용될 수 있는 변경된 부스 곱셈기의 기술적인 장점들을 제공한다. 이러한 곱셈기는, (a) 부스 곱셈 인자들을 니게이팅하고 또한 가외의 스틱키 비트를 감소 트리에 포함시키며, (b) 라운딩 컨스턴트를 감소 트리에 채울 장소를 찾고, (c) 중복적인 합의 부호 확장을 단지 필요로 하는 부호 확장 처리를 사용함으로써, 지연, 전력, 및 하드웨어를 최소화한다.
또한, 여기서 설명된 처리 특징들 및 기능들은 다양한 방식들로 구현될 수 있다. 예컨대, 많은 DSP(40)가 위에서 설명된 연산들을 수행할 뿐만 아니라, 본 실시예들은 ASIC(application specific integrated circuit), 마이크로제어기, 마이크로프로세서, 또는 여기서 설명된 기능들을 수행하도록 설계된 다른 전자 회로들로 구현될 수 있다. 그러므로, 본 실시예들에 대한 위의 설명은 당업자가 청구된 요지를 실시하고 이용할 수 있도록 제공되었다. 이러한 실시예들에 대한 다양한 변경들이 당업자들에게는 쉽게 자명할 것이고, 여기서 정의된 포괄적인 원리들은 혁신적인 기능을 사용하지 않고도 다른 실시예들에 적용될 수 있다. 따라서, 청구된 요지는 여기서 설명된 실시예들로 제한되도록 의도되지 않고, 여기서 설명된 원리들 및 신규한 특징들에 부합하는 광범위한 범위로 제공되어야 한다.

Claims (24)

  1. 부스 곱셈 처리(Booth multiplication process)를 용이하게 하기 위한 전력-효율적인 부호 확장 방법(power-efficient sign extension method)으로서,
    부스 곱셈기(Booth multiplier)에서, 다수의 부분곱 행들(a plurality of partial product rows)을 포함하는 부스 곱셈 트리(Booth multiplication tree)에 부호 비트를 적용하는 단계 ― 상기 부분곱 행들 각각은 부스 곱셈 처리를 위한 부분곱을 포함하고, 상기 부호 비트는 부호 확장 단계를 필요로 하는 상기 부스 곱셈 처리의 경우에 사용됨 ―;
    상기 부스 곱셈기에서, 상기 부스 곱셈 트리의 미리 결정된 부분곱 행의 정확한 부호를 보존(preserve)하기 위해 부호 비트를 사용하여 상기 부스 곱셈 트리의 상기 미리 결정된 부분곱 행을 1-확장(one-extending)하는 단계;
    상기 부스 곱셈기에서, 상기 부스 곱셈 트리에서 부호-확장 비트를 생성함으로써 상기 부호 비트의 신호 값을 결정(resolve)하는 단계 ― 상기 부호-확장 비트는 상기 부스 곱셈 처리의 곱을 확장하도록 위치됨 ―; 및
    상기 부스 곱셈기에서, 부호를 갖는 최종 곱의 합 성분을 효과적으로 확장하고 또한 상기 최종 곱의 캐리 성분(carry component)을 제로-확장(zero-extending)하기 위해 상기 부호 비트의 캐리-아웃(carry-out) 값을 상기 부스 곱셈 트리의 적어도 미리 결정된 열에 더함으로써, 상기 부스 곱셈 트리로부터 상기 최종 곱을 형성하는 단계를 포함하고,
    상기 부스 곱셈 트리는 16×16 radix-4 부스 곱셈 트리를 포함하고,
    상기 전력-효율적인 부호 확장 방법은 상기 부스 곱셈기에서 상기 16×16 radix-4 부스 곱셈 트리의 32번째 및 그보다 높은 열들로부터의 1-확장에 캐리-아웃 값을 더함으로써 상기 부스 곱셈 트리로부터 최종 곱을 형성하는 단계를 더 포함하는,
    전력-효율적인 부호 확장 방법.
  2. 제 1항에 있어서,
    상기 부스 곱셈기에서 다수의 부분곱들을 감소시키는 단계를 더 포함하고, 상기 감소 단계는,
    제 1의 다수의 가산기 회로들을 사용하여 9 개의 부분곱 행들을 6 개의 부분곱 행들로 감소시키고,
    제 2의 다수의 가산기 회로들을 사용하여 상기 6 개의 부분곱 행들을 4 개의 부분곱 행들로 감소시키고,
    압축기 회로를 사용하여 상기 4 개의 부분곱 행들을 합 행(sum row) 및 캐리 행(carry row)으로 감소시키며,
    비부호(unsigned) 곱셈을 위한 부호 확장을 수행하기 위해서 16×16 부스 곱셈 트리의 32번째 열에 대한 부호 비트를 변경함으로써 수행되는,
    전력-효율적인 부호 확장 방법.
  3. 제 1항에 있어서, 상기 부스 곱셈기에서 상기 부스 곱셈 트리의 마지막 부분곱 행에 상기 부호 비트를 s8인 비트로서 포함시키는 단계를 더 포함하는,
    전력-효율적인 부호 확장 방법.
  4. 제 1항에 있어서,
    상기 부스 곱셈 트리는 16×16 radix-4 부스 곱셈 트리를 포함하고,
    상기 전력-효율적인 부호 확장 방법은 상기 부스 곱셈기에서 단지 다수의 부분곱들의 최종 감소 스테이지에서나 또는 그 이후에만 32번째 열보다 높은 열들을 변경하는 단계를 더 포함하는,
    전력-효율적인 부호 확장 방법.
  5. 삭제
  6. 제 1항에 있어서, 상기 부스 곱셈기에서 MAC 연산 동안에 64-비트 값 누산의 일부로서 상기 부스 곱셈 처리를 수행하는 단계를 더 포함하는,
    전력-효율적인 부호 확장 방법.
  7. 부스 곱셈 처리를 수행하기 위한 디지털 신호 프로세서와 연관되는 전력-효율적인 부호 확장 회로로서,
    다수의 부분곱 행들을 포함하는 부스 곱셈 트리에 부호 비트를 적용하기 위한 부호-적용 회로 ― 상기 부분곱 행들 각각은 부스 곱셈 처리를 위한 부분곱을 포함하고, 상기 부호 비트는 부호 확장 단계를 필요로 하는 상기 부스 곱셈 처리의 경우에 사용됨 ―;
    상기 부스 곱셈 트리의 미리 결정된 부분곱 행의 정확한 부호를 보존하기 위해 부호 비트를 사용하여 상기 부스 곱셈 트리의 상기 미리 결정된 부분곱 행을 1-확장(one-extending)하기 위한 곱셈 회로; 및
    상기 부스 곱셈 트리에서 부호-확장 비트를 생성함으로써 상기 부호 비트의 신호 값을 결정(resolve)하기 위한 부호 값 결정 회로 ― 상기 부호-확장 비트는 상기 부스 곱셈 처리의 곱을 확장하기 위해서 캐리-아웃 열에 위치됨 ―를 포함하고,
    상기 곱셈 회로는 또한 부호를 갖는 최종 곱의 합 성분을 효과적으로 확장하고 또한 상기 최종 곱의 캐리 성분을 제로-확장하기 위해 상기 부호 비트의 캐리-아웃(carry-out) 값을 상기 부스 곱셈 트리의 적어도 미리 결정된 열에 더함으로써, 상기 부스 곱셈 트리로부터 상기 최종 곱을 형성하고,
    상기 부스 곱셈 트리는 16×16 radix-4 부스 곱셈 트리를 포함하고,
    상기 전력-효율적인 부호 확장 회로는 상기 16×16 radix-4 부스 곱셈 트리의 32번째 및 그보다 높은 열들로부터의 1-확장에 캐리-아웃 값을 더함으로써 상기 부스 곱셈 트리로부터 최종 곱을 형성하기 위한 감소 회로를 더 포함하는,
    전력-효율적인 부호 확장 회로.
  8. 제 7항에 있어서,
    9 개의 부분곱 행들을 6 개의 부분곱 행들로 감소시키기 위한 제 1의 다수의 가산기 회로들,
    상기 6 개의 부분곱 행들을 4 개의 부분곱 행들로 감소시키기 위한 제 2의 다수의 가산기 회로들,
    상기 4 개의 부분곱 행들을 합 행 및 캐리 행으로 감소시키기 위한 압축기 회로, 및
    비부호 곱셈을 위한 부호 확장을 수행하기 위해서 16×16 부스 곱셈 트리의 32번째 열에 부호 비트를 더하기 위한 인코딩 회로를 더 포함하는,
    전력-효율적인 부호 확장 회로.
  9. 제 7항에 있어서, 상기 부스 곱셈 트리의 마지막 부분곱 행에 상기 부호 비트를 s8인 비트로서 더하기 위한 인코딩 회로를 더 포함하는,
    전력-효율적인 부호 확장 회로.
  10. 제 7항에 있어서,
    상기 부스 곱셈 트리는 16×16 radix-4 부스 곱셈 트리를 포함하고,
    상기 전력-효율적인 부호 확장 회로는 단지 상기 다수의 부분곱들의 최종 감소 스테이지에서나 또는 그 이후에만 32번째 열보다 높은 열들을 변경하기 위한 인코딩 회로를 더 포함하는,
    전력-효율적인 부호 확장 회로.
  11. 삭제
  12. 제 7항에 있어서, MAC 연산 동안에 64-비트 값 누산의 일부로서 상기 부스 곱셈 처리를 수행하기 위한 곱셈 회로를 더 포함하는,
    전력-효율적인 부호 확장 회로.
  13. 개인용 전자 장치의 지원으로 동작하고, 또한 부스 곱셈 처리를 위한 전력-효율적인 부호 확장을 수행하는 디지털 신호 프로세서로서, 상기 디지털 신호 프로세서는,
    부스 곱셈기에서, 다수의 부분곱 행들을 포함하는 부스 곱셈 트리에 부호 비트를 적용하기 위한 수단 ― 상기 부분곱 행들 각각은 부스 곱셈 처리를 위한 부분곱을 포함하고, 상기 부호 비트는 부호 확장 단계를 필요로 하는 상기 부스 곱셈 처리의 경우에 사용됨 ―;
    상기 부스 곱셈기에서, 상기 부스 곱셈 트리의 미리 결정된 부분곱 행의 정확한 부호를 보존하기 위해 부호 비트를 사용하여 상기 부스 곱셈 트리의 상기 미리 결정된 부분곱 행을 1-확장(one-extending)하기 위한 수단;
    상기 부스 곱셈기에서, 상기 부스 곱셈 트리에서 부호-확장 비트를 생성함으로써 상기 부호 비트의 신호 값을 결정(resolve)하기 위한 수단 ― 상기 부호-확장 비트는 상기 부스 곱셈 처리의 곱을 확장하기 위해서 캐리-아웃 열에 위치됨 ― ; 및
    상기 부스 곱셈기에서, 부호를 갖는 최종 곱의 합 성분을 효과적으로 확장하고 또한 상기 최종 곱의 캐리 성분을 제로-확장하기 위해 상기 부호 비트의 캐리-아웃(carry-out) 값을 상기 부스 곱셈 트리의 적어도 미리 결정된 열에 더함으로써, 상기 부스 곱셈 트리로부터 상기 최종 곱을 형성하기 위한 수단을 포함하고,
    상기 부스 곱셈 트리는 16×16 radix-4 부스 곱셈 트리를 포함하고,
    상기 디지털 신호 프로세서는 상기 부스 곱셈기에서 상기 16×16 radix-4 부스 곱셈 트리의 32번째 및 그보다 높은 열들로부터의 1-확장에 캐리-아웃 값을 더함으로써 상기 부스 곱셈 트리로부터 최종 곱을 형성하기 위한 수단을 더 포함하는,
    디지털 신호 프로세서.
  14. 제 13항에 있어서,
    상기 부스 곱셈기에서 다수의 부분곱들을 감소시키기 위한 수단을 더 포함하고, 상기 감소 수단은,
    상기 부스 곱셈기에서, 제 1의 다수의 가산기 회로들을 사용하여 9 개의 부분곱 행들을 6 개의 부분곱 행들로 감소시키기 위한 수단,
    상기 부스 곱셈기에서, 제 2의 다수의 가산기 회로들을 사용하여 상기 6 개의 부분곱 행들을 4 개의 부분곱 행들로 감소시키기 위한 수단,
    상기 부스 곱셈기에서, 압축기 회로를 사용하여 상기 4 개의 부분곱 행들을 합 행 및 캐리 행으로 감소시키기 위한 수단, 및
    상기 부스 곱셈기에서, 비부호 곱셈을 위한 부호 확장을 수행하기 위해서 16×16 부스 곱셈 트리의 32번째 열에 부호 비트를 더하기 위한 수단을 포함하는,
    디지털 신호 프로세서.
  15. 제 13항에 있어서, 상기 부스 곱셈기에서 상기 부스 곱셈 트리의 마지막 부분곱 행에 상기 부호 비트를 s8인 비트로서 더하기 위한 수단을 더 포함하는,
    디지털 신호 프로세서.
  16. 제 13항에 있어서,
    상기 부스 곱셈 트리는 16×16 radix-4 부스 곱셈 트리를 포함하고,
    상기 디지털 신호 프로세서는 상기 부스 곱셈기에서 단지 다수의 부분곱들의 최종 감소 스테이지에서나 또는 그 이후에만 32번째 열보다 높은 열들을 변경하기 위한 수단을 더 포함하는,
    디지털 신호 프로세서.
  17. 삭제
  18. 제 13항에 있어서, 상기 부스 곱셈기에서 MAC 연산 동안에 64-비트 값 누산의 일부로서 상기 부스 곱셈 처리를 수행하기 위한 수단을 더 포함하는,
    디지털 신호 프로세서.
  19. 부스 곱셈 처리를 위한 전력-효율적인 부호 확장 방법을 수행하기 위해서 내부에 포함되는 컴퓨터 판독가능 프로그램 코드를 갖는 컴퓨터 사용가능 매체로서,
    상기 부스 곱셈기에서, 다수의 부분곱 행들을 포함하는 부스 곱셈 트리에 부호 비트를 적용하기 위한 컴퓨터 판독가능 프로그램 코드 ― 상기 부분곱 행들 각각은 부스 곱셈 처리를 위한 부분곱을 포함하고, 상기 부호 비트는 부호 확장 단계를 필요로 하는 상기 부스 곱셈 처리의 경우에 사용됨 ―;
    상기 부스 곱셈기에서, 부스 곱셈 트리의 미리 결정된 부분곱 행의 정확한 부호를 보존하기 위해 부호 비트를 사용하여 상기 부스 곱셈 트리의 상기 미리 결정된 부분곱 행을 1-확장(one-extending)하기 위한 컴퓨터 판독가능 프로그램 코드;
    상기 부스 곱셈기에서, 상기 부스 곱셈 트리에서 부호-확장 비트를 생성함으로써 상기 부호 비트의 신호 값을 결정(resolve)하기 위한 컴퓨터 판독가능 프로그램 코드 ― 상기 부호-확장 비트는 부스 곱셈 처리의 곱을 확장하기 위해서 캐리-아웃 열에 위치됨 ― ; 및
    상기 부스 곱셈기에서, 부호를 갖는 최종 곱의 합 성분을 효과적으로 확장하고 또한 상기 최종 곱의 캐리 성분을 제로-확장하기 위해 상기 부호 비트의 캐리-아웃(carry-out) 값을 상기 부스 곱셈 트리의 적어도 미리 결정된 열에 더함으로써, 상기 부스 곱셈 트리로부터 상기 최종 곱을 형성하기 위한 컴퓨터 판독가능 프로그램 코드를 포함하고,
    상기 부스 곱셈 트리는 16×16 radix-4 부스 곱셈 트리를 포함하고,
    상기 컴퓨터 사용가능 매체는 상기 부스 곱셈기에서 상기 16×16 radix-4 부스 곱셈 트리의 32번째 및 그보다 높은 열들로부터의 1-확장에 캐리-아웃 값을 더함으로써 상기 부스 곱셈 트리로부터 최종 곱을 형성하기 위한 컴퓨터 판독가능 프로그램 코드를 더 포함하는,
    컴퓨터 사용가능 매체.
  20. 제 19항에 있어서,
    상기 부스 곱셈기에서, 제 1의 다수의 가산기 회로들을 사용하여 9 개의 부분곱 행들을 6 개의 부분곱 행들로 감소시키기 위한 컴퓨터 판독가능 프로그램 코드,
    상기 부스 곱셈기에서, 제 2의 다수의 가산기 회로들을 사용하여 상기 6 개의 부분곱 행들을 4 개의 부분곱 행들로 감소시키기 위한 컴퓨터 판독가능 프로그램 코드,
    상기 부스 곱셈기에서, 압축기 회로를 사용하여 상기 4 개의 부분곱 행들을 합 행 및 캐리 행으로 감소시키기 위한 컴퓨터 판독가능 프로그램 코드, 및
    상기 부스 곱셈기에서, 비부호 곱셈을 위한 부호 확장을 수행하기 위해서 16×16 부스 곱셈 트리의 32번째 열에 부호 비트를 더하기 위한 컴퓨터 판독가능 프로그램 코드를 포함하는,
    컴퓨터 사용가능 매체.
  21. 제 19항에 있어서, 상기 부스 곱셈기에서 상기 부스 곱셈 트리의 마지막 부분곱 행에 상기 부호 비트를 s8인 비트로서 더하기 위한 컴퓨터 판독가능 프로그램 코드를 더 포함하는,
    컴퓨터 사용가능 매체.
  22. 제 19항에 있어서,
    상기 부스 곱셈 트리는 16×16 radix-4 부스 곱셈 트리를 포함하고,
    상기 컴퓨터 사용가능 매체는 상기 부스 곱셈기에서 단지 다수의 부분곱들의 최종 감소 스테이지에서나 또는 그 이후에만 32번째 열보다 높은 열들을 변경하기 위한 컴퓨터 판독가능 프로그램 코드를 더 포함하는,
    컴퓨터 사용가능 매체.
  23. 삭제
  24. 제 19항에 있어서, 상기 부스 곱셈기에서 MAC 연산 동안에 64-비트 값 누산의 일부로서 상기 부스 곱셈 처리를 수행하기 위한 컴퓨터 판독가능 프로그램 코드를 더 포함하는,
    컴퓨터 사용가능 매체.
KR1020087021913A 2006-02-15 2007-02-15 부스 곱셈 방법들 및 시스템들을 위한 전력-효율적인 부호 확장 KR101086560B1 (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US11/356,359 US7797366B2 (en) 2006-02-15 2006-02-15 Power-efficient sign extension for booth multiplication methods and systems
US11/356,359 2006-02-15
PCT/US2007/062256 WO2007095626A1 (en) 2006-02-15 2007-02-15 Power-efficient sign extension for booth multiplication methods and systems

Related Child Applications (1)

Application Number Title Priority Date Filing Date
KR1020117020529A Division KR101173405B1 (ko) 2006-02-15 2007-02-15 부스 곱셈 방법들 및 시스템들을 위한 전력-효율적인 부호 확장

Publications (2)

Publication Number Publication Date
KR20080094813A KR20080094813A (ko) 2008-10-24
KR101086560B1 true KR101086560B1 (ko) 2011-11-23

Family

ID=38121636

Family Applications (2)

Application Number Title Priority Date Filing Date
KR1020087021913A KR101086560B1 (ko) 2006-02-15 2007-02-15 부스 곱셈 방법들 및 시스템들을 위한 전력-효율적인 부호 확장
KR1020117020529A KR101173405B1 (ko) 2006-02-15 2007-02-15 부스 곱셈 방법들 및 시스템들을 위한 전력-효율적인 부호 확장

Family Applications After (1)

Application Number Title Priority Date Filing Date
KR1020117020529A KR101173405B1 (ko) 2006-02-15 2007-02-15 부스 곱셈 방법들 및 시스템들을 위한 전력-효율적인 부호 확장

Country Status (7)

Country Link
US (1) US7797366B2 (ko)
EP (1) EP1984809A1 (ko)
JP (4) JP2009527064A (ko)
KR (2) KR101086560B1 (ko)
CN (2) CN102279724B (ko)
TW (1) TWI332625B (ko)
WO (1) WO2007095626A1 (ko)

Families Citing this family (27)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
AU2003289583A1 (en) * 2003-07-18 2005-02-04 Electronics And Telecommunications Research Institute System and method of multilingual rights data dictionary
TWI258694B (en) * 2004-04-02 2006-07-21 Ali Corp Method and system for sign extension of multiplier
EP1984810B1 (en) * 2006-02-15 2017-03-22 QUALCOMM Incorporated A booth multiplier with enhanced reduction tree circuitry
US7797366B2 (en) * 2006-02-15 2010-09-14 Qualcomm Incorporated Power-efficient sign extension for booth multiplication methods and systems
US7809783B2 (en) * 2006-02-15 2010-10-05 Qualcomm Incorporated Booth multiplier with enhanced reduction tree circuitry
US20160188327A1 (en) * 2014-12-24 2016-06-30 Elmoustapha Ould-Ahmed-Vall Apparatus and method for fused multiply-multiply instructions
US9917623B1 (en) * 2016-08-01 2018-03-13 Space Systems/Loral, Llc Digital beamforming architecture
US10175946B2 (en) * 2016-09-30 2019-01-08 International Business Machines Corporation Perform sign operation decimal instruction
US10409604B2 (en) 2017-04-24 2019-09-10 Arm Limited Apparatus and method for performing multiply-and-accumulate-products operations
US10409592B2 (en) * 2017-04-24 2019-09-10 Arm Limited Multiply-and-accumulate-products instructions
US10514924B2 (en) 2017-09-29 2019-12-24 Intel Corporation Apparatus and method for performing dual signed and unsigned multiplication of packed data elements
US10664277B2 (en) 2017-09-29 2020-05-26 Intel Corporation Systems, apparatuses and methods for dual complex by complex conjugate multiply of signed words
US10802826B2 (en) 2017-09-29 2020-10-13 Intel Corporation Apparatus and method for performing dual signed and unsigned multiplication of packed data elements
US11074073B2 (en) 2017-09-29 2021-07-27 Intel Corporation Apparatus and method for multiply, add/subtract, and accumulate of packed data elements
US10552154B2 (en) 2017-09-29 2020-02-04 Intel Corporation Apparatus and method for multiplication and accumulation of complex and real packed data elements
US10795677B2 (en) 2017-09-29 2020-10-06 Intel Corporation Systems, apparatuses, and methods for multiplication, negation, and accumulation of vector packed signed values
US10534838B2 (en) 2017-09-29 2020-01-14 Intel Corporation Bit matrix multiplication
US11243765B2 (en) 2017-09-29 2022-02-08 Intel Corporation Apparatus and method for scaling pre-scaled results of complex multiply-accumulate operations on packed real and imaginary data elements
US11256504B2 (en) 2017-09-29 2022-02-22 Intel Corporation Apparatus and method for complex by complex conjugate multiplication
US10795676B2 (en) 2017-09-29 2020-10-06 Intel Corporation Apparatus and method for multiplication and accumulation of complex and real packed data elements
CN110554854B (zh) * 2019-09-24 2024-05-03 上海寒武纪信息科技有限公司 数据处理器、方法、芯片及电子设备
CN110688087B (zh) * 2019-09-24 2024-03-19 上海寒武纪信息科技有限公司 数据处理器、方法、芯片及电子设备
TWI696947B (zh) 2019-09-26 2020-06-21 中原大學 乘積累加裝置及其方法
JP7381426B2 (ja) * 2020-03-19 2023-11-15 株式会社東芝 演算回路
US11327718B2 (en) 2020-03-19 2022-05-10 Kabushiki Kaisha Toshiba Arithmetic circuitry for power-efficient multiply-add operations
US11789701B2 (en) 2020-08-05 2023-10-17 Arm Limited Controlling carry-save adders in multiplication
US11868741B2 (en) * 2021-06-17 2024-01-09 Rebellions Inc. Processing element, neural processing device including same, and multiplication operation method using same

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5220525A (en) 1991-11-04 1993-06-15 Motorola, Inc. Recoded iterative multiplier
EP0992885A1 (en) 1998-10-06 2000-04-12 Texas Instruments Incorporated Multiplier accumulator circuits

Family Cites Families (32)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4748582A (en) * 1985-06-19 1988-05-31 Advanced Micro Devices, Inc. Parallel multiplier array with foreshortened sign extension
JPS62229439A (ja) 1986-03-31 1987-10-08 Toshiba Corp 並列乗算器
US4901307A (en) 1986-10-17 1990-02-13 Qualcomm, Inc. Spread spectrum multiple access communication system using satellite or terrestrial repeaters
US4910701A (en) * 1987-09-24 1990-03-20 Advanced Micro Devices Split array binary multiplication
JPH01116764A (ja) 1987-10-29 1989-05-09 Ricoh Co Ltd 累積加算器
US5150322A (en) 1990-06-05 1992-09-22 Vlsi Technology, Inc. Mixed-radix serial/parallel multipliers
US5103459B1 (en) 1990-06-25 1999-07-06 Qualcomm Inc System and method for generating signal waveforms in a cdma cellular telephone system
JP3033212B2 (ja) 1991-01-31 2000-04-17 日本電気株式会社 乗算器
JPH06348455A (ja) 1993-06-14 1994-12-22 Matsushita Electric Ind Co Ltd 乗算における丸め込み方法及び乗算回路
JPH0713742A (ja) * 1993-06-25 1995-01-17 Mitsubishi Electric Corp 乗算装置
GB2287331B (en) * 1994-03-02 1998-04-29 Advanced Risc Mach Ltd Electronic multiplying and adding apparatus and method
KR0158647B1 (ko) * 1995-05-22 1998-12-15 윤종용 부호/무부호 수 겸용 곱셈기
US5880985A (en) * 1996-10-18 1999-03-09 Intel Corporation Efficient combined array for 2n bit n bit multiplications
EP0840207A1 (en) 1996-10-30 1998-05-06 Texas Instruments Incorporated A microprocessor and method of operation thereof
JPH10133856A (ja) 1996-10-31 1998-05-22 Nec Corp 丸め機能付き乗算方法及び乗算器
US5928316A (en) * 1996-11-18 1999-07-27 Samsung Electronics Co., Ltd. Fused floating-point multiply-and-accumulate unit with carry correction
TW407245B (en) * 1997-04-30 2000-10-01 Lucent Technologies Inc Method for providing pure carrysave output for muiltiplier
JPH10333885A (ja) 1997-05-30 1998-12-18 Sony Corp 乗算回路
US6183122B1 (en) 1997-09-04 2001-02-06 Cirrus Logic, Inc. Multiplier sign extension
JPH11134175A (ja) 1997-10-29 1999-05-21 Toshiba Corp 乗加減算器及び演算器
US6463453B1 (en) 1998-01-12 2002-10-08 Motorola, Inc. Low power pipelined multiply/accumulator with modified booth's recoder
US6157939A (en) 1998-06-04 2000-12-05 Integrated Device Technology, Inc. Methods and apparatus for generating multiplicative inverse product
US6167422A (en) 1998-06-19 2000-12-26 Ati International Srl, Beaumont House Booth multiplication structure which selectively integrates the function of either of incrementing or negating with the function of booth multiplication
US6073156A (en) * 1998-06-19 2000-06-06 Ati International Srl Circuit and method for wrap-around sign extension for signed numbers using replacement of most significant bit
JP2000081966A (ja) * 1998-07-09 2000-03-21 Matsushita Electric Ind Co Ltd 演算装置
US6215584B1 (en) * 1999-05-10 2001-04-10 Jds Uniphase Inc. Input independent tilt free actively gain flattened broadband amplifier
JP3231298B2 (ja) * 1999-08-30 2001-11-19 富士通株式会社 乗算装置
US6353843B1 (en) 1999-10-08 2002-03-05 Sony Corporation Of Japan High performance universal multiplier circuit
JP2002157114A (ja) 2000-11-20 2002-05-31 Hitachi Ltd 乗算器及びそれを搭載した集積回路装置
US7809783B2 (en) 2006-02-15 2010-10-05 Qualcomm Incorporated Booth multiplier with enhanced reduction tree circuitry
US7797366B2 (en) * 2006-02-15 2010-09-14 Qualcomm Incorporated Power-efficient sign extension for booth multiplication methods and systems
EP1984810B1 (en) * 2006-02-15 2017-03-22 QUALCOMM Incorporated A booth multiplier with enhanced reduction tree circuitry

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5220525A (en) 1991-11-04 1993-06-15 Motorola, Inc. Recoded iterative multiplier
EP0992885A1 (en) 1998-10-06 2000-04-12 Texas Instruments Incorporated Multiplier accumulator circuits

Also Published As

Publication number Publication date
KR101173405B1 (ko) 2012-08-10
JP2009527064A (ja) 2009-07-23
US20070192399A1 (en) 2007-08-16
TWI332625B (en) 2010-11-01
JP2014209347A (ja) 2014-11-06
JP5215433B2 (ja) 2013-06-19
WO2007095626A1 (en) 2007-08-23
JP2011222024A (ja) 2011-11-04
KR20110114698A (ko) 2011-10-19
EP1984809A1 (en) 2008-10-29
JP5611923B2 (ja) 2014-10-22
CN102279724A (zh) 2011-12-14
JP2012089144A (ja) 2012-05-10
CN101384990B (zh) 2012-09-19
CN102279724B (zh) 2015-09-16
KR20080094813A (ko) 2008-10-24
TW200802078A (en) 2008-01-01
US7797366B2 (en) 2010-09-14
CN101384990A (zh) 2009-03-11

Similar Documents

Publication Publication Date Title
KR101086560B1 (ko) 부스 곱셈 방법들 및 시스템들을 위한 전력-효율적인 부호 확장
US8078835B2 (en) Reconfigurable array processor for floating-point operations
KR100715770B1 (ko) 연산을 수행하는 방법 및 시스템 및 장치
US7430578B2 (en) Method and apparatus for performing multiply-add operations on packed byte data
RU2263947C2 (ru) Целочисленное умножение высокого порядка с округлением и сдвигом в архитектуре с одним потоком команд и множеством потоков данных
JP4064989B2 (ja) パック・データの乗加算演算を実行する装置
US7809783B2 (en) Booth multiplier with enhanced reduction tree circuitry
Huang et al. Low-cost binary128 floating-point FMA unit design with SIMD support
US8930433B2 (en) Systems and methods for a floating-point multiplication and accumulation unit using a partial-product multiplier in digital signal processors
US6675286B1 (en) Multimedia instruction set for wide data paths
KR101073343B1 (ko) 개선된 감소 트리 회로를 갖는 부스 곱셈기
US8924447B2 (en) Double precision approximation of a single precision operation
JPH1185471A (ja) 演算方法および演算装置

Legal Events

Date Code Title Description
A201 Request for examination
E902 Notification of reason for refusal
AMND Amendment
E902 Notification of reason for refusal
AMND Amendment
E601 Decision to refuse application
A107 Divisional application of patent
AMND Amendment
J201 Request for trial against refusal decision
B701 Decision to grant
GRNT Written decision to grant
FPAY Annual fee payment

Payment date: 20161028

Year of fee payment: 6

FPAY Annual fee payment

Payment date: 20170929

Year of fee payment: 7

FPAY Annual fee payment

Payment date: 20180928

Year of fee payment: 8

FPAY Annual fee payment

Payment date: 20190924

Year of fee payment: 9