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

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

Info

Publication number
KR100580255B1
KR100580255B1 KR1020040004449A KR20040004449A KR100580255B1 KR 100580255 B1 KR100580255 B1 KR 100580255B1 KR 1020040004449 A KR1020040004449 A KR 1020040004449A KR 20040004449 A KR20040004449 A KR 20040004449A KR 100580255 B1 KR100580255 B1 KR 100580255B1
Authority
KR
South Korea
Prior art keywords
partial
multiplier
multiplicand
result
bits
Prior art date
Application number
KR1020040004449A
Other languages
English (en)
Other versions
KR20050076459A (ko
Inventor
조원경
박인철
이을환
강형주
Original Assignee
삼성전자주식회사
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 삼성전자주식회사 filed Critical 삼성전자주식회사
Priority to KR1020040004449A priority Critical patent/KR100580255B1/ko
Priority to US11/037,547 priority patent/US7769797B2/en
Publication of KR20050076459A publication Critical patent/KR20050076459A/ko
Application granted granted Critical
Publication of KR100580255B1 publication Critical patent/KR100580255B1/ko

Links

Images

Classifications

    • FMECHANICAL ENGINEERING; LIGHTING; HEATING; WEAPONS; BLASTING
    • F21LIGHTING
    • F21VFUNCTIONAL FEATURES OR DETAILS OF LIGHTING DEVICES OR SYSTEMS THEREOF; STRUCTURAL COMBINATIONS OF LIGHTING DEVICES WITH OTHER ARTICLES, NOT OTHERWISE PROVIDED FOR
    • F21V33/00Structural combinations of lighting devices with other articles, not otherwise provided for
    • F21V33/0004Personal or domestic articles
    • F21V33/0024Household or table equipment
    • F21V33/0028Decorative household equipment, e.g. plant holders or food dummies
    • AHUMAN NECESSITIES
    • A47FURNITURE; DOMESTIC ARTICLES OR APPLIANCES; COFFEE MILLS; SPICE MILLS; SUCTION CLEANERS IN GENERAL
    • A47GHOUSEHOLD OR TABLE EQUIPMENT
    • A47G7/00Flower holders or the like
    • A47G7/02Devices for supporting flower-pots or cut flowers
    • A47G7/03Needle cushions or needle plates for supporting flowers in pots or vases
    • FMECHANICAL ENGINEERING; LIGHTING; HEATING; WEAPONS; BLASTING
    • F21LIGHTING
    • F21VFUNCTIONAL FEATURES OR DETAILS OF LIGHTING DEVICES OR SYSTEMS THEREOF; STRUCTURAL COMBINATIONS OF LIGHTING DEVICES WITH OTHER ARTICLES, NOT OTHERWISE PROVIDED FOR
    • F21V21/00Supporting, suspending, or attaching arrangements for lighting devices; Hand grips
    • F21V21/02Wall, ceiling, or floor bases; Fixing pendants or arms to the bases

Landscapes

  • Engineering & Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Complex Calculations (AREA)

Abstract

동일한 부분곱 계산 모듈을 포함하여 다양한 곱셈 연산을 수행할 수 있는 다중 곱셈기가 개시된다. 본 발명에 의한 다중 곱셈기는 승수 및 피승수 추출부, 곱셈 연산부 및 결과 형성부를 포함한다. 승수 및 피승수 추출부는 피승수를 k(k는 양의 우수) 개의 부분 피승수들로 분할하고, 승수를 l 개의 부분 승수들로 분할하며, 부분 피승수들 각각 및 부분 승수들의 각각을 조합하여 k 개의 부분 입력쌍을 생성한다. 또한, 곱셈 연산부는 k 개의 부분 입력쌍 각각을 수신하여 부분 캐리 및 부분곱을 출력하기 위한 k 개의 동일한 부분곱 계산 모듈들을 포함하며, 결과 형성부는 k 개의 부분 캐리 및 k 개의 부분곱을 조합하여 실행 코드에 의하여 요구되는 곱셈 연산의 결과를 출력한다. 본 발명에 의하여 동일한 부분곱 계산 모듈을 이용하여 상이한 곱셈을 연산할 수 있으며, 다중 곱셈기가 반도체 장치로 구현될 경우 면적이 현저히 감소된다.

Description

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

Claims (10)

  1. m(m은 양의 정수) 개의 비트를 가지는 피승수 및 n(n은 양의 정수) 개의 비트를 가지는 승수를 수신하고, 실행 코드에 의하여 지시되는 곱셈 연산을 수행하여 결과를 출력하는 다중 곱셈기에 있어서,
    상기 피승수를 k(k는 양의 우수) 개의 부분 피승수들로 분할하고, 상기 승수를 l 개의 부분 승수들로 분할하며, 상기 부분 피승수들 각각 및 상기 부분 승수들의 각각을 조합하여 k 개의 부분 입력쌍을 생성하기 위한 승수 및 피승수 추출부;
    k 개의 상기 부분 입력쌍 각각을 수신하여 부분 캐리 및 부분곱을 출력하기 위한 k 개의 동일한 부분곱 계산 모듈들을 포함하는 곱셈 연산부;
    k 개의 상기 부분 캐리 및 k 개의 상기 부분곱을 조합하여 상기 실행 코드에 의하여 요구되는 곱셈 연산의 결과를 출력하기 위한 결과 형성부를 포함하는 것을 특징으로 하는 복수 개의 동일한 부분곱 계산 모듈을 포함하는 다중 곱셈기.
  2. 제1항에 있어서, 상기 승수 및 피승수 추출부는,
    상기 실행 코드에 의하여 지시되는 곱셈 연산이 무부호(unsigned) 연산인지 여부를 판단하여,
    지시되는 곱셈 연산이 무부호 연산으로 판단되면, 상기 부분 피승수 및 부분 승수의 부호 비트를 0으로 세팅하고,
    지시되는 곱셈 연산이 부호부(signed) 연산으로 판단되면, 상기 부분 피승수 및 부분 승수에 부호 확장(sign extension)을 수행하는 것을 특징으로 하는 복수 개의 동일한 부분곱 계산 모듈을 포함하는 다중 곱셈기.
  3. 제1항 또는 제2항에 있어서, 상기 승수 및 피승수 추출부는,
    상기 피승수를 최상위 비트(MSB, most significant bit)부터 m/k 개의 비트를 가지는 k 개의 부분 피승수들(MCD(1), MCD(2), ..., MCD(k))로 분할하고,
    상기 승수를 최상위 비트부터 n/l 개의 비트를 가지는 부분 승수들(MER(1), MER(2), ..., MER(l))로 분할하며,
    상기 p(p≤k 인 양의 정수) 번째 부분 피승수에 q(q≤l의 양의 정수) 번째 부분 승수를 조합하여 부분 입력쌍을 생성하되, p 및 q가 각각 k 및 l 값이 될 때까지 1씩 증가시키고, p 및 q가 각각 k 및 l 값에 도달하면 초기화시키는 방식으로 조합하는 것을 특징으로 하는 복수 개의 동일한 부분곱 계산 모듈을 포함하는 다중 곱셈기.
  4. 제3항에 있어서, 상기 부분곱 계산 모듈들은,
    상기 부분 캐리 및 상기 부분곱을 벡터 형식으로 상기 결과 형성부로 제공하는 것을 특징으로 하는 복수 개의 동일한 부분곱 계산 모듈을 포함하는 다중 곱셈기.
  5. 제4항에 있어서, 상기 결과 형성부는,
    상기 실행 코드에 의하여 요구되는 결과의 비트수에서 상기 부분곱의 비트수를 제한 결과를 k로 나눈 값 만큼 순서에 따라 상기 부분곱 각각을 천이시키고,
    천이된 각각의 부분곱을 캐리 저장 합산(carry save adding)하여 상기 결과를 형성하는 것을 특징으로 하는 복수 개의 동일한 부분곱 계산 모듈을 포함하는 다중 곱셈기.
  6. m(m은 양의 정수) 개의 비트를 가지는 피승수 및 n(n은 양의 정수) 개의 비트를 가지는 승수를 수신하고, 실행 코드에 의하여 지시되는 곱셈 연산을 수행하여 결과를 출력하기 위한 다중 곱셈 방법에 있어서,
    상기 피승수를 k(k는 양의 우수) 개의 부분 피승수들로 분할하고, 상기 승수를 l 개의 부분 승수들로 분할하며, 상기 부분 피승수들 각각 및 상기 부분 승수들의 각각을 조합하여 k 개의 부분 입력쌍을 생성하기 위한 승수 및 피승수 추출 단 계;
    k 개의 상기 부분 입력쌍 각각을 수신하여 k 개의 부분 캐리 및 k 개의 부분곱들을 계산하는 곱셈 연산 단계; 및
    k 개의 상기 부분 캐리 및 k 개의 상기 부분곱을 조합하여 상기 실행 코드에 의하여 요구되는 곱셈 연산의 결과를 출력하기 위한 결과 형성 단계를 포함하며, 상기 곱셈 연산 단계는,
    k 개의 상기 부분 입력쌍 각각을 수신하여 부분 캐리 및 부분곱을 출력하기 위한 부분곱 계산 단계를 k 번 반복하는 것을 특징으로 하는 다중 곱셈 방법.
  7. 제6항에 있어서, 상기 승수 및 피승수 추출 단계는,
    상기 실행 코드에 의하여 지시되는 곱셈 연산이 무부호(unsigned) 연산인지 여부를 판단하는 단계;
    지시되는 곱셈 연산이 무부호 연산으로 판단되면, 상기 부분 피승수 및 부분 승수의 부호 비트를 0으로 세팅하는 단계; 및
    지시되는 곱셈 연산이 부호부(signed) 연산으로 판단되면, 상기 부분 피승수 및 부분 승수에 부호 확장(sign extension)을 수행하는 것을 특징으로 하는 다중 곱셈 방법.
  8. 제6항 또는 제7항에 있어서, 상기 승수 및 피승수 추출 단계는,
    상기 피승수를 최상위 비트(MSB, most significant bit)부터 m/k 개의 비트를 가지는 k 개의 부분 피승수들(MCD(1), MCD(2), ..., MCD(k))로 분할하는 피승수 분할 단계;
    상기 승수를 최상위 비트부터 n/l 개의 비트를 가지는 부분 승수들(MER(1), MER(2), ..., MER(l))로 분할하는 승수 분할 단계; 및
    상기 p(p≤k 인 양의 정수) 번째 부분 피승수에 q(q≤l의 양의 정수) 번째 부분 승수를 조합하여 부분 입력쌍을 생성하되, p 및 q가 각각 k 및 l 값이 될 때까지 1씩 증가시키고, p 및 q가 각각 k 및 l 값에 도달하면 초기화시키는 방식으로 조합하는 부분 입력쌍 생성 단계를 포함하는 것을 특징으로 하는 다중 곱셈 방법.
  9. 제8항에 있어서, 상기 부분곱 계산 단계들은,
    상기 부분 캐리 및 상기 부분곱을 벡터 형식으로 상기 결과 형성부로 제공하는 것을 특징으로 하는 다중 곱셈 방법.
  10. 제9항에 있어서, 상기 결과 형성 단계는,
    상기 실행 코드에 의하여 요구되는 결과의 비트수에서 상기 부분곱의 비트수를 제한 결과를 k로 나눈 값 만큼 순서에 따라 상기 부분곱 각각을 천이시키는 단계 및
    천이된 각각의 부분곱을 캐리 저장 합산(carry save adding)하여 상기 결과를 형성하는 단계를 포함하는 것을 특징으로 하는 다중 곱셈 방법.
KR1020040004449A 2004-01-20 2004-01-20 복수 개의 동일한 부분곱 계산 모듈을 포함하는 다중곱셈기 및 다중 곱셈 방법 KR100580255B1 (ko)

Priority Applications (2)

Application Number Priority Date Filing Date Title
KR1020040004449A KR100580255B1 (ko) 2004-01-20 2004-01-20 복수 개의 동일한 부분곱 계산 모듈을 포함하는 다중곱셈기 및 다중 곱셈 방법
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
KR1020040004449A KR100580255B1 (ko) 2004-01-20 2004-01-20 복수 개의 동일한 부분곱 계산 모듈을 포함하는 다중곱셈기 및 다중 곱셈 방법

Publications (2)

Publication Number Publication Date
KR20050076459A KR20050076459A (ko) 2005-07-26
KR100580255B1 true KR100580255B1 (ko) 2006-05-16

Family

ID=37264361

Family Applications (1)

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

Country Status (1)

Country Link
KR (1) KR100580255B1 (ko)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR102153791B1 (ko) * 2017-12-20 2020-09-08 연세대학교 산학협력단 인공 신경망을 위한 디지털 뉴런, 인공 뉴런 및 이를 포함하는 추론 엔진

Also Published As

Publication number Publication date
KR20050076459A (ko) 2005-07-26

Similar Documents

Publication Publication Date Title
US7769797B2 (en) Apparatus and method of multiplication using a plurality of identical partial multiplication modules
US7921149B2 (en) Division and square root arithmetic unit
JPH1195981A (ja) 乗算回路
US6609143B1 (en) Method and apparatus for arithmetic operation
US10684825B2 (en) Compressing like magnitude partial products in multiply accumulation
US6704762B1 (en) Multiplier and arithmetic unit for calculating sum of product
JP2012528391A (ja) 飽和を伴う整数乗算および乗算加算演算
KR100580255B1 (ko) 복수 개의 동일한 부분곱 계산 모듈을 포함하는 다중곱셈기 및 다중 곱셈 방법
JP3660075B2 (ja) 除算装置
KR20060044102A (ko) 복수 개의 동일한 부분곱 계산 모듈을 포함하는 다중곱셈기 및 다중 곱셈 방법
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
WO2022115108A1 (en) An architecture for small and efficient modular multiplication using carry-save adders
JP3252954B2 (ja) 乗算方法および乗算回路
KR100295646B1 (ko) 왈리스 트리를 이용한 곱셈방법
KR100251547B1 (ko) 디지탈신호처리기(Digital Sgnal Processor)
KR100315303B1 (ko) 디지탈 신호 처리기
JP2705640B2 (ja) 積和演算器
KR100386979B1 (ko) 갈로아체상에서 비트 직렬 승산기의 병렬화 방법 및 이를이용한 직병렬 승산기
JP2777265B2 (ja) 高基数開平演算装置
KR100223752B1 (ko) 병렬 곱셈기
KR19990003926A (ko) 곱셈기의 면적 감소와 고속 동작을 위한 부분곱 생성과 부분곱 가산 트리를 구현하는 방법
KR0154773B1 (ko) 두 수의 차로써 표현되는 숫자를 위한 곱셈기
JP2607759B2 (ja) 除算器
CN116991359A (zh) Booth乘法器、混合Booth乘法器及运算方法
KR20080052194A (ko) 재구성형 프로세서 연산 방법 및 장치

Legal Events

Date Code Title Description
A201 Request for examination
E902 Notification of reason for refusal
E701 Decision to grant or registration of patent right
GRNT Written decision to grant
FPAY Annual fee payment

Payment date: 20130429

Year of fee payment: 8

FPAY Annual fee payment

Payment date: 20140429

Year of fee payment: 9

LAPS Lapse due to unpaid annual fee