오늘 끝나면

ALU: 더하고 비교하는 엔진

  • ALU: 더하고 비교하는 엔진의 핵심 문제를 한 문장으로 설명한다
  • 오른쪽 실습에서 ALU:이 어떻게 움직이는지 관찰한다
  • 다음 강의와 이어지는 한계를 말할 수 있다

실습 미션

반가산기·전가산기·논리 연산 — 계산은 작은 게이트 묶음이 숫자를 밀어내는 과정 이 문장이 실제로 무슨 뜻인지 실습에서 한 번 손으로 확인한다.

성공 조건

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

12 · 더하고 비교하는 엔진

ALU

게이트로 덧셈 회로를 만든다. 이것을 모으고 빼기와 AND, OR까지 넣으면 숫자를 다루는 계산 코어, 곧 ALU가 된다.

P.01디지털 로직 · ALU

반가산기, XOR과 AND

덧셈의 가장 작은 조각부터 시작한다. 1비트 더하기 1비트다.

한 자리를 더하면 결과가 둘 나온다. 합(Sum)자리올림(Carry)이다.
1+1은 0이고 위로 1을 올린다.

이것을 게이트로 만든다. 합은 XOR, 자리올림은 AND이다.
XOR과 AND 둘이면 반가산기(half adder)가 된다. 가산기의 씨앗이다.

한 자리 덧셈 = 합 + 자리올림
반가산기, XOR + AND
ABXORAND올림
AB올림
0000
0110
1010
1101
1+1만 올림이 1. 합은 XOR, 올림은 AND
P.02디지털 로직 · ALU

전가산기와 자리올림 전파

반가산기는 입력이 둘뿐이다. 진짜 덧셈에는 아래 자리에서 올라온 올림도 더해야 한다.

입력을 셋으로 늘린다. A, B, 아래 자리 올림(Carry-in)이다.
셋을 더해 합과 새 자리올림(Carry-out)을 낸다. 이것이 전가산기(full adder)이다.

반가산기 둘에 OR 하나를 붙이면 전가산기가 된다.
올림이 한 칸씩 위로 타고 오르는 것을 자리올림 전파라 한다. 손으로 받아올림 하는 것과 같다.

아래에서 올라온 Carry까지 더한다
전가산기, 입력 3개
A1
B1
Carry-in1
FULL ADDER1+1+1 = 3
1
Carry-out1
Carry-out이 위 칸으로 전파된다
P.03디지털 로직 · ALU

여러 비트를 잇다

한 자리짜리 전가산기를 여러 개 줄세운다. 그러면 여러 비트 숫자를 더한다.

한 칸의 Carry-out을 다음 칸의 Carry-in으로 꽂는다.
전가산기 4개를 이으면 4비트 덧셈기가 되고, 0부터 15까지 더한다.

올림이 오른쪽 끝에서 왼쪽 끝까지 물결처럼 번진다. 그래서 리플 캐리(ripple carry)라 부른다.
비트를 더 이으면 8비트, 32비트, 64비트로 커진다. 원리는 그대로다.

전가산기 4개 = 4비트 덧셈기
4비트 덧셈기, 전가산기 ×4
Cout
bit 3A1B0
FA
bit 2A0B1
FA
bit 1A1B1
FA
bit 0A1B1
FA
Cin=0
← 올림이 오른쪽에서 왼쪽으로 번진다 ←
합 (4비트)0 0 0 0+ 자리올림 1
리플 캐리, 8비트와 32비트, 64비트도 원리 동일
P.04디지털 로직 · ALU

숫자를 다루는 코어

덧셈기에 빼기와 AND, OR까지 넣고 어떤 연산을 할지 고르게 한 것이 ALU이다.

ALU는 숫자 둘 A와 B, 그리고 연산 선택을 받는다.

결과와 플래그를 같이 내놓는다. 결과가 0이면 ZERO, 자리올림이 나면 CARRY가 켜진다.

오른쪽에서 연산을 고르고 A와 B를 바꿔본다. 같은 회로가 더하고 빼고 비교까지 한다. 이 ALU가 곧 CPU의 계산 근육이다.

4비트 ALU
ALU · 4비트 산술·논리 연산기
A
0110
6
+
B
0011
3
결과 Y
1001
= 9 (10진)
ZERO 0
CARRY 0
P.05디지털 로직 · ALU

플래그, ZERO · CARRY

ALU는 결과 숫자만 내는 것이 아니다. 그 옆에 작은 신호도 같이 켠다. 이것이 플래그다.

ZERO는 결과가 정확히 0일 때 켜진다. 두 수가 같은지 비교할 때 쓴다.
CARRY는 자리올림이 끝에서 넘쳐 나올 때 켜진다. 비트 칸을 넘어선 것이다.

플래그는 한 비트짜리 작은 깃발이다. 켜짐(1)이냐 꺼짐(0)이냐를 나타낸다.
CPU는 이 깃발을 보고 ‘같으면 점프’ 같은 판단을 한다. 결과보다 이 한 비트가 흐름을 가른다.

Q. 결과가 0일 때 켜지는 플래그는? (ZERO · CARRY · 둘 다 · 없음)정답은 ZERO이다.
CARRY는 자리올림이 끝에서 넘칠 때 켜지는 별개 신호이다.
두 신호는 따로 켜지고, 같은 비교에서 둘 다 켜질 수도 안 켜질 수도 있다.
결과 옆에 켜지는 한 비트짜리 신호
플래그, 결과 옆 한 비트 신호
연산결과ZEROCARRY
5 − 5010
5 + 3800
15 + 1011
15+1은 4비트를 넘쳐 결과가 0(ZERO)이고 넘침(CARRY)이 켜진다

3줄 요약

  1. 1반가산기·전가산기·논리 연산 — 계산은 작은 게이트 묶음이 숫자를 밀어내는 과정
  2. 2ALU: 더하고 비교하는 엔진은 전기 → 불 대수 → 게이트 → 메모리 → CPU 흐름 안의 한 칸이다.
  3. 3개념을 외우는 것보다 입력을 바꾸면 무엇이 달라지는지 보는 것이 우선이다.

완료 전 점검

복습 카드

ALU:

반가산기·전가산기·논리 연산 — 계산은 작은 게이트 묶음이 숫자를 밀어내는 과정

전압

전하를 밀어내는 힘

비트

0 또는 1 하나를 담는 가장 작은 정보 단위