핵심 인사이트 (3줄 요약)

  1. 본질: 감산기(Subtractor)는 두 이진수의 뺄셈(A - B)을 수행하여, 두 값의 차이(Difference, D)와 윗자리에서 꿔온 빌림수(Borrow, $B_{out}$)를 뱉어내는 조합 논리회로다.
  2. 가치: 반가산기가 합과 올림수를 내듯, XOR 게이트를 통해 뺄셈 차이(D)를 구하고 NOT-AND 구조로 부족한 숫자를 위에서 뜯어오는 빌림수(Borrow) 논리를 완벽히 증명해 냈다.
  3. 판단 포인트: 칩에 비싼 뺄셈 전용 회로를 박는 건 극심한 면적 낭비(Cost)다. 현대 아키텍처는 이 전용 감산기를 멸종시키고, 빼야 할 숫자를 '2의 보수(음수)'로 둔갑시켜 기존 가산기(Adder) 하나로 통일해 뺄셈을 처리한다.

Ⅰ. 개요 및 필요성

감산기는 입력된 두 비트의 뺄셈을 진행하며, 0에서 1을 빼야 할 때 윗자리에서 1(이진수의 '10', 즉 2)을 꿔오는 '빌림수'를 하드웨어 스위치로 구현한 회로다.

초창기 엔지니어들은 기계에게 덧셈을 가르친 뒤 뺄셈 전용 회로(반감산기, 전감산기)를 따로 구워 칩에 박았다. 하지만 덧셈기만큼 거대한 뺄셈기를 또 박아 넣자니 공간과 돈이 너무 아까웠다. 결국 수학자들의 '2의 보수'라는 흑마법이 등장하면서, 이 순수한 감산기 쇳덩어리는 현대 CPU 도면에서 처참히 멸종당하게 된다.

  • 📢 섹션 요약 비유: 지갑이 가벼운 '구멍가게 손님'이다. 주머니에 0원(A)이 있는데 1,000원(B)짜리 빵을 사려면 윗반 형(윗자리)에게 달려가 2,000원(빌림수 Borrow=1)을 강제로 꿔온 다음, 1,000원을 내고 남은 거스름돈 1,000원(Diff=1)을 챙기는 눈물겨운 빚쟁이 로직이다.

Ⅱ. 아키텍처 및 핵심 원리

순수 뺄셈 회로가 윗자리에서 숫자를 뜯어오는 깐깐한 진리표 매핑을 시각화하면 다음과 같다.

┌──────────────────────────────────────────────────────────────┐
│         마법의 스위치 맵핑: 반감산기(Half Subtractor)의 원리     │
├──────────────────────────────────────────────────────────────┤
│                                                              │
│   [우리가 원하는 1비트 이진수 뺄셈 (A - B)의 완벽한 진리]          │
│                                                              │
│  입력(A) | 뺄놈(B) || 빌림수(Borrow_out) | 차이(Difference, D)  │
│ ────────+─────────++────────────────────+────────────────────   │
│    0    |    0    ||         0          |         0          │
│    0    |    1    ||         1 ◀꿔옴!   |         1 ◀거스름돈! │
│    1    |    0    ||         0          |         1          │
│    1    |    1    ||         0          |         0          │
│                                                              │
│ * [0 - 1의 비극]: 0에서 1을 못 빼므로 무조건 윗자리에서 1(십진수 2)을 │
│   빌려옴(Borrow=1). 가져온 2에서 1을 빼니 내 수중엔 1이 남음(Diff=1).│
└──────────────────────────────────────────────────────────────┘

차이(Difference) 결과가 가산기의 합(Sum)을 내는 XOR 게이트와 100% 똑같다! 다를 때만 1이다. 하지만 빌림수(Borrow)는 A=0, B=1 일 때만 터지므로, A를 뒤집고(NOT) B랑 곱하는(AND) $A' \cdot B$ 공식을 써야 한다. 이 2개를 묶으면 밑자리에서 조르는 빚($B_{in}$)까지 한 방에 처리하는 위대한 '전감산기(Full Subtractor)' 덩어리로 진화한다.

  • 📢 섹션 요약 비유: 반감산기 로직은 '지갑 텅 빈 초등학생의 편의점 결제'다. 내 돈(A)이 0원인데 빵(B)이 1,000원이면, 가게 밖 엄마(윗자리)에게 달려가 만 원(Borrow=1)을 강제로 뜯어온 다음 천 원 내고 남은 구천 원(Diff=1)을 내 주머니에 욱여넣는 지독한 빚쟁이 시스템이다.

