스킬캠퍼스

오늘 끝나면

싱글사이클 CPU

  • 싱글사이클 CPU의 핵심 문제를 한 문장으로 설명한다
  • 오른쪽 실습에서 싱글사이클이 어떻게 움직이는지 관찰한다
  • 다음 강의와 이어지는 한계를 말할 수 있다

실습 미션

Fetch→Decode→Execute→Mem→Writeback 한 클럭에 이 문장이 실제로 무슨 뜻인지 실습에서 한 번 손으로 확인한다.

성공 조건

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

반도체 설계 · 18

싱글사이클
CPU

한 클럭 안에서 Fetch, Decode, Execute, Memory, Writeback을 다 통과한다.
지금까지 만든 부품을 한 줄로 이으면 CPU가 된다.
명령 하나가 클럭 하나에 끝나고, 클럭 길이는 가장 느린 명령이 정한다.

P.01반도체 설계 · 18

한 클럭에 다섯 단계를 다 지난다

명령 하나가 처리되는 건 다섯 토막의 일이 차례로 일어나는 것이다. 이 다섯을 단계(stage)라 한다.

Fetch는 PC가 가리키는 주소에서 명령을 꺼낸다. 명령메모리를 읽는 단계다.
Decode는 그 비트를 opcode와 레지스터 번호로 풀고 레지스터 값을 읽는다.
Execute는 ALU가 연산하거나 주소를 계산한다.

Memory는 데이터메모리를 읽거나 쓴다. load와 store만 이 단계를 쓴다.
Writeback은 결과를 레지스터파일에 되돌려 쓴다.
싱글사이클은 이 다섯을 한 클럭 안에서 전부 끝낸다. 토막을 나누지 않는다.

Fetch → Decode → Execute → Mem → WB
한 명령 = 다섯 단계 한 줄
F
FetchPC · 명령메모리

명령 꺼냄

D
Decode제어 유닛 · 레지스터파일

명령 해석 + 레지스터 읽기

X
ExecuteALU

연산하거나 주소 계산

M
Memory데이터메모리 (load·store만)

데이터 읽기·쓰기

W
Writeback레지스터파일

결과를 레지스터로

이 다섯이 한 클럭 안에 차례로 통과하면 싱글사이클이다
P.02반도체 설계 · 18

부품을 한 줄로 이으면 CPU가 된다

새 부품은 하나도 없다. 12강부터 17강까지 만든 걸 순서대로 잇기만 하면 CPU 코어가 완성된다.

PC(12강)가 주소를 내면 명령메모리(13강)가 명령을 준다.
디코더와 제어 유닛(17강)이 그 명령을 제어신호로 풀고, 레지스터파일(14강)이 값을 꺼낸다.
ALU(11강)가 굴리고, 데이터메모리(13강)가 필요하면 읽고 쓰고, 결과가 레지스터로 돌아간다.

이 한 줄 흐름을 데이터패스라 한다. 데이터가 다니는 길이다.
제어 유닛은 그 길의 갈림목(MUX)을 명령마다 바꿔 켠다.
길과 갈림목 제어를 합치면 CPU가 된다.

PC·메모리·레지스터·ALU 다 연결
이전 강의 부품을 한 줄로 연결한다
F
PC12강
F
명령메모리13강
D
제어 유닛17강
D
레지스터파일14강
X
ALU11강
M
데이터메모리13강
W
레지스터파일14강
데이터패스가 이 길이고, 제어 유닛이 갈림목을 명령마다 바꾼다
P.03반도체 설계 · 18

직접 한 명령을 굴려본다

명령을 고르고 단계별로 한 칸씩 켜거나, 한 클럭에 한 명령씩 흘려본다.

명령마다 실제로 거치는 단계 수가 다르다.
LOAD는 다섯을 다 쓰고, ADD와 SUB는 Mem을 건너뛰어 넷, STORE는 WB이 없어 넷, BEQ는 셋이다.
STEP을 누르면 Fetch부터 한 단계씩 블록이 켜지며 데이터가 왼쪽에서 오른쪽으로 흐른다.

한 클럭 보기로 바꾸면 명령 하나가 통째로 한 클럭에 끝나는 게 보인다.
AUTO를 켜면 매 클럭 한 명령씩 프로그램이 돈다.

단계별 STEP · 한 클럭 Step/Auto
싱글사이클 CPU · 한 명령 = 한 클럭
명령 하나 고른다

LOAD r1,[r2] · r1 ← Mem[r2]

예측 먼저, 이 명령은 다섯 단계 중 몇 단계를 실제로 거칠까?
F → D → X → M → W · 한 단계씩
F2ns
D1ns
X2ns
M2ns
W1ns

STEP을 누르면 Fetch부터 한 단계씩 켜짐

