스킬캠퍼스

오늘 끝나면

멀티사이클 CPU와 마이크로코드

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

실습 미션

한 명령을 여러 상태로 — microcode table 이 문장이 실제로 무슨 뜻인지 실습에서 한 번 손으로 확인한다.

성공 조건

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

반도체 설계 · 35

멀티사이클 CPU와
마이크로코드

싱글사이클은 가장 느린 명령에 클럭을 맞춰야 한다.
멀티사이클은 한 명령을 짧은 상태 여러 개로 쪼갠다. 그리고 필요한 단계만 쓴다.
각 명령을 micro-op 표로 적은 것이 마이크로코드다.

P.01반도체 설계 · 35

싱글사이클의 한계, 제일 느린 명령이 클럭을 정한다

싱글사이클은 어떤 명령이든 한 클럭에 끝낸다. 깔끔해 보이지만 함정이 있다.

명령마다 거치는 회로 길이가 다르다.
ADD는 레지스터를 읽고 ALU를 한 번 거치면 끝난다.
LOAD는 주소를 계산한 뒤 메모리까지 다녀와야 해서 훨씬 오래 걸린다.

한 클럭에 다 끝내려면 클럭 주기를 제일 느린 명령에 맞춰야 한다.
그러면 빠른 ADD도 느린 LOAD 시간만큼 칸에서 놀다 간다.
빠른 명령이 아무리 많아도 전체 클럭은 느리다. 회로도 명령 종류마다 따로 깔려 낭비된다.

명령별 실제 소요 vs 고정 클럭 주기
싱글사이클, 클럭은 제일 느린 명령에 고정된다
ADD레지스터 + ALU
놀고 기다린다
SUB레지스터 + ALU
놀고 기다린다
BEQ비교 + 주소
놀고 기다린다
STORE주소 + 메모리 쓰기
놀고 기다린다
LOAD주소 + 메모리 읽기 + 기록
고정 클럭 주기는 LOAD에 맞춘다. 빠른 명령도 그만큼 기다린다
P.02반도체 설계 · 35

멀티사이클, 한 명령을 짧은 상태 여러 개로 쪼갠다

멀티사이클은 발상을 뒤집는다. 한 명령을 한 칸에 욱여넣지 않는다.

명령 처리를 짧은 단계로 나눈다. 인출(IF), 해석(ID), 실행(EX), 메모리(MEM), 기록(WB) 순이다.
한 클럭에 한 단계만 한다. 그래서 클럭 주기를 짧게 잡을 수 있다. 제일 긴 회로가 아니라 제일 긴 단계에만 맞추면 된다.

핵심은 명령마다 필요한 단계만 쓴다는 것이다.
ADD는 MEM 단계가 필요 없으니 건너뛴다. 4단계면 끝난다.
LOAD만 5단계를 다 거친다. 짧은 명령은 짧게 끝나니 평균이 빨라진다.
게다가 ALU나 메모리 같은 회로를 단계마다 돌려 쓰니 부품도 덜 든다.

긴 한 칸을 짧은 상태들로 분할
멀티사이클, 짧은 단계로 쪼갠다
싱글사이클은 한 칸에 다 욱여넣는다
긴 클럭 1회
멀티사이클은 짧은 단계 여러 개로 나눈다 (ADD 예시)
IF사용
ID사용
EX사용
MEM건너뜀
WB사용

ADD는 MEM이 필요 없어 건너뛰니 4단계면 끝난다

클럭 주기는 제일 긴 단계에만 맞추면 된다
P.03반도체 설계 · 35

마이크로코드, 명령을 micro-op 표로 적는다

각 명령이 단계마다 무슨 신호를 켜는지 적은 표가 마이크로코드다.

한 명령은 micro-operation 여러 줄로 풀린다.
한 줄(micro-op)은 그 상태에서 켤 제어 신호의 묶음이다. 어느 레지스터를 읽고, ALU에 무슨 연산을 시키고, 어디에 쓸지를 담는다.

제어부를 회로로 일일이 깎는 대신, 이 표를 작은 ROM에 담아둔다. 이것을 마이크로코드라 한다.
상태가 바뀔 때마다 표의 다음 줄을 읽어 신호를 내보낸다. 명령을 바꾸거나 고치려면 표만 갈면 되니 유연하다.
대신 표가 길고 상태 전이가 많아져 제어가 복잡해진다. 유연함의 대가다.

