KR20060044102A - 복수 개의 동일한 부분곱 계산 모듈을 포함하는 다중곱셈기 및 다중 곱셈 방법 - Google Patents

복수 개의 동일한 부분곱 계산 모듈을 포함하는 다중곱셈기 및 다중 곱셈 방법 Download PDF

Info

Publication number
KR20060044102A
KR20060044102A KR1020040091907A KR20040091907A KR20060044102A KR 20060044102 A KR20060044102 A KR 20060044102A KR 1020040091907 A KR1020040091907 A KR 1020040091907A KR 20040091907 A KR20040091907 A KR 20040091907A KR 20060044102 A KR20060044102 A KR 20060044102A
Authority
KR
South Korea
Prior art keywords
partial
multiplication
multiplier
product calculation
partial product
Prior art date
Application number
KR1020040091907A
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 삼성전자주식회사
Priority to KR1020040091907A priority Critical patent/KR20060044102A/ko
Priority to US11/037,547 priority patent/US7769797B2/en
Publication of KR20060044102A publication Critical patent/KR20060044102A/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

Landscapes

  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Engineering & Computer Science (AREA)
  • Computational Mathematics (AREA)
  • Mathematical Analysis (AREA)
  • Mathematical Optimization (AREA)
  • Pure & Applied Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • Computing Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Complex Calculations (AREA)

Abstract

동일한 부분곱 계산 모듈을 포함하여 다양한 곱셈 연산을 수행할 수 있는 다중 곱셈기가 개시된다. 본 발명에 의한 다중 곱셈기는 승수 및 피승수 추출부, 곱셈 연산부 및 결과 형성부를 포함한다. 승수 및 피승수 추출부는 피승수를 k(k는 양의 우수) 개의 부분 피승수들로 분할하고, 승수를 l 개의 부분 승수들로 분할하며, 부분 피승수들 각각 및 부분 승수들의 각각을 조합하여 k 개의 부분 입력쌍을 생성한다. 또한, 곱셈 연산부는 k 개의 부분 입력쌍 각각을 수신하여 부분 캐리 및 부분곱을 출력하기 위한 k 개의 동일한 부분곱 계산 모듈들을 포함하며, 결과 형성부는 k 개의 부분 캐리 및 k 개의 부분곱을 조합하여 실행 코드에 의하여 요구되는 곱셈 연산의 결과를 출력한다. 상기 실행 코드가 단순 곱셈 연산 명령일 경우, 부분곱 계산 모듈들 각각은, 수신된 부분 입력쌍에 상응하는 승산 영역(multiplication coverage)을 가지며, 상응하는 승산 영역에 인접한 상위 승산 영역을 가지는 부분곱 계산 모듈로부터 부분합을 하향 전달(passing down)받아 부분 캐리 및 부분곱을 연산하고, 부분 캐리 중 상응하는 승산 영역을 초과하는 부분 캐리를 상기 상위 승산 영역을 가지는 부분곱 계산 모듈로 상향 전달(passing up)한다. 본 발명에 의하여 동일한 부분곱 계산 모듈을 이용하여 상이한 곱셈을 연산할 수 있는 것은 물론, 단순 곱셈 연산의 속도를 향상시킬 수 있다.

Description

