Example: Calculating CPI bottom up
Operation | CPI_i | Frequency | CPI_i X Freq | Time(%) |
ALU | 1 | 50% | .5 | 33% |
Load | 2 | 20% | .5 | 27% |
Store | 2 | 10% | .2 | 13% |
Branch | 2 | 20% | .4 | 27% |
Power Wall
Power(전력)의 발전양상
집적회로에서의 CMOS
CMOS에서의 첫 에너지 소비는 동적 에너지로, clock frequency마다 on-off, off-on으로 스위치 방식으로 제어된다.
그래프의 기간동안
- 전력 소모는 약 30배 증가
- 전압은 5V에서 1V로
- 주기는 약 1000배 빨라짐
⇒ 주기가 1000배 빨라졌어도 전력 소모는 약 30배 정도로밖에 증가하지 않음
전력을 줄여보자
- 새로운 CPU가 있다고 가정해보자.
- 기존 CPU보다 85%의 capacitive load
- 15%의 voltage 감소와 15%의 frequency 감소
The Power wall
더 이상 voltage를 감소시킬 수 없음.
더 이상 열을 잡을 수가 없음 ⇒ 발열량이 더 늘어나면 안됨
→ 이 상황에서 성능을 향상시키는 방법:
Multi-core
Multiprocessors
- Multicore microprocessors
- 칩 안에 여러 개의 processor를 탑재
- multicore를 통한 성능향상을 보려면, parallel 프로그래밍이 필요함
- 반대로 instruction 수준의 parallism과 비교해서
- 하드웨어가 알아서 다수의 명령을 동시에 처리함
- 프로그래머는 딱히 신경쓰지 않아도 됨
- 난관
- performance를 위한 프로그래밍
- Load balancing
- communication과 synchronization 최적화
함정: 암달의 법칙 ( Amdahl’s Law )
- 컴퓨터의 어떤 부분을 향상시키면, 전체적인 성능에서도 비례적인 향상을 기대할 수 있다.
* 어떤 시스템을 개선하여 전체 작업 중 P%의 부분에서 S배의 성능이 향상되었을 때, 전체 시스템에서 최대 성능 향상은 위와 같다.
개선 후의 실행 시간 = (개선에 의해 영향을 받는 실행 시간 / 성능 향상 비율) + 영향을 받지 않는 실행 시간
⇒ 시스템의 한 부분의 성능을 향상시키면, 전체 시스템의 성능 향상은 해당 시스템이 차지하는 비율에 비례해서만큼만 향상된다.
ex) 전체 100초 중 곱 연산은 80초가 소요된다.
곱 연산의 성능을 얼마나 향상시켜야 전체 성능이 5배로 증가할 수 있는가?
→ 20s = 80s / n + 20s
불가능
추론: 일반적인 경우(부분)을 빠르게 하면 전체적으로 빨라진다.
시스템의 성능 향상을 하고자 하면, 시스템에서 가장 많은 부분을 차지하는 부분을 향상시키는 것이 바람직하다.
착오: 유휴(idle) 상태에선 저전력인가?
- i7의 Power benchmark에서
- 100% load: 258W
- 50% load: 170W (100% load에 비해 66%)
- 10% load: 121W (100% load에 비해 47%)
→ load와 전력 소모는 비례하지 않는다.
- Google data center
- 보통 10% ~ 50% load
- 100% load가 되는 때는 전체 시간 중 1%도 안 될 정도로 거의 없음
함정: 성능 지표로서의 MIPS
MIPS: Millions of Instructions per second ( 초당 몇백만개의 instruction들을 실행하는가 )
- 다음의 맹점이 있다.
- 컴퓨터마다 ISA(명령 집합 구조)는 다르다.
- instruction마다 복잡도가 다르다.
- 어떤 명령은 한 cycle이지만, 어떤 명령은 여러 cycles.
- 즉 명령마다 CPI가 다르다.
- 같은 CPU에서도 프로그램에 따라 CPI는 달라진다.
⇒ 즉, MIPS는 하드웨어의 성능측정 단위라고 하기 어렵다.
끝맺으며
- 기술의 발전으로 인해 Performance / cost는 증가하고 있다.
- 추상화의 계층적인 층 구조
- 하드웨어, 소프트웨어 양쪽 측면 모두
- Instruction set architecture(ISA, 명령 집합 구조)
- 하드웨어/소프트웨어 사이의 데이터/명령 교환(interface)
- Execution time: 성능 측정에 최고의 도구
- Power(전력 소모)는 줄이는 데 한계가 있으며, 성능 향상에 제한을 주는 요소이다.
- 성능 향상을 위해 parallelism을 사용한다.