본문 바로가기

[ST_MICRO]/STM32G0

[STM32G0 SSM EVM] Dhrystone, Whetstone, IIR Filter 벤치마크 테스트

MCU 성능 측정을 할수 있는 벤치마크 방법은 여러가지가 있지만 Dhrystone, Whetstone 방식을 많이 사용한다.

각각의 특징은 아래와 같다.

  • Dhrystone - 정수(ALU)연산성능 측정,  MIPS 수치로 표기
  • Whetstone - 부동소수점(FPU)연산성능 측정, MFLOPS 수치로 표기

테스트 코드는   STM32H MCU Dhrystone, Whetstone, IIR Benchmark 성능 테스트 를 이용하였다.

 

 

STM32G030 의 Dhrystone, Whetstone, IIR Filter 벤치마크 테스트 결과  플래시 메모리 용량 관계로 컴파일 에러가 발생한다.

 

정수 연산은 나쁘지 않은데 부동소수점 연산은 좋지 않다. STM32의 Cortex-M4코어와 비교하면 상당한 성능 차이가 있는것 같다.

appdata/local/arduino15/packages/stmicroelectronics/tools/xpack-arm-none-eabi-gcc/10.3.1-2.3/bin/../lib/gcc/arm-none-eabi/10.3.1/../../../../arm-none-eabi/bin/ld.exe: region `FLASH' overflowed by 4868 bytes
collect2.exe: error: ld returned 1 exit status
 

우선 정수 연산만 확인 해 보자. 64Mhz 클럭에서 65DMIPS 정도로 Corrtexx-M0+ 코어 수준인것 같다.
mode = Arduino
Dhrmode = Arduino
Dhrystone Benchmark, Version 2.1 (Language: C)
Execution starts, 300000 runs through Dhrystone

Execution ends : 2.624 Seconds
Microseconds for one run through Dhrystone: 8.75
Dhrystones per Second: 114309.23
VAX MIPS rating = 65.06 DMIPS

 

 

부동소수점 연산은 플래시 메모리가 많이 차지하는데 옵티마이즈 옵션을 사이즈로 하면 컴파일은 되지만 속도가 많이 느리다.

Whetstone Benchmark, Version 1.2 (Language: C)

Loops: 1000, Iterations: 1, Duration: 33221 ms.
C Converted Single Precision Whetstones: 3.01 MIPS

 

옵티마이즈를 Speed 우선으로해서 IIR Flot 연산도 느린것 같다.

4th order float IIR speed benchmark
---------------------------------------------------
total number of samples: 15000  duration [us]: 617  ==> speed [kiloSamples/second] : 24.31
반응형