복수 개의 동일한 부분곱 계산 모듈을 포함하는 다중 곱셈기 및 다중 곱셈 방법{Apparatus and method for multiple multiplication including plurality of identical partial multiplication modules}
도 1은 종래 기술에 의한 다중 곱셈기의 구성을 간략하게 설명하기 위한 블록도이다.
도 2는 본 발명의 일 측면에 의한 다중 곱셈기의 구성을 간략하게 나타낸 블록도이다.
도 3은 도 2에 도시된 다중 곱셈기의 곱셈 연산부를 상세히 나타낸 도면이다.
도 4는 실행 코드가 단순 곱셈 연산을 지시할 경우에 부분곱 계산 모듈의 연산 결과를 가산하는 과정을 설명하는 도면이다.
도 5는 본 발명의 일 측면에 의한 다중 곱셈기의 곱셈 연산부를 상세히 나타낸 도면이다.
도 6은 본 발명의 일 측면에 의한 다중 곱셈기에 포함되는 부분곱 계산 모듈에서 발생된 내부곱 벡터들을 도시하는 도면이다.
도 7은 본 발명의 일 측면에 의한 다중 곱셈기를 상세하게 나타낸 블록도이다.
도 8은 본 발명의 다른 측면에 의한 다중 곱셈 방법을 나타내는 흐름도이다.
도 9a는 종래 기술에 의한 곱셈 방법에 따른 가산 동작을 상세히 설명하는 도면이다.
도 9b는 도 9a에 도시된 가산 동작에 후속하는 동작을 상세히 설명하는 도면이다.
도 10은 본 발명의 다른 측면에 의한 다중 곱셈 방법을 상세히 설명하는 도면이다.
본 발명은 디지털 곱셈기에 관한 것으로서, 특히 반도체 장치에 구현되기 적합하도록 감소된 면적을 가지는 다중 곱셈기에 관한 것이다.
점점 더 다양한 멀티미디어 응용을 위해 디지털 신호 프로세서(DSP)가 처리하는 데이터의 종류와 처리 방식도 다양해지고 있다. 그러므로, 두 개의 입력을 받아 곱셈을 수행하는 연산에 있어서도, 데이터의 비트 수와 동시에 곱해야 할 데이터 수를 여러 가지 방식으로 조합할 수 있도록 하는 기능이 필요하게 되었다. 따라서, 정해진 단일 곱셈 기능만을 수행하는 것이 아니라, 다양한 곱셈 동작을 수행할 수 있는 다중 곱셈기가 많이 사용된다.
종래 기술에 의한 다중 곱셈기는, 수행할 수 있는 동작 중에 실행 코드에 의하여 지시되는 동작을 선택하여 수행한다. 다중 곱셈기는, 별도의 곱셈 장치를 하 드웨어적으로 구현하는 방법에 비하여, 단일 곱셈기에 의하여 다양한 곱셈 연산을 수행할 수 있으므로 유리하다.
그런데, 종래 기술에 의한 다중 곱셈기는 다양한 곱셈 연산 각각에 대해 별도의 하드웨어 로직을 마련해, 연산 결과 중 적절한 것을 선택한다. 그러나 이러한 설계 방식은 연산의 종류가 늘어남에 따라 하드웨어 면적과 전력 소비가 증가된다는 단점을 가진다. 종래 기술에 의한 다중 곱셈기는, 하드웨어의 구성이 복잡해지므로 반도체 칩으로 구현될 경우 면적이 증가된다.
종래 기술에 의한 곱셈기는, m비트의 승수 및 n 비트의 승수를 수신하며, 그 결과로서 m+n-1 비트의 결과 및 1 비트의 캐리를 출력한다. 출력된 캐리 및 곱셈 결과가 다음 장치에 입력되어 연속적인 처리가 가능하다.
도 1은 종래 기술에 의한 다중 곱셈기의 구성을 간략하게 설명하기 위한 블록도이다. 도 1에 도시된 종래 기술에 의한 다중 곱셈기는 k 가지의 상이한 곱셈 연산을 수행하기 위한 k 개의 상이한 곱셈기 모듈을 포함한다. 그리하여, 승수 및 피승수 추출부에 입력된 피승수 및 승수는 복수 개의 곱셈기 모듈에 입력될 수 있으며, 이 중 실행 코드에 의하여 지정되는 곱셈기 모듈의 출력만이 결과 형성부에서 선택된다. 즉, 종래 기술에 의한 승수 및 피승수 추출부 및 결과 형성부는 실행 코드에 의하여 선택된 곱셈기 모듈만 곱셈을 수행하고, 수행된 결과를 출력하도록 허용한다. 이러한 과정을 간략히 설명하면 다음과 같다. 즉, 종래 기술에 의한 다중 곱셈기는 상이한 곱셈기 모듈들을 포함하고, 각각의 곱셈기 모듈은 각각 캐리 및 곱셈 결과를 출력하여 결과 발생부로 전달한다. 승수 및 피승수 추출부는 실행 코드를 패치 및 디코딩 함으로써 원하는 곱셈 모듈을 선택하여 연산을 수행한다.
우선, 종래 기술에 의한 승수 및 피승수 추출부는 승수 및 피승수를 실행 코드 옵션에 맞도록 예를 들어, 32x16, 16x16, 8x16, 8x8의 비트를 가지는 조합의 입력 쌍들을 생성한다. 그러면, 곱셈기 모듈 각각은 자신에게 할당된 곱셈을 수행하여 결과를 출력한다. 최종적으로, 결과 발생부에서 각각의 곱셈기 모듈에서 발생된 4개의 곱셈 결과로부터 최종 출력으로 결정될 48비트 값을 생성한다. 이때, 16x16 2개의 출력을 형성하는 단위 곱셈기의 출력은 32비트까지 나올 수 있으나 최종 출력은 두 개를 묶어서 48비트로 표현해야 하므로 각각 16비트 이상의 값은 오버플로우 처리될 수도 있다. 이렇게 형성된 4개의 곱셈 결과값 중 실행 코드에 의하여 지정된 한 개의 출력이 선택된다.
그런데, 종래 기술에 의한 다중 곱셈기는 상이한 곱셈 연산을 위한 상이한 곱셈기 모듈을 개별적으로 포함한다. 예를 들어, 단위 곱셈을 수행하는 16x16 곱셈기 2개 혹은 8x16 나 8x8 곱셈기 4개가 필요하다. 그러므로, 종래 기술에 의한 다중 곱셈기의 하드웨어의 면적은 증가되므로 소자의 소형화에 치명적인 단점으로 작용한다. 뿐만 아니라, 필요한 계산 결과와 관계없이 다양한 곱셈기 모듈을 요구하기 때문에, 로직 게이트 수가 증가되고, 이에 따라 전력 소모 역시 증가된다.
그러므로, 하드웨어 면적을 줄이면서 전력 소모 역시 감소시킬 수 있는 다중 곱셈기가 절실히 요구된다.
본 발명의 목적은 하드웨어 면적을 줄이면서도 다양한 곱셈 연산을 수행할 수 있는 다중 곱셈기를 제공하는 것이다.
본 발명의 다른 목적은 구현되는 로직 게이트의 수가 수를 감소시킴은 물론 전력 소비도 감소시킬 수 있는 다중 곱셈 방법을 제공하는 것이다.
상기와 같은 목적들을 달성하기 위한 본 발명의 일면은, m(m은 양의 정수) 개의 비트를 가지는 피승수 및 n(n은 양의 정수) 개의 비트를 가지는 승수를 수신하고, 실행 코드에 의하여 지시되는 곱셈 연산을 수행하여 결과를 출력하는 곱셈기에 관한 것으로서, 승수 및 피승수 추출부, 곱셈 연산부 및 결과 형성부를 포함한다. 본 발명의 일 측면에 의한 다중 곱셈기에 포함되는 승수 및 피승수 추출부는 피승수를 k(k는 양의 우수) 개의 부분 피승수들로 분할하고, 승수를 l 개의 부분 승수들로 분할하며, 부분 피승수들 각각 및 부분 승수들의 각각을 조합하여 k 개의 부분 입력쌍을 생성한다. 또한, 곱셈 연산부는 k 개의 부분 입력쌍 각각을 수신하여 부분 캐리 및 부분곱을 출력하기 위한 k 개의 동일한 부분곱 계산 모듈들을 포함하며, 결과 형성부는 k 개의 부분 캐리 및 k 개의 부분곱을 조합하여 실행 코드에 의하여 요구되는 곱셈 연산의 결과를 출력한다. 특히, 실행 코드가 단순 곱셈 연산 명령일 경우, 부분곱 계산 모듈들 각각은, 수신된 부분 입력쌍에 상응하는 승산 영역(multiplication coverage)을 가지며, 상응하는 승산 영역에 인접한 상위 승산 영역을 가지는 부분곱 계산 모듈로부터 부분합을 하향 전달(passing down)받아 부분 캐리 및 부분곱을 연산하고, 부분 캐리 중 상응하는 승산 영역을 초과하는 부분 캐리를 상위 승산 영역을 가지는 부분곱 계산 모듈로 상향 전달(passing up) 한다. 뿐만아니라, 결과 형성부는, 부분곱 계산 모듈들 각각으로부터 수신된 부분곱들을 부분곱 계산 모듈들에 상응하는 승산 영역에 따라 조합하여 단순 곱셈 연산의 결과를 출력한다. 특히, 부분곱 계산 모듈들 각각은, 부분 입력쌍에 포함된 부분 피승수에 부분 승수의 각 비트를 승산한 n 개의 내부곱 벡터(inner product vector)들을 가산하기 위한 가산기를 포함하고, 가산기는 각 가산 단계에서, 가산되는 내부곱 벡터들의 최상위 비트(highest bit number)가 일치되도록, 상위 승산 영역을 가지는 부분곱 계산 모듈로부터 하향 전달받은 부분합 중 상응하는 비트들을 최상위 비트보다 낮은 비트수를 가지는 내부곱 벡터에 패딩(padding)하여 가산을 수행하는 것이 바람직하다. 또한, 승산 영역은 가장 낮은 승산 영역은 [0, n+m/k-1]이며, 나머지 승산 영역들은 인접하는 하위 승산 영역의 최상위 비트의 상위 비트로부터 각각 m/k 개의 비트들을 가지도록 설정되는 것을 특징으로 한다.
상기한 바와 같은 본 발명의 목적을 달성하기 위한 본 발명의 다른 측면은 m(m은 양의 정수) 개의 비트를 가지는 피승수 및 n(n은 양의 정수) 개의 비트를 가지는 승수를 수신하고, 실행 코드에 의하여 지시되는 곱셈 연산을 수행하여 결과를 출력하기 위한 곱셈 방법에 관한 것이다. 본 발명의 다른 측면에 의한 다중 곱셈 방법은 피승수를 k(k는 양의 우수) 개의 부분 피승수들로 분할하고, 승수를 l 개의 부분 승수들로 분할하며, 부분 피승수들 각각 및 부분 승수들의 각각을 조합하여 k 개의 부분 입력쌍을 생성하기 위한 승수 및 피승수 추출 단계; k 개의 부분 입력쌍 각각을 수신하여 k 개의 부분 캐리 및 k 개의 부분곱들을 계산하는 곱셈 연산 단계; 및 k 개의 부분 캐리 및 k 개의 부분곱을 조합하여 실행 코드에 의하여 요구되 는 곱셈 연산의 결과를 출력하기 위한 결과 형성 단계를 포함한다. 특히, 본 발명의 다른 측면에 의한 다중 곱셈 방법에 포함되는 곱셈 연산 단계는, k 개의 부분 입력쌍 각각을 수신하여 부분 캐리 및 부분곱을 출력하기 위한 부분곱 계산 단계를 k 번 반복하는 것을 특징으로 한다. 또한, 실행 코드가 단순 곱셈 연산 명령일 경우, 부분곱 계산 단계 각각은, 수신된 부분 입력쌍에 상응하는 승산 영역(multiplication coverage)을 가지며, 상응하는 승산 영역에 인접한 상위 승산 영역에 상응하는 부분곱 계산 단계로부터 부분합을 하향 전달(passing down)받아 부분 캐리 및 부분곱을 연산하고, 부분 캐리 중 상응하는 승산 영역을 초과하는 부분 캐리를 상위 승산 영역에 상응하는 부분곱 계산 단계로 상향 전달(passing up)하는 것을 특징으로 한다. 뿐만 아니라, 결과 형성 단계는, 수신된 부분곱들을 상응하는 승산 영역에 따라 조합하여 단순 곱셈 연산의 결과를 출력하는 것이 바람직하다. 뿐만 아니라, 승수 및 피승수 추출 단계는, 실행 코드가 단순 곱셈 연산 명령일 경우, 피승수를 최상위 비트(MSB, most significant bit)부터 m/k 개의 비트를 가지는 k 개의 부분 피승수들(MCD(1), MCD(2), ..., MCD(k))로 분할하는 피승수 분할 단계 및 p(p<=k 인 양의 정수) 번째 부분 피승수에 승수를 조합하여 부분 입력쌍을 생성하되, p가 k 값이 될 때까지 1씩 증가시키는 방식으로 조합하는 부분 입력쌍 생성 단계를 포함하는 것이 바람직하다.
본 발명에 의한 다중 곱셈기 및 다중 곱셈 방법에 의하여, DSP 내에 포함되는 곱셈기의 면적이 감소되므로 소자의 집적도가 향상됨은 물론, 전력 소비가 감소된다.
본 발명과 본 발명의 동작상의 이점 및 본 발명의 실시에 의하여 달성되는 목적을 충분히 이해하기 위해서는 본 발명의 바람직한 실시예를 예시하는 첨부 도면 및 첨부 도면에 기재된 내용을 참조하여야만 한다.
이하, 첨부한 도면을 참조하여 본 발명의 바람직한 실시예를 설명함으로서, 본 발명을 상세히 설명한다. 각 도면에 대하여, 동일한 참조부호는 동일한 부재임을 나타낸다.
도 2는 본 발명의 일 측면에 의한 다중 곱셈기의 구성을 간략하게 나타낸 블록도이다. 도 2에 도시된 다중 곱셈기(200)는 승수 및 피승수 추출부(210), 복수 개의 동일한 곱셈 모듈(250) 및 결과 형성부(290)를 포함한다. 종래 기술에 의한 곱셈기와는 달리, 본 발명의 일 측면에 의한 다중 곱셈기(200)에 포함되는 곱셈 연산부(250)는 복수 개의 동일한 곱셈 모듈을 포함하여 연산을 수행한다. 또한, 승수 및 피승수 추출부(210)는 실행 코드를 수신하여 디코딩한 결과에 따라 다양한 방법의 연산을 수행하기 위하여 피승수 및 승수를 변환한다. 승수 및 피승수 추출부(210)의 동작에 대해서는 본 명세서의 해당 부분에서 상세히 설명된다.
승수 및 피승수 추출부(210)에서 추출된 승수 및 추출된 피승수는 각각 곱셈 연산부(250)를 구성하는 동일한 곱셈 모듈에 입력된다. 복수 개의 동일한 곱셈 모듈은 수신되는 승수 및 피승수를 이용하여 곱셈을 수행하고 그 결과를 결과 형성부(290)로 전달한다. 결과 형성부(290)는 실행 코드에 의하여 요구되는 결과만을 선택하거나, 수신되는 결과를 실행 코드에 맞도록 조합하여 최종 결과를 생성한다. 결과 형성부(290)의 동작에 대해서는 본 명세서의 해당 부분에서 상세히 설명된다.
도 2에 도시된 바와 같이, 본 발명의 일 측면에 의한 다중 곱셈기(200)는 복수 개의 동일한 곱셈 모듈을 이용하되, 곱셈기에 입력되는 입력을 실행 코드에 맞도록 적절히 추출하여 제공하고, 출력 결과 역시 실행 코드를 이용하여 적합하게 조합함으로써 최종 결과를 생성한다.
도 3은 도 2에 도시된 다중 곱셈기의 곱셈 연산부를 상세히 나타낸 도면이다. 도 3에 도시된 곱셈 연산부(250)는 제1 내지 제 k의 동일한 부분곱 계산 모듈(252, 254, 256, 258)을 포함한다. 곱셈 연산부(250)에 제공되는 추출된 피승수 및 추출된 승수는 도 2에 도시된 승수 및 피승수 추출부(210)에 의하여 생성되는 것은 전술된 바와 같다. 각각의 부분곱 계산 모듈(252, 254, 256, 258)은 각각 캐리 및 부분곱들을 출력한다. 도 3에 도시된 바와 같이, 본 발명의 일 측면에 의한 곱셈 연산부(250)는 종래 기술에 의한 곱셈기의 곱셈 연산부와 달리 동일한 연산을 수행하는 부분곱 계산 모듈을 복수 개 포함한다(도 2참조). 그러므로, 상이한 곱셈 모듈을 복수 개 포함하는 것에 비하여 면적이 감소된다.
예를 들어, 곱셈 연산부(250)는 4개의 9x17 부호 포함 부분곱 계산 모듈을 포함할 수 있다. 이 경우, 승수 및 피승수 추출부(도 2의 210)가 각 부호 포함 부분곱 계산 모듈에 입력되는 승수 및 피승수를 추출하여 제1 내지 제4 부분 입력쌍을 생성한다. 각각의 부분곱 계산 모듈(252, 254, 256, 258)은 캐리 및 부분곱을 결과 형성부(도 2의 290)에 제공하며, 결과 형성부는 실행 코드에 의하여 지정된 연산의 결과를 형성하도록 수신된 캐리 및 부분곱을 조합하여 출력한다. 이해를 용이하게 하기 위하여, 곱셈 연산부(250)는 피승수[31:0]과 승수[31:0]을 수신하여 원하는 출력인 1개의 output[47:0]을 생성한다고 가정한다. 이러한 가정은 본 발명에 의한 다중 곱셈기의 동작을 용이하게 설명하기 위함이며 본 발명의 기술적 사상을 한정하는 것으로 이해되어서는 안된다. 또한, 본 명세서에서 [A:B]라는 수식은 각 데이터 비트 중 LSB(Least Significant Bit)로부터 시작하여 B번째 비트로부터 A번째 비트까지의 데이터 비트열을 의미한다. 예를 들어, [4:0]은 데이터 중 0비트 내지 4비트 까지의 비트열만을 선택한다.
승수 및 피승수 추출부는, 수신된 피승수(MCD{31:0]), 승수(MER{31:0]) 및 실행 코드를 수신하고, 수신된 피승수(MCD{31:0]) 및 승수(MER{31:0])를 실행 코드에 상응하도록 추출하여 각 부분곱 계산 모듈에 입력될 부분 입력쌍을 생성한다. 이때, 승수 및 피승수 추출부는 피승수는 4부분으로 나누고, 승수는 2부분으로 나눌 수 있다. 또한, 16비트가 사용되는 모드에서는 32비트 중 하위 16비트를 그대로 사용하고, 8비트만 사용하는 경우에는 승수의 값을 4부분으로 나누어 사용할 수 있다. 뿐만 아니라, 실행 코드에 의하여 지시되는 곱셈 연산이 무부호(unsigned)연산인 경우, MSB에 0을 삽입하는 0-padding을 수행하고, 부호부(signed) 연산일 경우 부호 확장(sign-extension)을 수행할 수도 있다. 이해를 용이하게 하기 위하여, 승수 및 피승수 추출부는 피승수를 4개로 분할하여 4개의 부분 피승수인 MCD1{31:24], MCD2{23:16], MCD3{15:8], MCD4{7:0]을 얻고, 32비트의 승수를 2개로 분할하여 2개의 부분 승수인 MER1[31:16] 및 MER3[15:0]을 얻는다고 가정한다. 그러면, 4개의 입력쌍을 생성하기 위하여 MER1[31:16] 및 MER3[15:0]은 각각 2회 사용된다. 또한, 승수 및 피승수 추출부(710)에서는, 승수 및 피승수를 분할한 출력 을 조합하여 제1 내지 제4 입력쌍을 생성한다.
곱셈 계산부(250)에서는 부호 포함 부분곱 계산 모듈(252, 254, 256, 258) 각각의 캐리 및 부분곱 결과를 조합하여 캐리 벡터(carry vector) 및 부분곱 벡터(sum vector)를 생성한다. 도시된 종래 기술에 의한 다중 곱셈기에 포함되는 단위 곱셈기는 부분곱 벡터 및 캐리 벡터를 더한 하나의 결과를 출력하는 반면에, 도 3에 도시된 부분곱 계산 모듈(252, 254, 256, 258)은 각 vector를 더하기 전 값을 그대로 출력한다. 그 이유는, 결과 형성부(290)에서 부분곱 계산 결과들을 모아서 한꺼번에 처리하는 것이 연산 속도를 고속화하는데 도움이 되기 때문이다. 곱셈 연산부(250)의 부분곱 계산 모듈이 4개이므로 총 4개의 부분곱 벡터 및 캐리 벡터가 생성된다. 곱셈 연산부(250)에 포함되는 각 부호 포함 부분곱 계산 모듈들은 월레스 트리(Wallace Tree) 알고리즘을 이용하여 곱셈 연산을 수행할 수 있으나, 이는 본 발명의 기술적 사상을 한정하는 것은 아니다.
그러면, 결과 형성부(도 2의 290)는 곱셈 연산부(250)에서 발생된 4개의 부분곱, 캐리 벡터를 캐리 저장 합산(Carry Save Adder)으로 누적한 값을 이용하여 실행 코드에 맞는 최종 결과값을 생성한다. 예를 들어, 32x16이나 16x16 곱셈 연산의 경우 2개 이상으로 나누어서 연산을 한 뒤 그 결과를 더해서 최종 결과를 구성한다. 이 때 LSB 비트는 승수들에서 Sign Extension에 의해 발생하는 에러를 보정하기 위해 사용된다.
종래 기술에 의한 결과 형성부는 서로 상이한 부분곱 계산 모듈의 출력 중 기계적으로 실행 코드에 의하여 지정되는 하나의 출력만을 선택한다. 그러나, 본 발명에 의한 결과 형성부(도 2의 290)는 단순히 수신된 부분곱 중 하나를 선택하는 것이 아니라, 수신된 부분곱을 다양한 방식으로 조합하여 원하는 연산 결과를 생성한다. 예를 들어, 결과 형성부(290)는 각 24비트의 크기를 가지는 제1 부분곱(SUM1) 내지 제4 부분곱(SUM4)을 각각 8비트씩 시프트하면서 합산하여 원하는 48비트의 출력 결과를 얻을 수도 있다. 즉, 제4 부분곱(SUM4)에 제3 부분곱을 8비트 시프트한 결과를 합산하고, 그 결과에 제2 부분곱을 16비트 시프트하여 합산하며, 최종적으로 그 결과에 제1 부분곱을 24비트 시프트하여 합산하여 최종 결과를 형성할 수도 있다. 따라서, 곱셈 연산부(250)로부터 수신되는 각각의 캐리 벡터 및 부분곱 벡터는 결과 형성부(290)에서 실행 코드에 상응하도록 조합되어 최종 결과가 출력된다.
도 3에서 볼 수 있는 바와 같이, 본 발명에 따른 다중 곱셈기는 9x17 곱셈 계산기 4개로 구성되어 실제로는 32x16 1개와 거의 비슷한 면적을 가지므로 종래 기술에 비하여 하드웨어 면적이 크게 줄어든다. 그러므로, 전력 소비도 마찬가지로 1/4 정도로 감소된다.
도 4는 실행 코드가 단순 곱셈 연산을 지시할 경우에 부분곱 계산 모듈의 연산 결과를 가산하는 과정을 설명하는 도면이다. 도 4에 도시된 바와 같이, 부분곱 계산 모듈로부터 출력된 부분곱들 및 부분 캐리들은 각각의 자릿수에 상응하여 천이되어 가산된다. 가산된 결과가 최종 연산 결과로 제공된다.
그런데, 도 4에 도시된 바와 같이, 단순 곱셈 연산을 수행할 경우, 각각의 부분곱들 및 부분합들을 모두 합산하기 위하여 다수 개의 가산기가 필요하다. 그 러므로, 단순 곱셈 연산을 수행할 경우에 요구되는 가산기의 개수를 줄이기 위해 다음과 같은 실시예가 제공된다.
도 5는 본 발명의 일 측면에 의한 다중 곱셈기의 곱셈 연산부를 상세히 나타낸 도면이다.
도 5에 도시된 곱셈 연산부(550)는 제1 내지 제4 부분곱 계산 모듈(552, 554, 556, 558)들을 포함한다. 부분곱 계산 모듈(552, 554, 556, 558) 각각은 자신에 상응하는 부분 입력쌍을 수신하여 부분곱을 생성한다. 실행 코드가 단순 곱셈 연산을 지시할 경우, 각각의 부분곱 계산 모듈(552, 554, 556, 558)은 상응하는 승산 영역(multiplication coverage)을 가진다. 승산 영역은 다음과 같이 할당된다.
우선, 가장 낮은 승산 영역은 [0, m+n/k-1]으로서 제1 부분곱 계산 모듈(552)에 상응한다(m은 피승수의 비트수, n은 승수의 비트수, k는 부분곱 계산 모듈을 개수). 제2 부분곱 계산 모듈(554)부터는 승산 영역은 인접하는 하위 승산 영역의 최상위 비트의 상위 비트로부터 각각 m/k 개의 비트들을 가지도록 설정된다. 이해의 편이를 위하여 16 비트의 피승수를 8비트의 승수에 승산하는 경우를 가정한다. 이러한 가정은 본 발명을 한정하는 것이 아님에 유의한다.
피승수가 16개의 비트를 가지고 승수가 8개의 비트를 가지는 경우, 제1 승산 영역은 [11:0]이 되며 제1 부분곱 계산 모듈(552)에 상응한다. 제2 승산 영역은 제1 승산 영역의 최상위 비트의 상위 비트인 12번째 비트부터 4개의 비트를 가지므로 [15:12]이며 제2 부분곱 계산 모듈(554)에 상응한다. 동일한 방법으로, 제3 승 산 영역은 [19: 16]로서 제3 부분곱 계산 모듈(556)에 상응하고, 제4 승산 영역은 [23:20]으로서 제4 부분곱 계산 모듈(558)에 상응한다.
그러면, 부분곱 계산 모듈(552, 554, 556, 558)들 각각은, 상응하는 승산 영역에 인접한 상위 승산 영역을 가지는 부분곱 계산 모듈로부터 부분합을 하향 전달(passing down)받아 부분 캐리 및 부분곱을 연산하고, 연산 결과로 발생되는 부분 캐리 중 상응하는 승산 영역을 초과하는 부분 캐리를 상위 승산 영역을 가지는 부분곱 계산 모듈로 상향 전달(passing up)한다. 그러면, 결과 형성부는, 부분곱 계산 모듈들 각각으로부터 수신된 부분곱들을 부분곱 계산 모듈들에 상응하는 승산 영역에 따라 조합하여 단순 곱셈 연산의 결과를 출력한다.
부분곱 계산 모듈(552, 554, 556, 558)들 각각은, 부분 입력쌍에 포함된 부분 피승수에 부분 승수의 각 비트를 승산한 n 개의 내부곱 벡터(inner product vector)들을 가산하기 위한 가산기(미도시)를 포함한다. 예를 들어, 16비트의 피승수를 4개의 부분 피승수로 분할한 경우, 각각의 부분곱 계산 모듈(552, 554, 556, 558)들은 수신된 부분 피승수에 부분 승수의 각 비트를 승산한 8개의 내부곱 벡터를 생성한다. 각각의 내부곱 벡터를 비트 단위로 합산하면 부분곱이 발생된다.
가산기는, 가산되는 내부곱 벡터들의 최상위 비트(highest bit number)가 일치되도록, 상위 승산 영역을 가지는 부분곱 계산 모듈로부터 하향 전달받은 부분합 중 상응하는 비트들을 최상위 비트보다 낮은 비트수를 가지는 내부곱 벡터에 패딩(padding)한 후 가산한다. 예를 들어, 가산될 내부곱 벡터가 각각 8, 9 및 10의 최상위 비트를 가진다고 가정한다. 이러한 가정은 본 발명을 한정하지 않음에 유의한다. 그러면, 가산기는 가산될 내부곱 벡터의 최상위 비트가 10번째 비트이므로, 다른 내부곱 벡터의 최상위 비트가 10이 되도록 각각 한 개 및 두 개의 비트들을 인접하는 상위 승산 영역을 가지는 부분곱 계산 모듈로부터 하향 전달받는다. 그러면, 가산될 내부곱 벡터들은 모두 10번째 비트를 최상위 비트로서 갖는다.
그러면, 가산기는 가산 결과 발생된 캐리 중 자신에 상응하는 승산 영역을 초과하는 비트를 상위 부분곱 계산 모듈로 상향 전달한다. 상향 전달된 캐리는 상위 부분곱 계산 모듈의 해당 비트에 패딩된다.
이러한 과정을 거쳐서 연산된 결과 중 각 부분곱 계산 모듈의 상응하는 승산 영역에 해당하는 비트들만 조합하면 별도의 가산 동작이 필요없이 최종 연산 결과를 얻을 수 있다.
이러한 하향 전달 및 상향 전달 과정은 도 10을 이용하여 상세히 후술된다.
본 발명에 따른 곱셈 연산부(550)에서는, 각각의 부분곱 계산 모듈(552, 554, 556, 558)들의 연산 결과를 별도로 가산할 필요없이 최종 곱셈 결과를 얻을 수 있으므로 하드웨어 면적이 더욱 감소됨은 물론, 소비 전력도 최소화된다.
도 6은 본 발명의 일 측면에 의한 다중 곱셈기에 포함되는 부분곱 계산 모듈에서 발생된 내부곱 벡터들을 도시하는 도면이다.
도 6에서, 사다리꼴 모양은 부분 피승수에 부분 승수의 각 비트를 승산한 결과인 내부곱 벡터들을 자릿수를 감안하여 도시한 결과를 나타낸다. 부분 곱1은 제1 부분 피승수에 부분 승수의 각 비트를 승산한 결과를 비트 단위로 모두 합산할 결과이다. 마찬가지로, 부분 곱k는 k 번째 부분 피승수에 부분 승수의 각 비트를 승산한 결과를 비트 단위로 합산한 결과이다. 본 발명에 따른 부분곱 계산 모듈에 포함되는 가산기는, 각각의 가산 동작에서 가산되는 내부곱 벡터들의 최상위 비트에 정합되도록 인접하는 상위 내부곱 벡터로부터 상응하는 비트를 하향 전달받는다. 이러한 동작은 수직 방향의 화살표로써 도식화되었다. 각각의 부분곱 계산 모듈의 최종 합산 결과 중에서, 자신의 승산 영역을 초과하는 비트수에 해당하는 캐리는 인접하는 상위 승산 영역에 해당되는 부분곱 계산 모듈로 전달된다. 이러한 동작은 우측 방향 화살표로써 도식화되었다.
도 6에서와 같이, 본 발명에 의한 부분곱 계산 모듈은 인접하는 부분곱 계산 모듈로부터 자신의 승산 영역에 해당되는 부분합을 미리 하향 전달받아 승산을 수행하므로, 각각의 부분곱을 최종 합산하는 과정이 필요없다.
도 7은 본 발명의 일 측면에 의한 다중 곱셈기를 상세하게 나타낸 블록도이다.
도 7에 도시된 다중 곱셈기(700)의 곱셈 연산부(750)는 4개의 5X9 부호 포함 부분곱 계산 모듈(752, 754, 756, 758)을 포함한다. 또한, 승수 및 피승수 추출부(710)가 각 부호 포함 부분곱 계산 모듈에 입력되는 승수 및 피승수를 추출하여 제1 내지 제4 부분 입력쌍(712, 714, 716, 718)을 생성한다. 각각의 부호 포함 부분곱 계산 모듈(752, 754, 756, 758)은 부분 캐리 및 부분곱을 결과 형성부(790)에 제공하며, 결과 형성부(790)는 실행 코드에 의하여 지정된 연산의 결과를 형성하도록 수신된 캐리 및 부분곱을 조합하여 출력한다. 이해를 용이하게 하기 위하여, 도 7에 도시된 다중 곱셈기(700)는 피승수[15:0]과 승수[7:0]을 수신하여 원하는 출력인 1개의 결과 [23:0]을 생성한다고 가정한다. 이러한 가정은 본 발명에 의한 다중 곱셈기(700)의 동작을 용이하게 설명하기 위함이며 본 발명의 기술적 사상을 한정하는 것으로 이해되어서는 안된다.
승수 및 피승수 추출부(710)는, 수신된 피승수(MCD{15:0]), 승수(MER{7:0]) 및 실행 코드를 수신하고, 수신된 피승수(MCD{15:0]) 및 승수(MER{7:0])를 실행 코드에 상응하도록 추출하여 각 부분곱 계산 모듈에 입력될 부분 입력쌍(712, 714, 716, 718)을 생성한다. 이때, 승수 및 피승수 추출부(710)는 피승수는 4부분으로 나눌 수 있다. 뿐만 아니라, 실행 코드에 의하여 지시되는 곱셈 연산이 무부호(unsigned)연산인 경우, MSB에 0을 삽입하는 0-padding을 수행하고, 부호부(signed) 연산일 경우 부호 확장(sign-extension)을 수행할 수도 있다. 도 7에 도시된 예시에서, 승수 및 피승수 추출부(710)는 피승수를 4개로 분할하여 4개의 부분 피승수인 MCD1{15:12], MCD2{11:8], MCD3{7:4], MCD4{3:0]을 얻는다.
도 7에 도시된 예시에 의하면, 각각의 부분 입력쌍은 다음과 같다. 제1 부분 입력쌍(712)은 피승수의 첫 번째 부분(MCD1[15:12]) 및 승수(MER1[7:0])를 포함한다. 제2 부분 입력쌍(714)은 피승수의 두 번째 부분(MCD2[11:8]) 및 승수(MER2[7:0])를 포함한다. 제3 부분 입력쌍(716)은 피승수의 세 번째 부분(MCD3[7:4]) 및 승수(MER3[7:0])를 포함한다. 그리고, 제4 부분 입력쌍(718)은 피승수의 네 번째 부분(MCD4[3:0]) 및 승수(MER4[7:0])를 포함한다. 실행 코드가 단순 곱셈을 지시할 경우, 승수는 분할되지 않고 그대로 사용되는 것이 바람직하다. 생성된 각각의 부분 입력쌍은 곱셈 연산부(750)에 포함되는 동일한 부호 포함 부분곱 계산 모듈(752, 754, 756, 758) 각각에 입력된다.
곱셈 계산부(750)에서는 부호 포함 부분곱 계산 모듈(752, 754, 756, 758) 각각의 캐리 및 부분곱 결과를 조합하여 캐리 벡터(carry vector) 및 부분곱 벡터(sum vector)를 생성한다. 단순 곱셈 연산을 수행할 경우, 각각의 부분곱 계산 모듈(752, 754, 756, 758)은 인접하는 부분곱 계산 모듈에 부분합 및 부분 캐리를 상향 전달 및 하향 전달한다.
결과 형성부(790)는 곱셈 연산부(750)에서 발생된 4개의 부분곱, 캐리 벡터를 캐리 저장 합산(Carry Save Adder)으로 누적한 값을 이용하여 실행 코드에 맞는 최종 결과값을 생성한다. 예를 들어, 32x16이나 16x16 곱셈 연산의 경우 2개 이상으로 나누어서 연산을 한 뒤 그 결과를 더해서 최종 결과를 구성한다. 이 때 LSB 비트는 승수들에서 Sign Extension에 의해 발생하는 에러를 보정하기 위해 사용된다. 만일, 단순 곱셈 연산을 수행할 경우, 결과 형성부(790)는 수신된 부분곱 및 부분 캐리를 부분곱 계산 모듈의 승산 영역을 고려하여 단순히 조합함으로써 최종 결과를 생성한다. 예를 들어, 결과 형성부(790)는 제1 부분곱 계산 모듈(752)로부터 발생된 부분 캐리1 및 부분곱1 중 제1 부분곱 계산 모듈(752)에 상응하는 승산 영역인 제1 승산 영역 [11:0]에 해당하는 부분 곱 및 부분 캐리를 선택한다. 또한, 결과 형성부(790)는 제2 부분곱 계산 모듈(754)로부터 발생된 부분 캐리2 및 부분곱2 중 제2 부분곱 계산 모듈(754)에 상응하는 승산 영역인 제2 승산 영역 [15:12]에 상응하는 부분 곱 및 부분 캐리를 선택한다. 마찬가지 방법으로, 부분 캐리3 및 부분곱3으로부터 제3 승산 영역 [19:16]에 상응하는 부분 캐리 및 부분곱이 선택되고, 부분 캐리4 및 부분곱4로부터 제4 승산 영역 [23:20]에 상응하는 부분 캐리 및 부분곱이 선택된다. 결과 형성부(790)는 선택된 부분 캐리 및 부분 곱을 단순히 조합하여 최종 결과를 생성한다.
도 8은 본 발명의 다른 측면에 의한 다중 곱셈 방법을 나타내는 흐름도이다.
본 발명의 다른 측면에 의한 다중 곱셈 방법에서, 우선 실행 코드를 수신한다(S810). 그러면 수신된 실행 코드를 디코딩하여 원하는 곱셈 연산을 결정한다. 이 경우, 실행 코드가 단순 곱셈 연산을 지시하는지 판단한다(S820). 실행 코드가 단순 곱셈 연산을 지시하지 않는다면, 다양한 다중 곱셈을 수행하기 위하여 S830 단계로 진행한다. 그러면, 디코딩 된 실행 코드에 상응하여 k 개의 부분곱 계산 모듈에 제공될 부분 승수 및 부분 피승수가 추출된다(S830). 상이한 곱셈 연산을 수행하기 위하여, 승수 및 피승수가 다양한 조합으로 추출되어 부분곱 계산 모듈에 제공되는 것은 전술된 바와 같다.
그러면, 부분곱 계산 모듈에서 부분곱을 수행하여 부분 캐리 및 부분곱을 생성한다(S850). 생성된 캐리 벡터 및 부분곱 벡터는 결과 형성부로 제공된다. 결과 형성부는 실행 코드에 따라 캐리 벡터 및 부분곱 벡터를 조합하여 최종 결과를 연산한다(S870).
만일, 실행 코드가 단순 곱셈 연산을 지시한다면, 단순 곱셈을 연산하기 위한 S840 단계로 진행한다. S840 단계에서, 각 부분곱 계산 모듈의 승산 영역을 고려하여, 부분 합 및 부분 캐리를 상향/하향으로 전달하여 곱셈을 연산한다. 연산 된 부분 곱 및 부분 캐리는 별도의 가산 동작을 거치지 않고, 상응하는 승산 영역에 맞도록 선택되어 단순 조합된다.
도 9a는 종래 기술에 의한 곱셈 방법에 따른 가산 동작을 상세히 설명하는 도면이다.
도 9a에서는 16비트의 피승수에 8비트의 승수를 승산하는 과정을 도시한다. 부분곱 연산을 위하여 16비트의 피승수는 각각 4비트를 가지는 4개의 피승수로 분할되었다. 분할된 각각의 피승수에는 승수의 각 비트가 승산되어 내부곱 벡터들을 생성한다. 설명의 편의를 위하여, 3개의 내부곱 벡터들을 합산하는 각 과정은 I, II, III, IV 및 V 단계로 구분되었다.
도 9a에서 알 수 있는 바와 같이, I 단계에서, 하나의 피승수에 대하여 2개의 가산기가 필요하다. II 단계에서는 가산을 위하여 2개의 가산기가 필요하며, III 및 IV 단계에서는 각각 하나씩의 가산기가 필요하다.
그러므로, 도 9a에 도시된 연산을 수행하기 위하여 각각의 부분 피승수에 대하여 모두 6개의 가산기가 필요하므로 모두 6*4=24개의 가산기가 필요하다. 연산된 부분 곱을 합산하여 최종 결과를 도출하는 과정은 도 9b를 이용하여 설명된다.
도 9b는 도 9a에 도시된 가산 동작에 후속하는 동작을 상세히 설명하는 도면이다.
도 9a와 유사하게, 도 9b의 각 가산 동작 역시 I, II, III, IV 및 V 단계로 구분되었다.
도 9b에서 알 수 있는 바와 같이, I 단계에서, 2개의 가산기가 필요하다. II 단계에서는 가산을 위하여 2개의 가산기가 필요하며, III 및 IV 단계에서는 각각 하나씩의 가산기가 필요하다. 그러므로, 도 9b의 동작을 수행하기 위하여 필요한 가산기의 개수는 모두 6개이다.
도 9a 및 도 9b에 도시된 동작을 모두 수행하여야 최종 결과를 얻을 수 있으므로, 곱셈을 연산하기 위하여 필요한 가산기의 개수는 모두 24+6=30개임을 알 수 있다.
도 10은 본 발명의 다른 측면에 의한 다중 곱셈 방법을 상세히 설명하는 도면이다.
도 9a 및 도 9b와의 비교를 용이하게 하기 위하여, 도 10도 16비트의 피승수에 8비트의 승수를 승산하는 과정을 도시한다. 단계 I의 가산 동작을 수행하기 위하여, 모두 8개의 가산기가 필요하다. 각 가산 동작에서, 가산되는 내부곱 벡터의 최상위 비트가 일치되도록 상위 승산 영역으로부터 부분합을 하향 전달받는다. 예를 들어, 비트 집합(111)은 제2 부분곱 계산 모듈로부터 하향 전달되고, 비트 집합(112)은 제3 부분곱 계산 모듈로부터 하향 전달되며, 비트 집합(113)은 제4 부분곱 계산 모듈로부터 하향 전달된다. 마찬가지 방법으로, 비트 집합(116)은 제2 부분곱 계산 모듈로부터 하향 전달되고, 비트 집합(117)은 제3 부분곱 계산 모듈로부터 하향 전달되며, 비트 집합(118)은 제4 부분곱 계산 모듈로부터 하향 전달된다. 전달되는 비트 집합들은 모두 가산되는 내부곱 벡터들의 최상위 비트를 일치시키기 위하여 하향 전달되는 점에 유의한다.
단계 II의 동작을 수행하기 위하여, 모두 8개의 가산기가 필요하다. 비트 집합(121)이 제2 부분곱 계산 모듈로부터 하향 전달되고, 비트 집합(122)은 제3 부분곱 계산 모듈로부터 하향 전달되며, 비트 집합(123)은 제4 부분곱 계산 모듈로부터 하향 전달되는 것은 단계 I에서와 동일하다. 마찬가지 방법으로, 비트 집합(126)은 제2 부분곱 계산 모듈로부터 하향 전달되고, 비트 집합(127)은 제3 부분곱 계산 모듈로부터 하향 전달되며, 비트 집합(128)은 제4 부분곱 계산 모듈로부터 하향 전달된다.
단계 III을 수행하기 위하여, 비트 집합들(131, 132, 133)이 각각 제2, 제3 및 제4 부분곱 계산 모듈로부터 하향 전달되는 것은 전술된 바와 유사하다. 단계 III을 수행하기 위하여 총 4개의 가산기가 필요하다.
단계 IV에서, 각각의 승산 영역을 초과하는 부분 캐리(141, 145, 149)가 각각 제2, 제3 및 제4 부분곱 계산 모듈로 상향 전달된다. 단계 IV를 수행하기 위하여 총 4개의 가산기가 필요하다.
그러면, 단계 V에서, 수행된 부분곱을 각각의 승산 영역을 고려하여 단순 조합하여 최종 곱셈 결과를 얻는다. 단계 V는 가산 동작을 수행하지 않으므로 추가적인 가산기가 필요없다.
그러므로, 도 10의 동작을 수행하기 위하여 필요한 총 가산기의 개수는 24개에 불과하다. 그러므로 하드웨어 면적이 감소됨은 물론, 소비 전력도 절감된다.
본 발명은 도면에 도시된 실시예를 참고로 설명되었으나 이는 예시적인 것에 불과하며, 본 기술 분야의 통상의 지식을 가진 자라면 이로부터 다양한 변형 및 균등한 타 실시예가 가능하다는 점을 이해할 것이다. 예를 들면, 도 7에 도시된 승수 및 피승수의 비트수는 물론 최종 결과의 비트수는 모두 예시적으로 제공된 것임은 명백하다.
따라서, 본 발명의 진정한 기술적 보호 범위는 첨부된 등록청구범위의 기술적 사상에 의해 정해져야 할 것이다.
본 발명에 의하여 하드웨어 면적을 현저히 감소시키면서도 실행 코드에 의하여 지시되는 다양한 곱셈 연산을 수행할 수 있는 다중 곱셈기가 제공된다.
또한, 본 발명에 의하여 반도체 칩 내에 실장되는 논리 회로 게이트의 개수가 감소되어 소비되는 전력량도 감소되는 다중 곱셈 방법이 제공된다.

