스킬캠퍼스

오늘 끝나면

반가산기와 전가산기

  • 반가산기와 전가산기의 핵심 문제를 한 문장으로 설명한다
  • 오른쪽 실습에서 반가산기와이 어떻게 움직이는지 관찰한다
  • 다음 강의와 이어지는 한계를 말할 수 있다

실습 미션

XOR로 합, AND로 올림 — 세 번째 입력이 필요한 이유 이 문장이 실제로 무슨 뜻인지 실습에서 한 번 손으로 확인한다.

성공 조건

  • 실습의 기본값을 먼저 관찰
  • 입력값이나 모드를 한 번 이상 바꿔 결과 비교
  • 왜 결과가 바뀌었는지 한 문장으로 설명

반도체 설계 · 06

반가산기와
전가산기

덧셈 한 자리는 게이트 몇 개로 끝난다.
그런데 한 자리만으로는 부족하다. 아래에서 올라온 carry-in을 받아야 한다.
그 세 입력을 받는 회로가 전가산기다. 덧셈의 진짜 단위다.

P.01반도체 설계 · 06

반가산기, 한 자리 덧셈의 시작

비트 두 개를 더하면 결과가 두 칸 나온다. 자기 자리 합과 위로 넘기는 자리올림이다.

0+0=0, 0+1=1, 1+0=1까지는 한 칸이면 된다.
그런데 1+1은 2이고, 2진수로는 10이다. 자리 합은 0, 올림은 1이다.
그래서 출력이 둘 필요하다. Sum과 Carry다.

이 두 출력을 게이트로 그대로 만든다.
Sum = A XOR B이고, 둘이 다를 때만 1이다.
Carry = A AND B이고, 둘 다 1일 때만 1이다.
이렇게 XOR 하나와 AND 하나로 한 자리 덧셈이 끝나는 회로가 반가산기다.

A · B → Sum · Carry
반가산기, XOR 1 + AND 1
ABXORSumA XOR BANDCarryA AND B
같은 두 입력이 두 게이트로 갈라져 합과 올림을 동시에 낸다
P.02반도체 설계 · 06

XOR는 합, AND는 올림

반가산기의 정체는 진리표 네 줄이다. 그 네 줄을 게이트 두 개가 그대로 흉내 낸다.

Sum 열만 따로 떼서 보면 0·1·1·0이고, 입력이 다를 때만 1이다.
이 패턴이 정확히 XOR, 즉 ‘배타적 또는’이다.

Carry 열은 0·0·0·1이고, 둘 다 1일 때만 1이다.
이건 AND 그대로다.
판단을 회로로 바꾸는 건 늘 이 순서다. 먼저 원하는 출력 표를 적고, 그 표를 내는 게이트를 고른다.

진리표 두 칸이 곧 회로
반가산기 진리표, Sum=XOR · Carry=AND
ABSumCarry
0000
0110
1010
1101
Sum 열
0 1 1 0
= XOR
Carry 열
0 0 0 1
= AND
출력 열 패턴이 곧 게이트 종류다
P.03반도체 설계 · 06

반가산기의 한계, carry-in을 못 받는다

반가산기는 입력이 A와 B 둘뿐이다. 그래서 혼자 쓰면 한 자리짜리 덧셈밖에 못한다.

종이로 여러 자리를 더할 때를 떠올려본다.
오른쪽 자리에서 1이 넘치면 왼쪽 자리로 1을 올려 보낸다.
그 올라온 1이 carry-in이다. 다음 자리는 A와 B에 이것까지 셋을 더해야 맞는다.

예를 들어 11 + 01이다.
1의 자리는 1+1=0이고 올림 1이 생긴다. 이 올림이 2의 자리로 들어가야 한다.
그런데 반가산기는 들어오는 올림을 받을 입력 칸이 없어서 더하다 새버린다.
그래서 입력 셋을 받는 회로가 따로 필요해진다.

여러 자리 덧셈에서 새는 올림
11 + 01, 올림이 옆 자리로 들어가야 한다
올림 →1.
 11
+01
 00