데이터패스, 도달한 경로만 진하게
PC명령메모리레지스터8개ALU데이터메모리WB

STEP을 누르면 Fetch 블록부터 차례로 켜짐, 신호가 왼→오로 한 줄로 흐름

근거 패널, 단계 지연과 critical path
단계별 조합 지연합 = 8 ns
F
2ns
D
1ns
X
2ns
M
2ns
W
1ns

켜진 단계의 지연을 직렬로 다 더한 값이 이 명령의 경로 길이임. 그중 가장 긴 명령의 경로가 클럭 한 박자의 최소 길이 = critical path.

LOAD 경로 지연
8 ns
클럭 주기 하한
8 ns
125 MHz

클럭 주기는 가장 긴 명령의 경로(critical path)로 정함, 여기선 LOAD = 8ns. ADD가 빨라도 클럭은 제일 느린 LOAD에 맞춰 늘어남. 느린 명령 하나가 모두의 클럭을 정함.

한 명령 = 한 클럭이라 제어가 단순함. 대신 모든 클럭이 최장 경로만큼 느림, 이 한계가 19강 실행과 최종 MyChip의 클럭 속도로 들어감. 다음 강에서 이 경로를 토막 내 빠르게 만듦(파이프라인).

P.04반도체 설계 · 18

가장 긴 경로가 클럭을 정한다

싱글사이클의 클럭 한 박자는 가장 느린 명령이 끝나기에 충분한 시간이어야 한다. 이 최장 경로를 critical path라 한다.

각 단계는 조합 회로라 통과에 시간이 든다. 그중 메모리 읽기가 제일 느리다.
ADD는 F·D·X·W만 거쳐 짧다. LOAD는 F·D·X·M·W를 다 거쳐 가장 길다.
클럭은 한 종류뿐이라, 빠른 ADD도 느린 LOAD에 맞춘 박자를 써야 한다.

그래서 클럭 주기는 가장 긴 명령의 경로 길이로 고정된다. 주기의 역수가 최대 클럭 주파수다.
이게 싱글사이클의 약점이다. 제어는 단순한데 모든 클럭이 최장 경로만큼 느리다.

명령별 경로 길이 → critical path
명령별 경로 길이, 최장이 클럭을 정한다
ADDF·D·X·W = 6ns
F
D
X
W
BEQF·D·X = 5ns
F
D
X
STOREF·D·X·M = 7ns
F
D
X
M
LOADF·D·X·M·W = 8ns
F
D
X
M
W
LOAD의 8ns가 critical path이고, 클럭 주기는 8ns로 고정된다
P.05반도체 설계 · 18

한 명령 = 한 사이클

싱글사이클의 규칙은 명령 하나에 클럭 하나다. 그래서 셈이 단순하다.

매 클럭의 상승 edge마다 결과가 한꺼번에 박힌다. 레지스터와 데이터메모리, PC가 동시에 갱신된다.
edge 전엔 조합 회로가 답을 다 만들어둔 상태고, edge 순간에 그 답이 자리를 바꾼다.
그래서 명령이 N개면 정확히 N 클럭이 든다.

장점은 단순함이다. 한 명령에 한 클럭이라 제어가 깔끔하다.
단점은 느림이다. 모든 클럭이 최장 경로(LOAD)에 묶여 ALU가 노는 시간이 많다.

Q. 싱글사이클 CPU의 클럭 주기를 정하는 것은 무엇인가?정답은 가장 긴 명령의 경로(critical path)다.
한 클럭 안에 모든 명령이 끝나야 하므로, 클럭 주기는 제일 느린 명령(보통 LOAD로, F·D·X·M·W를 다 거친다)이 완료되기에 충분한 길이여야 한다.
빠른 ADD도 같은 클럭을 쓰므로 손해를 본다. critical path의 역수가 최대 클럭 주파수다.
클럭 vs 명령, 1대1
명령 1개에 클럭 1개
CLKLOADADDSUB명령박힘박힘박힘

한 주기에 명령 하나가 다섯 단계를 다 끝내고, edge에서 결과가 박힌다. 명령이 N개면 N 클럭이다.

단순함을 얻는 대신 모든 클럭이 최장 경로만큼 느리다

3줄 요약

  1. 1Fetch→Decode→Execute→Mem→Writeback 한 클럭에
  2. 2싱글사이클 CPU은 비트·게이트 → ALU → 시간·메모리 → 나만의 CPU → 메모리·GPU·SoC 흐름 안의 한 칸이다.
  3. 3개념을 외우는 것보다 입력을 바꾸면 무엇이 달라지는지 보는 것이 우선이다.

완료 전 점검

복습 카드

싱글사이클

Fetch→Decode→Execute→Mem→Writeback 한 클럭에

ALU

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

ISA

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