[논문 리뷰] Automatically Tuning the GCC Compiler to Optimize the Performance of Applications Running on the ARM Cortex-M3.
이 논문은 ARM Cortex-M3용으로 GCC 컴파일러 플래그를 자동으로 튜닝하는 방법을 제안하며, 표준 -O3 최적화를 초월해 성능을 향상시킨다. 이는 26개의 플래그를 제거하고 3개의 새로운 플래그를 추가함으로써 얻어진 정교한 설정(-Ocm3)을 통해 BEEBS 벤치마크 세트 전반에서 실행 시간을 크게 감소시킨다.
This paper introduces a novel method for automatically tuning the selection of compiler flags in order to optimize the performance of software that is intended to run on particular hardware platforms. Motivated by the rapid recent expansion of so-called Internet of Things (IoT) devices, we are particularly interested in improving the execution time of code running on embedded system architectures. We demonstrate the effectiveness of our approach on code compiled by the GNU C Compiler (GCC) for the ARM Cortex-M3 (CM3) processor; and we show how our method outperforms the current industry standard -O3 optimization level across a diverse embedded system benchmark suite called BEEBS. We begin by conducting an investigatory study to quantify the potential gains by using existing iterative compilation approaches that time-intensively search for optimal configurations for each given benchmark. Then we adapt iterative compilation to output a single configuration that optimizes performance across the entire benchmark suite as a whole. Although this is a time consuming process, our approach eventually constructs a simple variation of -O3, which we call -Ocm3, that realizes nearly two thirds of the known available gains on the CM3 architecture (beyond -O3) and significantly outperforms a far more complex state-of-the-art predictive method. Our approach suggests that 26 flags should be removed from -O3 while three other flags should be added. We analyze in detail two of the former and explain why turning them off improves performance on this processor.
연구 동기 및 목표
- 자원이 제한된 IoT 디바이스에서 임베디드 시스템의 최적 컴파일러 플래그를 수동으로 선택하는 데 도전하는 문제를 해결하기 위해.
- 반복적 컴파일을 통해 다양한 벤치마크 세트에서 성능을 최적화하는 단일 통합 컴파일러 설정을 식별할 수 있는지 탐색하기 위해.
- ARM Cortex-M3 아키텍처에서 컴파일러 튜닝을 위한 기존 최첨단 예측 방법을 뛰어넘기 위해.
- CM3 프로세서에서 성능 향상에 상당한 영향을 미치는 특정 컴파일러 플래그의 제거 또는 추가를 식별하고 분석하기 위해.
제안 방법
- 연구는 BEEBS 벤치마크 세트에서 성능 영향을 측정하기 위해 반복적 컴파일을 활용하여 컴파일러 플래그 설정을 체계적으로 탐색한다.
- 전체 벤치마크 세트를 하나의 최적화 목표로 간주하여, 모든 벤치마크에서 최적 설정을 찾기 위해 시간이 오래 걸리는 검색을 수행한다.
- 성능 향상에 기반해 -O3에서 26개의 플래그를 제거하고 3개의 새로운 플래그를 추가함으로써 파생 최적 수준인 -Ocm3를 생성한다.
- 최종 -Ocm3 설정을 -O3 및 복잡한 예측 튜닝 방법과 평가하고 비교한다.
- 성능에 악영향을 미치는 두 가지 제거된 플래그에 대한 상세 분석을 수행하여 CM3 아키텍처에서의 부정적 영향을 설명한다.
- 최종 설정은 전체 BEEBS 세트를 대상으로 검증되어 총 성능 향상 정도를 측정한다.
실험 결과
연구 질문
- RQ1반복적 컴파일을 통해 다양한 임베디드 벤치마크 세트에서 성능을 최적화하는 단일 컴파일러 설정을 식별할 수 있는가?
- RQ2ARM Cortex-M3에서 표준 -O3 최적화 수준을 초월해 얼마나 많은 성능 향상을 달성할 수 있는가?
- RQ3-O3에서 제거하거나 추가할 경우 CM3 아키텍처에서 측정 가능한 성능 향상에 기여하는 특정 컴파일러 플래그는 무엇인가?
- RQ4제안된 -Ocm3 설정은 성능과 단순성 측면에서 최첨단 예측 튜닝 방법과 비교해 어떻게 다른가?
- RQ5어떤 컴파일러 플래그가 ARM Cortex-M3에서 성능에 악영향을 미치며, 그 이유는 무엇인가?
주요 결과
- 제안된 -Ocm3 설정은 ARM Cortex-M3에서 -O3를 초월해 달성 가능한 알려진 최대 성능 향상의 거의 2/3를 달성한다.
- 복잡한 최첨단 예측 튜닝 방법에 비해 단순함에도 불구하고 성능에서 뛰어난 성능을 발휘한다.
- -O3에서 특정 26개의 플래그를 제거하고 3개의 새로운 플래그를 추가함으로써 측정 가능한 명확한 성능 향상이 이루어진다.
- 제거된 두 플래그 중 일부는 CM3의 파ip라인에서 지나친 명령어 수준 병렬성 오버헤드로 인해 성능 저하를 유발함을 밝혀냈다.
- 최종 설정은 -O3보다 BEEBS 벤치마크 세트 전반에서 실행 시간을 더 효과적으로 감소시켜, 종합적인 전체 세트 최적화의 가치를 입증한다.
- 아키텍처 특화 튜닝이 최고 수준의 표준 최적화 수준을 초월해 심각한 성능 향상을 이끌 수 있음을 확인한다.
더 나은 연구,지금 바로 시작하세요
논문 읽기부터 검토까지, 연구 시간을 획기적으로 줄여보세요.
카드 등록 없음 · 무료 플랜 제공
이 리뷰는 AI가 만들고, 인간 에디터가 검토했습니다.