티스토리 뷰

컴퓨터의 성능(Performance) 은 일을 처리하는데 걸리는 시간인 실행 시간(Execution Time) 이 빠를수록 좋습니다.

아니면 시간당 처리하는 작업량인 처리율(Throughput) 이 높은 것이 좋다고 생각해도 무방합니다.

사용자 입장에선, 성능을 볼 때, 몇 바이트를 처리했는지보다 소요 시간으로 접근하는게 체감하는데 편할 것입니다.

 

Performance = 1 / Execution Time

 

실행 시간은 CPU 실행시간, 입출력 시간 등 일을 완료하는데 걸리는 모든 시간을 포함하지만 이번 포스팅에서는 CPU 실행시간만을 고려하는 CPU Time 에 대하여 알아볼 것입니다.

 

 

CPU 내에는 시계가 똑딱이듯, Clock 이라는 주기 신호가 반복됩니다.

CPU Time 은 한번 똑딱일 때 걸리는 시간이 짧을수록 또는 초당 똑딱이는 횟수가 많을수록 좋습니다.

 

프로그램은 다수의 Instruction 으로 이루어져있고, 프로그램을 실행하는데 필요한 CPU Clock Cycle 은 프로그램, 컴파일러, ISA(Instruction Set Architecture) 에 달려있습니다.

 

CPU Time = CPU Clock Cycle Per Program(n) * Clock Cycle Time(pico sec)

       = CPU Clock Cycle Per Program(n) / Clock Rate(Hz) 

                       = Instruction Count(n) * Cycle Per Instruction(1/n) / Clock Rate(Hz)

=∑ [Instruction Count(n) * Cycle Per Instruction(1/n)] / total Instruction Count(n) / Clock Rate(Hz)

 

 

마지막 수식에서 Clock Rate 를 제외하고는 Instruction 과 관련이 있으니 이는 프로그램 설계에 달려있는 듯 합니다.

하드웨어 관점에서 CPU Time 을 개선시키려면 Clock Rate 를 공략해야 할 것으로 보입니다.


전력을 더 공급하여 Clock Rate 를 상승시키는 Overclock 이라는 것이 존재합니다.

그러나 전력을 상승시키면 발열이 심해지고, 낮추자니 전압이 낮아져 문제가 됩니다.

 

Power =  Capacitive load * Voltage^2 * Frequency

 

발열과 전압의 trade-off 를 개선시켜도 컴퓨터의 성능을 하나의 코어로만 상승시키기는 부족합니다. 

CPU 코어의 갯수를 증가시키켜 의해 하드웨어는 한번에 여러 명령들을 처리할 수 있게되어 성능이 향상됐습니다.

 

하지만 다중 코어는 기존 싱글 코어와는 다르게 병렬 프로그래밍이 요구됩니다.

병렬 프로그래밍은 코어의 개수를 증가시키는 것만으로는 CPU 성능 개선의 한계가 있음을 알려줍니다.

댓글