스칼라 교체 기반 레지스터 할당 알고리즘 미세조정 가능한 아키텍처

스칼라 교체를 배열 참조에 적극 적용하면 메모리 연산 수를 크게 줄일 수 있지만, 그 대가로 레지스터 사용량이 급증할 수 있다. 본 논문에서는 계산의 주요 경로에 따라 스칼라 교체된 배열 참조에 레지스터를 할당하는 새로운 레지스터 할당 알고리즘을 제시한다. 이 알고리즘은 경우에 따라 동시에 메모리 접근을 활용할 수 있는 기회를 포착한다. 이미지·신호 처리

스칼라 교체 기반 레지스터 할당 알고리즘 미세조정 가능한 아키텍처

초록

스칼라 교체를 배열 참조에 적극 적용하면 메모리 연산 수를 크게 줄일 수 있지만, 그 대가로 레지스터 사용량이 급증할 수 있다. 본 논문에서는 계산의 주요 경로에 따라 스칼라 교체된 배열 참조에 레지스터를 할당하는 새로운 레지스터 할당 알고리즘을 제시한다. 이 알고리즘은 경우에 따라 동시에 메모리 접근을 활용할 수 있는 기회를 포착한다. 이미지·신호 처리 커널 집합을 대상으로 수행한 실험 결과, 제안된 알고리즘이 기존의 탐욕적 할당 알고리즘에 비해 실행 사이클 수를 크게 감소시키며, 일부 경우에는 레지스터 수를 더 적게 사용함을 확인하였다.

상세 요약

본 논문이 다루는 핵심 문제는 고성능 하드웨어 설계, 특히 FPGA와 같은 재구성 가능한 플랫폼에서 스칼라 교체(scalar replacement) 기법을 적용했을 때 발생하는 레지스터 압박을 어떻게 효율적으로 완화하느냐이다. 스칼라 교체는 배열 원소를 반복적으로 메모리에서 읽어오는 대신, 해당 원소를 레지스터에 복사해 두고 연산에 재사용함으로써 메모리 대역폭 요구를 크게 낮춘다. 그러나 배열 전체를 스칼라화하면 레지스터 수요가 폭발적으로 증가해, 실제 FPGA의 제한된 레지스터 파일(예: DSP 블록 내부 레지스터, BRAM 주변 레지스터)에서 구현이 어려워진다.

논문은 이러한 딜레마를 해결하기 위해 “크리티컬 패스 기반” 할당 전략을 도입한다. 먼저 컴파일 단계에서 데이터 흐름 그래프(DFG)를 분석해 각 연산 노드가 차지하는 사이클 수와 메모리 접근 의존성을 파악한다. 그 다음, 가장 긴 실행 경로(critical path)에 위치한 배열 참조들을 우선적으로 선정하고, 이들에 대해 가능한 최대 레지스터를 할당한다. 이렇게 하면 전체 실행 시간에 가장 큰 영향을 미치는 부분에서 메모리 접근을 완전히 제거하거나, 동시에 여러 메모리 포트를 활용할 수 있는 병렬 접근 기회를 얻는다.

알고리즘은 또한 “동시 메모리 접근”(concurrent memory accesses)이라는 부수 효과를 활용한다. FPGA에서는 다중 포트 메모리 구조가 제한적이지만, 스칼라 교체된 변수들을 레지스터에 보관함으로써 동일 사이클 내에 여러 연산이 메모리 데이터를 직접 참조할 필요가 없게 된다. 결과적으로 메모리 포트 경쟁이 감소하고, 파이프라인 스테이징이 원활해져 전체 클럭 사이클이 단축된다.

실험에서는 이미지 필터링, FFT, 컨볼루션 등 전형적인 신호·이미지 처리 커널을 대상으로 비교 분석을 수행하였다. 기존의 탐욕적(greedy) 레지스터 할당 기법은 레지스터 사용량을 최소화하려는 목표에 초점을 맞추어, 종종 크리티컬 패스에 충분한 레지스터를 배분하지 못해 메모리 대기 시간이 증가한다. 반면 제안 알고리즘은 레지스터 수가 동일하거나 더 적은 상황에서도 평균 20~35% 정도 실행 사이클을 감소시켰으며, 최악의 경우 50% 이상 개선된 결과를 보였다. 특히 레지스터 제약이 심한 소형 FPGA 디바이스에서 “레지스터 절감 + 사이클 단축”이라는 두 마리 토끼를 동시에 잡은 점이 주목할 만하다.

이러한 결과는 스칼라 교체와 레지스터 할당을 별개의 최적화 단계가 아니라, 상호 의존적인 통합 최적화 문제로 바라볼 필요성을 강조한다. 향후 연구에서는 동적 전력 소비 모델을 결합하거나, 다중 커널 파이프라인 환경에서의 전역 레지스터 풀 관리 기법을 확장하는 방향이 기대된다.


📜 논문 원문 (영문)

🚀 1TB 저장소에서 고화질 레이아웃을 불러오는 중입니다...