스킬캠퍼스

오늘 끝나면

버스와 데이터패스

  • 버스와 데이터패스의 핵심 문제를 한 문장으로 설명한다
  • 오른쪽 실습에서 버스와이 어떻게 움직이는지 관찰한다
  • 다음 강의와 이어지는 한계를 말할 수 있다

실습 미션

명령마다 켜지는 경로 — ADD·LOAD·STORE·Branch 이 문장이 실제로 무슨 뜻인지 실습에서 한 번 손으로 확인한다.

성공 조건

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

반도체 설계 · 15

버스와
데이터패스

데이터패스는 명령이 흐르는 길이다.
값은 레지스터에서 나와 ALU로 가고, 메모리를 거쳐 다시 레지스터로 돌아온다.
명령마다 켜지는 길이 다르고, 그 길을 고르는 부품이 MUX다.

P.01반도체 설계 · 15

버스는 여러 비트가 함께 다니는 한 다발

16비트 값을 옮기려면 선이 16가닥 필요하다. 그 16가닥을 한 다발로 묶은 것이 버스다.

버스는 부품이 아니라 데이터를 나르는 공용 통로다.
레지스터파일과 ALU, 메모리는 전부 이 버스에 물려 있다.
그 위로 값이 한 번에 16비트씩 흐른다.

이렇게 데이터가 다니는 길 전체를 데이터패스라 한다.
버스가 큰 도로라면, 데이터패스는 출발지와 교차로, 도착지를 다 합친 도로망이다.
CPU의 뼈대가 바로 이 도로망이다. 거기에 어느 길로 갈지 정하는 신호등만 얹으면 된다.

선 하나가 1비트 · 다발이 버스
선 16가닥 → 버스 한 다발
1비트 = 선 하나
16비트 버스낱선 16가닥
버스에 물린 부품
레지스터
ALU
메모리

↑ 공용 버스 위로 값이 흐른다

다발 하나로 16비트가 한 번에 이동한다. 이 통로 위가 데이터패스다
P.02반도체 설계 · 15

데이터패스는 명령이 흐르는 길

명령 하나가 실행된다는 건 값이 정해진 길을 한 바퀴 도는 것이다.

뼈대는 항상 같다.
레지스터파일에서 값을 꺼내 ALU로 계산하고, 필요하면 메모리를 거쳐 다시 레지스터파일에 결과를 적는다.

이 길 앞에 PC와 명령메모리가 붙는다. PC가 가리키는 주소에서 명령을 꺼내(인출) 무슨 일을 할지 읽는다(디코드).
그다음 위 길을 따라 값을 굴린다(실행).
모든 명령이 이 한 골격을 공유한다. 부품을 명령마다 새로 만들지 않는다.

레지스터 → ALU → 메모리 → 레지스터
명령 한 번 = 한 바퀴

PC → 명령메모리 (인출·디코드) → 아래 길로 실행

레지스터파일값 꺼냄
ALU계산
데이터메모리필요하면 거침
레지스터파일결과 적음
모든 명령이 이 한 골격을 공유한다. 부품을 새로 만들지 않는다
P.03반도체 설계 · 15

명령마다 다른 경로

부품은 공유하지만, 명령마다 켜지는 길은 다르다. 핵심 갈림길은 ‘메모리를 거치느냐’다.

ADD는 레지스터 둘을 ALU로 더해 바로 레지스터에 쓴다. 메모리는 거치지 않는다.
LOAD는 ALU로 주소를 만든 뒤 데이터메모리에서 값을 읽어 레지스터에 쓴다. 메모리를 거친다.
STORE는 주소를 만들어 레지스터 값을 메모리에 쓴다. 레지스터에는 쓰지 않는다.
BEQ는 ALU로 두 값을 빼 같은지 보고, 같으면 PC를 분기시킨다.

같은 도로망 위에서 어느 차선만 켜느냐로 명령이 갈린다.
그래서 명령을 늘려도 회로를 통째로 새로 짜지 않는다. 길을 켜고 끄는 신호만 다르게 준다.

