시작하기 전
이 글은 필자가 수업시간에 들은 내용과 강의록을 토대로 정리한 글입니다.
수업 필기이다 보니, 오류가 있거나 설명이 부족한 부분이 있을 수 있습니다.
궁금하신 점이나 지적하실 점이 있다면 댓글로 달아주세요! 확인 후 내용을 추가하거나 답변해드리도록 하겠습니다 :)
스펙 벤치마크(SPEC Benchmark)
실제 성능을 어떻게 벤치마킹할 수 있을까?
- 성능을 측정하기 위해 사용되는 프로그램
- Standard Performance Evaluation Copr(SPEC)
- CPU, I/O, 웹을 위한 벤치마크를 개발한다.
- SPEC CPU 벤치마크(SPEC CPU Benchmark)
- 예를 들어, SPEC CPU2006 등이 있다.
- 일련의 선택된 프로그램들을 실행하는데 걸린 총 경과시간을 측정한다.
- 후진 I/O를 사용하기 때문에, 결과적으로 CPU 성능에 초점을 맞추게 된다.
- SPEC 전력 벤치마크(SPEC Power Benchmark)
- 다양한 부하에서의 서버 전력 소모를 측정한다.
함정: 암달의 법칙(Pitfall: Amdahl's Law)
함정(Pitfall)이라고 표현한 이유는, 암달의 법칙이 종종 암달의 저주라고도 불리기 때문인 것 같다.
컴퓨터(CPU) 측면의 개선과 전반적인 성능의 향상이 비례할 것이라고 생각해서는 안된다는 것이다.
그 공식은 다음과 같다.
Timproved=improvement factorTaffected+Tunaffected
즉, 어떤 시스템의 일부를 개선하여 전체 작업이 걸리는 시간을 줄여냈다고 하더라도, 실제 개선된 전체 시간의 경우엔 영향을 받은 시간을 개선된 요소로 나누어주어야 한다는 뜻이다.
이해를 돕기 위해 정말 말도 안되는 예를 들어보자. 만약, CPU는 펜티엄 3, 32MB SDRAM(요새 나오는 DDR 4에 비하면 사람 손으로 계산하는게 빠를 정도로 느리다), 10GB HDD를 가진 컴퓨터가 있다고 가정하자. 여기에서 CPU만 최신 Intel core i7으로 바뀐다고 해서 드라마틱한 성능 향상을 기대할 수는 없다는 뜻이다. 물론 빨라지기야 하겠지만, 램의 지연(Latency), 프로그램을 읽어오는 보조기억장치의 속도(최신 HDD와 SSD만 해도 엄청난 성능 차이가 나는데, 저 당시의 HDD는 얼마나 느리겠는가)를 고려하면, CPU만 빠르다고 장땡이 아니라는 뜻이다.
즉, 우리는 여기서 전반적인 모든 요소들을 빠르게 만들어야 한다는 것을 알 수 있다.
오류: 유휴 상태에서의 적은 전력(Fallacy: Low Power at Idle)
-
소비자용 고성능 프로세서의 대명사, i7의 전력 벤치마크를 살펴보면
- 100% 부하(load)에서 258W
- 50% 부하(load)에서 170W(66% 정도)
- 10% 부하(load)에서 121W(47% 정도)
이다. 즉, 부하에 비례하게 전력을 소모하지 않는다는 것이다. 오히려 유휴 상태에서는 예상보다 훨씬 많은 전력을 소모한다.
-
구글 데이터 센터
- 거의 10% ~ 50% 부하로 구동된다.
- 100% 부하로 구동될 경우는 전체 구동 시간에서 1% 남짓이다.
-
구글의 예시를 통해 생각해보면, 프로세서를 설계(Design) 할 때, 부하에 따라서 전력을 소모할 수 있게 고려해야 함을 알 수 있다.
-
성능 지표인 MIPS를 이해하는 가장 쉬운 방법은 IPS가 무엇인지 아는 것이다. IPS는 CPU가 명령을 수행하는 속도의 단위, 즉 초당 명령수(Instruction Per Second)이다. 이 단위에, 1초에 1000개를 수행할 수 있으면 kIPS(kg, km 할 때 그 k맞다), 1백만 개이면 MIPS(Millions 혹은 Mega)와 같이 붙이는 것이다. 그리고 여기에 1.3 MIPS, 6 MIPS와 같이 숫자를 붙여서 단위와 같이 사용한다.
-
참고로, MIPS는
- 컴퓨터 간의 ISA 차이나
- 명령(Instruction) 간의 복잡도 차이를
고려하지 않는 지표이다.
-
CPI는 주어진 CPU와 프로그램에 따라서 달라진다.
(참고) MIPS 그리고 RISC vs CISC
MIPS
상술 하였듯이, Millions Instruction per Second 이거나, MIPS 아키텍쳐이다.
RISC(Reduced Instruction Set Computing) 아키텍쳐(Architecture)
- 명령어 셋(Instruction set)을 최소화해서 설계된 아키텍쳐이다.
- 예를 들어 MIPS, ARM(요새 모바일엔 다 들어가는 그것), PowerPC(이전에 매킨토시에 자주 쓰였다) 등등이 있다.
CISC(Complex Instruction Set Computing) 아키텍쳐(Architecture)
- 더 강력한 작업(Operation)을 제공한다.
- 수행되는 명령(Instructions)의 수를 줄이는 것을 목표로 한다.
- 다만, 위험한 것은 RISC 대비 느린 사이클 시간(Cycle time) 혹은 더 높이 요구되는 CPI이다.
- 예를 들어 Intel 8080, x86 아키텍쳐(앵간한 데스크탑 형태 컴퓨터에 다 들어가는 그 CPU가 이 아키텍쳐이다) 등이 있다.