Wall에는 Power Wall과 Memory Wall가 존재합니다. clock rate는 2004년도까지는 급격하게 증가하지만 그다음부터는 거의 정체되어 있습니다. (clock rate가 증가하면서 전력 소모도 급격히 증가했지만 지금은 안정됨)
clock rate를 증가시키면 전력 소모가 증가하게 되는데 프로세서가 발전하면서 필요 전력량을 더 이상 높일 수 없을 정도로 높아진 발열 문제를 겪고 있기 때문에 현재는 clock rate를 증가시키는 방법이 아닌 전압을 낮춰서 트랜지스터를 더 많이 집적하거나 클럭을 높이는 방식으로 성능을 개선하고 있습니다.
$$Power = Capacity\,Load \times Voltage^2 \times Frequancy$$
전력 소모를 구하는 공식입니다. 보시면 전압의 경우 제곱으로 곱해지기 때문에 전압을 2배 낮추면 전력은 4배만큼 감소하게 됩니다.
power wall은 간단하게 말하자면 clock rate를 높이면 전력이 높아지며 발열이 생겨 성능이 떨어지고 낮추면 clock rate가 느려지는 trade off 관계를 말합니다.(전압을 더 낮추기 힘들어서 전력을 낮추기 힘들어지고 열도 낮출 수 없는 상황.)
이러한 문제를 해결하기 위해서 소비 전력을 낮추고 고성능을 가진 프로세서를 만들게 되는데 그것이 바로 멀티 코어(Multi core)입니다.
위 사진은 core가 하나인 경우의 performance가 거의 linear하게 증가하는 모습을 보여줍니다. 싱글 코어에서 매년 57% 성장을 보여줬지만 멀티 코어로 이동하면서 매년 20% 정도로 급격히 성장이 낮아진 것을 알 수 있습니다. 그 이유는 전력 조절 때문입니다.
이전까지는 칩 하나에 프로세서가 하나였습니다. multi core란 하나의 칩 안에 여러 프로세서를 넣는 방법을 말합니다. 멀티 코어를 사용해서 성능을 향상할려면 Parallel computing을 사용해야합니다. sequence programing을 사용하면 성능 향상을 하지 못합니다. Instruction-level parallelism으로 병렬 처리된 명령을 하드웨어에서 알아서 동시에 실행시켜주지만 코드는 프로그래머가 일일이 load balancing를 고려하면서 작성해야 되므로 더 어렵습니다.
SPEC Power Benchmark로 CPU 성능을 측정할 수 있습니다. 마지막 값이 클수록 퍼포먼스가 크고 전력 소모가 적다는 것을 의미합니다.다음으로 알아볼 것은 착각하기 쉬운 함정들에 대해서 알아보겠습니다.
Pitfall: Amdahl's Law
컴퓨터의 한 부분의 성능을 향상시키면 전체 성능에 영향이 갑니다. 전체 시스템의 향상은 다음과 같은 식으로 개선할 수 있습니다.(시스템 성능 향상이 목표라면 그 시스템에서 가장 많은 포지션을 차지하는 부분을 빠르게 만들어야 합니다.)
$$T_{improved} = \frac {T_{attected}} {imporvement \, factor} + T_{unaffected}$$
전체 연산이 100초일 때 곱하기 연산이 80초를 차지한다고 해보겠습니다. 이럴 경우 곱하기 연산 성능을 향상해서 전체 연산 성능을 다섯 배 향상하고 싶습니다. 그러면 성능 향상 펙터 n을 어떻게 설정해야 할까요?
$$20 = \frac {80} {n} + 20$$
$$ 0 = \frac {80} n $$
n이 무한으로 갈 때만 5배 성능 향상이 가능합니다. 즉 불가능한 것입니다. 곱하기 성능을 향상하는 것으로만 전체 성능의 5배를 향상시키는 것은 불가능합니다.
Fallacy: Low Power at Idle
이용률이 낮을 때 전력 소모와 이용률이 클 때 전력 소모는 크게 차이가 날까요?
i7의 전력 소모 양상입니다. load를 10% 사용할 때도 50% 사용할 때와 크게 차이가 나지 않습니다. (에너지 효율에 초점을 둔다면 load에 비례하게 전력 소모를 만들어야 합니다. 지금은 load 이용률이 적어도 전력 소모량이 큽니다.)
그 외에도 구글의 데이터 센터 CPU 이용률이 10~50% 사이이고 100% 일 때는 전체 시간에 1%도 되지 않습니다. 이렇게 본다면 이용률이 낮아 전력 소모가 적어 보일 수 있지만 10%일 때 최대 전력의 33%를 소비합니다.
Pitfall: MIPS as a Performance Metric
Clock Speed, Number of Instruction, CPI 중 하나만으로 성능을 예측한다면 잘못된 결과를 얻을 수 있습니다. 그 외에도 실행시간 대신에 제안된 대안들이 존재했었는데 그중 하나가 MIPS(million instructions per second)입니다. 특정 프로그램에 대한 MIPS값은 다음과 같이 정의됩니다.
$$MIPS = \frac{Instruction \, count} { Execution \, time \times 10^6}$$
MIPS는 명령어 실행 속도로 실행시간의 역수로 성능을 표시합니다. 하지만 디바이스마다 다른 ISA를 사용한다는 점에서 문제가 있었습니다. (명령어 집합이 다른 경우 명령어 개수가 달라지므로 MIPS만으로 성능을 측정하기 힘듭니다.)
그 외에도 명령어의 속도만 나타내 주어서 해당 명령어가 얼마나 많은 작업을 시행하는지는 반영하지 못하고 같은 컴퓨터에서도 어떤 프로그램을 실행하냐에 따라서 MIPS가 달라진다는 문제가 존재합니다.
- 정리하자면 CPU와 프로그램에 따라 MIPS가 달라진다는 문제가 있어서 정확한 성능 측정이 어렵습니다. 그래서 SPEC's Benchmark를 통해서 성능을 측정합니다.
'CS > Computer Architecture' 카테고리의 다른 글
6. Arithmetic for Computer (0) | 2024.02.19 |
---|---|
5. Instructions (0) | 2024.02.18 |
4. Instructions (0) | 2024.02.13 |
3. Instructions: Language of the Computer (1) | 2024.02.06 |
1. Performance (2) | 2024.02.05 |