
컴퓨터 구조 및 설계(David A. Patterson & John L. Hennessy) 와 학부 '컴퓨터 구조' 강의를 기반으로 이해한 내용을 정리하였습니다.
성능

성능 비교의 기본 원칙
비행기를 예를 들어보죠.
비행기의 성능을 승객 수, 운항 거리, 순하아 속도 세 가지 지표로 비교할 때
비율(ratio)로 비교해야 합니다. 차이(difference)가 아니라요. 200명과 800명을 비교할 때, 600명 차이가 아니라 4배로 표현해야 맞습니다. 비율은 반복 횟수에 관계없이 일정한 반면, 차이는 횟수에 따라 달라지기 때문입니다.
여러 이질적인 지표들을 종합할 때에는 기하평균(Geometric Mean)을 사용합니다. 산술평균을 사용하지 않아요.
왜 기하평균을 사용할까?
산술평균은 더하기의 관점에서 균등화하죠.
2와 3의 산술 평균은 2.5 이죠.
□ + □ = 2 + 3 일 때
□ 찾기
기하평균은 곱하기 관점에서 균등화 합니다.
올해 재산이 2배 늘고, 내년에 3배 늘면 2년 동안 6배가 늘어난 것이죠. 그러면 매년 평균 몇 배일까요?
산술평균으로 구하면 2.5배입니다만, 2.5 * 2.5 = 6.25라서 6배 늘어난 것과는 다른 값이죠. 맞지 않습니다.
따라서 기하평균을 적용한 $\sqrt{2 \times 3} = \sqrt{6} \approx 2.45 배$ 가 정확합니다.
비율은 곱셈 관계이기 때문에 이또한 기하평균이 낫습니다.
A, B 팀이 서로 축구와 야구 종목 경기를 한다고 했을 때, A가 2배 잘하고 야구를 B가 2배 잘했다면, 기하평균은 $\sqrt{2*0.5} = 1$, 즉 동등하다는 결론을 낼 수 있죠.
Response Time vs Throughput
- Response time(응답시간): 하나의 작업을 완료하는데 걸리는 시간. 작을수록 좋아요.
- Throughput(처리율): 단위 시간당 처리하는 작업의 양. 클수록 좋아요.
두 지표는 역수관계에 있습니다. 응답 시간을 줄이면 대체적으로 처리율도 올라가죠.
하지만 예외도 있어요.
프로세서를 더 좋을 것으로 교체하면 응답시간도 줄고 처리율도 올라요. 하지만 프로세서를 추가하는 방법을 쓰면(병렬 처리), 처리율은 올라가지만 개별 작업의 응답 시간은 변하지 않을 수 있습니다.
대전 일기예보를 하나의 프로세서가 처리하는 시간은 그대로라면 동시에 부산 일기예보를 다른 프로세서가 처리할 수 있기 때문에 전체 처리율이 올라가는 겁니다.
Relative Performance 상대성능
$$성능(Performance) = 1 / 실행시간(Execution time)$$
X가 Y보다 n배 빠르다는 것은 어떤 뜻일까요?
$$Performance_X/Performance_Y = n$$
이는 Execution TIme_Y / Execution Time_X = n과 같다(역수관계).
e.g.
프로그램이 A에서 10초, B에서 15초 걸렸다면, A가 B보다 15/10 = 1.5배 빠릅니다.
5초 빠르다 아닙니다!
1.5배 빠르다 로 표현하는게 맞습니다!
비율이 비교의 올바른 도구라는 점!!!!
Execution Time 측정
Elapsed time(경과 시간)
I/O, OS 오버헤드, 다른 작업 간섭 등을 모두 포함한 전체 응답 시간. 시스템 전체의 성능을 결정합니다.
CPU time
I/O 대기 시간, 다른 작업에 소요된 시간 등을 제외하고, 순수하게 해당 프로그램을 처리하는 데 CPU가 사용한 시간만 측정한 것.
- User CPU time: 응용 프로그램 자체에 소요된CPU 시간
- System CPU time: 운영체제가 해당 프로그램을 위해 소요한 CPU 시간
컴퓨터 구조에서는 주로 User CPU time에 초점을 맞춥니다. 운영체제에 의한 시간은 가능한 배제하고, CPU가 instruction을 처리하는 데 얼마나 시간이 걸리는지를 기준으로 삼습니다.
CPU Clocking
디지털 하드웨어는 일정한 속도의 클록(Clock)에 의해 동작이 제어됩니다.
- Clock period(Clock cycle time): 한 클록 사이클의 시간 길이. e.g. 250ps = 0.25ns
- Clock frequency(Clock rate): 초당 사이클 수. e.g. $4.0 GHz = 4,000MHz = 4 * 10^9 Hz$

