스킬캠퍼스

오늘 끝나면

클럭과 타이밍

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

실습 미션

edge·전파지연·glitch — 안전한 주기 고르기 이 문장이 실제로 무슨 뜻인지 실습에서 한 번 손으로 확인한다.

성공 조건

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

반도체 설계 · 10

클럭과
타이밍

클럭은 칩의 박자다. 모두가 같은 신호에 맞춰 한 번에 움직인다.
값은 상승 edge에서 받는다. 전파 지연이 있어 너무 빠르면 glitch가 난다.
안전 주기는 가장 긴 경로에 여유를 더한 값이다. 동기 회로의 심장이다.

P.01반도체 설계 · 10

클럭 = 칩 전체의 박자

지금까지 만든 게이트와 가산기, ALU는 값을 만들 줄만 안다. 그 값을 ‘언제’ 받을지, 그 박자를 정하는 게 클럭이다.

클럭은 01을 규칙적으로 오가는 신호 하나다.
이 한 줄이 칩 안 수억 개 레지스터에 동시에 뿌려진다.
모두 같은 박자에 맞춰 한 번에 값을 받는다. 이게 동기 회로다.

주기 T는 한 박자의 길이다. 1초에 박자를 몇 번 치느냐가 주파수다.
T = 1ns면 초당 10억 번이고 1GHz다.
그래서 ‘3GHz CPU’는 1초에 30억 박자를 친다는 뜻이다.

모두가 같은 신호에 맞춰 한 번에 움직인다
하나의 클럭 → 모두 동시에
CLKR0R1R2R3

edge 한 번에 모든 레지스터가 한꺼번에 받는다

T=1ns
1GHz
T=0.33ns
3GHz
T=0.2ns
5GHz
주기가 짧을수록 주파수가 높다. 주파수는 1 / T다.
P.02반도체 설계 · 10

값은 edge에서 받는다

레지스터는 박자 내내 값을 받는 게 아니다. 클럭이 0에서 1로 바뀌는 그 순간, 딱 한 점에서만 받는다. 그 순간이 상승 edge다.

0에서 1로 올라가는 순간이 상승(rising) edge이고, 1에서 0으로 내려가는 순간이 하강(falling) edge다.
대부분의 설계는 상승 edge 하나만 쓴다. 박자마다 정확히 한 번씩 값을 잡는다.

edge에서 받는다는 게 핵심이다. 그 사이엔 입력이 아무리 흔들려도 무시한다.
오직 edge가 도착하는 그 찰나의 값만 레지스터에 들어간다.
그래서 ‘그 찰나에 값이 안정돼 있느냐’가 모든 문제의 출발점이다.

상승 edge 순간에만 새 값을 잡는다
상승 edge에서만 잡는다
잡는다잡는다잡는다
edge 사이엔 입력이 흔들려도 무시한다. 잡는 건 화살표 순간뿐이다.
P.03반도체 설계 · 10

전파 지연, 값이 굳는 데 걸리는 시간

게이트는 즉시 답을 내지 못한다. 입력이 바뀌면 트랜지스터가 켜지고 전선이 채워지는 데 시간이 걸린다. 그 시간이 전파 지연(t_pd)이다.

한 게이트의 지연은 작지만, 신호는 보통 게이트 여러 개를 줄줄이 통과한다.
가산기의 carry처럼 게이트가 길게 이어진 경로일수록 t_pd가 커진다.
입력에서 출력까지 가장 오래 걸리는 길을 임계 경로(critical path)라 한다.

입력이 바뀌고 t_pd가 지나기 전엔 출력이 흔들리는 중이라 아직 답이 아니다.
t_pd가 지나야 비로소 값이 굳어 ‘진짜 답’이 된다.
다음 edge는 반드시 이 값이 굳은 뒤에 와야 한다. 안 그러면 흔들리는 값을 잡아버린다.

입력이 바뀌면 출력은 t_pd 뒤에야 안정된다
입력 변화 → t_pd 뒤 안정
INOUTt_pd
흔들리는 구간(accent)이 t_pd다. 이 뒤에야 값이 진짜 답이 된다.
P.04반도체 설계 · 10

