현재 글은 컴퓨터 구조와 아키텍처 서적 및 대학에서 들은 강의를 기반으로 한다.
컴퓨터 성능 측정 수단
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 ) 가 나타난다.
평균 계산
각 프로세서의 성능을 벤치마킹하여 비교할 때는 실행 시간과 관련된 정보들에 대해 평균을 내서 계산한다. 평균을 계산하는 방법은 산술 평균, 기하 평균 및 조화 평균이 있으며 이 셋을 적절하게 사용해야 한다.
- 산술 평균(Arithmetic mean) : 주어진 값들을 더한 후 개수로 나눈 것
- 값의 합이 의미 있고, 관심 있는 경우에 사용. 특히 시간과 관련될 때 유용.
- 기하 평균(Geometric mean) : 주어진 값들을 모두 곱한 후 n 제곱근으로 나눈 것
- 평균적인 변화량에 관심 있을 때 사용.
- 조화 평균(Harmonic mean) : 주어진 값들에 역수를 취해 산술 평균을 구한 값의 역수
- 속력( MFLOPS, MIPS 등 )의 평균을 구할 때 사용.
세 평균은 AM >= GM >= HM 의 관계를 가진다.
각 평균을 사용하는 예시를 잘 정리해둔 글이 있어 남깁니다.
https://ballpen.blog/산술-기하-조화-평균-개념-활용/
Benchmark
MIPS나 MFLOPS와 같은 수치들은 동일 명령어 체계 및 아키텍처 기반의 프로세서를 비교하는데는 도움이 될 수 있으나, 아키텍처 자체가 다른 경우 크게 의미가 없다. 또한 어플리케이션의 특징에 따라 다른 성능을 보일 수 있어 범용적인 성능 비교 지표로는 부적합하다.
대부분의 프로세서들은 CISC 또는 RISC 에 기반을 두고 있다. 이때 각 아키텍처에서 동일한 시간을 요구하는 코드를 어셈블리 수준으로 컴파일 했을 때 통상적으로 CISC 의 instruction 길이가 RISC에 비해 짧기 때문에, MIPS 수치는 동일 명령에 대해 수행하더라도 RISC에 비해 CISC 아키텍처가 낮게 나온다. 동일 명령을 수행하더라도 RISC의 성능이 더 좋다고 왜곡되는 것이다.
또한 하나의 프로그램에서 좋은 결과가 있었다고 다른 프로그램에서도 그럴 것이라고 생각하기도 어렵다. 문자열 처리 프로그램을 기반으로 작성된 성능 순서가 딥러닝 숫자 연산에도 동일하게 적용된다고 보장할 수 있을까? 하나의 결과로 일반화 하기에는 허점이 많다.
벤치마킹은 다양한 성격의 벤치마크 프로그램들을 실행한 결과를 제공함으로써, 고객들에게 일종의 선택권을 제공한다. 동일한 벤치마킹 프로그램들을 다양한 프로세서에서 실행하면, 각 분야마다 프로세서의 성능 순위를 얻을 수 있으므로 사용자는 자신이 원하는 분야의 벤치마크 결과를 참고하여 제품을 구매할 수 있다. 예를 들어 인공지능 관련 작업을 많이 수행하는 사람은 벤치마킹 결과 중 인공지능 프로그램을 실행했을 때의 순위를 참고하여 프로세서를 선택하면 되는 것이다.
벤치마크 프로그램이 가져야 하는 속성은 다음과 같다.
- 고수준 언어로 작성되어 다양한 머신들에서 실행될 수 있어야 한다.
- 시스템 프로그래밍, 수학 계산 등 특정 도메인이나 패러다임을 대표할 수 있어야 한다.
- 결과가 쉽게 측정될 수 있어야 한다.
- 프로그램이 넓게 배포될 수 있어야 한다.
SPEC
프로그램의 성능 및 효율을 평가하기 위한 표준 벤치마크를 제공하는 비영리 기업.
'CS > 컴퓨터구조' 카테고리의 다른 글
[컴퓨터구조] Interconnection (0) | 2022.09.27 |
---|---|
[컴퓨터구조] 컴퓨터의 기능 (0) | 2022.09.24 |
[컴퓨터구조] 암달의 법칙과 리틀의 법칙 (1) | 2022.09.19 |
[컴퓨터구조] 멀티코어 (0) | 2022.09.19 |
[컴퓨터구조] 프로세서의 발전과 제약 (0) | 2022.09.14 |