오늘 끝나면
클럭과 타이밍
- ✓클럭과 타이밍의 핵심 문제를 한 문장으로 설명한다
- ✓오른쪽 실습에서 클럭과이 어떻게 움직이는지 관찰한다
- ✓다음 강의와 이어지는 한계를 말할 수 있다
실습 미션
edge·전파지연·glitch — 안전한 주기 고르기 이 문장이 실제로 무슨 뜻인지 실습에서 한 번 손으로 확인한다.
성공 조건
- □실습의 기본값을 먼저 관찰
- □입력값이나 모드를 한 번 이상 바꿔 결과 비교
- □왜 결과가 바뀌었는지 한 문장으로 설명
반도체 설계 · 10
클럭과
타이밍
클럭은 칩의 박자다. 모두가 같은 신호에 맞춰 한 번에 움직인다.
값은 상승 edge에서 받는다. 전파 지연이 있어 너무 빠르면 glitch가 난다.
안전 주기는 가장 긴 경로에 여유를 더한 값이다. 동기 회로의 심장이다.
클럭 = 칩 전체의 박자
지금까지 만든 게이트와 가산기, ALU는 값을 만들 줄만 안다. 그 값을 ‘언제’ 받을지, 그 박자를 정하는 게 클럭이다.
클럭은 0과 1을 규칙적으로 오가는 신호 하나다.
이 한 줄이 칩 안 수억 개 레지스터에 동시에 뿌려진다.
모두 같은 박자에 맞춰 한 번에 값을 받는다. 이게 동기 회로다.
주기 T는 한 박자의 길이다. 1초에 박자를 몇 번 치느냐가 주파수다.
T = 1ns면 초당 10억 번이고 1GHz다.
그래서 ‘3GHz CPU’는 1초에 30억 박자를 친다는 뜻이다.
edge 한 번에 모든 레지스터가 한꺼번에 받는다
값은 edge에서 받는다
레지스터는 박자 내내 값을 받는 게 아니다. 클럭이 0에서 1로 바뀌는 그 순간, 딱 한 점에서만 받는다. 그 순간이 상승 edge다.
0에서 1로 올라가는 순간이 상승(rising) edge이고, 1에서 0으로 내려가는 순간이 하강(falling) edge다.
대부분의 설계는 상승 edge 하나만 쓴다. 박자마다 정확히 한 번씩 값을 잡는다.
edge에서 받는다는 게 핵심이다. 그 사이엔 입력이 아무리 흔들려도 무시한다.
오직 edge가 도착하는 그 찰나의 값만 레지스터에 들어간다.
그래서 ‘그 찰나에 값이 안정돼 있느냐’가 모든 문제의 출발점이다.
전파 지연, 값이 굳는 데 걸리는 시간
게이트는 즉시 답을 내지 못한다. 입력이 바뀌면 트랜지스터가 켜지고 전선이 채워지는 데 시간이 걸린다. 그 시간이 전파 지연(t_pd)이다.
한 게이트의 지연은 작지만, 신호는 보통 게이트 여러 개를 줄줄이 통과한다.
가산기의 carry처럼 게이트가 길게 이어진 경로일수록 t_pd가 커진다.
입력에서 출력까지 가장 오래 걸리는 길을 임계 경로(critical path)라 한다.
입력이 바뀌고 t_pd가 지나기 전엔 출력이 흔들리는 중이라 아직 답이 아니다.
t_pd가 지나야 비로소 값이 굳어 ‘진짜 답’이 된다.
다음 edge는 반드시 이 값이 굳은 뒤에 와야 한다. 안 그러면 흔들리는 값을 잡아버린다.
너무 빠르면 glitch, 직접 조여본다
주기를 줄이거나 경로를 늘려 edge가 어디서 깨지는지 찾는다. 실행 전에 안전한지 glitch인지 먼저 예측하고 결과와 맞춰본다.
위는 클럭(CLK)이고 아래는 입력(D)의 안정 상태다.
매 박자 앞쪽 흔들리는 구간은 전파 중(accent)이고, 그 뒤가 안정 구간이다.
상승 edge가 안정 구간에 떨어지면 OK, 흔들리는 구간에 떨어지면 glitch(빨강)다.
주기 슬라이더를 오른쪽으로 밀면 클럭이 빨라지고, 지연 슬라이더를 올리면 경로가 길어진다.
여기서 고른 안전 주기가 칩의 동작 주파수가 된다.
오른쪽으로 갈수록 주기가 짧아진다 = 클럭이 빨라진다
게이트를 더 끼울수록(경로↑) 값이 안정되는 데 오래 걸린다
여유 = T − t_pd = 12 − 7 = 5 ≥ 마진 1 → OK
| edge | T | t_pd | 여유 | 판정 |
|---|---|---|---|---|
| 1 | 12 | 7 | 5 | – |
| 2 | 12 | 7 | 5 | – |
| 3 | 12 | 7 | 5 | – |
| 4 | 12 | 7 | 5 | – |
| 5 | 12 | 7 | 5 | – |
| 6 | 12 | 7 | 5 | – |
값이 안정된 뒤(여유 ≥ 마진) edge가 도착하니 매 박자 제대로 받는다. 이 주기는 안전하다.
안전한 주기 = 가장 긴 경로 + 여유
주기는 가장 긴 경로가 굳을 때까지 기다려주는 길이로 잡는다.
안전 조건은 한 줄이다. T ≥ 임계 경로 t_pd + 여유.
여유(셋업 마진)는 레지스터가 값을 받기 직전에 잠깐 안정돼 있어야 하는 시간이다.
온도와 전압, 공정 편차로 지연이 들쭉날쭉하니 늘 조금 더 보태둔다.
최대 주파수는 임계 경로 하나가 정한다. 가장 느린 길이 칩 전체 속도를 묶는다.
그래서 빠른 칩을 만들려면 임계 경로를 짧게 쪼개야 한다. 파이프라이닝이 이걸 한다.
무작정 클럭만 올리면 신호가 못 따라와 glitch만 늘 뿐이다.
Q. 클럭을 너무 빠르게(주기를 너무 짧게) 하면 무슨 일이 일어나나?
정답은 glitch(오판독)다.주기가 임계 경로 t_pd보다 짧으면, edge가 도착할 때 출력이 아직 전파 중(흔들림)이다.
레지스터가 안정되기 전의 잘못된 값을 잡아버려 회로가 틀린 답을 낸다.
그래서 안전 주기 T ≥ t_pd + 여유를 지켜야 한다.