다중 입력 압축 단을 사용한 고속의 16x16 비트 곱셈기 …j ¡ 본 논문에서는...

58
工學碩士學位請求論文 다중 입력 압축 단을 사용한 고속의 16X16 비트 곱셈기 설계 (Design of High speed 16x16 Multiplier Using by Multi Input Compressor) 20048仁荷大學校 大學院 電子工學科 林 憲 用

Upload: others

Post on 27-Dec-2019

4 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: 다중 입력 압축 단을 사용한 고속의 16X16 비트 곱셈기 …J ¡ 본 논문에서는 고속 곱셈기 설계를 위해서 부분 곱을 줄여주는 Booth 알고리즘을

工學碩士學位請求論文

다중 입력 압축 단을 사용한 고속의 16X16 비트

곱셈기 설계

(Design of High speed 16x16 Multiplier Using by Multi Input Compressor)

2004年 8月

仁荷大學校 大學院

電子工學科

林 憲 用

Page 2: 다중 입력 압축 단을 사용한 고속의 16X16 비트 곱셈기 …J ¡ 본 논문에서는 고속 곱셈기 설계를 위해서 부분 곱을 줄여주는 Booth 알고리즘을

工學碩士學位請求論文

다중 입력 압축 단을 사용한 고속의 16X16 비트

곱셈기 설계

(Design of High speed 16x16 Multiplier Using by Multi Input Compressor)

2004年 8月

指導敎授 姜 晉 球

이 論文을 碩士學位 論文으로 認定함

仁荷大學校 大學院

電子工學科

林 憲 用

Page 3: 다중 입력 압축 단을 사용한 고속의 16X16 비트 곱셈기 …J ¡ 본 논문에서는 고속 곱셈기 설계를 위해서 부분 곱을 줄여주는 Booth 알고리즘을

이 論文을 林 憲 用의 碩士學位 論文으로

認定함.

2004 年 8 月

主審

副審

委員

Page 4: 다중 입력 압축 단을 사용한 고속의 16X16 비트 곱셈기 …J ¡ 본 논문에서는 고속 곱셈기 설계를 위해서 부분 곱을 줄여주는 Booth 알고리즘을

- i -

요약

본 논문에서는 고속 곱셈기 설계를 위해서 부분 곱을 줄여주는 Booth

알고리즘을 사용하였고, 부분 곱을 줄이는 과정에 있어서 새로운 다중

입력 압축 단을 제안함으로써 기존의 다중 입력 압축 단에 비해 추가적

인 회로 없이도 성능을 향상 시킬 수 있었다. 최종적으로 나오는 Sum

벡터와 Carry 벡터를 출력 단에서는 Carry로 인한 지연이 최소화 되도

록 자리 올림 선택 가산기(Carry Select Adder)를 사용하여 빠르게 연산

을 할 수 있게 하였다. 각 회로는 트랜지스터 수준에서 최적화되게 설계

하였고, HSPICE 시뮬레이션을 통해 동작과 타이밍을 검증하였다.

Hynix 0.35um 공정을 이용해 완전 주문형(Full-custom) 방식으로 설계

하였으며 16x16bit 연산의 최대 지연 시간은 2.9ns이다.

Page 5: 다중 입력 압축 단을 사용한 고속의 16X16 비트 곱셈기 …J ¡ 본 논문에서는 고속 곱셈기 설계를 위해서 부분 곱을 줄여주는 Booth 알고리즘을

- ii -

Abstract

In this paper, Booth's algorithm which reduces the number of partial

products is used for faster multiplies and Multi-input Compressor is

proposed in the process for reducing the number of partial products. It

enables this multiplier to improve performance without adding supplementary

circuits. To minimize the delay due to carries when generating final outputs,

Carry Select Adder is used for faster operations. Each circuit is optimized

on the level of transistor, HSPICE is used for simulation to verify timing

and operations. The proposed circuit is designed using Hynix 0.35um CMOS

technology and 16 bits Multiplier's critical path delay is 2.9ns.

Page 6: 다중 입력 압축 단을 사용한 고속의 16X16 비트 곱셈기 …J ¡ 본 논문에서는 고속 곱셈기 설계를 위해서 부분 곱을 줄여주는 Booth 알고리즘을

- iii -

차 례

요 약 ························································································································· i

Abstract ·················································································································· ii

차 례 ······················································································································· iii

그 림 차 례 ···········································································································v

표 차 례 ·················································································································vi

제 1 장. 서 론 ····································································································1

제 2 장. 배경이론 ······························································································4

2.1 곱셈의 동작방법 ···········································································4

2.2 Booth 알고리즘 ············································································5

2.3 Wallace tree ··················································································7

제 3 장. 고속 곱셈기의 설계 ·······································································11

3.1 입력단 ···························································································12

3.1.1 Booth Encoder ···································································12

3.1.2 Booth Selector ···································································13

3.2 부분 곱 압축단 ···········································································17

3.2.1 Counter 와 Compressor ··················································17

Page 7: 다중 입력 압축 단을 사용한 고속의 16X16 비트 곱셈기 …J ¡ 본 논문에서는 고속 곱셈기 설계를 위해서 부분 곱을 줄여주는 Booth 알고리즘을

- iv -

3.2.2 부호 확장 알고리즘 ····························································19

3.2.3 Fast input과 Fast output의 정의 ····································21

3.2.4 제안된 다중 입력 압축단 ···················································22

3.3 출력단 ···························································································35

3.3.1 Square Root Carry Chain Adder ··································35

3.3.2 16번째 비트의 Carry에 관한 연산 ·································38

3.3.3 Carry Chain Adder ····························································40

3.4. Lay out ·························································································42

3.5. 모의실험 결과 ··············································································45

제 4 장. 결론 ···································································································47

참 고 문 헌

Page 8: 다중 입력 압축 단을 사용한 고속의 16X16 비트 곱셈기 …J ¡ 본 논문에서는 고속 곱셈기 설계를 위해서 부분 곱을 줄여주는 Booth 알고리즘을

- v -

그림 차례

그림 2-1 곱셈의 Add-and-Shift 알고리즘 ················································4

그림 2-2 Radix-4 Booth 알고리즘 ································································6

그림 2-3 4:2 Carry Save Adder ····································································8

그림 2-4 4:2 CSA의 연산방법 ······································································10

그림 3-1 곱셈기의 전체 블록 다이어그램 ··················································11

그림 3-2 Booth Encoder의 블록도 ·····························································12

그림 3-3 CMOS를 사용한 Booth Selector ················································14

그림 3-4 NMOS Pass Transistor를 사용한 Booth Selector ················ 14

그림 3-5 Booth Encoder, Selector를 사용한 입력단의 블록도 ···········16

그림 3-6 Counter 와 Compressor의 블록도 ············································17

그림 3-7 Counter와 Compressor의 critical path ····································18

그림 3-8 Sign generate의 알고리즘 ···························································20

그림 3-9 3:2 Counter를 이용한 Fast input의 정의 ································21

그림 3-10 8:3 Compressor를 사용하여 부분 곱을 압축하는 과정 ····· 24

그림 3-11 7:3 Counter를 사용하여 부분 곱을 압축하는 과정 ·············25

그림 3-12 7:3 Counter의 회로도 ·································································26

그림 3-13 제안된 7:3 Counter의 시뮬레이션 결과 ·································27

그림 3-14 4:2 Compressor 구조를 사용한 8:3 Compressor ··············28

그림 3-15 제안된 8:3 Compressor의 블록도 ···········································29

그림 3-16 15,16번째 비트에 쓰인 8:3 Compressor의 블록도 ············30

Page 9: 다중 입력 압축 단을 사용한 고속의 16X16 비트 곱셈기 …J ¡ 본 논문에서는 고속 곱셈기 설계를 위해서 부분 곱을 줄여주는 Booth 알고리즘을

- vi -

그림 3-17 제안된 3:2 Counter의 회로 ·······················································30

그림 3-18 개선된 7:3 Counter의 회로도 ···················································31

그림 3-19 A-O-I 로직 구현(세부그림 1,2) ···············································32

그림 3-20 Transmission XOR 게이트 ·························································32

그림 3-21 개선된 7:3 Counter의 시뮬레이션 결과 ·································33

그림 3-22 8:3 Compressor 의 시뮬레이션 결과 ·····································34

그림 3-23 LSB-15비트까지의 Carry Select Adder 블록도 ···················36

그림 3-24 Carry Select Adder의 최대 임계경로 ·····································37

그림 3-25 Root Squared Carry Select Adder의 최대 임계경로 ·········37

그림 3-26 16-MSB까지의 Carry Select Adder 블록도 ··························38

그림 3-27 Carry Select Adder에서의 제안된 블록도 ·····························39

그림 3-28 Carry Chain Adder의 블록도 ····················································41

그림 3-29 최대 임계경로의 지연시간 시뮬레이션 결과 ··························46

표 차례

표 1 Radix-4 Booth 알고리즘의 진리표 ·······················································7

표 2 4:2 Carry Saver Adder 의 진리표 ························································9

표 3 Booth Encoder의 진리표 ······································································13

표 4 (3:2),(2:2)Counter만을 사용하여 부분 곱을 줄이는 단계 ···········22