1의 자리1+1=0, 올림 1 발생
2의 자리1+0에 올림 1까지, 셋을 더해야 한다

반가산기는 입력이 A와 B 둘뿐이라 올라온 올림을 받을 칸이 없다.

그래서 입력 셋(A·B·Cin)을 받는 전가산기가 필요해진다
P.04반도체 설계 · 06

전가산기, 입력 셋이 덧셈의 단위

전가산기는 A와 B에 carry-in(Cin)까지 세 입력을 받아 Sum과 Cout을 낸다. 이게 덧셈의 진짜 단위다.

반가산기 두 개를 이어 만든다.
먼저 A XOR B로 부분 합을 내고, 거기에 다시 Cin을 XOR해서 최종 Sum을 낸다.
올림은 두 군데서 생긴다. A와 B에서 한 번, 부분합과 Cin에서 한 번 생기는데, 둘을 OR로 합치면 Cout이다.
그래서 속은 XOR 2 · AND 2 · OR 1, 다섯 게이트다.

입력을 켜고 끄면 1인 신호선만 진하게 흐른다. 어느 게이트가 결과를 만들었는지 따라간다.

A · B · Cin → Sum · Cout 직접 토글
전가산기 워크벤치 · A · B · Cin → Sum · Cout
입력, 세 비트를 눌러 켜고 끈다

Cin = 아래 자리에서 올라온 carry-in

예측 먼저, 실행 전에 Sum · Cout을 찍어 둔다
Sum?
Cout?
내부, XOR 2 · AND 2 · OR 1 (1=진하게, 0=흐리게)
A1B1Cin0XORANDXORANDORSum?Cout?
Sum
?
Cout
?
근거, 전가산기 진리표 (현재 입력 행 강조)
ABCinSumCout
00000
00110
01010
01101
10010
10101
11001
11111

여기서 고른 전가산기 셀이 7강에서 비트마다 줄줄이 이어져 MyChip의 덧셈기가 된다.

P.05반도체 설계 · 06

A+B+Cin은 0~3, 그래서 출력이 둘

입력 셋을 더하면 합은 0부터 3까지 나온다. 한 자리로는 못 담는다. 그래서 출력이 Sum과 Cout 두 비트다.

0+0+0=0이면 00이다.
1+1+0=2이면 10이고, Sum은 0, Cout은 1이다.
1+1+1=3이면 11이고, Sum은 1, Cout은 1이다.
Cout이 윗자리, Sum이 그 자리값이고, 둘이 합쳐 2비트 수가 된다.

전가산기 하나는 딱 한 자리만 책임진다.
한 칸의 Cout을 옆 칸의 Cin으로 넘겨 줄줄이 이으면 몇 비트든 더해진다.

Q. 전가산기가 반가산기보다 더 받는 입력 하나는 무엇인가?정답은 carry-in(Cin)이다.
반가산기는 A와 B 둘만 받아 한 자리밖에 못 더한다.
전가산기는 아래 자리에서 올라온 carry-in까지 셋을 받아, 자리들을 이어 여러 비트 덧셈을 가능하게 한다.
세 비트 합 → Cout·Sum 2비트
세 비트 합 0~3이면 2비트 출력
A+B+Cin합(10진)CoutSum
0+0+0000
1+0+0101
1+1+0210
1+1+1311
출력 2비트 읽는 법
Cout Sum = 자리값 21·20
11
Cout을 옆 칸 Cin으로 넘기면 몇 비트든 이어진다

3줄 요약

  1. 1XOR로 합, AND로 올림 — 세 번째 입력이 필요한 이유
  2. 2반가산기와 전가산기은 비트·게이트 → ALU → 시간·메모리 → 나만의 CPU → 메모리·GPU·SoC 흐름 안의 한 칸이다.
  3. 3개념을 외우는 것보다 입력을 바꾸면 무엇이 달라지는지 보는 것이 우선이다.

완료 전 점검

복습 카드

반가산기와

XOR로 합, AND로 올림 — 세 번째 입력이 필요한 이유

ALU

산술·논리 연산을 하는 회로

ISA

CPU가 이해하는 명령어 집합과 인코딩