스위치에서 CPU까지 · LogicLab
스위치 하나에서 시작해 하나의 CPU까지 직접 조립해 보세요. 직렬·병렬 스위치와 릴레이를 움직여 “AND”, “OR”, “NOT”을 발견하고, 빛나는 도선을 따라 논리 게이트를 지나는 신호와 게이트 속 트랜지스터의 개폐를 투시해 봅니다. 직접 배선해 NAND 게이트만으로 모든 게이트와 반가산기·전가산기를 만든 뒤 검증을 거쳐 칩으로 패키징하세요. 전가산기 네 개를 세로셈처럼 나란히 세워 자리올림이 최상위까지 전달되는 과정을 보고, 마지막으로 클록을 눌러 직접 만든 가산기가 4비트 소형 CPU 안에서 프로그램을 한 줄씩 실행하는 모습과 칩 속 트랜지스터 수를 확인합니다.
단원 내용
스위치도 “계산”할 수 있을까
스위치에는 오직 두 가지 상태, 열림과 닫힘만 있습니다. 열림을 0, 닫힘을 1로, 불이 꺼짐을 0, 켜짐을 1로 적으면 회로는 하나의 “참·거짓 판단 문제”가 됩니다.
화면에서 스위치를 직접 눌러 보세요. 두 스위치를 직렬로 연결하면 둘 다 닫아야 불이 켜지고, 병렬로 연결하면 어느 하나만 닫아도 켜집니다. 네 가지 조합을 모두 시험하면 오른쪽 진리표가 한 줄씩 채워집니다.
그다음 릴레이로 바꿔 보세요. 코일에 전류가 흐르면 전자석이 되어 다른 회로의 접점을 끌어당겨 엽니다. 곧 전기로 움직이는 스위치입니다. 1937년 스물한 살의 섀넌은 석사 논문에서 이러한 스위치 회로가 논리의 “AND”, “OR”, “NOT”을 정확히 표현함을 밝혔습니다. 회로 자체의 법칙은 VoltLab에서 살펴보세요.
논리 게이트
지난 단원의 스위치 회로를 상자 안에 넣고 입력과 출력만 남겨 둔 것이 논리 게이트입니다. 도선에 전압이 걸리면 1(켜짐), 없으면 0(꺼짐)으로 적습니다.
왼쪽 입력 스위치를 움직여 신호가 도선을 따라 게이트로 들어가고, 잠깐 뒤 결과가 표시등으로 전달되는 모습을 보세요. 오른쪽에서 게이트 종류를 바꿔 가며 각각의 진리표를 완성해 봅니다: AND 게이트 Y = A · B, OR 게이트 Y = A + B, NOT 게이트 Y = A; 출력 끝에 작은 동그라미가 달린 NAND 게이트와 NOR 게이트는 먼저 계산한 뒤 반전하며, XOR 게이트는 두 입력이 다를 때 1을 출력합니다.
“투시”를 눌러 내부를 들여다보세요. 움직이는 부품은 하나도 없고 전압으로 제어하는 초소형 스위치인 트랜지스터 몇 개만 들어 있습니다. 왼쪽 위에서 모양 기호와 IEC 기호(&, ≥1, 1, =1)를 전환할 수 있습니다.
만능 NAND 게이트
이번 단원에서는 직접 배선합니다. 보드 위에는 오직 NAND 게이트만 있으며, 이것만으로 다른 게이트들을 만들어야 합니다.
배선 방법: 한 핀을 누른 채 다른 핀으로 끌어가세요(또는 한 핀을 누른 뒤 다른 핀을 클릭). 도선은 출력에서 입력으로 연결해야 하며, 출력 하나는 여러 입력으로 나눌 수 있지만 입력 하나에는 도선 하나만 연결됩니다. 도선을 클릭하면 제거됩니다. 왼쪽 스위치를 움직여 신호 흐름을 언제든 확인하세요.
연결한 뒤 검증을 누르면 모든 입력 조합을 자동으로 시험해 목표 진리표와 한 줄씩 비교합니다. 모두 맞으면 칩으로 패키징하세요. 실제 반도체 공장도 똑같습니다. NAND 게이트는 트랜지스터 네 개면 충분해 가장 경제적이고 빨라서 모든 회로를 쌓는 “블록”이 됩니다. 막히면 “도선 하나 힌트”를 눌러 보세요.
0과 1만으로 수 세기
도선 한 가닥은 0이나 1만 나타낼 수 있으며 이를 1비트(bit)라고 합니다. 더 큰 수를 나타내려면 도선 여러 가닥을 나란히 배열해 십진법의 일의 자리, 십의 자리, 백의 자리처럼 각 자리에 고유한 자릿값을 부여합니다 — 다만 여기서는 1, 2, 4, 8이고 2가 되면 자리올림합니다.
네 스위치를 움직여 보세요. 각 스위치 아래의 등은 그 자리가 0인지 1인지를 보여 주고, 오른쪽 숫자 표시기는 대응하는 십진수를 보여 줍니다. 1011은 8 + 0 + 2 + 1 = 11입니다.
“1 더하기”를 눌러 하나씩 세어 보세요. 가장 낮은 자리가 1일 때 1을 더하면 0으로 바뀌면서 왼쪽으로 자리올림합니다. 0111에서 1을 더하면 자리올림이 세 자리를 연달아 지나가고, 네 자리가 모두 1일 때 1을 더하면 오버플로가 일어납니다.
반가산기
1비트 이진수 두 개를 더하는 경우는 네 가지뿐입니다: 0 + 0 = 0, 0 + 1 = 1, 1 + 0 = 1, 그리고 1 + 1 = 10입니다. 결과는 현재 자리의 합 S와 윗자리로 보내는 자리올림 C, 두 비트로 나타냅니다.
오른쪽 목표 진리표와 비교해 보세요. S 열은 어떤 게이트와 같고, C 열은 어떤 게이트와 같을까요? 보드 위의 네 가지 게이트 중 알맞은 두 개를 골라 A, B를 연결하고 출력을 S와 C 등에 이어 주세요. 남는 게이트는 그대로 두면 됩니다.
검증을 통과하면 반가산기 칩으로 패키징합니다. 1937년 벨 연구소의 스티비츠가 릴레이 몇 개와 손전등 전구 두 개를 집으로 가져와 부엌 식탁 위에서 만든 것이 바로 이런 이진 덧셈 회로였습니다.
전가산기
세로셈으로 덧셈할 때 각 자리는 사실 세 수를 더합니다: A의 현재 자리, B의 현재 자리, 그리고 아랫자리에서 올라온 자리올림 Cin입니다. 이 세 입력을 처리하는 회로를 전가산기라고 합니다.
보드 위에는 방금 패키징한 반가산기 칩(HA) 두 개가 놓여 있습니다. 첫 번째 HA로 A와 B를 더한 뒤, 그 합과 Cin을 두 번째 HA로 더하면 두 번째 HA의 “합”이 최종 S가 됩니다.
두 반가산기는 각각 자리올림 출력을 내놓는데, 둘 중 하나라도 1이면 윗자리로 자리올림해야 합니다. 알맞은 게이트를 골라 Cout으로 합치고 여덟 가지 입력을 검증한 뒤 전가산기 칩(FA)으로 패키징하세요.
4비트 가산기
전가산기 네 개가 세로셈과 똑같이 한 줄로 늘어서 있습니다. 맨 윗줄 스위치는 A, 둘째 줄은 B, 아랫줄 등은 합입니다. 각 전가산기의 자리올림 출력은 왼쪽 한 자리 위의 자리올림 입력으로 이어지며, 주황색 선이 바로 자리올림입니다.
스위치를 움직여 문제를 내고 신호가 한 자리씩 계산되어 가는 모습을 보세요. 1111 + 0001을 시험해 보세요. 가장 낮은 자리에서 생긴 자리올림이 네 전가산기를 차례로 통과해야 윗자리 결과가 확정되므로 리플 캐리 가산기라고 부릅니다. 오른쪽 파형도는 각 합 비트가 언제 안정되었는지를 기록합니다.
오른쪽에는 “뺄셈” 스위치 M도 있습니다. 켜면 각 B 비트가 XOR 게이트를 거치며 반전되고 가장 낮은 자리에 1이 더해집니다. A − B = A + B + 1 덕분에 뺄셈도 같은 가산기가 처리합니다.
가산기에서 CPU까지
직접 만든 4비트 가산기가 이 작은 CPU의 연산 장치가 되었습니다. 그 둘레에는 몇 가지 부품이 더해졌습니다. 숫자를 기억하는 레지스터 A와 B, 명령어들을 담아 두는 프로그램 메모리, 현재 몇 번째 명령어인지를 가리키는 프로그램 카운터 PC, 그리고 명령어를 해석해 어떤 값을 가산기로 보낼지 결정하는 제어 장치입니다.
클록을 한 번 누를 때마다 네 박자(명령어 인출 → 해독 → 실행 → PC + 1)로 명령어 하나를 실행합니다. 먼저 “3 + 4”를 한 단계씩 실행해 보고, 이어서 “카운트다운”과 “3 × 4”를 실행해 보세요 — 곱셈기가 없어도 덧셈을 반복해 곱셈을 해냅니다. 오른쪽 프로그램의 피연산자 옆 −와 +를 눌러 숫자를 바꿔 다시 실행할 수도 있습니다.
마지막으로 “축소해 보기”를 눌러 스위치 하나에서 오늘날의 칩까지 트랜지스터가 얼마나 들어가는지 세어 보세요. 1971년의 Intel 4004 역시 4비트였고 트랜지스터 2,300개로 이루어졌습니다. 기계가 수많은 덧셈과 곱셈으로 어떻게 “학습”하는지는 NeuroLab에서 확인해 보세요.
형성 평가
여덟 가지 주제를 되돌아보고 아래 객관식 문제를 풀어 보자.
다른 실험
- VoltLab 전기 실험대
- 지구 운동 교실
- 세포 · 3차원 구조
- 원소 주기율표 · PeriodicLab
- 물순환 3D 지형 모형 · WaterCycle
- 신경망 숫자 인식 · NeuroLab
- 선저우 발사와 귀환 · RocketLab
- 우리는 이곳에 있었다 · ArtHistory
- 멘델의 완두 교배 실험 · PeaLab
- 체액성 면역 · ImmuneLab
- 세포의 에너지 화폐 · ATPLab
- 입체 기하 · GeoSpace
- 등고선 3D 교실
- 대기 대순환 입자 교실
- 조석의 원리 · TideLab
- 해륙의 변천
- 하천 지형 · RiverLab
- 지질 구조와 카르스트 모형 · KarstLab
- 태풍의 눈으로 · TyphoonLab
- 지구를 꿰뚫다 · QuakeLab
- 현미경 실험대 · MicroLab
- DNA의 구조 · DNALab
- 식물의 일생 · PlantLab
- 위의 구조와 기능 · StomachLab
- 세포 분화 · StemLab
- 유전자의 발현 · GeneLab
- 생태계 · EcoLab
- 40억 년 · DeepTime
- 실험실 기체 제조 · GasLab
- 화학 분석 실험대 · AnalytLab
- 반응 메커니즘 · 분자 애니메이션
- 촉매 · CatalystLab
- 갈바니 전지와 전해 전지 · ElectroLab
- 분자 모양 · VSEPR
- 원자 오비탈 · 전자 구름
- 화학 반응 · 미시 세계
- 원뿔 곡선 · ConicLab
- 함수 그래프 · FuncLab
- 작도 · ConstructLab
- 피타고라스 정리 · PythagoLab
- 재미있는 수학 · WonderLab
- 운동과 힘 · MotionLab
- 간단한 기계 · MachineLab
- 액체의 압력과 부력 · FloatLab
- 열역학 · ThermoLab
- 열의 이동과 상태 변화 · HeatLab
- 소리 · SoundLab
- 광학 실험대 · OpticsLab
- 광전 효과와 광자 · PhotonLab
- 원자의 구조와 스펙트럼 · AtomLab
- 진동과 파동 · WaveLab
- 전기장과 자기장 · FieldLab
- 유명 전투 작전 사판 · WarTable
- 강역의 변천 · HistoryAtlas