전력 장벽과 멀티코어, 성능 벤치마크

전력 장벽과 멀티코어, 성능 벤치마크

728x90

- 본 문서는 KOCW 의 [컴퓨터구조] - 영남대학교 최규상 교수님의 강의 2주차 2강을 보고 정리한 내용입니다.

Power Trends

poser wall (전력 장벽) : 전압은 제곱으로 곱해지기 때문에 전압을 2배 낮추게 되면 전력은 4배 적어도 동일한 양의 capacity load 와 frequency 를 유지할 수 있지만 2004년 부터 전압을 낮추면 전류가 새어나가는 상황이 되어 더이상의 전압을 낮출 수 없게 되어 이러한 방법으로 성능을 개선하는 것이 불가능하게 되었다. 이러한 현상을 전력 장벽이라 한다.

칩의 전력 소모량 Power = Capacitive load * Voltage^2 * Frequency

Reducing Power

요즘의 컴퓨터들은 전력 소모를 줄이기 위해 많은 노력을 한다.

ex) 새로운 CPU를 설계 capacitive load 85%, voltage 15%, frequency 15% P new C old * 0.85 * (V old * 0.85)^2 * F old * 0.85 ------- = ------------------------------------------------ = 0.85^4 = 0.52 P old C old * V old^2 * F old 기존의 cpu보다 52% 의 전력소모량을 보인다.

전력 장벽 (power wall) 전압을 더이상 낮추지 못한다 열을 더이상 낮추지 못한다 => 전력 소모가 많아진다

2004년부터는 다른 방법으로 성능을 개선하고자 한다. -> Multi-Core

Multiprocessors

2004년을 기점으로 컴퓨터의 성능을 개선하기 위해 사용되는 방법

하나의 칩 안에 프로세서를 한 개 이상 사용하는 구조이다.

병렬 (parallel) 프로그래밍을 사용해야 한다 기존의 시퀀스 프로그래밍이 아닌 병렬 구조를 가져야 한다. 시퀀스 프로그래밍에서는 하드웨어가 알아서 여러개의 프로그램을 실행해주는 instruction level parallelism 구조를 가졌다. 프로그래머는 신경쓰지않고 프로그램을 짜면 된다. 병렬 프로그래밍에서는 프로그래머가 신경쓸 것이 많아진다 성능을 위한 프로그래밍 load balancing : 여러 일을 나눴을 때 하나의 일이 비슷한 load 를 가져야 한다. 통신 및 동기화 최적화 (optimizing communication and synchronization)

SPEC CPU Benchmark

Standard Performance Evaluation Corp (SPEC) : 성능을 측정해주는 벤치마크 프로그램을 만드는 회사 CPU, I/O, Web 과 관련된 성능을 측정하는 벤치마크 프로그램을 만든다.

SPEC CPU2006 2006년에 만들어진 CPU측정 프로그램 여러 개의 프로그램을 실행해서 총 실행 시간을 활용한다. I/O 에 관한 부분은 무시할 정도이기 때문에 CPU 성능에 초점을 맞췄다. 표준으로 잡은 reference machine 과 비교하여 성능을 비교할 수 있다. CINT2006(integer), CFP2006(floating-point) 로 구별된다.

Geometric mean : 전체 평균 -> 값이 클수록 성능이 더 좋다

SPEC Power Benchmark

서버의 전력소비를 측정 ssj_ops/sec : 초당 서버 사이드 자바 오퍼레이션 수 power : Watts (Joules/sec) => 전체 : watt 당 서버 사이드 자바 오퍼레이션 수로 측정 값이 클수록 성능이 좋다

최종 결론

가격 대비 성능이 향상되고 있다 무어의 법칙에 의거함

추상화 계층 하드웨어와 소프트웨어

명령어 집합 구조 (instruction set architecture) 하드웨어/소프트웨어 인터페이스

실행 시간 (execution time) : 성능 측정에 가장 좋음

전력 (power) 은 성능의 제한 요소이다. 멀티코어를 사용하여 성능을 개선하고자 한다 멀티코어는 병렬 구조를 통해 설계된다.

Pitfall : Amdahl's Law

컴퓨터의 어느 한 부분을 성능 향상 시키면 전체 성능은 비례하여 향상된다.

T affected T improved = -------------------- + T unaffected improvement factor

예) 곱하기 연산은 80s/100s 를 차지한다. 곱하기 연산의 성능을 향상시켜 전체 성능을 5배 향상시키고 싶다 80 20 = ---- + 20 n 80 (곱하기 연산) 100/5 = --------------- + 20 (곱하기 연산 제외) n (구할 수) n 이 무한대로 갈 때에만 가능하다 -> 불가능하다 곱하기 연산의 성능 향상만으로는 전체 성능의 5배 향상은 불가능하다.

Fallacy : Low Power at Idle

i7 power banchmark At 100% load: 258W At 50% load : 170W (66%) At 10% load : 121W (47%) -> load 와 전력 소모는 비례하지 않다.

Google data center 대부분 10 ~ 50% load 만 사용 100% load 는 전체 시간의 1%도 안된다.

프로세서를 만들 때 load 에 비례되도록 전력소모를 만드는 것이 필요하다 => 앞으로 필요한 기술

Pitfall : MIPS as a Performance Metric

MIPS : Milions of Instructions Per Second ( 초당 몇 백만 개의 명령을 실행하는가) 컴퓨터마다 ISA 가 다르다. 명령마다 복잡도가 다르다. Instruction count MIPS = ----------------------- Execution time * 10^6 Instruction count Clock rate = --------------------------------- = ------------ Instruction count * CPI CPI * 10^6 ------------------------- * 10^6 Clock rate CPI 는 CPU 에 따라 달라질 수도 있고 프로그램에 따라 달라질 수도 있다. => MIPS 는 정확한 성능 측정 단위라고 할 수 없다. => SPEC CPU Benchmark 등이 더 정확한 측정 방법이다.

CPU Time = Instruction Count * CPI * Clock Cycle Time

Performance = 1/Execution time 을 구할 수 있다.

728x90

from http://ele-code.tistory.com/45 by ccl(A) rewrite - 2021-12-31 10:27:23