표 5 제안된 블록(그림 3.27)의 진리표 ·······················································40

표 6 제안된 회로의 지연시간 결과 비교 ·····················································44

Page 10: 다중 입력 압축 단을 사용한 고속의 16X16 비트 곱셈기 …J ¡ 본 논문에서는 고속 곱셈기 설계를 위해서 부분 곱을 줄여주는 Booth 알고리즘을

- 1 -

제 1 장. 서 론

곱셈기는 거의 모든 processor나 DSP 처리하는 하드웨어에 없어서는 안

되는 꼭 필요한 요소이다. 곱셈은 덧셈과 함께 correlation, convolution,

filtering, DFT(Discrete Fourier Transform) 등과 같은 디지털 신호 처리에

있어서 가장 많이 사용되는 연산이다. 곱셈 연산은 기본적으로 덧셈 연산을

포함하고 있기 때문에 덧셈보다 수행 속도가 느리므로 고속, 저 전력의 곱

셈기가 전체 시스템의 성능을 높이기 위해서는 매우 중요하다. 각종 정보통

신 기기들이 고성능, 소형화로 발전되면서 곱셈기의 연산속도를 높이는 동

시에 크기를 줄이기 위해 많은 노력을 하고 있다. 이러한 고성능 곱셈기 설

계에 있어 가장 널리 알려진 다음의 두 가지 방법이 있다.

첫 번째로 곱셈 연산 중간에 생성되는 부분 곱의 수를 줄이는 방법이다.

이것은 속도향상과 더불어 면적감소까지 얻을 수 있다. 이것을 위해서

Booth 알고리즘을 사용하는데 회로 설계 시에 일반적으로 Radix-4 Booth

알고리즘을 사용한다. 곱셈기의 지연시간은 승수와 피승수의 두 개 입력이

플립플롭에 저장되어 Booth Encoder에서 나오는 신호를 Booth selector

를 통해 부분 곱을 선택하게 된다. 이렇게 생성된 부분 곱들은 제안한 다중

입력 압축 단에서 계산되어 Carry 벡터와 Sum 벡터의 최종 두 가지로

Carry Select Adder로 전달되어 연산을 하게 된다. 이러한 과정에서 부분

곱을 압축하는 과정이 곱셈기의 전체 지연시간에 가장 큰 영향을 미치므로

이 블록의 회로를 최적화 하는 것이 곱셈기 성능을 높이는데 있어 결정적인

역할을 하게 된다. [1]

Page 11: 다중 입력 압축 단을 사용한 고속의 16X16 비트 곱셈기 …J ¡ 본 논문에서는 고속 곱셈기 설계를 위해서 부분 곱을 줄여주는 Booth 알고리즘을

- 2 -

또 한 가지 방법으로는 부분 곱의 연산을 빠르게 하는 것이다. Wallace

tree를 이용하여 부분 곱을 연산하는 것이 가장 빠른 것으로 알려져 있는데

회로 설계 시 data 전송이 복잡함으로써 Wallace tree를 보완한 또 다른 구

조들의 연구가 활발히 진행되고 있다.[2-3]

본 논문에서는 Booth 알고리즘과 다중 입력 압축 단을 사용하여 설계하

였고, 기존의 CMOS Booth selector가 아닌 고속, 저 전력 설계가 가능한

NMOS Pass-Transistor Logic을 사용하였다.[3] 또한 제안한 다중 입력

압축 단 사용으로 부분 곱을 효율적으로 줄임으로써 곱셈기의 고속 동작을

가능하게 하였다. 사인 비트 확장 방법에 의한 덧셈이 아닌 사인 비트 보수

화 방법을 사용하여 속도를 빠르게 하고 작은 면적을 차지하면서 고속의 곱

셈기를 설계하는데 중점을 두었다. 최종적으로 나오는 Sum 벡터와 Carry

벡터를 출력 단에서는 Carry로 인한 지연이 최소화되도록 자리 올림 선

택 가산기(Carry Select Adder)를 사용하여 빠르게 연산을 할 수 있게

하였다. Schematic 툴을 이용하여 회로도를 그리고 HSPICE로 시뮬레이션

을 하여 논리 값 확인과 타이밍을 검증한 후 완전 주문형(full-custom) 방

법으로 레이아웃(layout)을 수행하였다. 레이아웃의 검증은 시뮬레이션으

로 검증된 회로도와 레이아웃을 LVS(Layout Versus Schematic)를 통해 확

인하였다. 이러한 완전 주문형 설계방법은 설계 시간이 오래 걸리지만 칩

면적이 작고 동작 속도가 빠른 장점이 있으므로 메모리나 마이크로프로세

서와 같이 대량생산이 가능한 제품에 적합한 방법이다. 하지만 설계에 드는

시간과 노력이 크기 때문에 Time to Market 을 위해서는 기능적으로 매우

중요한 부분만 완전 주문형 방법으로 설계하고 그 외의 부분은 자동 설계한

블록을 복합적으로 사용하게 된다. 그러나 본 논문에서는 곱셈기의 동작 속

Page 12: 다중 입력 압축 단을 사용한 고속의 16X16 비트 곱셈기 …J ¡ 본 논문에서는 고속 곱셈기 설계를 위해서 부분 곱을 줄여주는 Booth 알고리즘을

- 3 -

도가 가장 중요하기 때문에 보다 적은 면적과 고속의 액세스가 가능한 완전

주문형 방식으로 설계하였다.

본 논문의 2장에서는 곱셈기의 전반적인 배경 지식과 알고리즘을 소개하

고 3장에서는 제안된 곱셈기의 전체 구조와 부분별 구조를 자세히 설명하

고, 모의실험으로 검증하겠으며 마지막으로 4장에서는 결론을 맺는다.

Page 13: 다중 입력 압축 단을 사용한 고속의 16X16 비트 곱셈기 …J ¡ 본 논문에서는 고속 곱셈기 설계를 위해서 부분 곱을 줄여주는 Booth 알고리즘을

- 4 -

그림 2.1 곱셈의 Add-and-Shift 알고리즘

제 2 장 배경이론

2.1 곱셈의 동작방법

곱셈을 위한 가장 기본적인 방법은 AND 게이트를 사용해서 partial

product(부분 곱)를 column 형식으로 만든 후에 partial product들을 그냥

더하는 방법이다. 그러나 이 방법은 간단하다는 장점은 있지만, 시간이 너

무 오래 걸리기 때문에 거의 쓰이고 있지 않다.

그림 2.1은 8비트의 add-and-shift의 알고리즘을 나타낸 것이다. 각

비트의 Multiplier(승수)에 의해 Multiplicand(피승수)가 1비트씩 시프트

되는 형태로 만약 승수가 0이면 덧셈연산 없이 시프트 된다. 각각의 발

생한 합들을 Partial Products 로 부르고, 모든 부분 곱들을 더함으로써

Final Product를 얻게 된다.

Page 14: 다중 입력 압축 단을 사용한 고속의 16X16 비트 곱셈기 …J ¡ 본 논문에서는 고속 곱셈기 설계를 위해서 부분 곱을 줄여주는 Booth 알고리즘을

- 5 -

2.2 Booth 알고리즘

곱셈을 할 때 있어 중간과정으로 만들어지는 부분 곱의 수는 Multiplier의

비트 수만큼 생성된다. 만약 승수에 ‘0’의 항이 있으면 Partial product는 0

의 값만 생성된다. 이 항은 실제 곱셈 연산 동작에서 아무런 필요가 없다.

이러한 점에 착안해서 Booth 라는 사람이 Booth 알고리즘을 제안하였다.

승수의 항에서 1이 연속적으로 있을 경우, 예를 들어 승수에 ‘11111’이 있

으면 5개의 Partial product가 생기지만 이것을 다시 표현하여

'110001100000' =− 로 나타냄으로써 5개의 partial product를 2개로 줄일

수 있었다. 이 법칙은 부분 곱을 줄이는데 있어 상당히 획기적이지만 회로

구현 시 1이 연속되어야하고, 연속되는 1을 찾아내는 추가적인 회로가 필요

하다. Radix 2n Booth 알고리즘이 이 단점을 보완하였다. 일반적으로 곱

셈기 설계에 있어 승수를 인코딩하여 부분 곱의 수를 줄이는Radix-4

Booth 알고리즘을 많이 사용한다. Radix-4 Booth 알고리즘 은 승수를 3비

트씩 인코딩하여 부분 곱의 수를 반으로 줄임으로써 곱셈 연산시간을 줄이

는 효율적인 방법이다.

Page 15: 다중 입력 압축 단을 사용한 고속의 16X16 비트 곱셈기 …J ¡ 본 논문에서는 고속 곱셈기 설계를 위해서 부분 곱을 줄여주는 Booth 알고리즘을

- 6 -

그림 2.2 Radix-4 Booth 알고리즘

⋅⋅⋅⋅⋅====

×=×=

====

=

∑=

,2,2,2,2 where

34

23

12

01

4

1

56743453

12321011

101234567

FFFF

YFBAP

bbbBbbbBbbbBbbbB

bbbbbbbbbB

nnn

그림 2.2는 8비트의 승수를 Radix-4 Booth 알고리즘에 적용한 것이다.