Claims (8)

  1. m(m은 양의 정수) 개의 비트를 가지는 피승수 및 n(n은 양의 정수) 개의 비트를 가지는 승수를 수신하고, 실행 코드에 의하여 지시되는 곱셈 연산을 수행하여 결과를 출력하는 다중 곱셈기에 있어서,
    상기 피승수를 k(k는 양의 우수) 개의 부분 피승수들로 분할하고, 상기 승수를 l 개의 부분 승수들로 분할하며, 상기 부분 피승수들 각각 및 상기 부분 승수들의 각각을 조합하여 k 개의 부분 입력쌍을 생성하기 위한 승수 및 피승수 추출부;
    k 개의 상기 부분 입력쌍 각각을 수신하여 부분 캐리 및 부분곱을 출력하기 위한 k 개의 동일한 부분곱 계산 모듈들을 포함하는 곱셈 연산부;
    k 개의 상기 부분 캐리 및 k 개의 상기 부분곱들을 조합하여 상기 실행 코드 에 의하여 요구되는 곱셈 연산의 결과를 출력하기 위한 결과 형성부를 포함하며, 상기 실행 코드가 단순 곱셈 연산 명령일 경우,
    상기 부분곱 계산 모듈들 각각은, 수신된 부분 입력쌍에 상응하는 승산 영역(multiplication coverage)을 가지며, 상기 상응하는 승산 영역에 인접한 상위 승산 영역을 가지는 부분곱 계산 모듈로부터 부분합을 하향 전달(passing down)받아 부분 캐리 및 부분곱을 연산하고, 상기 부분 캐리 중 상기 상응하는 승산 영역을 초과하는 부분 캐리를 상기 상위 승산 영역을 가지는 부분곱 계산 모듈로 상향 전달(passing up)하며,
    상기 결과 형성부는, 상기 부분곱 계산 모듈들 각각으로부터 수신된 부분곱들을 상기 부분곱 계산 모듈들에 상응하는 승산 영역에 따라 조합하여 단순 곱셈 연산의 결과를 출력하는 것을 특징으로 하는 복수 개의 동일한 부분곱 계산 모듈을 포함하는 수행하기 위한 다중 곱셈기.
  2. 제1항에 있어서, 상기 실행 코드가 단순 곱셈 연산 명령일 경우, 상기 부분곱 계산 모듈들 각각은,
    상기 부분 입력쌍에 포함된 상기 부분 피승수에 상기 부분 승수의 각 비트를 승산한 n 개의 내부곱 벡터(inner product vector)들을 가산하기 위한 가산기를 포함하고, 상기 가산기는 각 가산 단계에서,
    가산되는 내부곱 벡터들의 최상위 비트(highest bit number)가 일치되도록, 상기 상위 승산 영역을 가지는 부분곱 계산 모듈로부터 하향 전달받은 부분합 중 상응하는 비트들을 최상위 비트보다 낮은 비트수를 가지는 내부곱 벡터에 패딩(padding)하여 가산을 수행하는 것을 특징으로 하는 복수 개의 동일한 부분곱 계산 모듈을 포함하는 수행하기 위한 다중 곱셈기.
  3. 제2항에 있어서, 상기 실행 코드가 단순 곱셈 연산 명령일 경우,
    상기 승산 영역은 가장 낮은 승산 영역은 [0, n+m/k-1]이며, 나머지 승산 영역들은 인접하는 하위 승산 영역의 최상위 비트의 상위 비트로부터 각각 m/k 개의 비트들을 가지도록 설정되는 것을 특징으로 하는 복수 개의 동일한 부분곱 계산 모듈을 포함하는 수행하기 위한 다중 곱셈기.
  4. 제2항에 있어서, 상기 승수 및 피승수 추출부는, 상기 실행 코드가 단순 곱셈 연산 명령일 경우,
    상기 피승수를 최상위 비트(MSB, most significant bit)부터 m/k 개의 비트를 가지는 k 개의 부분 피승수들(MCD(1), MCD(2), ..., MCD(k))로 분할하고,
    상기 p(p<=k 인 양의 정수) 번째 부분 피승수에 상기 승수를 조합하여 부분 입력쌍을 생성하되, p가 k 값이 될 때까지 1씩 증가시키는 방식으로 조합하는 것을 특징으로 하는 복수 개의 동일한 부분곱 계산 모듈을 포함하는 다중 곱셈기.
  5. m(m은 양의 정수) 개의 비트를 가지는 피승수 및 n(n은 양의 정수) 개의 비트를 가지는 승수를 수신하고, 실행 코드에 의하여 지시되는 곱셈 연산을 수행하여 결과를 출력하기 위한 다중 곱셈 방법에 있어서,
    상기 피승수를 k(k는 양의 우수) 개의 부분 피승수들로 분할하고, 상기 승수를 l 개의 부분 승수들로 분할하며, 상기 부분 피승수들 각각 및 상기 부분 승수들의 각각을 조합하여 k 개의 부분 입력쌍을 생성하기 위한 승수 및 피승수 추출 단계;
    k 개의 상기 부분 입력쌍 각각을 수신하여 부분 캐리 및 부분곱들을 계산하는 동일한 부분곱 계산 단계를 k번 수행하는 곱셈 연산 단계; 및
    k 개의 상기 부분 캐리 및 k 개의 상기 부분곱을 조합하여 상기 실행 코드에 의하여 요구되는 곱셈 연산의 결과를 출력하기 위한 결과 형성 단계를 포함하며, 상기 실행 코드가 단순 곱셈 연산 명령일 경우,
    상기 부분곱 계산 단계 각각은, 수신된 부분 입력쌍에 상응하는 승산 영역(multiplication coverage)을 가지며, 상기 상응하는 승산 영역에 인접한 상위 승산 영역에 상응하는 부분곱 계산 단계로부터 부분합을 하향 전달(passing down)받아 부분 캐리 및 부분곱을 연산하고, 상기 부분 캐리 중 상기 상응하는 승산 영역을 초과하는 부분 캐리를 상기 상위 승산 영역에 상응하는 부분곱 계산 단계로 상향 전달(passing up)하며,
    상기 결과 형성 단계는, 수신된 부분곱들을 상응하는 승산 영역에 따라 조합하여 단순 곱셈 연산의 결과를 출력하는 것을 특징으로 하는 동일한 부분곱 계산 단계를 반복하는 다중 곱셈 방법.
  6. 제5항에 있어서, 상기 실행 코드가 단순 곱셈 연산 명령일 경우, 상기 부분곱 계산 단계 각각은,
    상기 부분 입력쌍에 포함된 상기 부분 피승수에 상기 부분 승수의 각 비트를 승산한 n 개의 내부곱 벡터(inner product vector)들을 가산하기 위한 가산 단계를 포함하고, 각 가산 단계에서,
    가산되는 내부곱 벡터들의 최상위 비트(highest bit number)가 일치되도록, 상기 상위 승산 영역에 상응하는 부분곱 계산 단계로부터 하향 전달받은 부분합 중 상응하는 비트들을 최상위 비트보다 낮은 비트수를 가지는 내부곱 벡터에 패딩(padding)하여 가산을 수행하는 것을 특징으로 하는 동일한 부분곱 계산 단계를 반복하는 다중 곱셈 방법.
  7. 제6항에 있어서, 상기 실행 코드가 단순 곱셈 연산 명령일 경우,
    상기 승산 영역은 가장 낮은 승산 영역은 [0, n+m/k-1]이며, 나머지 승산 영역들은 인접하는 하위 승산 영역의 최상위 비트의 상위 비트로부터 각각 m/k 개의 비트들을 가지도록 설정되는 것을 특징으로 하는 동일한 부분곱 계산 단계를 반복하는 다중 곱셈 방법.
  8. 제6항에 있어서, 상기 승수 및 피승수 추출 단계는, 상기 실행 코드가 단순 곱셈 연산 명령일 경우,
    상기 피승수를 최상위 비트(MSB, most significant bit)부터 m/k 개의 비트 를 가지는 k 개의 부분 피승수들(MCD(1), MCD(2), ..., MCD(k))로 분할하는 피승수 분할 단계 및
    상기 p(p<=k 인 양의 정수) 번째 부분 피승수에 상기 승수를 조합하여 부분 입력쌍을 생성하되, p가 k 값이 될 때까지 1씩 증가시키는 방식으로 조합하는 부분 입력쌍 생성 단계를 포함하는 것을 특징으로 하는 동일한 부분곱 계산 단계를 반복하는 다중 곱셈 방법.