명령 하나가 단계별 micro-op 줄이 된다
ADD의 마이크로코드, 단계별 micro-op
상태micro-op켜는 신호
IFMEM[PC] → IRMemRead, IRwrite
IDRegRead rs,rtRegRead
EXALU: rs + rtALUop=ADD
WBresult → rdRegWrite
이 표를 작은 ROM에 담는다. 명령을 바꾸려면 표만 갈면 된다
P.04반도체 설계 · 35

직접 micro-op 표를 짜고 단계별로 돌린다

16비트 CPU와 8 레지스터로 명령을 골라 micro-op 표를 한 단계씩 실행한다.

명령이 몇 단계에 끝날지 먼저 예측한 뒤 STEP으로 micro-op를 한 줄씩 실행한다.
단계마다 어느 신호가 켜지고 레지스터와 PC가 어떻게 바뀌는지는 근거 패널에 나온다.

ADD는 MEM을 건너뛰어 빨리 끝나고, LOAD는 5단계를 다 쓴다. 명령마다 길이가 다르다.
이 micro-op 표 구성이 최종 MyChip의 제어부로 들어간다.

명령 선택 · 예측 · STEP 실행 + 근거 패널
멀티사이클 CPU · 16비트 + 8레지스터, micro-op 실행
명령 선택, 각자 쓰는 단계가 다름

ADD R3, R1, R2

R1+R2를 R3에

예측 먼저, 이 명령은 몇 단계(클럭)에 끝날까?
상태, 쓰는 단계만 사용0 / 4 클럭
IF대기
ID대기
EX대기
MEM
WB대기
micro-op 표, 상태별 켜는 신호
IFIR ← MEM[PC]; PC ← PC+1
MemReadIRwritePCinc
IDA ← R1; B ← R2
RegRead
EXALUout ← A + B
ALUop=ADD
WBR3 ← ALUout
RegWrite
근거 패널, 레지스터 · PC · 래치 (단계마다 갱신)
R00
R112
R27
R30
R40
R50
R60
R70
PC
0
A
B
ALUout
지금 켜진 제어 신호
STEP을 누르면 micro-op가 신호를 켠다

명령을 고르고 STEP을 눌러 micro-op를 한 줄씩 실행해 본다. 이 micro-op 표 구성이 최종 MyChip의 제어부로 들어간다.

P.05반도체 설계 · 35

유연함과 복잡함의 맞교환

멀티사이클과 마이크로코드는 공짜가 아니다. 얻는 것과 잃는 것이 분명하다.

얻는 것을 보자. 짧은 명령은 짧게 끝나 평균이 빨라진다. ALU와 메모리를 돌려 써서 회로가 작아진다.
명령을 표로 적으니 새 명령 추가나 버그 수정이 표 수정으로 끝난다. 실리콘을 다시 깎지 않아도 된다.

잃는 것도 있다. 명령 하나에 여러 클럭이 든다. 상태기계와 micro-op ROM 때문에 제어부가 복잡해진다.
그래서 단순하고 고정된 명령에는 배선 제어가, 복잡하고 가변적인 명령에는 마이크로코드가 유리하다. 정답은 명령 집합에 달려 있다.

Q. 멀티사이클이 싱글사이클보다 빠를 수 있는 이유는?정답은 명령마다 필요한 단계만 써서 짧은 명령은 빨리 끝나기 때문이다.
싱글사이클은 클럭을 제일 느린 명령(LOAD)에 맞춰서 빠른 ADD도 그 시간을 다 기다린다.
멀티사이클은 ADD가 MEM 단계를 건너뛰어 4단계에 끝나고 LOAD만 5단계를 쓴다. 짧은 명령이 많을수록 평균이 빨라진다.
배선 제어 vs 마이크로코드 제어
배선 제어 vs 마이크로코드
배선 제어마이크로코드
명령당 클럭1 (고정)4~5 (가변)
클럭 주기긺 (최악 명령)짧음 (최악 단계)
회로 양많음 (명령별)적음 (돌려 씀)
명령 추가·수정실리콘 재설계표만 수정
제어 복잡도단순복잡 (상태기계)
단순하고 고정된 명령에는 배선, 복잡하고 가변적인 명령에는 마이크로코드

3줄 요약

  1. 1한 명령을 여러 상태로 — microcode table
  2. 2멀티사이클 CPU와 마이크로코드은 비트·게이트 → ALU → 시간·메모리 → 나만의 CPU → 메모리·GPU·SoC 흐름 안의 한 칸이다.
  3. 3개념을 외우는 것보다 입력을 바꾸면 무엇이 달라지는지 보는 것이 우선이다.

완료 전 점검

복습 카드

멀티사이클

한 명령을 여러 상태로 — microcode table

ALU

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

ISA

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