승수의 LSB(Least Significant Bit) 오른쪽에 0을 추가시키고 추가시킨 비

트부터 3비트씩 그룹을 만든다. 이때 각 그룹들은 1비트씩 오버랩 되도록

묶는다. 추가한 비트를 제외한 승수의 비트가 홀수이면 MSB를 1비트 추가

하는데 이것은 마지막 그룹이 3 비트가 되도록 하기 위한 것이다. 승수를 4

비트로 묶는 Radix-8의 경우도 생각해 볼 수 있다. 이 경우에 승수가 n비트

일 때 n/3으로 부분 곱을 1/3으로 줄일 수가 있다. 그러나 Radix의 수를 늘

릴 경우 부분 곱들을 줄일 수 있지만 3A, -3A 의 표현이 추가가 된다. 따라

서 2‘s complement 표현으로는 A와 2A를 더하거나 4A에서 A를 빼는 연산

Page 16: 다중 입력 압축 단을 사용한 고속의 16X16 비트 곱셈기 …J ¡ 본 논문에서는 고속 곱셈기 설계를 위해서 부분 곱을 줄여주는 Booth 알고리즘을

- 7 -

표 1. Radix-4 Booth 알고리즘의 진리표

bi+1 bi bi-1 Partial productcase1 0 0 0 +0Xcase2 0 0 1 +1Xcase3 0 1 0 +1Xcase4 0 1 1 +2Xcase5 1 0 0 -2Xcase6 1 0 1 -Xcase7 1 1 0 -Xcase8 1 1 1 -0X

이 필요하기 때문에 실질적인 회로구성에는 사용하지 않고 있다. 아래의 진

리표는 3 비트씩 묶여진 승수의 그룹들을 인코딩한 것이다.

2.3 Wallace tree

Booth 인코더를 통하여 나온 부분 곱들은 일반적인 전가산기(full

adder)를 사용하면 Carry 전파 지연시간이 상당히 커져서 전체적인 동작

속도가 떨어지게 된다. 따라서 신속하게 연산을 수행할 필요가 있게 되

는데 이때 사용하는 방법이 CSA(Carry Save Adder)를 이용하는 것이

다. 그림 2.3은 월레스 트리에서 쓰인 1비트 4:2 CSA를 나타낸 것이다.

4:2 CSA의 구성은 두 개의 전가산기를 엇갈리게 사용함으로써 전파되

는 Carry의 영향을 받지 않도록 하고 있다. 즉, Carry의 전파시간이 더

하는 연산을 하는 전파시간과 오버랩함으로써 서로의 전파시간에 영향을

받지 않도록 하여 지연시간을 최적화할 수 있다. 이렇게 여러 개의 CSA

를 엇갈리게 사용하여 Carry의 전파 지연을 피하는 트리구조를 월레스

Page 17: 다중 입력 압축 단을 사용한 고속의 16X16 비트 곱셈기 …J ¡ 본 논문에서는 고속 곱셈기 설계를 위해서 부분 곱을 줄여주는 Booth 알고리즘을

- 8 -

트리라고 한다.[2]

그림 2.3 4:2 Carry Save Adder

위의 오른쪽의 그림은 월레스 트리에서 쓰이는 4:2 CSA의 구성도를

나타낸 것이다. 같은 비트의 4개의 입력이 들어와 Sum 벡터, Carry 벡

터, Cout 이 출력으로 나간다. 즉 5개의 입력이 들어가 3개의 출력으로

나가는 구조를 갖고 있다. 4:2 CSA의 입력으로 들어오는 Cin은 그 다음

의 4:2 CSA의 Cin으로 전달이 되는 것이 아니라 Sum벡터와 Carry 벡터

를 계산하는 데 사용이 된다. 즉, Cin 의 전달은 Cout으로 나가는 경로가

아니므로 Carry의 전달은 월레스 트리에서 최대 임계경로에는 영향을 주

지 않으므로 빠른 속도에 동작이 가능하다. 표 2는 4:2 CSA의 진리표를

나타낸 것이다.

Page 18: 다중 입력 압축 단을 사용한 고속의 16X16 비트 곱셈기 …J ¡ 본 논문에서는 고속 곱셈기 설계를 위해서 부분 곱을 줄여주는 Booth 알고리즘을

- 9 -

표 2. 4:2 Carry Saver Adder 의 진리표

Cin P1 P2 P3 P4 Sum Carry Cout0 0 0 0 0 0 0 0

0 0 0 0 1 1 0 0

0 0 0 1 0 1 0 0

0 0 0 1 1 0 0 1

0 0 1 0 0 1 0 0

0 0 1 0 1 0 0 1

0 0 1 1 0 0 0 1

0 0 1 1 1 1 0 1

0 1 0 0 0 1 0 0

0 1 0 0 1 0 1 0

0 1 0 1 0 0 1 0

0 1 0 1 1 1 0 1

0 1 1 0 0 0 1 0

0 1 1 0 1 1 0 1

0 1 1 1 0 1 0 1

0 1 1 1 1 0 1 1

1 0 0 0 0 1 0 0

1 0 0 0 1 0 1 0

1 0 0 1 0 0 1 0

1 0 0 1 1 1 0 1

1 0 1 0 0 0 1 0

1 0 1 0 1 1 0 1

1 0 1 1 0 1 0 1

1 0 1 1 1 0 1 0

1 1 0 0 0 0 1 0

1 1 0 0 1 1 1 0

1 1 0 1 0 1 1 0

1 1 0 1 1 0 1 1

1 1 1 0 0 1 1 0

1 1 1 0 1 0 1 1

1 1 1 1 0 0 1 1

1 1 1 1 1 1 1 1

Page 19: 다중 입력 압축 단을 사용한 고속의 16X16 비트 곱셈기 …J ¡ 본 논문에서는 고속 곱셈기 설계를 위해서 부분 곱을 줄여주는 Booth 알고리즘을

- 10 -

그림 2.4 4:2 CSA의 연산방법

그림 2.4는 8비트 곱셈 연산의 부분 곱을 4:2 CSA를 이용해 Sum벡터

와 Carry 벡터를 얻는 과정을 나타낸 것이다. 부분 곱 정렬에 있어서 월

레스의 구조는 현재까지 발표된 이론에서는 가장 빠른 방법으로 알려져

있는데 도선과의 복잡한 연결과 불규칙적인 레이아웃으로 또 다른 구조

의 연구가 활발히 진행되고 있다.[8]

Page 20: 다중 입력 압축 단을 사용한 고속의 16X16 비트 곱셈기 …J ¡ 본 논문에서는 고속 곱셈기 설계를 위해서 부분 곱을 줄여주는 Booth 알고리즘을

- 11 -

제 3 장 고속 곱셈기의 설계

본 논문에서 설계한 곱셈기의 구조는 그림에서 보여 지듯이 크게 세단계

로 나누었을 때 Booth 알고리즘을 이용한 입력 단 부분과 부분 곱을 정렬하

는 다중 입력 압축 단 부분, 그리고 최종적으로 남게 되는 두개의 Sum과

Carry를 연산하는 부분으로 나눌 수 있다. 트랜지스터의 개수의 90% 정도

가 Booth selector와 부분 곱 압축 단에서 쓰이고 곱셈기의 속도가 부분 곱

을 얼마나 빨리 압축하느냐에 달려 있기에 이 부분에 대한 연구를 집중적으

로 하였다.

그림 3.1 곱셈기의 전체 블록 다이어그램

Page 21: 다중 입력 압축 단을 사용한 고속의 16X16 비트 곱셈기 …J ¡ 본 논문에서는 고속 곱셈기 설계를 위해서 부분 곱을 줄여주는 Booth 알고리즘을

- 12 -

3.1 입력단

3.1.1 Booth Encoder

Booth 인코더는 병렬 곱셈기의 면적을 줄이고 곱셈 속도를 개선하기 위한

방법 중 하나로 승수를 인코딩하여 부분 곱의 수를 줄이는 Radix-4 Booth

알고리즘이 많이 사용되고 있다.[3-5] 입력 bi +1, bi, bi -1는 Radix-4

Booth 알고리즘에 의해 입력되는 승수의 연속 데이터이며 B의 시퀀스에 따

라서 +2A, +1A, 0, -A, -2A의 5가지 경우로 생성이 된다. 즉, 3개의 입력

이 들어가 5개의 출력으로 나오는 DEMUX 구조를 갖는다.

그림 3.2 Booth Encoder의 블록도

Booth 인코더의 진리표는 표 3에 나타나 있다.

Page 22: 다중 입력 압축 단을 사용한 고속의 16X16 비트 곱셈기 …J ¡ 본 논문에서는 고속 곱셈기 설계를 위해서 부분 곱을 줄여주는 Booth 알고리즘을

- 13 -

표 3. Booth Encoder의 진리표

3.1.2 Booth Selector

n/2 비트만큼만 사용되는 Booth 인코더와는 달리 Booth 셀렉터는 n2/2

이상이 들어가게 되므로 곱셈 연산을 해야 할 비트가 증가하면 Booth

셀렉터는 제곱에 비례하게 증가하므로 이 블록에 대한 연구가 중요하다.

