Espressif SoC에서 FPU(Floating Point Unit, 부동소수점 연산 장치)에 대하여

ESPRESSIF|2025. 11. 11. 18:46

이 블로그는 Espressif SoC에서 FPU(Floating Point Unit, 부동소수점 연산 장치)가 무엇인지, 왜 중요한지, 어떤 칩에 포함되어 있는지, 그리고 성능에 어떤 영향을 주는지를 설명합니다. 특히 ESP32-S3, ESP32-P4 같은 칩은 하드웨어 FPU를 지원해 빠른 연산이 가능하고, ESP32-C3 같은 칩은 소프트웨어로 연산을 처리해 느리지만 정확성을 유지합니다. 

 

원문 : Floating-Point Units on Espressif SoCs: Why (and when) they matter · Developer Portal

 

Floating-Point Units on Espressif SoCs: Why (and when) they matter

In this article, you’ll learn what an FPU is, why it’s useful, which Espressif SoCs feature one, and how it impacts performance through a benchmark.

developer.espressif.com

 

1. 서론
- FPU는 소수점이 포함된 숫자(부동소수점) 연산을 담당하는 프로세서의 일부입니다.  
- 그래픽, 신호 처리, 과학적 계산 등 정밀한 수치가 필요한 분야에서 필수적입니다.  
- 일부 칩(ESP32-S3)은 하드웨어로 지원하지만, 다른 칩(ESP32-C3)은 소프트웨어로 처리합니다.

2. 부동소수점 이해
- 정수(Integer)는 메모리에 직접 값이 저장되지만 범위가 제한됩니다.  
- 부동소수점(Float, Double)은 부호(Sign), 지수(Exponent), 가수(Mantissa)로 구성되어 매우 큰 값과 작은 값, 소수까지 표현할 수 있습니다.  
- IEEE 754 표준은 이러한 표현 방식을 규정합니다.

3. 연산 방식
- FPU가 있는 CPU**: 덧셈, 곱셈, 제곱근 같은 연산을 하드웨어 명령으로 빠르게 처리.  
- FPU가 없는 CPU**: 정수 연산으로 부호, 지수, 가수를 직접 다루며 복잡한 과정을 거쳐야 함.  
- Espressif는 `newlibc` 라이브러리를 사용해 소프트웨어적으로 정확한 연산을 보장합니다.


4. 성능과 정밀도
- FPU의 가장 큰 장점은 속도입니다.  
- 수치 연산이 많은 DSP, 머신러닝, 3D 그래픽 같은 분야에서 큰 차이를 만듭니다.  
- Espressif 칩의 FPU는 (float)만 지원하며, (double)는 여전히 소프트웨어로 처리됩니다.

5. FPU 포함 여부
- FPU가 있는 칩:  ESP32, ESP32-S3, ESP32-H4, ESP32-P4  
- FPU가 없는 칩: ESP32-C3, ESP32-C6 

6. 벤치마크 결과
- 동일한 연산을 10,000번 반복했을 때,  
  - ESP32-S3(FPU 있음) : float 연산에서 최대 95% 속도 향상
  - ESP32-C3(FPU 없음) : 같은 연산을 소프트웨어로 처리해 훨씬 많은 CPU 사이클 소모

  FPU float double float double float double float double
ESP32C3 100 122 102 133 2377 3560 3659 6074
ESP32S3 25 70 69 75 121 1619 312 3886
Delta cycles   -75 -52 -33 -58 -2256 -1941 -3347 -2188
Saving   75% 43% 32% 44% 95% 55% 91% 36%