KR1020040091907A 2004-01-20 2004-11-11 복수 개의 동일한 부분곱 계산 모듈을 포함하는 다중곱셈기 및 다중 곱셈 방법 KR20060044102A (ko)

Priority Applications (2)

Application Number Priority Date Filing Date Title
KR1020040091907A KR20060044102A (ko) 2004-11-11 2004-11-11 복수 개의 동일한 부분곱 계산 모듈을 포함하는 다중곱셈기 및 다중 곱셈 방법
US11/037,547 US7769797B2 (en) 2004-01-20 2005-01-19 Apparatus and method of multiplication using a plurality of identical partial multiplication modules

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020040091907A KR20060044102A (ko) 2004-11-11 2004-11-11 복수 개의 동일한 부분곱 계산 모듈을 포함하는 다중곱셈기 및 다중 곱셈 방법

Publications (1)

Publication Number Publication Date
KR20060044102A true KR20060044102A (ko) 2006-05-16

Family

ID=37148950

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020040091907A KR20060044102A (ko) 2004-01-20 2004-11-11 복수 개의 동일한 부분곱 계산 모듈을 포함하는 다중곱셈기 및 다중 곱셈 방법

Country Status (1)

Country Link
KR (1) KR20060044102A (ko)

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100768088B1 (ko) * 2005-12-09 2007-10-18 한국전자통신연구원 고속 저전력 고정계수 곱셈기 및 그 방법
WO2008036859A1 (en) * 2006-09-20 2008-03-27 Intel Corporation Instruction and logic for performing a dot-product operation
US7912891B2 (en) 2005-12-09 2011-03-22 Electronics And Telecommunications Research Institute High speed low power fixed-point multiplier and method thereof
KR101243041B1 (ko) * 2011-04-08 2013-03-20 한국과학기술원 혼성 인코딩을 이용한 곱셈기 및 곱셈 연산 방법
KR20200143608A (ko) * 2019-06-14 2020-12-24 포항공과대학교 산학협력단 뉴럴 네트워크 가속기

