오늘 끝나면
싱글사이클 CPU
- ✓싱글사이클 CPU의 핵심 문제를 한 문장으로 설명한다
- ✓오른쪽 실습에서 싱글사이클이 어떻게 움직이는지 관찰한다
- ✓다음 강의와 이어지는 한계를 말할 수 있다
실습 미션
Fetch→Decode→Execute→Mem→Writeback 한 클럭에 이 문장이 실제로 무슨 뜻인지 실습에서 한 번 손으로 확인한다.
성공 조건
- □실습의 기본값을 먼저 관찰
- □입력값이나 모드를 한 번 이상 바꿔 결과 비교
- □왜 결과가 바뀌었는지 한 문장으로 설명
반도체 설계 · 18
싱글사이클
CPU
한 클럭 안에서 Fetch, Decode, Execute, Memory, Writeback을 다 통과한다.
지금까지 만든 부품을 한 줄로 이으면 CPU가 된다.
명령 하나가 클럭 하나에 끝나고, 클럭 길이는 가장 느린 명령이 정한다.
한 클럭에 다섯 단계를 다 지난다
명령 하나가 처리되는 건 다섯 토막의 일이 차례로 일어나는 것이다. 이 다섯을 단계(stage)라 한다.
Fetch는 PC가 가리키는 주소에서 명령을 꺼낸다. 명령메모리를 읽는 단계다.
Decode는 그 비트를 opcode와 레지스터 번호로 풀고 레지스터 값을 읽는다.
Execute는 ALU가 연산하거나 주소를 계산한다.
Memory는 데이터메모리를 읽거나 쓴다. load와 store만 이 단계를 쓴다.
Writeback은 결과를 레지스터파일에 되돌려 쓴다.
싱글사이클은 이 다섯을 한 클럭 안에서 전부 끝낸다. 토막을 나누지 않는다.
명령 꺼냄
명령 해석 + 레지스터 읽기
연산하거나 주소 계산
데이터 읽기·쓰기
결과를 레지스터로
부품을 한 줄로 이으면 CPU가 된다
새 부품은 하나도 없다. 12강부터 17강까지 만든 걸 순서대로 잇기만 하면 CPU 코어가 완성된다.
PC(12강)가 주소를 내면 명령메모리(13강)가 명령을 준다.
디코더와 제어 유닛(17강)이 그 명령을 제어신호로 풀고, 레지스터파일(14강)이 값을 꺼낸다.
ALU(11강)가 굴리고, 데이터메모리(13강)가 필요하면 읽고 쓰고, 결과가 레지스터로 돌아간다.
이 한 줄 흐름을 데이터패스라 한다. 데이터가 다니는 길이다.
제어 유닛은 그 길의 갈림목(MUX)을 명령마다 바꿔 켠다.
길과 갈림목 제어를 합치면 CPU가 된다.
직접 한 명령을 굴려본다
명령을 고르고 단계별로 한 칸씩 켜거나, 한 클럭에 한 명령씩 흘려본다.
명령마다 실제로 거치는 단계 수가 다르다.
LOAD는 다섯을 다 쓰고, ADD와 SUB는 Mem을 건너뛰어 넷, STORE는 WB이 없어 넷, BEQ는 셋이다.
STEP을 누르면 Fetch부터 한 단계씩 블록이 켜지며 데이터가 왼쪽에서 오른쪽으로 흐른다.
한 클럭 보기로 바꾸면 명령 하나가 통째로 한 클럭에 끝나는 게 보인다.
AUTO를 켜면 매 클럭 한 명령씩 프로그램이 돈다.
LOAD r1,[r2] · r1 ← Mem[r2]
STEP을 누르면 Fetch부터 한 단계씩 켜짐
STEP을 누르면 Fetch 블록부터 차례로 켜짐, 신호가 왼→오로 한 줄로 흐름
켜진 단계의 지연을 직렬로 다 더한 값이 이 명령의 경로 길이임. 그중 가장 긴 명령의 경로가 클럭 한 박자의 최소 길이 = critical path.
클럭 주기는 가장 긴 명령의 경로(critical path)로 정함, 여기선 LOAD = 8ns. ADD가 빨라도 클럭은 제일 느린 LOAD에 맞춰 늘어남. 느린 명령 하나가 모두의 클럭을 정함.
한 명령 = 한 클럭이라 제어가 단순함. 대신 모든 클럭이 최장 경로만큼 느림, 이 한계가 19강 실행과 최종 MyChip의 클럭 속도로 들어감. 다음 강에서 이 경로를 토막 내 빠르게 만듦(파이프라인).
가장 긴 경로가 클럭을 정한다
싱글사이클의 클럭 한 박자는 가장 느린 명령이 끝나기에 충분한 시간이어야 한다. 이 최장 경로를 critical path라 한다.
각 단계는 조합 회로라 통과에 시간이 든다. 그중 메모리 읽기가 제일 느리다.
ADD는 F·D·X·W만 거쳐 짧다. LOAD는 F·D·X·M·W를 다 거쳐 가장 길다.
클럭은 한 종류뿐이라, 빠른 ADD도 느린 LOAD에 맞춘 박자를 써야 한다.
그래서 클럭 주기는 가장 긴 명령의 경로 길이로 고정된다. 주기의 역수가 최대 클럭 주파수다.
이게 싱글사이클의 약점이다. 제어는 단순한데 모든 클럭이 최장 경로만큼 느리다.
한 명령 = 한 사이클
싱글사이클의 규칙은 명령 하나에 클럭 하나다. 그래서 셈이 단순하다.
매 클럭의 상승 edge마다 결과가 한꺼번에 박힌다. 레지스터와 데이터메모리, PC가 동시에 갱신된다.
edge 전엔 조합 회로가 답을 다 만들어둔 상태고, edge 순간에 그 답이 자리를 바꾼다.
그래서 명령이 N개면 정확히 N 클럭이 든다.
장점은 단순함이다. 한 명령에 한 클럭이라 제어가 깔끔하다.
단점은 느림이다. 모든 클럭이 최장 경로(LOAD)에 묶여 ALU가 노는 시간이 많다.
Q. 싱글사이클 CPU의 클럭 주기를 정하는 것은 무엇인가?
정답은 가장 긴 명령의 경로(critical path)다.한 클럭 안에 모든 명령이 끝나야 하므로, 클럭 주기는 제일 느린 명령(보통 LOAD로, F·D·X·M·W를 다 거친다)이 완료되기에 충분한 길이여야 한다.
빠른 ADD도 같은 클럭을 쓰므로 손해를 본다. critical path의 역수가 최대 클럭 주파수다.
한 주기에 명령 하나가 다섯 단계를 다 끝내고, edge에서 결과가 박힌다. 명령이 N개면 N 클럭이다.