오늘 끝나면

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 하나를 담는 가장 작은 정보 단위