1. 서론
컴퓨터 산술 연산은 많은 디지털 신호 처리(Digital Signal Processing: DSP) 응용에서 광범위하게 사용된다. 산술 연산 중 곱셈은 덧셈 또는 뺄셈보다 복잡하므로 곱셈의 처리시간이 주로 DSP 응용 시스템의 동작 속도를 결정한다. 따라서, 곱셈기의 성능을 높이기 위한 다양한 연구가 진행되었다[1]-[3].
2의 보수를 사용하는 시스템에서 곱셈기는 Baugh-Wooly 곱셈기와 Booth 인코딩 알고리즘을 사용한 곱셈기가 주로 사용된다[4]-[9]. Booth 인코딩 알고리즘은 Baugh-Wooly 곱셈기 보다 부분곱의 수가 반으로 줄어 고속 곱셈기 구현에 많이 사용된다[10].
Booth 인코딩 알고리즘은 radix-4 인코딩과 radix-8 인코딩으로 구분할 수 있다. Radix-8 Booth 인코딩은 radix-4 Booth 인코딩 보다 더 적은 부분곱을 생성하므로 부분곱을 누적하는 데 더 적은 덧셈기가 필요하다. Radix-8 Booth 인코딩은 하드웨어적 효율적이지만, 피승수의 홀수배 연산에 소요되는 추가 시간 때문에 거의 사용되지 않는다[1].
Radix-4 Booth 곱셈기에서 부분곱은 시프트 또는 2의 보수화를 통해 쉽게 생성할 수 있다[7-8]. 2의 보수화는 각 비트를 반전시킨 후 부분곱 누적 단계에서 최하위 비트에 ‘1’을 더해 구현한다. 그러나, radix-8 Booth 곱셈기에서 부분곱을 생성하기 위해 피승수 A의 홀수배(즉, 3A)가 필요하므로 이를 계산해야 한다. 3A는 곱셈기를 사용하지 않고 A+2A처럼 시프트와 덧셈을 이용하여 효율적으로 계산할 수 있다. Radix-4 Booth 곱셈기와 비교하여 radix-8 Booth 곱셈기는 부분곱을 생성하기 위해 추가적인 덧셈이 필요하며, 이 덧셈은 추가적인 지연과 전력소모를 발생시킨다. 본 논문에서는 이 덧셈을 예비 덧셈(3A)이라고 정의한다. 예비 덧셈기(3A)는 radix-4 Booth 곱셈기와 비교하여 radix-8 Booth 곱셈기의 지연시간을 10-20% 증가시켜 radix-8 Booth 곱셈기의 사용을 제한한다[1].
일반적으로 예비 덧셈은 리플 캐리 덧셈기(Ripple Carry Adder: RCA)와 캐리 예측 덧셈기(Carry Look-ahead Adder: CLA)를 사용하여 구현할 수 있다[11]. RCA는 전가산기(full adder)를 직렬로 연결한 구조로 단순하지만, 전가산기의 자리올림 즉, 캐리 출력이 다음 전가산기의 캐리 입력으로 전파되므로 캐리가 리플처럼 전달되어 속도가 느리다. CLA는 각 자리에서 자체적으로 캐리가 발생하는지, 이전 자리에서 전달된 캐리에 의해 캐리가 발생하는지를 미리 계산하여 각 자리의 캐리를 병렬적으로 예측하고 생성한다. 이 덧셈기는 캐리의 전파지연을 감소시켜 속도가 빠르나, 캐리 예측을 위한 하드웨어가 많이 필요하며 전력소모도 크다. 속도가 중요한 고성능 연산에서는 CLA를 사용하며, 그렇지 않은 연산에는 RCA를 사용한다.
고속 곱셈기를 구현하기 위해서는 예비 덧셈기(3A)에 CLA를 사용해야 하나, 하드웨어가 많이 소요된다. 일반적인 덧셈기의 입력과 달리 A+2A에서는 동일 비트가 이웃 상위비트 또는 하위비트와 중복되어 나타난다. 이를 이용하여 본 논문에서는 피승수의 홀수배(3A), 즉 예비 덧셈을 하드웨어를 적게 사용하면서도 CLA 보다 고속으로 계산할 수 있는 예비 덧셈기의 설계 방법을 제안하여 radix-8 Booth 곱셈기의 활용도를 높여 5G 통신, 인공지능 등 고속 처리가 요구되는 DSP 응용 시스템의 구현에 기여한다.
2. Radix-8 Booth 곱셈기와 예비 덧셈기
2의 보수로 표현되는 n 비트의 피승수 A와 승수 B의 곱셈을 고려하자.
\(\begin{align}A=-a_{n-1}2^{n-1}+\sum_{i=0}^{n-2}a_i2^i\end{align}\) (1)
\(\begin{align}B=-b_{n-1}2^{n-1}+\sum_{i=0}^{n-2}b_i2^i\end{align}\)
승수 B는 radix-8 Booth 인코딩에 의해 아래 식과 같이 표현할 수 있으며, 부분곱의 수를 1/3로 줄일 수 있다[9].
\(\begin{align}B=-\sum_{i=0}^{n/3-1}b'_i2^{3i}\end{align}\) (2)
여기서 b'i = -4b3i+2 + 2b3i+1 + b3i + b3i-1이며, b-1은 항상 0이다. b'i가 가질 수 있는 값은 0, ±1, ±2, ±3, ±4 이므로 피승수 A를 1배, 2배, 3배, 4배하고 부호에 따라 2의 보수를 취해 부분곱을 생성한다.
피승수 A의 짝수배(2A, 4A)는 시프트를 이용하여 쉽게 생성할 수 있으나, 홀수배(3A)는 시프트와 덧셈을 통해 계산해야 한다. 예를 들어, 피승수 A가 8 비트일 경우, 시프트와 덧셈은 Fig. 1과 같이 수행된다. 3A의 결과는 10 비트이며, 2의 보수 연산에서는 올바른 결과를 얻기 위해 부호확장을 고려해야 하므로 부호 비트(a7)가 확장된다. Fig. 1에서 3A를 계산하기 위해 3A의 최하위 비트(s0)는 a0와 같고, 3A의 부호 비트(s9)는 변하지 않으므로 A의 부호 비트(a7)가 된다. 따라서, 합신호 10 비트 중 중간 8 비트(s1~s8)만 덧셈기를 사용하여 구하면 된다.

그림 1. 시프트와 덧셈을 이용한 3배수기.
Fig. 1. Triple multiplier using shift-and-addition.
Fig. 1에서 합 신호를 고속으로 계산하기 위해서 CLA를 사용할 경우, CLA는 캐리 예측에 대한 상당히 큰 오버헤드를 가지므로 radix-8 Booth 인코딩을 사용하는 장점이 없어진다.
3. 고속 예비 덧셈기(3A) 설계
본 장에서는 예비 덧셈기(3A)를 RCA 보다 연산복잡도가 적으면서 CLA 보다 고속으로 계산할 수 있는 저면적 고속 예비 덧셈기 설계 방법을 제안한다
3.1 예비 덧셈기(3A)의 부호확장
Fig. 1에서 RCA를 사용할 경우, 합 신호는 다음과 같이 구할 수 있다.
si = ai ⊕ ai-1 ⊕ ci-1 (3)
ci = aiai-1 + aici-1 + ai-1ci-1
여기서, ‘⊕’와 ‘+’는 각각 XOR(exclusive-OR)와 OR 연산을 나타낸다. 또한, ci는 피승수 A의 (i-1)번째 비트에서 i번째 비트로 전파되는 캐리 신호이다.
Fig. 2는 예비 덧셈에서 부호확장을 나타낸다. 그림에서 n 번째 비트의 합 신호 sn은 다음과 같다.

그림 2. 부호확장의 단순화.
Fig. 2. Simplification of sign extension.
sn+2 = an-1 ⊕ an-1 ⊕ cn+1 = cn+1 (4)
따라서, n 비트의 예비 덧셈은 (n-1) 비트의 덧셈으로 감소시킬 수 있다.
3.2 예비 덧셈기(3A)의 캐리 예측
일반 덧셈과 달리 Fig. 1의 덧셈에서는 동일 비트가 이웃 상위비트 또는 하위비트와 중복되어 나타난다.
Fig. 3은 3A를 계산하기 위한 덧셈에서 동일 비트가 중복되는 것을 나타내며, ci는 A의 (i-1)번째 비트에서 i번째 비트로 전파되는 캐리 신호이다. 동일 비트의 중복을 사용하여 캐리 신호를 효율적으로 계산하기 위해 ai = 0일 때 생성되는 캐리 신호 ci0와 ai = 1일 때 생성되는 캐리 신호 ci1로 구분하면 다음과 같이 표현할 수 있다.

그림 3. 3A에서 동일 비트의 중복.
Fig. 3. Duplication of same bit in 3A.
\(\begin{align}c_i=\overline{a_i}c_i^0 + a_ic_i^1\end{align}\) (5)
그리고, ci0과 ci1은 다음과 같이 표현할 수 있다.
ci0 = ai-1ci-1, ci1 = ai-1 + ci-1 (6)
합 신호 si는 식 (5)와 (6)을 이용하면 다음과 같이 표현할 수 있다.
\(\begin{align} \begin{array}{l}s_{i+1}=a_{i+1}{\oplus}a_i{\oplus}c_i\\=a_{i+1}{\oplus}[\overline{a_i}c_i+a_i\overline{c_i}]\\=a_{i+1}{\oplus}[\overline{a_i}(\overline{a_i}c_i^0+a_ic_i^1)+a_i(\overline{\overline{a_i}c_i^0+a_ic_i^1})]\\=a_{i+1}{\oplus}[\overline{a_i}c_i^0+a_i\overline{c_i^1}]\end{array}\end{align}\) (7)
식 (5)과 (6)을 이용하면 ai+1 = 0일 때 생성되는 캐리 신호 ci+10과 ai+1 = 1일 때 생성되는 캐리 신호 ci+11을 다음과 같이 표현할 수 있다.
\(\begin{align}c_{i+1}^0=a_ic_i=a_i[\overline{a_i}c_i^0+a_ic_i^1]=a_ic_i^1\end{align}\)
\(\begin{align}c_{i+1}^1=a_i+c_i=a_i+[\overline{a_i}c_i^0+a_ic_i^1]=a_i+c\end{align}\) (8)
따라서, (i+1)번째 비트로 전파되는 캐리 신호 ci+1은 다음과 같이 표현할 수 있다.
\(\begin{align}c_{i+1}=\overline{a_{i+1}}c_{i+1}^0+a_{i+1}c_{i+1}^1\\=\overline{a_{i+1}}a_ic_i^1+a_{i+1}(a_i+c_i^0)\end{align}\) (9)
식 (8)과 (9)를 이용하면 합 신호 si+2는 다음과 같이 표현할 수 있다.
\(\begin{align}s_{i+2}=a_{i+2}{\oplus}[\overline{a_{i+1}}c_{i+1}^0+a_{i+1}\overline{c_{i+1}^1}] \\=a_{i+2}{\oplus}[\overline{a_{i+1}}a_ic_i^1+a_{i+1}(\overline{a_i+c_i^0})]\end{align}\) (10)
식 (5)와 (9)처럼 캐리 신호 ci를 ci0과 ci1로 구분하면 캐리 신호를 계산하는데 소요되는 지연시간은 비트 크기가 증가할수록 1개의 AND 또는 1개의 OR 게이트의 지연만큼 증가한다. 또한, 식 (7)과 (10)으로부터 합신호 si는 이전 캐리 신호 ci0과 ci1을 공유함으로써 계산의 복잡도를 감소시킬 수 있다.
Fig. 1처럼 c0 = 0일 때의 합 신호를 si,0 = 0이라고 한다면 합 신호는 다음과 같이 표현할 수 있다.
s1,0 = a1 ⊕a0 (11)
\(\begin{align}s_{2,0}=a_2{\oplus}(\overline{a_1}c_1^0+a_1\overline{c_1^1})\;(c_1^0=0, c_1^1=a_0)\end{align}\)
\(\begin{align}s_{i+1,0}=a_{i+1}{\oplus}(\overline{a_i}c_i^0+a_i\overline{c_1^1})\end{align}\) (for i =2, ⋯, n-1)
(ci0 = ai-1ci-11, ci1 = ai-1 + ci-10)
\(\begin{align}s_{n,0} = c_n = \overline{a_{n-1}}c_{n-1}^0+a_{n-1}c_{n01}^1\end{align}\)
(cn-10 = an-2cn-21, cn-11 = an-2 + cn-20)
Fig. 4는 식 (9)를 적용하여 캐리 신호를 계산하는 회로를 나타내며, Fig. 5는 식 (10)을 적용하여 합 신호를 계산하는 회로를 나타낸다. 식 (3)에 따르면 캐리 신호를 계산하는데 소요되는 시간은 워드길이 증가에 따라 2입력 AND와 3입력 OR 게이트 1개씩 증가하지만, Fig. 4에서 알 수 있듯이 캐리 신호 ci0과 ci1을 계산하는데 소요되는 시간은 워드길이 증가에 따라 2 입력 AND 또는 OR 게이트 1개씩 증가한다. 또한, 일반적인 덧셈기와 달리 critical path는 s8이 아닌 s7을 계산하는 경로이며, 그 계산시간은 4AND+3OR+XOR이다. 반면, RCA를 적용한 예비 덧셈기는 식 (3)의 캐리 신호를 직렬로 연결한 것으로 계산시간은 (n-1)(AND+OR) + 2XOR 이다.

그림 4. 3A의 캐리 생성 회로(n=8).
Fig. 4 Carry generation circuits with n=8 for 3A.

그림 5. 3A의 합 생성 회로(n=8).
Fig. 5 Sum generation circuits with n=8 for 3A.
Fig. 4의 캐리 신호 생성 회로에 AND/OR-to-NAND/NAND 변환과정을 적용하면 Fig. 6과 같이 NAND와 NOT로만 구성된 회로를 얻을 수 있고, critical path의 계산시간을 7NAND+XOR로 줄일 수 있다. 따라서, 피승수의 워드길이가 n일 경우, 3A를 계산하는 회로의 최대 지연시간은 ((n-1) NAND + XOR)이다.

그림. 6. 최적화된 3A의 캐리 생성 회로(n=8).
Fig. 6. Optimized carry generation circuits with n=8.
피승수 A의 워드길이가 큰 경우, 제안한 방법도 전파지연이 증가하게 된다. 전파지연을 줄이기 위해 예비 덧셈기를 두 개의 블록으로 나눠 두 번째 블록의 합 신호를 캐리 입력이 0인 경우와 1인 경우를 모두 계산하고 첫 번째 블록의 캐리 신호에 따라 선택한다. 예를 들어, 캐리 신호가 0이면 식 (11)이 선택되고, 캐리 신호가 1이면 다음의 합 신호 si,1가 선택된다.
\(\begin{align}s_{1,1}=\overline{a_1{\oplus}a_0}\end{align}\) (12)
\(\begin{align}s_{2,1}=a_2{\oplus}(\overline{a_1}c_2^0+a_1\overline{c_2^1})\end{align}\) (c10 = a0, c11 = 1)
\(\begin{align}s_{i+1,1}=a_{i+1}{\oplus}(\overline{a_i}c_i^0+a_i\overline{c_i^1})\end{align}\) (for i = 2, ⋯, n-1)
(ci0 = ai-1ci-11, c21 = ai-1 + ci-10)
\(\begin{align}s_{n,1} = c_n = \overline{a_{n-1}c_{n-1}^0}+a_{n-1}c_{n-1}^1\end{align}\)
(cn-10 = an-2cn-21, cn-11 = an-2 + cn-20)
Fig. 7은 워드길이가 12인 경우, 예비 덧셈기(3A)의 구조를 나타낸다.

그림 7. 예비 덧셈기의 구조(n=12).
Fig. 7. Architecture of preliminary adder with n=12.
4. 성능평가 및 시뮬레이션
제안한 예비 덧셈기(3A)의 하드웨어 복잡도와 성능을 평가하기 위해 Verilog HDL을 사용하여 설계한 후 Intel Cyclone IV FPGA에 합성하였다. Table 1과 Table 2는 각각 다양한 워드길이(n=8, 12, 16)에 대한 예비 덧셈기의 로직(logic element) 수와 전파지연에 대한 시뮬레이션 결과를 나타낸다. 제안한 예비 덧셈기를 기준으로 로직 수와 전파지연을 정규화 하였다. Table 1에서 알 수 있듯이, 제안한 예비 덧셈기는 CLA 기반 예비 덧셈기와 비교하여 최대 100%, 평균 80% 적게 로직을 사용하였다. Table 2에서 알 수 있듯이, 제안한 예비 덧셈기는 CLA 기반 예비 덧셈기와 비교하여 전파지연이 최대 31%, 평균 26% 적어 예비 덧셈기의 고속 구현에 적합하다.
표 1. 3A의 로직수 비교
Table 1. Logic element comparison of 3A

표 2. 3A의 전파지연 비교
Table 2. Propagation delay comparison of 3A

Radix-4 Booth 곱셈기와 radix-8 Booth 곱셈기, 제안한 예비 덧셈기를 사용한 radix-8 Booth 곱셈기의 하드웨어 성능을 평가하기 위해 워드길이가 12인 Booth 곱셈기를 설계하고 합성하였다. Table 3은 곱셈기들의 로직 수와 전파지연을 나타낸다. Table 3에서 알 수 있듯이 radix-8 Booth 곱셈기는 radix-4 Booth 곱셈기보다 로직 수를 작게 사용하지만, 전파 지연이 약 6% 길다. 그러나, 제안한 예비 덧셈기를 적용한 radix-8 Booth 곱셈기는 radix-8 Booth 곱셈기 보다 로직을 약 5% 적게 사용하면서도 전파지연이 radix-4 Booth 곱셈기 보다 약 10% 작다.
표 3. 곱셈기 성능 비교(n=12)
Table 3. Multiplier performance comparison with n=12

시뮬레이션을 통해 제안한 예비 덧셈기를 사용한 radix-8 Booth 곱셈기는 radix-4 Booth 곱셈기 보다 면적과 속도면에서 우수함을 확인하였다
5. 결론
곱셈기는 다양한 DSP 응용에서 광범위하게 사용되며, DSP의 하드웨어 구현 시 곱셈기의 속도는 시스템의 동작 속도를 결정한다.
Radix-8 Booth 곱셈기는 radix-4 Booth 곱셈기와 달리 부분곱을 생성하기 위해 예비 덧셈기(3A)가 필요하다. 본 논문에서는 예비 덧셈기 구현 시 사용하는 일반 덧셈기과 달리 동일 비트가 이웃 상위비트 또는 하위비트와 중복되어 나타나는 점을 활용하여 예비 덧셈기를 효율적으로 설계하는 방법을 제안하였다. 중복되는 비트가 0일 때와 1일 때로 구분하여 예비 덧셈기의 캐리를 효율적으로 예측하는 방법을 제시하였다.
제안한 예비 덧셈기의 성능을 평가하기 위해 하드웨어 성능 비교 시뮬레이션을 수행하였으며, 로직 수와 전파지연에 대한 하드웨어 성능 측정 파라미터의 비교를 통해 제안한 예비 덧셈기가 radix-8 Booth 곱셈기 설계에 사용될 수 있음을 보였다. 제안한 방법은 5G 이동통신, 인공지능 등 고속 처리가 요구되는 시스템의 하드웨어 구현에 기여할 수 있을 것으로 기대된다.
제안한 방법을 워드길이가 큰 IEEE 754 단일 정밀도 또는 배정밀도 곱셈기에 적용할 때 효율적인 설계 방법에 대한 추가 연구도 필요하다.
References
- H. Jiang, J. Han, F. Qiao, and F. Lombardi, "Approximate radix-8 booth multipliers for low-power and high-performance operation", IEEE Trans. Comput., vol. 65, no. 8, pp. 2638-2644, 2016. https://doi.org/10.1109/TC.12
- K. J. Cho and Y. E. Kim, "Design of bit-pattern specialized adder for constant multiplication", Journal KIMICS, vol. 12, no. 11, pp. 2039-2044, 2008. https://doi.org/10.6109/JKIICE.2008.12.11.2039
- K. J. Cho, "An area-efficient 256-point FFT design for WiMAX systems", Journal of KIIECT, vol. 11. no. 3, pp. 270-276, 2018,
- L. D. Van, S. S. Wang and W. S. Feng, "Design of the lower error fixed-width multiplier and its application", IEEE Trans. Circuits Syst. II, vol. 47, no. 10, pp. 1112-1118.
- D. Umesh and S. G. Nayk, "High speed signed 8-bit Multiplier using Booth encoding and Dadda tree architecture", Proc. CONIT, pp. 1-5, 2025.
- W. Yeh and C. Jen, "High-speed Booth encoded parallel multiplier design", IEEE Trans. Computers, vol. 49, no. 7. pp. 692-701, 2000. https://doi.org/10.1109/12.863039
- D. J. Moni and P. E. Sphian, "Design of low power and high speed configurable Booth multiplier", Proc. 3rd ICECTECH, pp. 338-342, 2011.
- N. Petra, D. De Caro, and A. G. M. Strollo, "Design of fixed-width multipliers with linear compensation function", IEEE Trans. Circuits Syst. I, vol. 58, no. 5, pp. 947-960.
- K. J. Cho. "Design of low-error and low-area fixed-width radix-8 Booth multiplier". Journal NCTA, vol. 6, no. 3, pp. 405-411, 2022. https://doi.org/10.33097/JNCTA.2022.06.03.405
- S. Ullah, T. D. A. Nguyen, and A. Kumar, "Energy-efficient low-latency signed multiplier for FPGA-based hardware accelerators", IEEE Embed. Syst. Lett., vol. 13, no. 2, pp. 41-44, 2021. https://doi.org/10.1109/LES.2020.2995053
- Keshab K. Parhi, VLSI Sigital Signal Processing. Wiley-Interscience, 1999.