ADD · LOAD · STORE · BEQ가 켜는 길
명령별로 켜지는 길
명령레지스터ALU메모리레지스터쓰기PC분기
ADD··
LOAD·
STORE··
BEQ··
● 켜진 길 · · 안 쓰는 길. 갈림길은 메모리·레지스터쓰기·PC분기
P.04반도체 설계 · 15

명령을 골라 경로를 켜본다

명령을 고르면 그 명령이 켜는 길만 진하게 켜지고, 안 쓰는 길은 흐린 점선으로 남는다.

ADD와 LOAD, STORE, BEQ는 같은 부품을 쓰되 켜는 길이 다르다. 데이터메모리 블록은 LOAD와 STORE일 때만 살아난다.

RegWrite·ALUSrc·MemWrite·MemToReg·Branch 토글이 MUX 제어다. 토글 하나를 뒤집으면 경로가 바로 다른 길로 바뀐다.

16비트 CPU 데이터패스 · 명령별 활성 경로 + MUX 제어
16비트 CPU 데이터패스 · 명령의 길
명령 하나 고르기

rd ← rs + rt

예측 먼저, 이 명령은 데이터메모리를 거칠까?
데이터패스, 활성 경로만 진하게
immPC명령메모리레지스터파일8개ALU데이터메모리MUX

예측을 고르고 '경로 활성화'를 누르면 이 명령의 길이 켜진다

제어신호, 직접 토글
근거 패널, 제어신호와 활성 경로
RegWriteALUSrcMemWriteMemToRegBranch
10000
활성 경로 (지금 제어 기준)

PC → 명령메모리 → 레지스터파일 → ALU → 레지스터파일

명령을 고르면 정답 제어가 세팅된다. 경로를 활성화해 길을 본다.

P.05반도체 설계 · 15

MUX는 길을 고르는 신호등

명령마다 길이 다르려면 갈림길에서 한쪽을 골라줘야 한다. 그 고르개가 MUX(멀티플렉서)다.

MUX는 여러 입력 중 하나만 통과시키는 스위치다. 어느 입력을 통과시킬지는 제어신호 한 비트가 정한다.
ALUSrc가 0이면 ALU 둘째 입력은 레지스터, 1이면 즉시값(imm)이다.
MemToReg가 0이면 레지스터에 쓸 값은 ALU 결과, 1이면 메모리에서 읽은 값이다.

제어신호는 명령을 디코드해서 만들어진다. 명령이 곧 신호등 패턴이다.
데이터패스라는 길 위에 제어라는 신호등을 얹으면 명령이 자기 길로 흐른다. 이 둘을 합친 것이 CPU의 골격이다.

Q. LOAD와 ADD의 데이터패스가 다른 이유는?핵심은 메모리를 거치느냐다.
ADD는 레지스터 둘을 ALU로 더해 결과를 바로 레지스터에 쓴다. 데이터메모리는 건드리지 않는다.
LOAD는 ALU로 주소를 만든 뒤 데이터메모리에서 값을 읽어와 레지스터에 쓴다. 메모리를 한 번 거친다.
그 차이를 ALUSrc·MemToReg·MemWrite 같은 제어신호가 갈라준다.
제어신호 한 비트가 경로를 가른다
2:1 MUX · 제어 한 비트로 고름
레지스터immMUXALUALUSrc = 0
ALUSrc = 0
→ 레지스터 통과
ALUSrc = 1
→ imm 통과
제어 비트 하나가 갈림길을 가른다. 명령을 디코드해 이 비트를 만든다

3줄 요약

  1. 1명령마다 켜지는 경로 — ADD·LOAD·STORE·Branch
  2. 2버스와 데이터패스은 비트·게이트 → ALU → 시간·메모리 → 나만의 CPU → 메모리·GPU·SoC 흐름 안의 한 칸이다.
  3. 3개념을 외우는 것보다 입력을 바꾸면 무엇이 달라지는지 보는 것이 우선이다.

완료 전 점검

복습 카드

버스와

명령마다 켜지는 경로 — ADD·LOAD·STORE·Branch

ALU

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

ISA

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