Cited By (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100768088B1 (ko) * 2005-12-09 2007-10-18 한국전자통신연구원 고속 저전력 고정계수 곱셈기 및 그 방법
US7912891B2 (en) 2005-12-09 2011-03-22 Electronics And Telecommunications Research Institute High speed low power fixed-point multiplier and method thereof
WO2008036859A1 (en) * 2006-09-20 2008-03-27 Intel Corporation Instruction and logic for performing a dot-product operation
KR101105527B1 (ko) * 2006-09-20 2012-01-13 인텔 코오퍼레이션 내적 연산을 수행하기 위한 명령 및 논리
KR101243041B1 (ko) * 2011-04-08 2013-03-20 한국과학기술원 혼성 인코딩을 이용한 곱셈기 및 곱셈 연산 방법
KR20200143608A (ko) * 2019-06-14 2020-12-24 포항공과대학교 산학협력단 뉴럴 네트워크 가속기
US11562218B2 (en) 2019-06-14 2023-01-24 Samsung Electronics Co., Ltd. Neural network accelerator
US11954582B2 (en) 2019-06-14 2024-04-09 Samsung Electronics Co., Ltd. Neural network accelerator

Similar Documents

Publication Publication Date Title
CN104461449B (zh) 基于向量指令的大整数乘法实现方法及装置
US6601077B1 (en) DSP unit for multi-level global accumulation
US10684825B2 (en) Compressing like magnitude partial products in multiply accumulation
US6704762B1 (en) Multiplier and arithmetic unit for calculating sum of product
EP0862110A2 (en) Wallace-tree multipliers using half and full adders
KR20060044102A (ko) 복수 개의 동일한 부분곱 계산 모듈을 포함하는 다중곱셈기 및 다중 곱셈 방법
US8275822B2 (en) Multi-format multiplier unit
Feng et al. A high performance FPGA implementation of 256-bit elliptic curve cryptography processor over GF (p)
AU630617B2 (en) Improved floating point unit computation techniques
EP0670061A1 (en) IMPROVED FAST MULTIPLIER.
Laxman et al. FPGA implementation of different multiplier architectures
US7149768B2 (en) 3-input arithmetic logic unit
WO2002073395A2 (en) A method and apparatus for multiplication and/or modular reduction processing
Jadhav et al. A novel high speed FPGA architecture for FIR filter design
US9804998B2 (en) Unified computation systems and methods for iterative multiplication and division, efficient overflow detection systems and methods for integer division, and tree-based addition systems and methods for single-cycle multiplication
US5883825A (en) Reduction of partial product arrays using pre-propagate set-up
Patronik et al. Design of residue generators with CLA/compressor trees and multi-bit EAC
KR20050076459A (ko) 복수 개의 동일한 부분곱 계산 모듈을 포함하는 다중곱셈기 및 다중 곱셈 방법
US20030093454A1 (en) Adder tree structure DSP system and method
JP4290203B2 (ja) リダクションアレイの装置および方法
JPH0793134A (ja) 乗算器
US6004022A (en) Product sum operation apparatus
JP2556300B2 (ja) 乗算装置
US20050223052A1 (en) Method and integrated circuit for carrying out a multiplication modulo m
JP2765516B2 (ja) 積和演算器

Legal Events

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