아래 표를 보고 어떤 비행기가 가장 성능이 좋다고 할 수 있겠는가?

태울 수 있는 승객의 수, 비행 거리, 속도 등 평가 기준마다 성능이 좋다고 말할 수 있는 비행기가 달라진다.
컴퓨터의 성능도 어떠한 관점에서 바라보는지에 따라 달라진다. 일반 개인 사용자에게 있어서는 응답 시간(실행 시간)이 가장 중요할 것이다. 즉, 컴퓨터가 하나의 작업을 끝내는데 걸리는 시간의 합이 개인 사용자에게 가장 체감이 큰 부분인 것이다. 하지만 데이터 센터 관리자에게는 컴퓨터가 단위 시간 당 얼마나 많은 작업을 처리할 수 있는지가 더 중요할 것이다.
따라서 지금부터 어떤 기준으로 컴퓨터의 성능을 평가할 것인지를 정해야 하는데, 우리는 CPU time을 기준으로 성능을 평가할 것이다. I/O time, OS 오버헤드 등의 다른 부분들을 제외하고 오로지 CPU time을 기준으로 삼을 것이다.
Performance = 1 / Execution time
Execution time = CPU time
클럭 사이클은 CPU의 전자 펄스이다. CPU는 주기적으로 논리적 상태가 높음 (high)과 낮음 (low)으로 변하며, 하나의 사이클 동안 CPU는 메모리 접근 instruction, 데이터 쓰기 등과 같은 기본 작업을 수행할 수 있다.

clock period는 한 사이클이 완료되는데 걸리는 시간을 의미한다. clock rate는 주기의 역수이며, 예를 들어 클럭 속도가 4GHz라면 CPU가 1초에 40억번의 클럭을 발생시킴을 의미한다.
CPU execution time = CPU clock cycles Clock cycle time (period)
= CPU clock clycles / Clock rate
간단한 예제를 통해서 위의 공식을 확인해보도록 하자.
Computer A : 2GHz clock rate, 10s CPU time
Computer B : 1.2 times clock cycles, 6s CPU time

CPI는 instruction 하나에 평균적으로 발생하는 사이클 수를 의미한다.
Clock cycles = Instructions x CPI
CPU time = Instructions x CPI x cycle time
= Instructions x CPI / clock rate
위에서 확인한 공식에서 clock cycle을 Instruction count x CPI 로 치환한 것 뿐이다. 따라서 문제에서 주어지는 조건에 따라 CPU time을 수하면 된다.

CPU time (A) = I x 2.0 x 250ps = I x 500ps
CPU time (B) = I x 1.2 x 500ps = I x 600ps
A가 1.2배 더 빠른 것을 확인할 수 있다. 성능은 CPU time의 역수라는 것을 잊으면 안된다!

sequence 1's Instruction count = 2 + 1 + 2 = 5
sequence 2's Instruction count = 4 + 1 + 1 = 6
sequence 1's cycles = 2 + 2 + 6 = 10
sequence 2's cycles = 4 + 2 + 3 = 9
sequence 1's CPI = 2
sequence 2's CPI = 1.5
알고리즘, 프로그래밍 언어, 컴파일러는 프로그램의 instruction 개수와 CPI에 영향을 미친다. 반면, ISA는 instruction 개수와 CPI 뿐만 아니라 clock rate에도 영향을 미친다. 그 이유는 하드웨어 칩을 설계할 때 어떤 ISA를 사용하는지를 확인하고 칩을 디자인하기 때문이다.

위의 그래프는 Intel cpu의 클럭 속도와 파워의 변화를 나타낸 것이다. 2004년 까지는 클럭 속도와 파워가 함께 비례하여 증가하지만 2007년에 클록 속도와 파워가 함께 감소하는 것을 확인할 수 있다. 그 이유는 파워가 한계에 이르렀기 때문이다. 파워가 너무 높아지면 전력 소모가 커지고 발열이 심해지면서 많은 문제를 야기할 수 있다. 따라서 이후 저전력 CPU를 설계하면서 클럭 속도가 느려졌다가 다시 발전하게 된 것이다.
2016년에 파워가 다시 증가한 이유는 이때부터 Intel cpu에 내장 그래픽이 탑재되었고 USB 타입이 C 타입으로 변화하면서 파워가 다소 증가하게 되었다.
Power x Capacitive load x Voltage x Frequency switched
위의 식에서 Frequency switched를 clock rate라고 생각했을 때, 클럭 속도가 1000배 넘게 증가하는 동안 파워는 고작 30배 정도 증가하는 것에 그쳤다. 이것이 가능했던 이유는 새로운 CPU 모델이 나올 때마다 전압이 계속해서 낮아졌기 때문이다. 20년 동안 5V의 전압이 1V로 낮아지면서 1 / 25만큼의 파워를 감소시킬 수 있었던 것이다.
하지만 대부분의 사용자는 전력 소모가 조금 더 늘어나도 더 빠른 클럭 속도를 원할 것이다. 하지만 이것이 불가능한 이유가 있다.
다음의 간단한 예제를 살펴보자.


소비 전력은 기존 CPU 대비 적어졌지만, 클럭 속도는 15% 감소하였다. 즉, 기술이 발전했지만 클럭 속도는 감소한 것이다.
그 이유는, 클럭 속도를 높이면 전력 소모도 당연히 함께 늘어나는데 이때 생기는 발열로 인해서 성능이 하락하는 것이다. 즉, 소비전력을 고려하지 않고 클럭 속도만 높이면 발열로 인해 오히려 성능이 떨어지는 것이다.
이것이 바로 Power Wall이다. 전력을 높이면 발열로 인해 성능이 떨어지고, 전력을 낮추면 클럭 속도가 느려지는 trade off 관계인 것이다.
