이번 문서의 목표: 이 파일을 다 읽으면 파이프라인 기본 개념과 사이클 수 계산을 짧게 복습하고, “명령어 수 × CPI × 클록 주기” 공식으로 실제 실행시간(초 단위)을 계산하며, 암달의 법칙(Amdahl’s Law)으로 파이프라인이 시스템 전체 성능에 미치는 영향을 구할 수 있다.
이 편에서 다시 짚어야 할 것과 새로 풀어야 할 것
파이프라인의 기본 개념, 단계 분할, 총 사이클 수 공식(), 사이클 수 기준 속도향상 공식은 이미 독학사 2단계 컴퓨터구조 19편에서 계산했다. 그 편의 속도향상 계산은 “사이클 수”만 비교했다는 한계가 있다 — 실제로는 파이프라인을 도입하면 클록 주기 자체의 길이도 바뀔 수 있고, 프로그램 전체 중 파이프라인의 이득을 못 보는 부분이 섞여 있을 수도 있다. 이 편은 이 두 가지를 정면으로 다뤄, 사이클 수 비교보다 한 단계 더 현실적인 성능 계산으로 나아간다.
요약 복습
쉽게 말하면: 파이프라인은 명령어 처리 과정을 여러 단계로 나눠 각 단계를 다른 하드웨어가 동시에 처리하게 하는 기법이다.
| 개념 | 공식 | 자세히 다루는 편 |
|---|---|---|
| 단계 파이프라인, 명령어 개의 총 사이클 수 | 2단계 컴퓨터구조 19편 | |
| 사이클 수 기준 속도향상 | 2단계 컴퓨터구조 19편 | |
| 구조적·데이터·제어 해저드 | (정성적 정의) | 2단계 컴퓨터구조 19편, 이 과목 08편 |
실행시간의 세 요소: 명령어 수, CPI, 클록 주기
쉽게 말하면: 프로그램이 실제로 몇 초 걸리는지 알려면 “명령어가 몇 개인지”, “명령어 하나에 클록이 몇 번 도는지”, “클록 한 번이 몇 초인지”를 모두 곱해야 한다.
컴퓨터 시스템의 실행시간을 결정하는 세 요소를 하나로 묶은 식을 흔히 프로세서 성능의 기본 공식이라 부른다.
- (Instruction Count, 명령어 수): 프로그램이 실행되는 동안 처리한 전체 명령어 개수
- (Cycles Per Instruction, 명령어당 평균 클록 수): 명령어 하나를 처리하는 데 평균적으로 몇 클록이 걸리는지
- (클록 주기): 클록 한 번이 도는 데 걸리는 시간. 클록 주파수(clock frequency, )의 역수다:
이 세 요소는 서로 트레이드오프(trade-off) 관계에 있다. 파이프라인을 도입하면 CPI는 이상적으로 1에 가까워지지만(06편·19편에서 본 것처럼 사이클 수가 줄어드는 효과), 파이프라인 단계 사이마다 결과를 잠시 붙잡아 두는 래치(latch, 03편 순서논리회로에서 다룬 플립플롭의 응용)를 추가해야 하므로 클록 주기 자체가 아주 조금 늘어나는 경우가 많다. “사이클 수만 줄이면 무조건 빨라진다”는 결론은 이 클록 주기 변화를 빠뜨린 반쪽짜리 계산이다.
예제: 파이프라인 도입 전후의 실제 실행시간(초 단위) 비교
같은 프로그램을 처리하는 두 CPU를 비교한다. 둘 다 명령어 수는 100만 개(IC = 1,000,000)로 같다.
- 비파이프라인 CPU: 4단계(인출-해독-실행-기록)를 순차적으로 처리하므로 명령어 하나당 평균 4클록이 걸린다(CPI = 4). 클록 주기는 1나노초(clock frequency 1GHz)다.
- 파이프라인 CPU: 같은 4단계를 파이프라인으로 처리해 이상적인 CPI = 1에 도달했다. 다만 단계 사이에 래치를 추가하면서 클록 주기가 1.1나노초로 조금 늘었다.
1단계: 비파이프라인 CPU의 실행시간을 계산한다.
2단계: 파이프라인 CPU의 실행시간을 계산한다.
3단계: 실제 속도향상을 구한다.
결과 해석: 이상적으로는 4단계 파이프라인의 CPI가 1이 되었으니 “4배 빨라졌다”고 기대하기 쉽지만, 클록 주기가 1나노초에서 1.1나노초로 10퍼센트(10%) 늘어난 대가로 실제 속도향상은 약 3.64배에 그쳤다. CPI만 줄었다고 실행시간이 그 비율만큼 그대로 줄어드는 것은 아니다 — 클록 주기 변화까지 함께 곱해야 진짜 실행시간이 나온다.
시험 함정: “이상적인 파이프라인의 CPI는 1이므로, 단계 파이프라인은 항상 배 빨라진다”는 진술은 두 가지 이유로 틀렸다. 첫째, 19편에서 봤듯 명령어 개수 이 유한하면 공식 때문에 속도향상이 보다 작다. 둘째, 이 편에서 본 것처럼 파이프라인 도입으로 클록 주기 자체가 늘어나면 그만큼 속도향상이 더 깎인다.
암달의 법칙: 프로그램의 일부만 빨라질 때의 전체 속도향상
쉽게 말하면: 프로그램 전체가 파이프라인의 덕을 보는 것은 아니다. 파이프라인으로 빨라지는 부분과 그렇지 않은 부분을 나눠서, 전체적으로 얼마나 빨라지는지를 계산하는 것이 암달의 법칙이다.
03편(선행)에서 암달의 법칙(Amdahl’s Law)의 기본형을 다뤘다. 이 편에서는 그 공식을 파이프라인 성능 개선에 실제로 적용한다.
- : 전체 실행시간 중 개선(파이프라인 적용)이 가능한 부분이 차지하는 비율(0과 1 사이)
- : 개선이 불가능한, 즉 파이프라인을 적용해도 그대로인 부분의 비율
- : 개선 가능한 부분만 따로 봤을 때의 속도향상(위에서 구한 파이프라인의 실제 속도향상 값을 그대로 쓸 수 있다)
예제: 프로그램의 80퍼센트만 파이프라인의 이득을 볼 때
앞서 구한 파이프라인 속도향상 를 그대로 쓰고, 이 프로그램에서 파이프라인 적용이 가능한 연산이 전체 실행시간의 80퍼센트()를 차지한다고 하자(나머지 20퍼센트는 입출력 대기처럼 파이프라인과 무관한 부분이다).
1단계: 개선 불가능한 부분의 비율을 구한다.
2단계: 개선 가능한 부분이 개선 후 차지하는 상대적인 시간을 구한다.
3단계: 분모를 더한다.
4단계: 역수를 취해 전체 속도향상을 구한다.
결과 해석: 파이프라인 자체는 약 3.64배 빨라지는 기술이지만, 프로그램 전체 관점에서는 파이프라인의 혜택을 못 받는 20퍼센트 때문에 실제 전체 속도향상은 약 2.38배로 더 줄어든다. 이것이 암달의 법칙이 주는 핵심 교훈이다 — 아무리 한 부분을 빠르게 만들어도, 그 부분이 전체에서 차지하는 비중이 작으면 전체 성능 개선 효과는 제한적이다.
시험 함정: 암달의 법칙 공식에서 분자를 로, 분모를 로 두는 순서를 헷갈리기 쉽다. (전체가 다 개선된다)이면 공식이 가 되어 개선 부분의 속도향상과 정확히 같아진다는 점으로 공식의 방향을 검산할 수 있다.
자주 틀리는 점
- CPI가 줄어든 비율을 그대로 실행시간이 줄어든 비율로 착각해, 클록 주기 변화를 계산에서 빠뜨린다.
- 암달의 법칙에서 를 “개선된 정도”로, 를 “개선 가능한 부분의 비율”로 뒤바꿔 대입한다. 는 시간의 비율(0~1), 는 배수(1 이상)라는 단위 차이로 구분해야 한다.
- 파이프라인의 이상적 CPI(=1)와 해저드가 있을 때의 실제 CPI를 혼동한다. 해저드로 인한 CPI 증가는 이 과목 08편에서 정량적으로 계산한다.
핵심 정리
- 실행시간 = 명령어 수(IC) × CPI × 클록 주기이며, 파이프라인은 CPI를 줄이는 대신 클록 주기를 늘릴 수 있으므로 두 효과를 함께 계산해야 진짜 속도향상이 나온다.
- 이상적인 단계 파이프라인의 속도향상은 유한한 명령어 개수와 클록 주기 증가라는 두 가지 이유로 이론적 최댓값 보다 항상 작거나 같다.
- 암달의 법칙은 전체 속도향상 = 1 / ((1-f) + f/S)로 계산하며, 개선 가능한 부분의 비율 가 작을수록 아무리 그 부분을 빠르게 만들어도 전체 성능 개선은 제한된다.
- 파이프라인의 정성적 정의(단계, 해저드 종류)는 2단계 컴퓨터구조에서 이미 다뤘으므로, 이 과목은 클록 주기·암달의 법칙을 더한 정량적 통합 계산에 집중한다.