오늘 끝나면
ALU: 더하고 비교하는 엔진
- ✓ALU: 더하고 비교하는 엔진의 핵심 문제를 한 문장으로 설명한다
- ✓오른쪽 실습에서 ALU:이 어떻게 움직이는지 관찰한다
- ✓다음 강의와 이어지는 한계를 말할 수 있다
실습 미션
반가산기·전가산기·논리 연산 — 계산은 작은 게이트 묶음이 숫자를 밀어내는 과정 이 문장이 실제로 무슨 뜻인지 실습에서 한 번 손으로 확인한다.
성공 조건
- □실습의 기본값을 먼저 관찰
- □입력값이나 모드를 한 번 이상 바꿔 결과 비교
- □왜 결과가 바뀌었는지 한 문장으로 설명
12 · 더하고 비교하는 엔진
ALU
게이트로 덧셈 회로를 만듦 / 그걸 모으고 빼기·AND·OR까지 넣으면 숫자를 다루는 계산 코어 = ALU가 됨.
반가산기 — XOR과 AND
덧셈의 가장 작은 조각부터 시작함 / 1비트 + 1비트.
한 자리를 더하면 결과가 둘 나옴 / 합(Sum)과 자리올림(Carry).
1+1은 0이고 위로 1을 올려줌.
이걸 게이트로 만듦 / 합은 XOR, 자리올림은 AND.
XOR과 AND 둘이면 반가산기(half adder)가 됨 / 가산기의 씨앗임.
| A | B | 합 | 올림 |
|---|---|---|---|
| 0 | 0 | 0 | 0 |
| 0 | 1 | 1 | 0 |
| 1 | 0 | 1 | 0 |
| 1 | 1 | 0 | 1 |
전가산기와 자리올림 전파
반가산기는 입력이 둘뿐임 / 진짜 덧셈엔 아래 자리에서 올라온 올림도 더해야 함.
입력을 셋으로 늘림 / A · B · 아래 자리 올림(Carry-in).
셋을 더해 합과 새 자리올림(Carry-out)을 냄 / 이게 전가산기(full adder)임.
반가산기 둘에 OR 하나를 붙이면 전가산기가 됨.
올림이 한 칸씩 위로 타고 오르는 걸 자리올림 전파라 함 / 손으로 받아올림 하는 거랑 같음.
여러 비트를 잇다
한 자리짜리 전가산기를 여러 개 줄세움 / 그럼 여러 비트 숫자를 더함.
한 칸의 Carry-out을 다음 칸의 Carry-in으로 꽂음.
전가산기 4개를 이으면 4비트 덧셈기 / 0~15를 더함.
올림이 오른쪽 끝에서 왼쪽 끝까지 물결처럼 번짐 / 그래서 리플 캐리(ripple carry)라 부름.
비트를 더 이으면 8비트·32비트·64비트로 커짐 / 원리는 그대로임.
숫자를 다루는 코어
덧셈기에 빼기·AND·OR까지 넣고 ‘무슨 연산 할지’ 고르게 한 게 ALU임.
ALU는 숫자 둘 A·B와 연산 선택을 받음.
결과와 플래그를 같이 내놓음 / 결과가 0이면 ZERO, 자리올림이 나면 CARRY가 켜짐.
오른쪽에서 연산을 고르고 A·B를 바꿔봄 / 같은 회로가 더하고 빼고 비교까지 함. 이 ALU가 곧 CPU의 계산 근육임.
플래그 — ZERO · CARRY
ALU는 결과 숫자만 내는 게 아님 / 그 옆에 작은 신호도 같이 켬 = 플래그.
ZERO는 결과가 정확히 0일 때 켜짐 / 두 수가 같은지 비교할 때 씀.
CARRY는 자리올림이 끝에서 넘쳐 나올 때 켜짐 / 비트 칸을 넘어선 거임.
플래그는 한 비트짜리 작은 깃발임 / 켜짐(1)이냐 꺼짐(0)이냐.
CPU는 이 깃발을 보고 ‘같으면 점프’ 같은 판단을 함 / 결과보다 이 한 비트가 흐름을 가름.
Q. 결과가 0일 때 켜지는 플래그는? (ZERO · CARRY · 둘 다 · 없음)
정답은 ZERO임.CARRY는 자리올림이 끝에서 넘칠 때 켜지는 별개 신호임.
두 신호는 따로 켜지고, 같은 비교에서 둘 다 켜질 수도 안 켜질 수도 있음.
| 연산 | 결과 | ZERO | CARRY |
|---|---|---|---|
| 5 − 5 | 0 | 1 | 0 |
| 5 + 3 | 8 | 0 | 0 |
| 15 + 1 | 0 | 1 | 1 |