그림 3.3은 기존의 CMOS Booth 셀렉터와 뛰어난 성능을 갖는 NMOS

Pass Transistor를 나타내었다. 기존의 CMOS Booth 셀렉터는 부호비트

와 곱의 비트를 순차적으로 한 번씩 연산을 함으로써 지연시간이 길어진

다. 또한 비트 당 18개의 트랜지스터가 사용되므로[3] 비트 당 4개의

트랜지스터가 사용되며 CMOS Booth 셀렉터에 비해 지연시간도 월등히

좋은 NMOS Pass Transistor Booth 셀렉터를 사용하였다.[7]

Page 23: 다중 입력 압축 단을 사용한 고속의 16X16 비트 곱셈기 …J ¡ 본 논문에서는 고속 곱셈기 설계를 위해서 부분 곱을 줄여주는 Booth 알고리즘을

- 14 -

그림 3.3 CMOS를 사용한 Booth Selector

그림 3.4 NMOS Pass Transistor를 사용한 Booth Selector

NMOS Pass Transistor Booth 셀렉터는 총 8개의 트랜지스터가 사용

되었고 인버터의 크기는 4.8/2.4를 기준으로 하였다. 그림 3.4의 Weak

Page 24: 다중 입력 압축 단을 사용한 고속의 16X16 비트 곱셈기 …J ¡ 본 논문에서는 고속 곱셈기 설계를 위해서 부분 곱을 줄여주는 Booth 알고리즘을

- 15 -

PMOS는 2.4/2.4로 결정하였다. 트랜지스터 면적의 결정은 NMOS 트랜

지스터의 경우는 3.6/0.35을 기본으로 하지만 이 경우 PMOS가 쓰인다.

PMOS 가 쓰인 이유는 MUX의 입력이 3.3V이고 이 입력이 선택이 되었

을 경우, NMOS를 통과하면 3.3V에서 NMOS의 문턱전압(Threshold

voltage)을 뺀 전압이 나오게 되고, 이 전압이 인버터를 통과하면 0V가

된다. PMOS 는 다시 ON이 되어야 하는 경우에 3.3V에서 NMOS 문턱

전압을 뺀 전압을 다시 처음의 입력 전압인 3.3V로 올려주는 역할을 한

다. 그리고, Weak PMOS가 되는 이유는 pull down을 잘하기 위해서이

다. 즉, MUX의 입력이 3.3V에서 0V로 바뀔 때 PMOS가 NMOS보다 강

하면 0V로 pull down이 되지 않고 계속 3.3V를 유지하게 된다. 따라서

weak PMOS를 피드백 시키면(L값을 크게 키워 저항을 키운다) 0V로

pull down 할 경우 지연 시간을 감소시킬 수 있다.[5]

Page 25: 다중 입력 압축 단을 사용한 고속의 16X16 비트 곱셈기 …J ¡ 본 논문에서는 고속 곱셈기 설계를 위해서 부분 곱을 줄여주는 Booth 알고리즘을

- 16 -

그림 3.5 Booth Encoder, Selector를 사용한 입력단의 블록도

그림 3.5는 승수를 인코딩한 값을 피승수와 연산하여 부분 곱을 생성

하는 입력단 부분이다. 앞에서 설명했듯이 Booth 인코더는 n/2개가 쓰

이는 수정된 Booth 인코더를 사용하였고, n2/2개 이상이 쓰이는 Booth

셀렉터는 NMOS Pass Transistor 구조를 사용하였다.

Page 26: 다중 입력 압축 단을 사용한 고속의 16X16 비트 곱셈기 …J ¡ 본 논문에서는 고속 곱셈기 설계를 위해서 부분 곱을 줄여주는 Booth 알고리즘을

- 17 -

3.2 부분 곱 압축단

부분 곱을 압축하는 과정은 곱셈기 설계에 있어 가장 큰 지연시간과 가장

많은 Transistor가 사용되므로 부분 곱 압축단의 연구와 노력이 끊이지 않

고 있다.[9-11] 생성된 부분 곱들을 최소 지연시간으로 CPA(Carry

Propagation Adder)까지 전달하느냐가 곱셈기의 성능을 좌우하는 요소이

기도 하다. [10]

3.2.1 Counter 와 Compressor

그림 3.6에서 보여 지는 Counter와 Compressor는 부분 곱 압축단에서

쓰인다. Counter의 대표적인 예는 Wallace tree에 쓰이는 3:2 Carry Save

Adder(CSA)를 생각하면 되겠고, Compressor는 그림 3.6의 4:2

Compressor를 생각하면 된다. 4:2 Compressor는 결국 입력은 5개이고 출

력은 3개인 5:3 Counter라고 볼 수도 있다.

그림 3.6 Counter 와 Compressor의 블록도

Page 27: 다중 입력 압축 단을 사용한 고속의 16X16 비트 곱셈기 …J ¡ 본 논문에서는 고속 곱셈기 설계를 위해서 부분 곱을 줄여주는 Booth 알고리즘을

- 18 -

그림 3.7은 두개의 (3,2) Counter를 사용한 4:2 Compressor의 구현을 보

여 주고 있다. 만약 단순하게 (3,2) Counter를 2 step에 걸쳐서 사용했다면

각 step 마다 최대 2 XOR delay를 갖기 때문에 결과적으로 2X2의 XOR

delay가 발생할 것이다. 그러나 4:2 Compressor를 사용하는 경우에는 첫

번째 Counter에서 가장 긴 delay를 가져오는 output이 두 번째 Counter에

서 가장 짧은 delay를 지원하는 input으로 들어가기 때문에 결과적으로 2

step을 처리하는데 있어 3 XOR delay 밖에 발생하지 않는다. 또한

Compressor는 전단의 Carry는 시프트 되면서 곱셈기의 속도에 영향을 미

치지 않으므로 보다 많은 연산을 가능하게 한다.

그림 3.7 Counter와 Compressor의 critical path

Page 28: 다중 입력 압축 단을 사용한 고속의 16X16 비트 곱셈기 …J ¡ 본 논문에서는 고속 곱셈기 설계를 위해서 부분 곱을 줄여주는 Booth 알고리즘을

- 19 -

3.2.2 부호 확장 알고리즘

부호 확장을 제거하는 방법으로 널리 쓰이는 경우는 부호 전달 방법(Sign

Propagate Method)과 부호 확장 방법(Sign Generate Method)이 있는데

전자의 경우는 각 Multiple 마다 3비트씩 확장하는 방법이고 후자는 1비트

만 확장하는 방법이다.[16] 물론, 두 가지 방법 모두 비트 확장뿐만이 아니

라 보정하는 비트가 있어야 한다. 본 논문에서 사용된 부호 확장 방법은 하

드웨어적으로 구현이 조금 더 쉬운 Sign Generate 방식으로 8비트 승산기

를 예를 들면 결과의 부호 비트는 다음과 같이 쓸 수 있다.

69

81

411

81

213

81

15