Ⅲ. 비교 및 연결

수학적으로 완벽한 감산기를 만들어놓고도 아키텍트들이 왜 이걸 쓰레기통에 버렸을까?

비교 항목전가산기 (Full Adder)전감산기 (Full Subtractor)아키텍처 판단 포인트
메인 결과 핀합 (Sum)차이 (Difference)내부 수식(XOR 2개)이 100% 똑같음
보조 제어 핀올림수 (Carry, 올려줌)빌림수 (Borrow, 뜯어옴)$AB$ vs $A'B$ 로 NOT 게이트 1개 차이
칩 면적 (Area)덧셈의 절대 코어덧셈기+보수기로 100% 퉁침전용 감산기는 칩 면적 낭비 주범
현대 ALU 채택64개 꼬리 물고 도배됨ALU 내부에서 완전 멸종당함아키텍처 '최소 부품 재사용' 철학

인간은 덧셈 뺄셈을 따로 배우기에 초기 하드웨어도 기계를 두 대 지었다. 하지만 수백억 개 단위 칩 양산에선 끔찍한 공간 낭비다. 천재들은 **"A - B 는 A + (-B) 랑 똑같다"**는 걸 깨달았다. 뒤에 들어오는 숫자 B에 '마이너스 부적(2의 보수)'을 쾅 붙여 이미 만들어둔 덧셈기(가산기)에 쑤셔 넣으면, 기계는 미친 듯이 더하기만 했는데 완벽한 뺄셈 결과(A-B)가 튀어나온다!

  • 📢 섹션 요약 비유: 덧셈 기계와 뺄셈 기계를 비싸게 두 대 살 필요가 없습니다. 뺄셈을 하고 싶으면 뺄 숫자(B) 머리통에 '청개구리 부적(2의 보수)'을 붙여 괴물(-B)로 둔갑시킨 뒤 원래 있던 덧셈 기계에 밀어 넣으세요. 더하기 기계가 덧셈만 했는데 완벽한 빼기 정답이 톡 떨어지는 1기기 2역의 원가 절감 연금술입니다.

Ⅳ. 실무 적용 및 기술사 판단

감산기가 멸종당한 현대 아키텍처에서 덧셈기 1대로 어떻게 모든 걸 치워버리는지 살펴보자.

체크리스트 및 판단 기준

  1. FPGA나 ASIC ALU 코어 설계 시 assign Out = A - B; 라고 코딩해 합성 툴이 전용 감산기를 뚱뚱하게 따로 굽게 방치하지 않고, 덧셈과 뺄셈을 가산기 트리 하나에 욱여넣고 스위치(XOR) 하나로 돌려쓰는 '병렬 가감산기(Adder-Subtractor)' 매크로를 핀포인트 이식해 칩 면적을 반토막 냈는가?
  2. GPU 셰이더 코어에서 부동소수점 지수($10^3 - 10^2$) 뺄셈을 할 때 전용 뺄셈기를 따로 두지 않고, 칩에 이미 널려있는 거대 가수부 가산기(Adder)를 잠시 훔쳐 와서 -2(2의 보수)로 뒤집어 넣고 0.001초 만에 덧셈으로 치워버리는 재사용(Reuse) 다이어트를 감행했는가?

