FPGA (현장 프로그래밍 가능 게이트 배열)

공학
한 줄 정의: 내부 회로 구조를 나중에 원하는 대로 다시 배선해서 바꿔 쓸 수 있는 반도체 칩입니다.

쉽게 풀면

보통 컴퓨터 칩(CPU)은 이미 정해진 회로 위에서 "명령어"를 순서대로 읽어 실행하는 방식으로 동작합니다. 반면 FPGA는 마치 레고 블록처럼, 칩 내부에 수많은 작은 논리 조각(게이트)과 이들을 잇는 연결선이 미리 깔려 있고, 설계자가 "이 조각과 저 조각을 이렇게 연결하라"는 배선도를 나중에 입력해서 원하는 회로 자체를 새로 만들어낼 수 있습니다. 즉 소프트웨어처럼 코드를 바꾸는 게 아니라 하드웨어 회로 구조 자체를 프로그래밍하는 것이며, 필요하면 전원을 끄고 다시 배선도를 넣어 완전히 다른 회로로 재구성할 수도 있습니다. 그래서 전용 칩(ASIC)을 만들 만큼 대량 생산은 아니지만 일반 CPU보다 빠른 병렬 처리가 필요한 연구·시제품 단계에서 널리 쓰입니다.

왜 중요한가

FPGA는 전용 칩(ASIC)을 새로 설계·제작하는 것보다 훨씬 짧은 기간과 비용으로 원하는 하드웨어 회로를 구현하고 검증할 수 있어, 새로운 알고리즘을 실제 하드웨어에서 빠르게 시제품으로 만들어야 하는 연구에서 널리 쓰입니다. 딥러닝 가속기, 통신 신호처리, 암호화 연산처럼 병렬 처리 성능과 저지연이 동시에 중요한 응용 분야에서, GPU나 일반 CPU 대비 전력 효율과 지연시간의 균형을 보여주는 비교 대상으로 자주 등장합니다. 그래서 컴퓨터공학·전자공학 논문에서 제안한 알고리즘의 실용성을 입증하는 하드웨어 구현 플랫폼으로 자리 잡고 있습니다.

논문에서는 이렇게 쓰입니다

"제안된 알고리즘은 FPGA 기반 하드웨어 가속기로 구현되어 실시간 처리 요구 조건을 만족하였다."

이 문장은 "알고리즘을 소프트웨어가 아니라 FPGA 위에 직접 회로로 구현했더니, 실시간으로 처리할 만큼 충분히 빨라졌다"는 뜻입니다. 알고리즘의 각 연산 단계를 병렬 회로로 동시에 처리할 수 있기 때문에 순차 처리하는 일반 프로세서보다 특정 작업에서 훨씬 빠른 속도를 낼 수 있습니다.

"경량화된 신경망 모델을 FPGA에 이식하여 GPU 대비 동일 정확도에서 소비 전력을 크게 낮추면서도 추론 지연시간을 유지하였다."

이 문장은 인공지능 모델을 FPGA 위에서 돌렸더니, 정확도는 비슷하게 유지하면서 전력은 덜 쓰고도 응답 속도는 크게 떨어지지 않았다는 뜻입니다.

"암호화 알고리즘의 핵심 연산 블록을 FPGA 상에 파이프라인 구조로 구현하여 처리량을 향상시켰다."

이 문장은 암호화에 필요한 반복 연산들을 FPGA 회로 안에서 순서대로 겹쳐 처리(파이프라이닝)하도록 설계해서, 단위 시간당 처리할 수 있는 데이터의 양을 늘렸다는 뜻입니다.

조금 더 깊게 보면

FPGA 내부에는 룩업테이블(LUT)과 플립플롭으로 구성된 논리 블록, 곱셈·누산에 특화된 DSP 블록, 온칩 메모리 블록 등이 배열되어 있고, 이들 사이를 프로그래밍 가능한 배선망으로 연결해 원하는 회로를 구성합니다. 설계자는 보통 VHDL이나 Verilog 같은 하드웨어 기술 언어로 회로 동작을 기술한 뒤, 합성(synthesis)과 배치·배선(place and route) 과정을 거쳐 실제 칩에 프로그래밍합니다. 최근에는 C/C++ 코드로 작성한 알고리즘을 자동으로 회로로 변환해주는 고위 합성(High-Level Synthesis, HLS) 도구도 널리 쓰여, 하드웨어 설계 경험이 적은 연구자도 FPGA 구현에 접근하기 쉬워지고 있습니다.

주의할 점

FPGA는 "프로그래밍 가능"하다는 이름 때문에 소프트웨어처럼 C언어 코드를 짜는 것으로 오해하기 쉽지만, 실제로는 회로도를 기술하는 하드웨어 기술 언어(HDL)를 사용하며 사고방식 자체가 다릅니다. 또한 마이크로컨트롤러처럼 정해진 명령어를 순차 실행하는 것이 아니라, 여러 연산이 동시에(병렬로) 진행되는 회로를 설계하는 것이라는 점을 구분해야 합니다.

관련 용어