오늘 끝나면
빨라지려는 CPU
- ✓클럭만 올리는 게 왜 한계(파워 월)인지 연도와 함께 한 줄로 설명함
- ✓파이프라인이 5단계를 겹쳐 처리량(IPC)을 올리는 원리를 그림으로 그림
- ✓캐시 히트율과 분기예측 적중률이 왜 속도를 좌우하는지 말함
실습 미션
오른쪽 비교기에서 같은 명령 수를 순차 vs 파이프라인으로 돌려 IPC 차이를 확인하고, 캐시 히트율을 낮춰 파이프라인이 느려지는 걸 직접 봄.
성공 조건
- □순차와 파이프라인의 총 사이클·IPC가 어떻게 다른지 봤음
- □파이프라인 차트에서 단계가 한 칸씩 겹치는 걸 확인했음
- □캐시 히트율을 낮춰 Mem 단계가 멈추고 IPC가 떨어지는 걸 봤음
클럭 · 파이프라인 · 캐시 · 분기예측
빨라지려는 CPU
같은 명령 루프를 더 빨리 돌리는 길. 박자만 올리는 게 아니라 단계를 겹치고, 데이터를 가까이 두고, 다음 명령을 미리 추측함.
클럭만 올려선 벽에 막힌다
CPU는 클럭이라는 박자에 맞춰 한 명령씩 처리함. 박자가 빠를수록 초당 더 많이 함.
그래서 한동안은 클럭이 곧 성능이었음. 1971년 인텔 4004가 0.74MHz, 2000년 펜티엄4가 1.5GHz까지 — 30년간 박자만 2천 배 올림.
2004년, 인텔이 4GHz 펜티엄을 끝내 취소함. 클럭을 올릴수록 전력과 발열이 제곱으로 늘어 더는 못 식힘 — 파워 월(power wall)이라 부름.
그래서 박자 말고 다른 데서 속도를 짜내기 시작함. 한 박자에 더 많은 일을 하게 만드는 쪽으로. 이게 이 강의 나머지 세 길임.
30년간 박자를 2천 배 올렸지만, 전력은 클럭의 제곱으로 늘어남. 2004년 인텔이 4GHz 펜티엄을 취소함 — 이때부터 박자 말고 다른 길을 팜.
파이프라인 — 단계를 겹쳐 처리
명령 하나는 보통 5단계로 나뉨 — 가져오기(Fetch) · 해독(Decode) · 실행(Exec) · 메모리(Mem) · 쓰기(Write).
순차로 하면 한 명령이 5단계를 다 끝내야 다음을 시작함. 나머지 4개 회로는 노는 셈임.
파이프라인은 빨래방처럼 단계를 한 칸씩 겹침. 1번 빨래가 건조기로 넘어가면 2번 빨래가 바로 세탁기에 들어감.
다 채워지면 한 사이클마다 명령 하나가 완성됨. 박자는 그대로인데 처리량(IPC)이 몇 배가 됨. 1989년 인텔 486이 처음으로 이걸 칩에 넣음.
한 칸씩만 밀려 단계가 대각선으로 겹침. 채워진 뒤로는 매 사이클 명령 하나가 완성됨 — 박자는 그대로인데 4배 가까이 빨라짐.
캐시 — 자주 쓰는 데이터를 가까이
메모리(RAM)는 멀어서 느림. 거기서 값 하나 가져오는 동안 파이프라인이 수십 사이클 멈춤(stall).
캐시는 자주 쓰는 데이터를 CPU 바로 옆에 둔 작고 빠른 저장임. 옆에 있으면 몇 사이클 만에 꺼냄.
찾는 값이 캐시에 있으면 히트, 없어서 멀리 RAM까지 가야 하면 미스. 히트율이 높을수록 안 멈춤.
현실에서 효과가 큰 건 데이터에 규칙이 있어서임 — 방금 쓴 걸 또 쓰고, 옆 칸을 이어 씀. 그래서 미리 가까이 모아두면 대부분 히트가 됨.
파란 칸 = 지금 캐시에 올라와 있음
아직 안 읽음. 같은 칸을 두 번 눌러보셈 — 두 번째는 HIT가 됨.
현실 데이터는 방금 쓴 걸 또 쓰는 규칙(지역성)이 있어, 가까이 모아두면 대부분 히트가 됨. 히트율이 오를수록 평균 지연이 뚝 떨어짐.
분기예측 — 다음 명령을 미리 추측
분기(if 같은 갈림길)도 파이프라인의 적임. 어디로 갈지 정해질 때까지 기다리면 뒤 칸이 빔.
그래서 분기예측기가 다음에 갈 길을 미리 추측해 파이프라인을 채워 둠. 멈추지 않고 계속 달림.
맞으면 공짜로 빨라지고, 틀리면 잘못 채운 걸 비우고 다시 — 이 벌점이 보통 15~20사이클임.
비결은 과거 기록임. 같은 분기가 지난번에 어디로 갔는지 외워두면 다음도 그쪽일 확률이 큼. 요즘 칩은 분기의 95% 이상을 맞힘.
아직 없음. 같은 결과를 두세 번 먹이면 예측기가 외워서 곧 맞히기 시작함.
패턴이 반복되면 예측기가 외워서 곧 100%에 가깝게 맞힘 — 멈추지 않고 달림. 틀릴 때만 파이프라인을 비우는 +15사이클 벌점을 냄. 요즘 칩은 95% 이상 맞힘.
직접 파이프라인 돌려보기
오른쪽 비교기에서 같은 명령들을 순차 vs 파이프라인으로 직접 돌려볼 것.
명령 수를 늘리고 실행 방식을 토글하면 타이밍 차트에서 단계가 한 칸씩 겹치고, 총 사이클·IPC가 즉시 바뀜.
캐시 히트율을 낮추면 Mem 단계가 멈추는(stall) 검은 칸이 끼고 파이프라인이 느려지는 것도 보임.
여기서 본 네 가지 — 클럭·파이프라인·캐시·분기예측이 한 칩 안에서 동시에 굴러 같은 명령 루프를 더 빨리 짜냄.
파이프라인은 단계를 한 칸씩 겹침. 채워지면 한 사이클마다 명령 하나가 완성됨 — IPC가 1에 가까워짐.