너무 빠르면 glitch, 직접 조여본다

주기를 줄이거나 경로를 늘려 edge가 어디서 깨지는지 찾는다. 실행 전에 안전한지 glitch인지 먼저 예측하고 결과와 맞춰본다.

위는 클럭(CLK)이고 아래는 입력(D)의 안정 상태다.
매 박자 앞쪽 흔들리는 구간은 전파 중(accent)이고, 그 뒤가 안정 구간이다.
상승 edge가 안정 구간에 떨어지면 OK, 흔들리는 구간에 떨어지면 glitch(빨강)다.

주기 슬라이더를 오른쪽으로 밀면 클럭이 빨라지고, 지연 슬라이더를 올리면 경로가 길어진다.
여기서 고른 안전 주기가 칩의 동작 주파수가 된다.

16비트 머신 · 주기 vs 지연 타이밍 스코프
타이밍 스코프 · 클럭 vs 전파 지연
스코프, 위 CLK · 아래 D(입력 안정)T=12 · t_pd=7
CLKD
안정(고정)전파 중(흔들림)glitch edge
클럭 주기 T (느림 ← → 빠름)12 ns

오른쪽으로 갈수록 주기가 짧아진다 = 클럭이 빨라진다

전파 지연 t_pd (경로 길이)7 ns

게이트를 더 끼울수록(경로↑) 값이 안정되는 데 오래 걸린다

예측 먼저, 이 주기에서 edge가 값을 잘 받을까?
timeline scrub, edge 위치edge 0 / 6
근거 패널, edge별 판정

여유 = T − t_pd = 127 = 5 ≥ 마진 1 → OK

edgeTt_pd여유판정
11275
21275
31275
41275
51275
61275

값이 안정된 뒤(여유 ≥ 마진) edge가 도착하니 매 박자 제대로 받는다. 이 주기는 안전하다.

P.05반도체 설계 · 10

안전한 주기 = 가장 긴 경로 + 여유

주기는 가장 긴 경로가 굳을 때까지 기다려주는 길이로 잡는다.

안전 조건은 한 줄이다. T ≥ 임계 경로 t_pd + 여유.
여유(셋업 마진)는 레지스터가 값을 받기 직전에 잠깐 안정돼 있어야 하는 시간이다.
온도와 전압, 공정 편차로 지연이 들쭉날쭉하니 늘 조금 더 보태둔다.

최대 주파수는 임계 경로 하나가 정한다. 가장 느린 길이 칩 전체 속도를 묶는다.
그래서 빠른 칩을 만들려면 임계 경로를 짧게 쪼개야 한다. 파이프라이닝이 이걸 한다.
무작정 클럭만 올리면 신호가 못 따라와 glitch만 늘 뿐이다.

Q. 클럭을 너무 빠르게(주기를 너무 짧게) 하면 무슨 일이 일어나나?정답은 glitch(오판독)다.
주기가 임계 경로 t_pd보다 짧으면, edge가 도착할 때 출력이 아직 전파 중(흔들림)이다.
레지스터가 안정되기 전의 잘못된 값을 잡아버려 회로가 틀린 답을 낸다.
그래서 안전 주기 T ≥ t_pd + 여유를 지켜야 한다.
T ≥ 임계 경로 t_pd + 셋업 마진
같은 경로 · 다른 주기
느린 클럭 · 안전T=12 · t_pd=7
edgeOK 받는다
빠른 클럭 · glitchT=5 · t_pd=7
edge흔들림 잡는다
T ≥ t_pd + 여유. 가장 긴 경로가 칩의 최대 주파수를 정한다.

3줄 요약

  1. 1edge·전파지연·glitch — 안전한 주기 고르기
  2. 2클럭과 타이밍은 비트·게이트 → ALU → 시간·메모리 → 나만의 CPU → 메모리·GPU·SoC 흐름 안의 한 칸이다.
  3. 3개념을 외우는 것보다 입력을 바꾸면 무엇이 달라지는지 보는 것이 우선이다.

완료 전 점검

복습 카드

클럭과

edge·전파지연·glitch — 안전한 주기 고르기

ALU

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

ISA

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