그라운드 임베디드 유튜브 구독

노트 / 자료구조와 알고리즘

시간과 메모리 복잡도: 작은 MCU에서 먼저 따질 것

RAM 20KB, 클럭 72MHz인 MCU에서는 알고리즘을 고르기 전에 계산량과 메모리를 먼저 따져야 합니다.

GROUND EMBEDDED · 정리 노트자료구조 01시간과 메모리 복잡도표기의미예O(1)데이터 양과 무관링 버퍼에 넣기, 룩업 …O(log n)절반씩 줄임정렬된 표에서 이진 탐색

PC에서는 메모리가 GB 단위라 자료구조를 넉넉하게 써도 됩니다. MCU는 RAM이 수 KB에서 수백 KB이고, 제어 루프는 정해진 주기 안에 끝나야 합니다. 그래서 임베디드에서는 "평균적으로 빠른가"보다 "최악의 경우에도 시간 안에 끝나는가"가 더 중요합니다.

빅오를 실무 언어로

표기 의미 예
O(1) 데이터 양과 무관 링 버퍼에 넣기, 룩업 테이블
O(log n) 절반씩 줄임 정렬된 표에서 이진 탐색
O(n) 하나씩 다 봄 배열 평균, 선형 탐색
O(n²) 이중 루프 버블 정렬

메모리 예산

설계할 때 RAM 사용량을 표로 먼저 적어 봅니다. 통신 버퍼, 센서 샘플 버퍼, RTOS 태스크 스택, 로그 버퍼를 더했을 때 전체의 70% 안쪽이면 안전한 편입니다. 링커가 만드는 맵 파일로 실제 사용량을 확인합니다.

현업 감각

10kHz 전류 제어 루프라면 한 주기는 100µs입니다. 72MHz MCU에서 7200클럭 안에 ADC 읽기, 좌표 변환, PI 계산, PWM 갱신을 모두 끝내야 합니다. 이런 루프 안에서는 나눗셈 한 번, sin() 한 번도 비용으로 계산합니다.