CPU의 성능을 얘기할 때 평가 단위로 MIPS와 DMIPS가 많이 언급됩니다. 그래서 오늘은 이 두 단위의 정의를 알아보고 어떻게 측정되는 지 살펴보려고 합니다.
MIPS의 정의를 알아보기 전에 먼저 CPI와 IPS에 대해 알아보겠습니다.
CPI는 Cycle Per Instruction의 약자로 프로그램에 대한 명령어당 평균 사이클 수를 의미합니다. 명령어마다 실행시간이 다르기 때문에 프로그램이 실행한 모든 명령에 대하여 평균값을 구한 것입니다. 그리고 CPU에 존재하는 Clock을 기준으로 Clock이 높으면 1초에 CPU 명령을 많이 처리한다는 것을 의미하므로 프로그램 수행시간은 줄게 됩니다. 이를 기준으로 주어진 프로그램을 수행하는 데 필요한 프로세서 시간에 대한 계산식은 아래와 같습니다.
T = Ic * CPI * t
Ic = Instruction Count 의 약자로 실행된 기계 명령어의 수입니다.
t = clock 주기로 1/frequency 입니다. Clock이 높다는 것은 프로그램 수행시간을 줄이므로 반비례 관계로 역수인 clock 주기를 곱하여 표현합니다.
IPS는 Instructions Per Seconds의 약자로 단위 시간당 처리할 수 있는 명령어를 의미하며, 컴퓨터 프로세서의 속도 측정 단위입니다. IPS의 계산식은 아래와 같습니다.
IPS = Ic / T
MIPS는 Million Instructions Per Second의 약자로 CPU가 1초 동안 처리할 수 있는 명령의 수를 나타냅니다. 즉, 1MIPS는 1초동안 100만개의 명령을 처리한다는 의미로 MIPS의 계산식은 아래와 같습니다.
MIPS = Ic / T * 10 ^ 6 = f / CPI * 10 ^ 6
MIPS가 CPU clock 보다 정확한 이유를 예를 들어 설명하자면 아래와 같습니다.
A CPU : 2GHz로 동작하고 한 개의 명령어를 처리하는 데 2 clock이 소요됩니다.
B CPU : 3GHz로 동작하고 한 개의 명령어를 처리하는 데 4 clock이 소요됩니다.
동작 clock만 보면 B CPU의 성능이 더 좋은 것으로 보이지만 MIPS로 계산하면 다른 결과가 나옵니다.
A CPU = 2GHz / 2 * 10 ^ 6 = 1000 MIPS
B CPU = 3GHz / 4 * 10 ^ 6 = 750 MIPS
그렇지만 MIPS의 경우도 명령어의 종류에 관계없이 1초당 실행되는 명령어 수만 계산하기 때문에 복잡성과 같은 명령어별 특성을 고려하지 않습니다. 단위시간에 실행되는 명령어의 개수에 영향을 주는 다른 요소로는 I/O 속도가 있습니다. 하지만 MIPS는 결과에 영향을 줄 수 있는 조건들을 고려하지 않고 단위시간에 수행되는 명령어의 개수만을 디바이스의 속도로 환산하는 방법이기 때문에 컴퓨터 성능을 얘기할 때 신뢰성이 낮은 단위입니다.
이를 개선하기 위해 나온 방안 중에 하나가 DMIPS (Dhrystone MIPS) 입니다. Dhrystone(D)은 측정 대상이 되는 시스템으로 기준이 되는 특정 작업을 수행시켜 걸리는 시간을 측정한 후 이를 정수화하여 CPU의 성능을 비교할 수 있도록 고안된 벤치마크 프로그램으로 1984년에 Reinhold Weicker가 개발했습니다.
다른 여타 벤치마크 프로그램과 같이 Dhrystone 도 표준 코드를 포함하고 있습니다. 다만 floating-point 작업에 대해서는 사용할 수 없으며 이 경우 1초당 부동소수점 연산처리속도 단위인 FLOPS(Floating-point Operations Per Second) 를 사용합니다.
아래 내용은 https://www.elektroda.com/rtvforum/topic2908657.html에서 설명한 DMIPS 관련 정보를 번역한 내용입니다. 좀 더 정확한 내용은 원문을 참고해주시기 바랍니다.
Dhystone 테스트는 컴퓨터 알고리즘의 다양한 작업을 모방하여 작성된 코드를 반복하여 측정하는 것을 기본 아이디어로 삼고 있습니다. DMIPS는 Dhrystone MIPS의 약자로 Dhrystone score를 1757 (1 MIPS machine, 1초당 Dhrystones의 score)로 나눈 값입니다. 이 방법은 MIPS 보다는 좀 더 유의미하며 신뢰성이 높은 성능측정 방법입니다. 서로다른 clock 속도를 가진 CPU의 성능을 비교하고자 할 때 특정 CPU의 frequency로 계산된 결과값을 나눔으로써 DMIPS/MHz로 표현되는 또 다른 유효한 값을 얻을 수 있습니다.
요약하자면 DMIPS가 계산을 위해 Dhrystone 프로그램을 사용한다는 점 이외에 MIPS와 DMIPS의 가장 중요한 차이점은 단순히 속도만이 아니라 CPU에서 처리되는 실제 작업을 이용한 결과값이라는 것입니다. DMIPS는 많은 변수를 고려하였으므로 CPU의 구조에 좀 더 독립적입니다.
일반적으로 MIPS는 "Dhrystone VAX MIPS"로 표현합니다. 예전에 VAX 11/780는 CPU 벤치마크의 표준으로 사용되었으며 VAX 11/780은 1 MIP machine으로 설명되었습니다. 예를 들어, "80 MIPS"라는 것은 "80 Dhrystone VAX MIPS"이며 VAX 11/780 대비 80배 빠르다는 의미입니다.
MIPS를 DMIPS로 변환하기 위해서는 DMIPS = MIPS / 1757 로 계산하시면 됩니다.
만일 1.6 GHz 인 CPU가 Dhrystone 테스트 결과 score가 9193924 라면, 이를 1757로 나눈 아래 값이 DMIPS가 됩니다.
1 Dhrystone MIP= 1757 Dhyrstones
- DMIPS = Dhrystones MIPS = Dhrystone VAX MIPS = Dhrystone per Second / VAX 11/780's Dhrystone score = 9193924 / 1757(VAX 11/1780 score) = 5233 DMIPS
- DMIPS / MHz = Dhrystone VAX MIPS /Clock = 5233 DMIPS / 1610 = 3.25 DMIPS / MHz
DMIPS를 실제로 측정하기 위해서는 Dhrystone Test Suite를 다운로드 받은 후에 빌드한 뒤에 Target Board에서 실행하면 됩니다. 이 벤치마크 프로그램의 결과로 나온 Dhrystones Score를 1757로 나눠주면 Dhrystone MIPS(DMIPS)값을 구할 수 있습니다.
참고로 Dhrystone Test Suite는 아래 github에서 다운로드 받을 수 있습니다.
https://github.com/Keith-S-Thompson/dhrystone
※ 참고사이트
MIPS
https://ssoonidev.tistory.com/34
https://palpit.tistory.com/entry/Computer-architecture-%EC%BB%B4%ED%93%A8%ED%84%B0-%EA%B5%AC%EC%A1%B0-%EC%A0%95%EB%A6%AC
https://snoop-study.tistory.com/80
https://m.blog.naver.com/PostView.naver?isHttpsRedirect=true&blogId=kjj312&logNo=70070757437
https://luv-n-interest.tistory.com/271
https://velog.io/@ckstn0777/%EC%BB%B4%ED%93%A8%ED%84%B0%EA%B5%AC%EC%A1%B0
https://m.blog.naver.com/PostView.naver?isHttpsRedirect=true&blogId=dhuos&logNo=221504543201
DMIPS
https://www.elektroda.com/rtvforum/topic2908657.html
https://www.eembc.org/techlit/datasheets/dhrystone_wp.pdf
https://m.blog.naver.com/PostView.naver?isHttpsRedirect=true&blogId=mesa_&logNo=221470545782
https://wiki.cdot.senecacollege.ca/wiki/Dhrystone_howto
https://en.wikipedia.org/wiki/VAX