본문 바로가기

CS/컴퓨터구조

[컴퓨터구조] 컴퓨터의 성능 측정

현재 글은 컴퓨터 구조와 아키텍처 서적 및 대학에서 들은 강의를 기반으로 한다.


컴퓨터 성능 측정 수단

CPU 클럭 속도

 CPU에서 실행하는 Instruction 들은 각 클럭마다 상태를 바꾸면서 실행된다. 이때 CPU 클럭 속도가 증가하게 되면 단위 시간당 실행하는 Instruction 이 많아지기 때문에 컴퓨터의 성능이 좋아진다고 생각할 수 있다.

 통상적으로 생각하면 맞는 말이긴 하지만, 파이프라이닝 기법이 사용되는 경우 동시에 여러 작업이 동시에 수행될 수 있고, CPU 에 적용되는 아키텍처에 따라 필요한 instruction 수가 달라지는 경우도 있어서 성능을 명확하게 비교하기에 적절하지는 않다.

Instruction Execution Rate

 초당 실행 가능한 instruction 의 개수를 의미한다. MIPS ( millions of instructions per second ) 나 MFLOPS ( millions of floating point instructions per second )  등이 있다.

 해당 프로세서가 채택하는 instruction set, 컴파일러의 디자인, 캐시나 메모리 등 전반적인 구현 방식에 따라 큰 차이를 보이며, instruction 자체도 종류에 따라 필요한 사이클의 수가 다르다는 점에 있어서 더 체계적인 비교 방식을 요구한다.

CPI ( Clock Per Instruction ) 

 CPI는 명령어 하나당 필요한 클럭 사이클을 의미한다. 

이때 프로세서가 주어진 프로그램을 실행하는데 걸리는 시간은 다음과 같다.

  instruction의 실행 시간은 프로세서가 동작하는 시간과 메모리 전송에 걸리는 시간으로 크게 나눌 수 있다. 이때 프로세서가 동작하는 시간은 메모리 전송 시간에 비해 매우 적은 시간을 소모하므로 무시할 수 있다. 이 경우 CPI는 메모리 전송 시간에 관련되며, 식은 다음과 같다.

 컴퓨터가 실행하는 작업은 다양하다. 따라서 세부적인 기술들마다 각 요소에 대한 비중 / 영향이 다를 수 있다.

MIPS(millions of instructions per second)

  초당 instruction 처리량을 나타내는 방법 중 하나로, 106 으로 실행한 instruction 수를 나눈다.

오른쪽의 식은 T를 CPI 대해 나타낸 것으로, 이 과정에서 τ ( 클럭 길이 ) 의 역수인 f ( Mhz ) 가 나타난다.

MIPS 관련 문제 예시


평균 계산

 각 프로세서의 성능을 벤치마킹하여 비교할 때는 실행 시간과 관련된 정보들에 대해 평균을 내서 계산한다. 평균을 계산하는 방법은 산술 평균, 기하 평균 및 조화 평균이 있으며 이 셋을 적절하게 사용해야 한다.


  • 산술 평균(Arithmetic mean) : 주어진 값들을 더한 후 개수로 나눈 것
    • 값의 합이 의미 있고, 관심 있는 경우에 사용. 특히 시간과 관련될 때 유용.
  • 기하 평균(Geometric mean) : 주어진 값들을 모두 곱한 후 n 제곱근으로 나눈 것
    • 평균적인 변화량에 관심 있을 때 사용.
  • 조화 평균(Harmonic mean) : 주어진 값들에 역수를 취해 산술 평균을 구한 값의 역수 
    • 속력( MFLOPS, MIPS 등 )의 평균을 구할 때 사용.

세 평균은 AM >= GM >= HM 의 관계를 가진다.

산술평균
기하평균
조화평균
성능 측정에서 산술 평균과 조화 평균의 사용 예시


각 평균을 사용하는 예시를 잘 정리해둔 글이 있어 남깁니다. 

https://ballpen.blog/산술-기하-조화-평균-개념-활용/

 

평균 - 산술, 기하, 조화 평균의 개념과 실생활 활용 - ilovemyage

평균 공식에는 산술, 기하, 조화 평균이 있습니다. 보통 산술 평균을 이용하나 때로는 기하나 조화 평균을 사용하기도 합니다. 이러한 평균의 개념과 실생활에서의 활용 사례를 소개합니다. 아

ballpen.blog


Benchmark

 MIPS나 MFLOPS와 같은 수치들은 동일 명령어 체계 및 아키텍처 기반의 프로세서를 비교하는데는 도움이 될 수 있으나, 아키텍처 자체가 다른 경우 크게 의미가 없다. 또한 어플리케이션의 특징에 따라 다른 성능을 보일 수 있어 범용적인 성능 비교 지표로는 부적합하다.

  대부분의 프로세서들은  CISC 또는 RISC 에 기반을 두고 있다. 이때 각 아키텍처에서 동일한 시간을 요구하는 코드를 어셈블리 수준으로 컴파일 했을 때 통상적으로 CISC 의 instruction 길이가 RISC에 비해 짧기 때문에, MIPS 수치는 동일 명령에 대해 수행하더라도 RISC에 비해 CISC 아키텍처가 낮게 나온다. 동일 명령을 수행하더라도 RISC의 성능이 더 좋다고 왜곡되는 것이다.

 또한 하나의 프로그램에서 좋은 결과가 있었다고 다른 프로그램에서도 그럴 것이라고 생각하기도 어렵다. 문자열 처리 프로그램을 기반으로 작성된 성능 순서가 딥러닝 숫자 연산에도 동일하게 적용된다고 보장할 수 있을까? 하나의 결과로 일반화 하기에는 허점이 많다.

 벤치마킹은 다양한 성격의 벤치마크 프로그램들을 실행한 결과를 제공함으로써, 고객들에게 일종의 선택권을 제공한다. 동일한 벤치마킹 프로그램들을 다양한 프로세서에서 실행하면, 각 분야마다 프로세서의 성능 순위를 얻을 수 있으므로 사용자는 자신이 원하는 분야의 벤치마크 결과를 참고하여 제품을 구매할 수 있다. 예를 들어 인공지능 관련 작업을 많이 수행하는 사람은 벤치마킹 결과 중 인공지능 프로그램을 실행했을 때의 순위를 참고하여 프로세서를 선택하면 되는 것이다.

 벤치마크 프로그램이 가져야 하는 속성은 다음과 같다.

  1. 고수준 언어로 작성되어 다양한 머신들에서 실행될 수 있어야 한다.
  2. 시스템 프로그래밍, 수학 계산 등 특정 도메인이나 패러다임을 대표할 수 있어야 한다.
  3. 결과가 쉽게 측정될 수 있어야 한다.
  4. 프로그램이 넓게 배포될 수 있어야 한다.

SPEC

 프로그램의 성능 및 효율을 평가하기 위한 표준 벤치마크를 제공하는 비영리 기업.

https://www.spec.org/