ESP32-C3 MCU에 대한 연산 처리 성능을 측정해봤습니다.

구분
항목
내용
일반 칩 명칭 ESP32-C3
제조사 Espressif Systems
아키텍처 32-bit RISC-V (RV32IMC)
코어 수 1 (Single Core)
클럭 속도 최대 160 MHz
명령어 세트 RISC-V base ISA + MUL/DIV + compressed instruction set
FPU (부동소수점 유닛) ❌ 없음 (소프트웨어 처리)
ULP 코어 ❌ 없음 (ESP32-C3에는 저전력 코어 미탑재)
메모리
/
저장장치
SRAM 400 KB (사용자용 약 384 KB)
ROM 384 KB (부트로더 및 Wi-Fi/BLE 스택 일부 포함)
외부 플래시 SPI/QSPI Flash 최대 16 MB (보드에 따라 4~8 MB 기본 탑재)
외부 PSRAM ❌ 미지원 (ESP32-S3/ESP32만 지원)
캐시 명령/데이터 캐시 각 8 KB
무선 기능 Wi-Fi IEEE 802.11 b/g/n (2.4 GHz, 20 MHz 대역폭)
속도 최대 150 Mbps (HT20)
모드 Station / SoftAP / SoftAP+Station
보안 WPA/WPA2/WPA3-Personal
BLE Bluetooth 5.0 Low Energy (LE), LE 2 Mbps / LE Coded PHY / Advertising Extensions 지원
안테나 온보드 PCB 안테나 or IPEX 커넥터 (보드별)
주변 장치 GPIO 최대 22개 (보드마다 일부 제한)
UART 3개 (UART0, UART1, UART2)
SPI 2개
I²C 2개
I²S 1개 (오디오 인터페이스)
PWM (LEDC) 6채널
ADC 6채널, 12-bit, 0~3.3V 입력
DAC ❌ 없음
RMT (Remote Control) 2채널 (IR 송수신 등 타이밍 제어용)
Timers 4개 (64-bit General Purpose)
Watchdog 타이머, RTC, Task WDT 포함
RTC Real-Time Clock, Deep Sleep 모드 유지 가능
Touch Sensor ❌ 없음
USB ✅ Full-Speed USB 2.0 OTG (CDC, DFU 등 직접 연결 가능, UART 칩 불필요)
보안 기능 Secure Boot ✅ 지원 (1차, 2차 부트로더 보호)
Flash Encryption ✅ 지원 (AES-XTS 256-bit)
Crypto Engine ✅ AES, SHA, RSA, ECC, HMAC, RNG
eFuse ✅ 암호키, 칩 식별, Flash Encryption Key 저장
TRNG (True RNG) ✅ 내장
JTAG Protection ✅ eFuse로 비활성화 가능
전원
/
전력 소모
동작 전압 3.0V ~ 3.6V (권장 3.3V)
동작 전류 (Active Wi-Fi) 약 80 ~ 100 mA
Deep Sleep 전류 약 5 µA
전원 레귤레이터 내장 여부 ❌ (외부 LDO 필요)
전원 핀 3V3 / GND / EN (CH340 대신 USB 전원 직결 가능)

1. GPIO 토글 주기

1-1. 함수 명령과 레지스터 제어 와의 성능 차이를 측정해봤고, 레지스터 제어 방식이 약 15배 빠릅니다.

함수 호출 레지스터 제어
void setup() {
  pinMode(13, OUTPUT);
}

void loop() {
  digitalWrite(13, HIGH);
  digitalWrite(13, LOW);
}
void setup() {
  pinMode(13, OUTPUT);
}

void loop() {
  REG_WRITE(GPIO_OUT_W1TS_REG, (1 << 0));  // GPIO0 Set
  REG_WRITE(GPIO_OUT_W1TC_REG, (1 << 0));  // GPIO0 Clear
}

 

*신호 분석: Logic Analyzer(LA2016) 200MHz Sampling

함수 호출
레지스터 제어

 

일반적인 Arduino 모델과는 비교가 되지 않는 높은 성능을 나타냅니다. 동작 클럭 만 보아도 Arduino Uno 16MHz 와 ESP32-C3 160MHz 는 10배 차이가 나고 RISC-V 아키텍처의 성능이 월등히 뛰어납니다.

 

2. 연산 처리 능력

약 1초 간 루프 문 안에서 반복적으로 카운트(덧셈)하는 연산으로 시험인데, PC 에서 Serial 출력을 받기 위해서는 USB CDC on Boot 옵션을 Enable 로 설정해야 합니다.

unsigned long start, end;
volatile unsigned long count = 0;

void setup() {
  Serial.begin(9600);
  start = micros();
  while (micros() - start < 1000000) {  // 1초 동안
    count++;
  }
  end = micros();
  Serial.print("Count per second: ");
  Serial.println(count);
}

void loop() {}

 

결과는 1,152,194회 로 Arduino Uno(203,905회)대비 약 5.6배의 성능입니다.

+ Recent posts