ESP32-S3에서 SIMD 가속 컴퓨터 비전: 2달러 마이크로컨트롤러에서 높은 처리량 달성

ESP32-S3에서 SIMD 가속 컴퓨터 비전

ESP32-S3 마이크로컨트롤러를 위해 SIMD 가속 FAST 특징 검출기가 구현되었으며, 128비트 SIMD 명령어를 활용하여 약 220%의 처리량 증가를 달성했습니다. 이 최적화를 통해 저비용 마이크로컨트롤러가 초당 30프레임(fps) VGA 스트림을 처리할 수 있어, 저렴한 엣지 하드웨어에서 실시간 컴퓨터 비전의 실현 가능성을 입증했습니다.

성능 및 하드웨어 맥락

ESP32-S3는 가격 대비 강력한 마이크로컨트롤러로, 최대 240MHz로 작동하는 듀얼 코어 CPU와 통합 WiFi 및 Bluetooth Low Energy 라디오를 갖추고 있습니다. FAST 특징 검출기 구현은 칩의 제한적이지만 사용 가능한 SIMD 명령어를 활용하여 처리 속도를 크게 향상시켰습니다.

테스트에서 SIMD 가속 구현은 QVGA(320x240) 프레임을 약 6밀리초에 처리했습니다. 전체 처리량은 초당 5.1메가픽셀(MP/s)에서 11.2MP/s로 개선되어, 임베디드 시스템에서 상당한 성능 향상을 나타냈습니다.

기술적 과제 및 해결책

SIMD 가속 FAST 검출기 개발은 ESP32-S3의 어셈블리 언어로 직접 작업하고 Xtensa LX ISA의 특정 하드웨어 제한을 해결해야 했습니다.

정렬되지 않은 메모리 접근 처리

SIMD 아키텍처는 직접적인 비정렬 읽기를 지원하지 않습니다. 중심 픽셀 주변의 기본 방향(동쪽 및 서쪽)에서 픽셀 데이터를 샘플링할 때 필요한 메모리 블록이 정렬되지 않았습니다. 이는 두 개의 연결된 레지스터에서 단일 레지스터로 슬라이스를 추출할 수 있는 특정 칩 명령어를 활용하여 필요한 픽셀 데이터를 추출함으로써 해결되었습니다.

부호 있는 산술과 부호 없는 산술 간의 문제 극복

ESP32-S3의 SIMD 명령어는 부호 있는 8비트 숫자에 대해서만 비교를 구현하는 반면, 픽셀 데이터는 부호 없는 8비트 숫자로 저장됩니다. 부호 없는 데이터를 부호 있는 데이터로 직접 재해석하면 특히 128에서 255 범위에서 비선형 매핑 문제가 발생하여 표준 비교 연산이 깨집니다.

이를 해결하기 위해 픽셀 값을 부호 없는 범위 [0, 255]에서 부호 있는 범위 [-128, 127]로 이동해야 했습니다. SIMD 산술 연산이 포화(saturating)되므로 표준 뺄셈은 불가능했습니다. 즉, 127보다 큰 값은 언더플로우 대신 -128로 클램프됩니다.

이는 2의 보수 산술의 속성을 활용하여 극복되었습니다. $x - 128$은 $-128$을 더하는 것과 동일하고, $-128$은 최상위 비트(0b10000000)로 표현되므로, $x - 128$ 연산은 부호 없는 바이트 $x$를 마스크 $0\text{x}80$과 XOR하여($x \text{ XOR } 0\text{x}80$) 달성할 수 있습니다. 이 기술을 통해 프로세서는 부호 없는 데이터를 비교 및 산술에 올바른 선형 범위에 있는 것처럼 처리할 수 있습니다.

구현 세부 사항

구현에는 저수준 연산을 관리하기 위해 basm이라는 기본 레지스터 할당기를 포함한 사용자 정의 어셈블리 코드 작성이 포함되었습니다. FAST 코너 사전 테스트는 벡터 레지스터의 용량과 일치하도록 16개 픽셀에 대한 극값 개수를 동시에 계산하는 함수를 설계하여 최적화되었습니다.

커뮤니티 통찰 및 추가 고려 사항

이 프로젝트에 대한 기술 토론에서는 ESP32-S3의 SIMD 기능과 대체 하드웨어에 대한 몇 가지 사항이 강조되었습니다.

  • SIMD 난이도: 여러 기여자들은 ESP32-S3의 SIMD 명령어가 복잡하고 효과적으로 사용하기 어렵다고 언급했습니다.
  • 성능 지표: 한 댓글은 5.1MP/s에서 11.2MP/s로의 증가가 백분율 증가가 시작 값에 상대적으로 계산되므로 220% 증가가 아닌 120% 증가라고 설명했습니다.
  • 대체 아키텍처: 더 강력한 SIMD를 원하는 사용자를 위해 CH32V407/CH32V467이 대안으로 언급되었으며, 이는 ESP32-S3의 구현보다 더 넓은 SIMD ISA(64비트 폭)를 제공하는 RISC-V 벡터 확장의 임베디드 하위 집합을 지원합니다.

SUMMARY: ESP32-S3 마이크로컨트롤러를 위해 FAST 특징 검출기의 SIMD 가속 구현이 개발되어, 저비용 플랫폼에서 실시간 컴퓨터 비전 작업의 처리량을 220% 증가시켰습니다.

TITLE: ESP32-S3에서 SIMD 가속 컴퓨터 비전: 2달러 마이크로컨트롤러에서 높은 처리량 달성

Sources