Clock period와 Clock frequency는 역수 관계입니다. 4 GHz라면 한 사이클의 시간은 $1/(4 * 10^9) = 250ps$
| 접두어 | 값 | 예시 |
| milli(m) | $10^{-3}$ | millisecond |
| micro(μ) | $10^{-6}$ | microsecond |
| nano(n) | $10^{-9}$ | nanosecond |
| pico(p) | $10^{-12}$ | picosecond |
CPU Performance Equation
$$CPU Time = CPU Clock Cycles * Clock Cycle Time = CPU Clock Cycles / Clock Rate$$
성능을 개선하려면 Clock Cycles 수를 줄이거나, Clock Rate를 늘리면 됩니다. 그러나 이 둘은 trade-off 관계에 있습니다.
Clock Rate를 올리면 일반적으로 필요한 Clock Cycles 수가 늘어나는 경향이 있어요. Clock Rate를 2배 올렸는데, Clock Cycles가 1.2배로 늘었다고 한다면, 그때 순수한 이득은 2배가 아니라 그보다 줄어듭니다.
CPI(Cycles Per Instruction)
Instruction 개념을 도입하면 Clock Cycles를 더 구체적으로 표현할 수 있습니다.
$$Clock Cycles = Instruction Count * CPI(Cycles Per Instruction)$$
따라서
$$CPU Time = Instruction Count * CPI * Clock Cycle Time = (Instruction Count * CPI) / Clock Rate$$
이것은 단위 분석으로도 자연스럽게 이해할 수 있어요.
$$ (Instructions / Program) * (Clock Cycles / Instruction) * (Seconds / Clock Cycle) = Seconds $$
왜 CPI가 중요한가요?
각 instruciton 마다 필요한 사이클 수가 다릅니다. 더하기는 1 사이클이면 되지만, 곱하기는 3 사이클이 필요할 수 있어요. Clock Cycle Time을 가능한 짧게(빠른 instruction에 맞게) 설정하되, 복잡한 instruction은 여러 사이클에 걸쳐 실행하는 것이 일반적인 설계 방식입니다.
가중 평균 CPI

서로 다른 종류의 instruction이 섞여 있기 때문에, 가중평균 CPI를 구해야 합니다.
$$\Sigma (CPI_i * (instruction Count_i / 전체 Instruction Count)) $$
이것은 학점 평균(GPA)을 구하는 것과 같은 원리에요. 각 과목의 학점(CPI에 해당)에 이수 단위 비율(instruction 빈도에 해당)을 가중하여 평균을 냅니다.
Performance Summary

성능에 영향을 주는 요인에는 아래 4가지가 있어요.
- 알고리즘: IC(Instruction Count)에 영향을 주고, CPI에도 영향을 줄 수 있습니다(간단한 instruction 위주 알고리즘 vs 복잡한 instruction 위주)
- 프로그래밍 언어: IC, CPI에 영향
- 컴파일러: IC, CPI에 영향
- ISA(Instruction Set Architecture): IC, CPI, CCT(Clock Cycle Time) 모두에 영향
SPEC CPU Benchmark
성능을 비교하려면 무엇으로 측정할 것인가와 어떻게 종합할 것인가가 필요합니다.

SPEC(Standard Performance Evaluation Corporation)이라는 단체가 표준 벤치마크로 프로그램 세트를 정의합니다. 다양한 응용(Perl 인터프리터, C 컴파일러, 경로 계획, 체스, 바둑, 데이터 압축 등)에 대해 실행 시간을 측정합니다.
$$SPECratio = Reference Machine의 실행시간 / 측정 Machine의 실행시간$$
이 값이 클수록 좋아요.
종합성능
각 벤치마크와 SPECratio를 모두 곱하고 n제곱근을 구합니다(기하평균). 이 값은 전이적(transitive)이에요.
여기서 전이적이라는 표현은 삼단논법이 성립한다는 겁니다.
A가 Reference 대비 2배, B가 Reference 대비 3배라면, B는 A 대비 1.5배 라는 것이 성립한다는 거죠.
모든 기계가 1대1로 직접 비교할 필요 없이, 각자 Reference 대비만 계산하면 상호 비교가 가능합니다.
'CS & AI > Computer Architecture' 카테고리의 다른 글
| <컴퓨터구조> Instruction Cont'd (0) | 2026.04.19 |
|---|---|
| <컴퓨터 구조> 기본 산술 instruction과 RISC-V Assembly Language 요약 (0) | 2026.04.17 |
| <컴퓨터구조> Instructions - Language of the Computer (0) | 2026.04.16 |
| <컴퓨터 구조> Computer Abstractions & Technology (0) | 2026.04.06 |
| <컴퓨터 구조> Digital Logiac Circuits 디지털 논리 회로 (0) | 2026.03.22 |
나의 성장 드라마
포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!