안티패턴

  • 2의 보수 꼼수로 5 - 30101 + 1101 = 1 0010 으로 덧셈기에서 쳤더니 맨 앞(5번째 자리)에 찌꺼기 올림수 '1'이 튀어나왔다. 초보 커널 개발자가 이걸 보고 "4비트 덧셈기에서 5비트가 나왔네? 오버플로우다! 시스템 정지!"라며 패닉에 빠져 락(Lock)을 걸어버리는 최악의 무지성 착각. 2의 보수 뺄셈 구조에서 맨 앞자리로 넘쳐 떨어지는 저 캐리(End Carry)는 정상적인 쓰레기 각질이므로 무조건 가위로 잘라 무시(Discard)해야 완벽한 정답 '0010(2)'이 보장된다.

  • 📢 섹션 요약 비유: 사과 5개에서 3개를 뺄 때, 2의 보수 시스템(엄마)이 "사과 10개가 든 바구니를 통째로 가져와서 거기서 빼!"라고 지혜를 주었습니다. 다 계산하고 빈 바구니 1개(찌꺼기 캐리 1)가 남은 걸 보고, "어? 내가 안 시킨 빈 바구니가 왜 나와! 시스템 에러 펑!"이라며 밥상을 엎어버리는 꼴입니다. 그 빈 바구니는 뺄셈 꼼수를 쓰느라 발생한 포장지일 뿐이니 쿨하게 버리면 됩니다.


Ⅴ. 기대효과 및 결론

반감산기와 전감산기는 XOR 게이트를 통해 뺄셈 차이(D)를 구하고 NOT-AND 구조를 엮어 부족한 숫자를 위에서 뜯어오는 빌림수(Borrow) 논리를 완벽히 증명한 고전적 유물이다.

하지만 칩에 비싼 전용 회로를 따로 박는 면적 낭비(Cost)를 막기 위해, 현대 컴퓨터 아키텍처는 이 감산기 하드웨어 자체를 완전히 멸종시키고 2의 보수를 활용한 덧셈기(Adder) 통일 체계로 융합 진화했다. 심지어 CPU의 디바이더(나눗셈기) 코어조차 덧셈기에 음수를 수백 번 쾅쾅 처넣어 뺑뺑이를 돌리는 꼼수로 굴러간다. 덧셈기 하나로 우주의 사칙연산을 100% 퉁쳐버린 역사적 융합이다.

  • 📢 섹션 요약 비유: 보수 뺄셈은 '시계 바늘 꼼수 돌리기'다. 지금 5시인데 3시간 전(뺄셈)으로 가고 싶다. 뒤로 가는 태엽(비싼 감산기)을 새로 달아 뒤로 3칸 돌려도(5-3=2) 2시다. 하지만 돈을 아끼기 위해 앞으로 가는 태엽(가산기)만 달아놓고, 거꾸로 앞으로 9칸(12의 보수)을 삥 한 바퀴 크게 돌려버려도(5+9=14, 12 무시하면 2시) 똑같이 2시가 나온다.

📌 관련 개념 맵

개념연결 포인트
2의 보수 (2's Complement)뺄셈 기계(감산기)를 지구상에서 완벽히 멸종시키고 오직 덧셈 기계 하나만으로 컴퓨터가 돌아가게 만든 구원자 흑마술
전가산기 (Full Adder)전감산기 도면을 갈기갈기 찢어버리고, 그 자리에 앉아 더하기와 빼기 야근을 혼자 다 해처먹는 ALU의 절대 뼈대
병렬 가감산기덧셈기 입구에 XOR 거울 스위치 하나 덜렁 달아서 버튼 1번만 누르면 완벽한 뺄셈기로 둔갑하는 1기기 2역의 가성비 융합 칩

👶 어린이를 위한 3줄 비유 설명

  1. 감산기는 내 주머니가 텅 비었을 때 엄마한테 용돈을 강제로 뜯어내서(빌림수) 물건을 사는 빚쟁이 결제 로봇이에요!
  2. 더하기 로봇(가산기)과 쌍둥이처럼 닮았지만, 컴퓨터 공장 아저씨들은 로봇 두 대를 사기 돈 아까워서 빼기 로봇을 쓰레기통에 버렸어요.
  3. 대신 뺄셈을 하고 싶을 땐 숫자 머리에 '청개구리 반대파 부적(2의 보수)'을 찰싹 붙여서, 더하기 로봇한테 쑤셔 넣어버리면 신기하게 똑같은 빼기 정답이 톡! 하고 튀어나온답니다.