80 2)2(2)2(2)2(2 ×+×+×+= ∑∑∑∑

==== i

i

i

i

i

i

i

i SSSSS

여기서 S0,S1,S2,S3 는 4개의 부분 곱의 부호 비트이다. 다음의 2개의 식

을 사용하면,

,1

,22)12(22 11

j

jkjkjk

ji

i

SS −=

−=−= +−+

=∑

S는 다음과 같이 된다.

)2222(222222)](3[

222222222)](4[

)22)(1()22)(1()22)(1()22)(1(

141210816143

122

101

80

163210

1612108143

122

101

80

163210

141631216

21016

1816

0

+++−+++++⋅+++×=

−−−−++++⋅+++×=

−−+−−+−−+−−=

SSSSSSSSSSSSSSSS

SSSSS

151413121110987

0

15

0

16 222222221222 +++++++++== ∑∑== i

i

i

i

Page 29: 다중 입력 압축 단을 사용한 고속의 16X16 비트 곱셈기 …J ¡ 본 논문에서는 고속 곱셈기 설계를 위해서 부분 곱을 줄여주는 Booth 알고리즘을

- 20 -

결과의 부호 비트는 다음과 같다.

15131198143

122

101

80

163210 2222222222)](3[ +++++++++⋅+++×= SSSSSSSSS

S의 첫 번째 부분은 17번째 비트이고 무시될 수 있다. 그러므로 S는 다음과

같이 쓸 수 있다.

15131198143

122

101

80 222222222 ++++++++= SSSSS

위의 식은 다음과 같이 분석할 수 있다.

1. 각각의 부분 곱의 부호를 보수화 한다.

2. 각각의 부분 곱의 부호 비트의 왼쪽에 1을 더한다.

3. 각각의 9번째 비트에 1을 더한다.

위의 알고리즘을 하드웨어로 구현하면 그림 3.8과 같다.

그림 3.8 Sign generate의 알고리즘

Page 30: 다중 입력 압축 단을 사용한 고속의 16X16 비트 곱셈기 …J ¡ 본 논문에서는 고속 곱셈기 설계를 위해서 부분 곱을 줄여주는 Booth 알고리즘을

- 21 -

3.2.3 Fast input과 Fast output의 정의

Counter와 Compressor에 들어오는 모든 입력이 원하는 출력을 만들기 위

해서 똑같은 delay를 요구하는 것은 아니다. 그림 3.9에서 보는 것처럼 (3,

2) Counter에는 Xi, Yi, Ci 의 세 가지 입력이 있다. 같은 입력이 들어 와도

여러가지 출력 중에서 결과가 빨리 나오는 것이 있고, 늦게 나오는 것이 있

을 것이다. 그림 5에 있어서 Carry는 2 NAND delay 밖에 걸리지 않지만,

Sum은 2 XOR delay를 필요로 한다. 여기에서 Carry와 같은 빠른 출력을

fast output이라고 정의하고, 이러한 fast output을 다음단의 입력으로 쓰이

게 되는 것을 fast input이라고 정의하겠다.

그림 3.9 3:2 Counter를 이용한 Fast input의 정의

표 4에서는 (2:2), (3:2) Counter 만을 사용했을 경우에 부분 곱을 줄여 나

갈 수 있는 단계를 나타낸 것이다. Booth 알고리즘을 이용하여 생기는 n/2

비트의 부분 곱들을 줄여나가는 과정에서 부분 곱을 한 번에 많이 처리하여

Page 31: 다중 입력 압축 단을 사용한 고속의 16X16 비트 곱셈기 …J ¡ 본 논문에서는 고속 곱셈기 설계를 위해서 부분 곱을 줄여주는 Booth 알고리즘을

- 22 -

단계를 줄이게 되면 속도 향상을 기대할 것이라고 예상했다. 만약 8개의 부

분 곱들이 있을 경우에 (2:2), (3:2) 카운터로만 Sum 벡터와 Carry 벡터를

얻기까지는 4단계가 필요하지만 8개의 부분 곱을 한 단계로써 줄일 수 있

다면 성능 향상을 얻을 수 있을 것이다. 그러나 부분 곱들을 한 번에 줄이기

위해서는 그만큼 회로가 더욱 복잡해지는 단점이 생기게 된다. 따라서,

(2:2), (3:2) Counter의 상대적인 구조 단순화로 인해서 많이 쓰이고 있지

만, 개선된 (4:2), (7:3), (15:4) 등의 다중 입력 Counter의 연구도 많이 이

루어지고 있다.[6],[13]

표 4. (3:2),(2:2) Counter만을 사용하여 부분 곱을 줄이는 단계

Number of bits

in the MultiplierNumber of Reduction

stage3 14 2

4<n<=6 36<n<=9 49<n<=13 513<n<=19 619<n<=28 7

Page 32: 다중 입력 압축 단을 사용한 고속의 16X16 비트 곱셈기 …J ¡ 본 논문에서는 고속 곱셈기 설계를 위해서 부분 곱을 줄여주는 Booth 알고리즘을

- 23 -

3.2.4 제안된 다중 입력 압축단

곱셈기 설계에 있어서 부분 곱들의 압축지연시간을 최소화 하는 것이 전체

곱셈기의 성능을 향상시키는데 가장 큰 영향을 미친다. 따라서 부분 곱을

효율적으로 처리하여 CPA까지 전달하기 위하여 새로운 구조의 다중 입력

압축 단을 제안하였다. 여러 개의 부분 곱들을 한 번에 줄인다는 목표를 정

하게 되었다. 8개의 부분 곱을 3:2 Counter를 이용한 월레스 트리를 사용하

면 4단계의 과정이 필요하지만 8개의 부분 곱을 한 단계로써 연산을 가능하

게 하였다.

Booth algorithm을 사용하여 설계한 16비트 곱셈기의 부분 곱은 총 8개가

생긴다. 이 부분 곱들을 그림으로 표현하면 아래와 같다. 기존의 7:3

Counter를 사용했을 경우의 그림과 비교해 보면 8개의 부분 곱을 최종

Sum, Carry 벡터로 압축하는 과정이 2번으로 나타나는 반면에 7:3

Counter를 사용했을 경우는 2번의 과정이 지나도 Sum, Carry 벡터로 나오

지 않고 한 번의 압축과정이 더 필요하게 된다는 것을 알 수가 있다.

그림 3.10 역시 16번째 carry로 인해 3번의 압축 과정이 필요하다는 것으

로 볼 수 있지만, 제안된 3:2 Counter와 Carry Select Adder로의 사용으로

마지막 단에 생기는 carry의 연산 방법은 뒷장에서 설명하겠다.

Page 33: 다중 입력 압축 단을 사용한 고속의 16X16 비트 곱셈기 …J ¡ 본 논문에서는 고속 곱셈기 설계를 위해서 부분 곱을 줄여주는 Booth 알고리즘을

- 24 -

그림 3.10 8:3 Compressor를 사용하여 부분 곱을 압축하는 과정

Page 34: 다중 입력 압축 단을 사용한 고속의 16X16 비트 곱셈기 …J ¡ 본 논문에서는 고속 곱셈기 설계를 위해서 부분 곱을 줄여주는 Booth 알고리즘을

- 25 -

그림 3.11 7:3 Counter를 사용하여 부분 곱을 압축하는 과정

여러 가지 부분 곱 압축단의 대부분의 경우는 높은 차수의 Compressor들

은 그보다 낮은 차수의 Compressor로 구성을 하게 된다. [4],[10] 3.2.3

장에서 정의했던 fast in, fast out 의 이론을 적용하여 높은 차수의

Compressor를 사용해서 나오는 빠른 결과는 그것을 구성하는 낮은 차수

Compressor들의 입력과 출력 delay를 효율적으로 연결한 것으로 볼 수 있

다. 본 논문에서도 이 알고리즘을 바탕으로 곱셈기를 구현하였다. 우선 본

Page 35: 다중 입력 압축 단을 사용한 고속의 16X16 비트 곱셈기 …J ¡ 본 논문에서는 고속 곱셈기 설계를 위해서 부분 곱을 줄여주는 Booth 알고리즘을

- 26 -

논문에 쓰인 그림 3.14의 8:3 Compressor를 살펴보면 높은 차수의 7:3

Counter와 낮은 차수의 3:2 Counter가 들어가 있는 것을 알 수 있다. 기존

논문의 7:3 Counter를 아래에 도시하였다.

그림 3.12 7:3 Counter의 회로도

기존의 7:3 Counter의 회로를 시뮬레이션 한 결과는 아래 그림에 나타나

있다.

Page 36: 다중 입력 압축 단을 사용한 고속의 16X16 비트 곱셈기 …J ¡ 본 논문에서는 고속 곱셈기 설계를 위해서 부분 곱을 줄여주는 Booth 알고리즘을

- 27 -

그림 3.13 7:3 Counter의 시뮬레이션 결과

Page 37: 다중 입력 압축 단을 사용한 고속의 16X16 비트 곱셈기 …J ¡ 본 논문에서는 고속 곱셈기 설계를 위해서 부분 곱을 줄여주는 Booth 알고리즘을

- 28 -

그림 3.14 4:2 구조를 사용한 8:3 Compressor

그림 2.3에서 보여진 것처럼 4:2 Compressor 의 구조를 응용한 블록도이

다. 4:2 Compressor는 전단의 fast out인 Cout이 현재단의 Cin으로 들어오

기 때문에 carry 전달 누적시간이 생기지 않는다는 것을 이용한 것이다. 이

원리를 8:3 Compressor에 적용하게 되면, 7:3 Counter에서 다음 단으로

전달되는 Cout이 fast out이 되지 않는다. 그림 3.11의 실험 결과로 확인해

보면 7:3 Counter에서의 Cout인 C1은 최대 임계경로로써 다음 단으로 전달

되면 엄청난 지연시간 누적이 생길 뿐만 아니라 Fast in, out 의 이론을 적

용할 수도 없게 된다. 따라서 구조의 변경이 필요하게 되었다. 기존의 7:3

Counter 를 사용한다면 fast out인 carry 2 경로를 이용하여 추가적인 연산

을 해야 한다. 그러나 MSB인 carry 2 는 제시된 이론에서 구조적인 면에서

이득을 억지 못하므로 Sum의 경로를 fast out으로 만들어야겠다는 생각을

하였다. 다음 장의 그림 3.15는 제안한 8:3 구조의 블록 다이아그램이다.

Page 38: 다중 입력 압축 단을 사용한 고속의 16X16 비트 곱셈기 …J ¡ 본 논문에서는 고속 곱셈기 설계를 위해서 부분 곱을 줄여주는 Booth 알고리즘을

- 29 -

그림 3.15 제안된 8:3 Compressor의 블록도

본 논문에서 제안한 8:3 Compressor는 fast out인 Sum의 경로에 또 다른

부분 곱을 연산하는 것이다. 그러나 제안된 구조 역시 4:2 Compressor를

사용한 8:3 Compressor처럼 여러 개가 연결되면 carry의 전달 시간 누적이

예상된다. 8:3Compressor를 사용하게 되면 제안된 곱셈기의 부분 곱을 줄

이는 과정에 있어 Cout이 나와 다음단의 Cin으로 들어가야 하는 경우가 연속

적으로 생기게 되므로 전달되는 carry로 인해 원래의 부분 곱이 7개가 있는

17,18번째 비트까지 지연될 수가 있다. 그래서 고안한 것이 8:3의 구조를 2

개만 사용을 하게 되면, 그림에서 표시된 15,16번째 비트만을 고려해주면

된다. 16번째 비트에서 생긴 carry의 처리는 뒤에서 자세히 설명하였으므

로 이 장에서는 고려하지 않는다. fast out인 Sum 값이 나온 시간부터

Cn+1, Cn+2의 결과가 나오는 동안에 전단의 Cout의 0과 1, 모든 경우를 미리

계산을 한 후에 선택을 함으로써 carry 지연 시간을 피할 수 있게 하였다.

Page 39: 다중 입력 압축 단을 사용한 고속의 16X16 비트 곱셈기 …J ¡ 본 논문에서는 고속 곱셈기 설계를 위해서 부분 곱을 줄여주는 Booth 알고리즘을

- 30 -

그림 3.16 15,16 번째 비트에 쓰인 8:3 Compressor 블록도

그림은 제안된 8:3 구조가 쓰인 15,16번째 비트에 쓰인 블록도이다. 오른

쪽의 15번째 비트는 전단에서 발생하는 carry가 없기 때문에 3:2 Counter

대신 Half Adder를 사용하였다. 15번째 비트의 HA에서 Cout이 나오는 동안

에 제안된 3:2 Counter에서는 입력 A,B가 연산된다. Cin이 0인 경우와 1인

경우를 동시에 모두 출력한 상태에서 Cin의 값에 따라 Sum, Carry의 최종

출력을 하게 된다.

그림 3.17 제안된 3:2 Counter의 회로

Page 40: 다중 입력 압축 단을 사용한 고속의 16X16 비트 곱셈기 …J ¡ 본 논문에서는 고속 곱셈기 설계를 위해서 부분 곱을 줄여주는 Booth 알고리즘을

- 31 -

간단한 3:2 Counter는 일반적인 게이트에 비해 2배 정도의 Delay를 갖는

XOR 게이트를 통과하기 때문에 Critical path는 Sum의 경로가 된다. 다시

말해 Fast output은 Carry의 경로가 되는 것이다. 그러나 그림3.11의 결과

파형을 분석해 보면 참고문헌의 7:3 Counter의 최대 임계경로가 Cn+1이

고, fast output은 Cn+2로 나타난 것을 알 수가 있다. 이것은 fast input,

fast output의 이론을 적용하기에 부적합한 결과이다. Sum 값을 fast

out으로 만듦으로써 Cn+1, Cn+2이 연산되는 과정동안 fast output인 sum

과 또 다른 부분 곱을 처리할 수 있게 하기 위하여 기존의 7:3 Counter

를 개선하게 되었다.

그림 3.18 개선된 7:3 Counter의 회로도

Page 41: 다중 입력 압축 단을 사용한 고속의 16X16 비트 곱셈기 …J ¡ 본 논문에서는 고속 곱셈기 설계를 위해서 부분 곱을 줄여주는 Booth 알고리즘을

- 32 -

그림 3.19 A-O-I 로직 구현 (세부그림 1,2)

그림 3.20 Transmission XOR 게이트

Sum의 경로를 fast output으로 만들기 위하여 Transmission 게이트를

이용한 XOR 게이트를 사용하였다. 그리고 Cn+1, Cn+2 의 경로도

AOI(And-Or-Inverter)을 사용하여 최대한 줄일 수 있었다.[17]

Page 42: 다중 입력 압축 단을 사용한 고속의 16X16 비트 곱셈기 …J ¡ 본 논문에서는 고속 곱셈기 설계를 위해서 부분 곱을 줄여주는 Booth 알고리즘을

- 33 -

그림 3.21 개선된 7:3 Counter의 시뮬레이션 결과

그림 3.19는 개선된 7:3 Counter의 시뮬레이션 결과이며 이 결과를 바

탕으로 제안한 3:2 Counter를 모두 합쳐 16번째 비트의 부분 곱 8개를

연산하는데 소요되는 delay를 시뮬레이션 한 것이 그림 3.20이다. 개선

된 7:3 Counter에서 최대 임계경로였던 carry 2 부분이 연산되는 동안

전단의 Cin이 제안된 3:2 Counter를 통과하여 Cout이 나오는 것을 알

수가 있으며 그림 3.19에서 fast out 경로였던 Sum도 Carry 2의 출력보

다 짧은 delay를 갖게 되므로 제안한 이론에 적합하다는 것을 알 수 있

다. 이에 관련해 제안된 8:3 압축 단은 7:3 카운터에 비해 Critical Path의

지연 없이 하나의 부분 곱을 추가로 연산할 수 있게 되면서 부분 곱 압축 단

에서 10%이상의 성능이 향상되었다.

Page 43: 다중 입력 압축 단을 사용한 고속의 16X16 비트 곱셈기 …J ¡ 본 논문에서는 고속 곱셈기 설계를 위해서 부분 곱을 줄여주는 Booth 알고리즘을

- 34 -

그림 3.22 8:3 Compressor 의 시뮬레이션 결과

규칙적인 곱셈기 설계를 위해 Wallace 의 구조를 이용한 4:2

Compressor가 널리 사용되고 있다. 4:2 Compressor 역시 3:2 Counter를

기본으로 하고 있기 때문에 데이터 전송의 복잡성과 각 연결선에 생기는 로

드 캐패시턴스의 문제점도 고려해야 할 사항이다. 보다 높은 부분 곱 압축

단을 사용함으로써 wire complexity를 줄임으로써 간단하게 레이아웃을 할

수 있을 것이라는 것이 예상되고, 8개의 부분 곱을 한 번에 처리함으로써

2n 곱셈기 설계 시 비트 확장에도 용이하게 된다.

Page 44: 다중 입력 압축 단을 사용한 고속의 16X16 비트 곱셈기 …J ¡ 본 논문에서는 고속 곱셈기 설계를 위해서 부분 곱을 줄여주는 Booth 알고리즘을

- 35 -

3.3 출력단

마지막단의 Carry propagation Adder 부분은 최적화된 carry select

adder를 사용하였다. 제안한 다중 입력 압축 단을 거쳐 최종적으로 생긴

Carry 벡터와 Sum 벡터는 간단한 플립플롭에 저장해 두었다가 최종적으로

원하는 결과 값이 출력 버퍼를 통해 나오게 된다.

3.3.1 Square Root Carry Select Adder

다중 입력 압축 단을 거쳐서 나온 Carry 벡터와 Sum 벡터는 그림

3.14의 자리 올림 선택 가산기(Carry Select Adder) 구조는 Carry가 있

는 경우, 즉 1인 경우와 없는 경우, 0인 경우를 미리 계산한 다음 선택

을 함으로써 회로를 최소화 할 수 있고 연산을 빠르게 처리할 수 있다.

LSB가 포함된 캐리 체인 가산기에서는 입력 A[3:0], B[3:0]의 각각 4

비트가 들어오고 Cin은 처음엔 Carry가 발생하지 않으므로 0과 1의 선택

없이 Carry가 없는 경우만이 들어온다. 그러므로 Carry의 출력도 Carry

가 없는 경우만 고려한 Carry 벡터와 Sum 벡터의 합, 즉 S0만이 캐리

체인 가산기의 결과 출력이 된다. 그림에서 보면 캐리 체인 가산기의 출

력에는 MUX가 있다. 이 MUX들은 Carry가 1인 경우의 최종의 Sum(S1)

과 Carry가 0인 경우의 최종의 Sum(S0)을 미리 계산한 다음 선택을 하

는 역할을 한다. 이렇게 Carry가 있는 경우와 Carry가 없는 경우를 미리

계산한 다음에 선택하면 전달의 지연 시간을 줄일 수 있다. 그림 3.23은

Page 45: 다중 입력 압축 단을 사용한 고속의 16X16 비트 곱셈기 …J ¡ 본 논문에서는 고속 곱셈기 설계를 위해서 부분 곱을 줄여주는 Booth 알고리즘을

- 36 -

그림 3.23 LSB-15비트까지의 Carry Select Adder 블록도

다중 입력 압축 단에서 나온 16번째 비트의 Carry가 나오기 전까지의

Carry 벡터와 Sum 벡터를 더하는 자리 올림 선택 가산기의 내부구조를

보여주고 있다.

LSB부터 4비트까지는 Carry 벡터가 없으므로 곧바로 Sum이 출력된

다. 그 이후에 16번째 비트의 Carry가 먼저 나오는 부분을 경계로 하여

16번째 비트 이전의 12개의 Carry Select Adder의 지연시간을 최소화

하기 위하여 일반적인 Carry Select Adder가 아닌 Square Root Carry

Select Adder를 사용하였다. 그림 3.24,25는 일반적인 Carry Select

Adder와 Root square Carry Select Adder의 최대 임계경로(Tadd)를 비

교하였다. 따라서 12 비트는 4,4,4 비트로 나누지 않고, MSB로 진행되

는 쪽으로 3,4,5 비트로 순차적으로 크기를 키움으로써 최대 지연 시간

을 최소화하였다. 또한 MSB쪽의 Carry Select Adder 역시 2,3,4,5로 순

차적으로 크기를 늘려 최적화된 값을 얻을 수 있었다.

Page 46: 다중 입력 압축 단을 사용한 고속의 16X16 비트 곱셈기 …J ¡ 본 논문에서는 고속 곱셈기 설계를 위해서 부분 곱을 줄여주는 Booth 알고리즘을

- 37 -

그림 3.24 Carry Select Adder의 최대 임계경로

summuxcarrysetupadd t tN/B tB t T +++=

그림 3.25 Square Root Carry Select Adder의 최대 임계경로

summuxcarrysetupadd tNt t2 t T +++=

Page 47: 다중 입력 압축 단을 사용한 고속의 16X16 비트 곱셈기 …J ¡ 본 논문에서는 고속 곱셈기 설계를 위해서 부분 곱을 줄여주는 Booth 알고리즘을

- 38 -

자리 올림 선택 가산기에서 Carry 벡터와 Sum 벡터를 받아서 두 번

째 단에서 덧셈을 수행하는데 있어 면적을 최소화 하고 속도도 늦추지

않도록 하기 위하여 실리콘 밸리(Silicon Valley)의 엔지니어들이 많이 사

용하는 Carry Chain Adder 블록을 이용하였다. 자리 올림 선택 가산기

에서 사용이 되는 가산기는 Carry Look Ahead Adder도 사용이 가능하

나 본 논문에서는 Carry Chain Adder를 사용하였다. 이것을 사용함으로

써 회로를 간단히 하고 면적을 최소화 할 수 있고 연산의 속도도 빠르게

할 수 있다.[7]

3.3.2 16번째 비트의 Carry에 관한 연산

그림 3.26 16-MSB까지의 Carry Select Adder 블록도

그림 3.24에는 Carry Select Adder에서의 부분 곱 압축과정에서 고려

하지 않았던 16번째 비트의 Carry를 위하여 하나의 블록을 제안하였다.

미리 Carry 가 있는 경우와 없는 경우를 모두 계산하여 선택하는 Carry

Page 48: 다중 입력 압축 단을 사용한 고속의 16X16 비트 곱셈기 …J ¡ 본 논문에서는 고속 곱셈기 설계를 위해서 부분 곱을 줄여주는 Booth 알고리즘을

- 39 -

Select Adder 부분에서 16번째 비트의 Carry와 14비트의 입력으로 들어

가는 Carry의 유무 조건과 연산을 하여 나타내는 것이다. 즉, 그림 3.10

의 8개의 부분 곱을 압축하는 과정에서 마지막에 발생하는 16번째 비트

의 Carry는 두 번째 단계에서 세 번째 단계로 연산하는 동시에 제안된

블록에서 연산을 마쳐 Carry가 있는 조건 1, Carry가 없는 조건 0을 만

들어내는 것이다. 결국 16번째 비트에서 Carry가 발생 하더라도 전단의

Carry Chain Adder의 0,1의 입력으로 들어가는 것과 같게 되므로 전체

곱셈기의 지연시간에 영향을 미치지 않게 된다.

그림 3.27 Carry Select Adder에서의 제안된 블록도

표 5에서 보는 바와 같이 16번째 비트의 carry가 없는 경우에 In이 0,1

이 들어가게 되면 0을 출력해야 하는 A는 XOR의 논리를, 1을 출력해야

Page 49: 다중 입력 압축 단을 사용한 고속의 16X16 비트 곱셈기 …J ¡ 본 논문에서는 고속 곱셈기 설계를 위해서 부분 곱을 줄여주는 Booth 알고리즘을

- 40 -

하는 B는 XNOR의 논리를 적용시키면 어떠한 경우라도 Carry Chain

Adder의 입력으로 들어가는 0과 1을 동시에 만들어 낼 수 있다. 그리고

C는 16비트의 carry가 없을 경우는 고려하지 않아도 된다. 반면에 16번

째 비트의 carry가 있는 경우는 A, B의 논리는 변함없지만 C의 경우는

모두가 1일 경우에만 다음단의 제안된 블록으로 들어가게 된다. 또한 마

찬가지 메카니즘을 통해 마지막 블록에서 16비트의 carry와 1의 경우가

선택되고 Sum, Carry 벡터 또한 모두 1이 들어오게 되면 MSB의 31번

째 비트는 HA를 통해 최종 값을 얻게 된다.

표 5. 제안된 블록(그림 3.27)의 진리표

16번째 carry In A B C

0 0 1 0 0

0 1 0 1 0

1 0 0 1 0

1 1 1 0 1

3.3.3 Carry Chain Adder

아래 그림은 흔히 쓰이는 8비트 캐리 체인 가산기를 나타낸 것이다.

Carry가 1인 경우(Cin=1)와 Carry가 0인 경우(Cin=0)가 왼쪽에서 들어오

고 각각의 경우의 Sum인 S1과 S0이 출력으로 나온다. 또한 A, B의 입

력이 NOR, NAND, XOR의 결과로 나온다. 본 논문의 구조에서는 이 결

과를 사용하지 않았지만 ALU의 구조에서 이 구조를 채택을 하면 저절로

NOR, NAND, XOR의 결과가 발생하므로 회로 확장에 유리하다.[12]

Page 50: 다중 입력 압축 단을 사용한 고속의 16X16 비트 곱셈기 …J ¡ 본 논문에서는 고속 곱셈기 설계를 위해서 부분 곱을 줄여주는 Booth 알고리즘을

- 41 -

그림 3.28 Carry Chain Adder의 블록도

Page 51: 다중 입력 압축 단을 사용한 고속의 16X16 비트 곱셈기 …J ¡ 본 논문에서는 고속 곱셈기 설계를 위해서 부분 곱을 줄여주는 Booth 알고리즘을

- 42 -

3.4 Layout

집적 소자의 크기가 작아짐에 따라 Metal의 폭도 작아지고 있으며 서브

마이크론(1<um) VLSI 회로에서는 Metal의 분포저항과 커패시턴스에 의

한 지연(RC delay)이 성능 저하 요인이 된다. 또한 Metal line 사이의

간격이 감소함에 따라 전기장의 상호 신호 간섭에 의한 신호의 누화

(crosstalk)도 해결해야 할 문제점으로 등장하고 있다. 이러한 문제점에

대한 해결 방안을 제시하는 CAD 프로그램의 사용이 요구되고 있다.

본 논문의 schematic 작업은 CADENCE 사의 Composer tool을 사용

하였고, 레이아웃의 작업은 같은 회사의 Virtuoso editor를 사용하였다.

레이아웃은 먼저 전체 회로에 쓰이는 전가산기(full adder), 반가산기

(half adder), Booth 인코더, Booth 셀렉터, 7:3 카운터 등의 기본 셀의

구조를 Schematic tool로 회로도를 구성한 후 이에 대한 HSPICE 시뮬

레이션을 통하여 최적의 지연 시간과 최소의 면적이 예상되는 회로를 얻

어내어 각 트랜지스터의 Size를 결정하였으며 레이아웃을 한 후에는 각

블록들을 적절히 배치하려 최대 지연시간이 최소화되도록 하였다. 대부

분의 셀은 VDD, VSS를 공유하도록 설계를 하였고, 기본 셀의 구조도

대부분 Diffusion을 공유하도록 함으로써 면적을 줄일 수 있었다. 각 블

록의 레이아웃이 끝나면 블록의 배치와 배선을 한다. 블록의 배치와 배

선은 CAD 소프트웨어에 힘입어 상당 부분 자동화가 되어있으나 아직도

많은 경우에서, 특히 성능과 면적이 중요할 경우, 설계자가 소프트웨어

와 대화하면서 사용하는(interactive) 것이 일반적이며 경우에 따라서는

Page 52: 다중 입력 압축 단을 사용한 고속의 16X16 비트 곱셈기 …J ¡ 본 논문에서는 고속 곱셈기 설계를 위해서 부분 곱을 줄여주는 Booth 알고리즘을

- 43 -

수작업에 의존하고 있다. 초기 배치와는 달리 이미 블록의 모양이 결정

되어 있으므로 블록의 위치를 결정하고 블록 사이를 연결할 배선 영역의

면적을 결정하는 것이 중요하다. 블록의 위치뿐만 아니라 대부분의 셀

들은 VDD, VSS를 공유하도록 설계를 하였기에 좌우회전, 상하 반전을

통하여 보다 우수한 배치를 얻을 수 있었다. 블록의 크기가 비슷하면 두

블록을 서로 바꾸어 볼 수 있으므로 설계 초기부터 각각의 블록과 VDD,

VSS 와의 거리를 중요시 하였다. 블록의 배치가 끝나면 블록 사이의 신

호선의 연결을 한다. 셀 사이의 연결 또는 블록 사이의 연결에는 주로

금속 배선이 사용된다. 폴리 층과 n+ 또는 p+ 확산 층은 커패시턴스와

저항 값이 커서 신호의 전달에 큰 지연시간이 필요하므로 셀 내부의 짧

은 연결에만 사용된다. 전원과 접지선을 배선할 때는 각 블록의 소모 전

류에 의해 전원 선에 지나친 전압강하가 나타나지 않도록 충분한 폭을

확보하는 것이 중요하다. 만약 가는 선에 지나치게 많은 전류가 흐르게

되면 배선 금속 막 중의 전류 밀도의 증대, 칩(chip)당 소비 전력에 의

한 디바이스 온도의 상승에 의해 캐리어에서 전극 구성 원자로 금속 막

주의 물질 이동이 일어나서 단선에 의한 신회성의 저하의 원인이 되는

엘렉트로 마이그레이션(electromigration)현상 등에 의하여 선이 끊어질

수도 있으므로 충분한 폭을 할당하여야 한다. 금속 배선 층 사이를 연결

하는데 사용이 되는 비아(via)를 사용하지 않는 것이 바람직하다. 확산

층과 금속사이의 컨택(contact)은 저항이 크고 전류가 주변으로 몰리는

현상에 의하여 끊어지는 현상이 발생할 수 있으므로 큰 전류가 흐르는

경우 여러 개를 뚫어주는 것이 바람직하다. 일반 신호선의 배선은 신호

의 중요도에 따라 실시하였다. 타이밍 상 중요한 신호를 먼저 연결하여

Page 53: 다중 입력 압축 단을 사용한 고속의 16X16 비트 곱셈기 …J ¡ 본 논문에서는 고속 곱셈기 설계를 위해서 부분 곱을 줄여주는 Booth 알고리즘을

- 44 -

표 6. 회로의 지연시간 결과 비교

proposed Goto[3] Kim[4] Park[5]

Process0.35um

CMOS

0.25um

CMOS

0.35um

CMOS

0.35um

CMOS

Precision 16x16 54x54 16x16 17x17

Supply

Voltage [v]3.3 2.5 3.3 3.3

Multiplication

Time [ns]2.9 4.1 4.8 3.0

짧은 배선이 가능하도록 하였고, 중요하지 않은 신호는 조금 긴 경로를

이용하더라도 나중에 연결하도록 하였다. 배치 단계부터 배선을 고려해

야 쉽고 효과적인 배선을 할 수 있다.

3.5 모의실험 결과

본 논문에서 설계한 16비트의 고속 곱셈기의 설계는 전자회로 시뮬레

이션 도구인 HSPICE를 이용하여 하이닉스 0.35um CMOS p-sub 공정

의 모델 파라미터를 사용하여 공급전원 3.3V하에서 모의실험을 수행하

였다.

모의실험은 HSPICE를 이용하여 지연시간을 측정하였다. 하이닉스

0.35um 공정을 이용하였고, 온도는25°C, 표준공정, 공급 전압은 3.3V, 입

력 신호의 상승 및 하강 지연 시간은 0.1ns로 하였다.

Page 54: 다중 입력 압축 단을 사용한 고속의 16X16 비트 곱셈기 …J ¡ 본 논문에서는 고속 곱셈기 설계를 위해서 부분 곱을 줄여주는 Booth 알고리즘을

- 45 -

설계한 곱셈기의 성능을 비교하기 위해서는 공정 변수, 곱셈의 비트수 등

을 고려하여 이러한 조건들이 같은 것을 비교해야 한다. 본 논문에서 설계

한 곱셈기는 16x16곱셈기로 17x17을 설계한 Park[5] 의 논문과 비교했을

경우 1비트의 차이가 적지만 약간의 성능 향상을 보였다고 말할 수 있으며

비트수의 확장을 했을 경우 2의 N승으로 확장이 가능한 장점을 갖고 있다.

공정과 비트수의 차이가 나겠지만 Goto[3]의 논문과 대략 비교를 한다면 8

개의 부분 곱을 압축하는데 있어 발생한 지연시간이 실험에 의해 0.62ns였

으므로 54비트의 확장 시 0.62x5=3.1ns와 3:2 CSA의 지연시간(0.25ns)과

CPA를 2배로 계산하여 생각해보면 총 지연시간은 약 4.6ns정도로 예상할

수 있지만 비트수가 확장되면서 생기는 여러 가지 입력 변수와 공정 차이로

인한 정확한 지연시간 비교는 어렵다고 볼 수 있다.

같은 공정과 비트수를 갖는 Kim[4] 의 논문과 비교하였을 경우 속도 측면에

서 월등히 앞선다는 것을 알 수 있다.

Page 55: 다중 입력 압축 단을 사용한 고속의 16X16 비트 곱셈기 …J ¡ 본 논문에서는 고속 곱셈기 설계를 위해서 부분 곱을 줄여주는 Booth 알고리즘을

- 46 -

그림 3.29 최대 임계경로의 지연시간 시뮬레이션 결과

Page 56: 다중 입력 압축 단을 사용한 고속의 16X16 비트 곱셈기 …J ¡ 본 논문에서는 고속 곱셈기 설계를 위해서 부분 곱을 줄여주는 Booth 알고리즘을

- 47 -

제 4 장. 결론

본 논문은 새로운 압축 단을 이용한 고속 곱셈기 설계를 하였다. Booth

알고리즘을 이용하여 부분 곱을 줄였으며 고성능의 NMOS Pass Transistor

의 Booth Selector를 사용함으로써 전체 곱셈기의 성능을 향상시켰다. 또

한, 새로운 구조의 다중 입력 압축 단을 제안함으로써 다중 입력 Counter를

사용한 기존의 논문에 비해 추가적인 회로 없이 속도 향상을 할 수 있었다.

Wallace의 구조를 이용한 또 다른 논문과 비교했을 경우에도 약간의 지연

시간을 줄이면서 규칙적인 곱셈기 설계를 가능하게 함으로써 면적 이득을

얻을 수 있었다.

Hynix 0.35um CMOS 공정파라미터를 이용하여 공급전압 3.3V로 모의실

험을 하였고, 트랜지션이 모두 일어나는 부분의 net 번호를 정하여 최대 임

계경로를 측정한 결과 2.9ns의 속도를 얻을 수 있었다.

Page 57: 다중 입력 압축 단을 사용한 고속의 16X16 비트 곱셈기 …J ¡ 본 논문에서는 고속 곱셈기 설계를 위해서 부분 곱을 줄여주는 Booth 알고리즘을

- 48 -

참고문헌

[1] Moises E. Robinson, Earl Swartzlander, Jr. "A Reduction

Scheme to Optimize the Wallace Multiplier" IEEE, 1998, pp.

122-127

[2] Wallace, C.S., "A Suggestion for a Fast Multiplier" IEEE Trans.

Electron. Computer., vol 13, 1964, pp.14-17

[3] G. Goto, A. Inoue, "A 4.1-ns Compact 54 x 54-b Multiplier

Utilizing Sign-Select Booth Encoders" JSCC, 1997,

pp.1676-1682

[4] JungUg Kim, "210MHz 16x16 High-performance Multiplier

Soft Core" ITC. 2003, pp.278-281

[5] JongHwanPark, Yongsurk Lee, "17x17-b Multiplier for 32-bit

RISC/DSP Process" IEEK.1999, pp.362-368

[6] Vojin G. Oklobdzija, David Villeger, "Improving Multiplier

Design By Using Improved Column Compression Tree and

Optimized Final Adder in CMOS Technology" IEEE, 1995,

pp.292-301

[7] Yong Surk Lee "A 4 clock Cycle 64 x 64 Multiplier with 60 Mhz

Clock Frequency" KITE VOL.2.NO.2, 1991, pp.61-67

[8] Bong-Il Park, In-Cheol Park, and Chong-Min Kyung “A

Regular Layout Structured Multiplier Based on Weighted

Carry-Save Adders”, IEEE 1998, pp.128-135

Page 58: 다중 입력 압축 단을 사용한 고속의 16X16 비트 곱셈기 …J ¡ 본 논문에서는 고속 곱셈기 설계를 위해서 부분 곱을 줄여주는 Booth 알고리즘을

- 49 -

[9] Debabrata Ghosh, S.K Nandy "Design and realization of

high-performance wave-pipelined 8×8 b multiplier in CMOS

technology" IEEE Transaction VLSI system, 1995, pp 21-27

[10] MARK R. SANTORO "SPIM: A Pipelined 64 X 64-bit Iterative

Multiplier" JSCC, 1989, pp.487-493

[11] Norio Ohkubo, Makoto Suzuki, Toshinnobu Shinbo, Toshiaki

Yamanaka, Akihiro Shimizu, Katsuro Sasaki, Yoshinobu

Nakagome "A 4.4 ns CMOS 54×54-b multiplier using

pass-transistor multiplexer" JSCC, 1995

[12] 이용석 “고성능 마이크로프로세서 곱셈기 구조”, 비디오 강좌

시리즈, 1998

[13] Zhonggde Wang, Graham A. Jullien, William C. Miller "A New

Design Technique for Column Compression Multipliers",

IEEE Trans. on computers, 1995, pp.291-301

[14] 강진구, 서동신, 박도순, 윤병우, 전흥우, Fundamentals of

Digital Logic with VHDL Design, 교보문고, 2001

[15] Israel Koren, Computer Arithmetic Algorithms,

Prentice-Hall, New Jersey, 1993

[16] R. Jacob Baker, Harry W.Li, David E.boyce, CMOS circuit

design, layout, and simulation, IEEE PRESS, 1997

[17] Neil H.E.Weste, KAMRAN Eshraghian, Principles of CMOS

VLSI Design, ADDISON WESLEY, 1993