나무모에 미러 (일반/밝은 화면)
최근 수정 시각 : 2025-12-15 22:16:17

FPGA


{{{#!wiki style="min-height: calc(1.5em + 5px); margin: 0 -10px -5px"
{{{#!folding [ 펼치기 · 접기 ]
{{{#!wiki style="margin:-6px -1px -11px"
<colbgcolor=#2707b9,#2707b9><colcolor=#fff> 학문 기반 학문
물리학 (전자기학 (회로이론 · 전자 회로 · 논리 회로) · 양자역학 · 물리화학 · 열역학 · 응집물질물리학) · 화학
연관 학문
수학 (공업수학 · 수치해석학 · 위상수학 · 미분방정식 · 대수학 (환론 · 표현론) · 선형대수학 · 이론 컴퓨터 과학 · 컴퓨터공학 (프로그래밍 언어 (HDL · VHDL · C · C++ · Java · 파이썬 · 베릴로그)) · 재료공학 · 제어 이론
공식 · 법칙 전자기 유도 · 가우스 법칙 · 비오-사바르 법칙 · 무어의 법칙 · 키르히호프의 법칙 · 맥스웰 방정식 · 로런츠 힘 · 앙페르 법칙 · 드모르간 법칙 · 페르미 준위 · 중첩의 원리
이론 · 연구 반도체 (P형 반도체 · N형 반도체) · 디스플레이 · 논리 회로 (보수기 · 가산기 · 플립플롭 · 논리 연산 · 비트 연산) · 전자 회로 · RLC 회로 · 역률 · DSP · 히스테리시스 곡선 · 휘트스톤 브리지 · 임베디드 시스템
용어 클럭 · ASIC · CPU 관련 (BGA · 마이크로아키텍처 · GPS · C-DRX · 소켓) · 전계강도계 · 축전기 · CMCI · 전송선 · 양공 · 도핑 · 이미터 · 컬렉터 · 베이스 · 시퀀스 · 헤테로다인
전기 · 전자
관련 정보
제품
스마트폰 · CPU · GPU (그래픽 카드) · ROM · RAM · SSD · HDD · MPU · CCD · eMMC · USB · UFS · LCD · LED · OLED · AMOLED · IoT · 와이파이 · 스마트 홈 · 마그네트론 · 마이크 · 스피커 · 배터리
소자
집적 회로 · 다이오드 · 진공관 · 트랜지스터 (BJT · FET · JFET · MOSFET · T-FT) · CMOS · IGBT · 저항기 · 태양전지 · 연산 증폭기 · 사이리스터 · GTO · 레지스터 · 펠티어 소자 · 벅컨버터
전기전자공학 교육 · 연구
관련 분야 제어공학 · 반도체공학 · 정보통신공학 · 전파공학 · 광공학
학과 전기전자공학과 · 반도체학과 · 정보통신학과 · 광공학과 · 원자력공학과
과목 공업수학 · 일반물리학 · 전자기학 · 회로이론 · 수치해석 · 프로그래밍 · 캡스톤 디자인
관련 기관 국가과학기술연구회(과학기술분야 정부출연연구기관)
자격증
전기 계열 기능사
전기기능사 · 철도전기신호기능사
기사
전기기사 · 전기산업기사 · 전기공사기사 · 전기공사산업기사 · 전기철도기사 · 전기철도산업기사 · 철도신호기사 · 철도신호산업기사
기능장 및 기술사
전기기능장 · 건축전기설비기술사 · 발송배전기술사 · 전기응용기술사 · 전기안전기술사 · 철도신호기술사 · 전기철도기술사
전자 계열 기능사
전자기기기능사 · 전자계산기기능사 · 전자캐드기능사
기사
전자기사 · 전자산업기사 · 전자계산기기사 · 전자계산기제어산업기사
기능장 및 기술사
전자기기기능장 · 전자응용기술사
기타 기능사
신재생에너지발전설비기능사(태양광)
기사
소방설비기사 · 신재생에너지발전설비기사(태양광) · 로봇소프트웨어개발기사 · 로봇하드웨어개발기사 · 로봇기구개발기사
}}}}}}}}}

[[컴퓨터공학|'''컴퓨터 과학 및 공학
{{{#!wiki style="font-family: Times New Roman, serif; display: inline;"
]]
{{{#!wiki style="margin: 0 -10px -5px; min-height:calc(1.5em + 5px)"
{{{#!folding [ 펼치기 · 접기 ]
{{{#!wiki style="margin: -5px -1px -11px"
<bgcolor=#1282d7,#1282d7> 기반 학문 수학(해석학 · 이산수학 · 수리논리학 · 선형대수학 · 미적분학 · 미분방정식 · 대수학(환론 · 범주론) · 정수론) · 이론 컴퓨터 과학 · 암호학 · 전자공학 · 언어학(음운론 · 형태론 · 통사론 · 의미론 · 화용론) · 인지과학
하드웨어 SoC · CPU · GPU(그래픽 카드 · GPGPU) · ROM · RAM · SSD · HDD · 참조: 틀:컴퓨터 부품
기술 기계어 · 어셈블리어 · 바이오스 · 절차적 프로그래밍 · 객체 지향 프로그래밍 · 함수형 프로그래밍 · 해킹 · ROT13 · 일회용 비밀번호 · 사물인터넷 · 와이파이 · GPS · 임베디드 · 인공신경망 · OpenGL · EXIF · 마이크로아키텍처 · ACPI · UEFI · LinuxBoot · gRPC · 리버스 엔지니어링 · HCI · UI · UX · 대역폭 · DBMS · NoSQL · 해시(SHA · 브루트 포스 · 레인보우 테이블 · salt · 암호화폐) · RSA 암호화 · 하드웨어 가속
연구 및 기타 논리 회로(보수기 · 가산기 · 논리 연산 · 불 대수 · 플립플롭) · 정보이론 · 임베디드 시스템 · 운영체제(멀티태스킹 · 프로세스 스케줄링 · 데드락 · 식사하는 철학자 문제 · 뮤텍스 · 세마포어 · 인터럽트) · 데이터베이스 · 컴퓨터 언어 · 프로그래밍 언어{컴파일러(어셈블러 · JIT) · 인터프리터 · 유형 이론 · 어휘 분석 · 파싱 · 링커 · 난해한 프로그래밍 언어} · 마크업 언어 · 메타데이터 · 기계학습 · 빅데이터 · 폰노이만 구조 · 양자컴퓨터 · 행위자 모델 · 인코딩(유니코드 · MBCS) · 네트워크(네트워크 포트) · 컴퓨터 보안 · OCR · 슈퍼컴퓨터 · 튜링 머신 · FPGA · 딥러닝 · 컴퓨터 구조론 · 컴퓨터 비전 · 컴퓨터 그래픽스 · 인공지능 · 시간 복잡도(최적화) · 소프트웨어 개발 방법론 · 디자인 패턴 · 정보처리이론 · 재귀 이론 · 자연어 처리(기계 번역 · 음성인식) · 버전 (버전 관리 시스템) · 난수생성 · 놀람 최소화 원칙 · 프레임워크 · 라이브러리 · 모듈 · API · ABI · 이진 탐색
}}}}}}}}} ||
1. 개요2. 역사3. 상세
3.1. 내부 구조3.2. 동작 특성3.3. 설계 흐름
4. 활용5. 제조업체6. 개발 보드7. 여담8. 관련 문서

1. 개요

Field-Programmable Gate Array

사용자(설계자)가 현장에서(Field) 논리 회로를 직접 프로그래밍(Programmable)할 수 있는 게이트 어레이(Gate Array) 형태의 반도체 집적 회로. 논리 블럭이 격자 형태로 배치되어 있어 'Gate Array'라는 이름이 붙었다.

일반적인 컴퓨터 프로세서가 소프트웨어 명령어를 순차적으로 실행하는 구조라면, FPGA는 하드웨어 수준에서 디지털 회로 자체를 재구성하여 데이터를 병렬적으로 실시간 처리하는 것이 특징이다.

컴퓨터 프로그램을 만들 때 프로그래밍 언어를 사용하는 것처럼 FPGA 설계자는 HDL(Hardware Description Language)이라는 특수한 하드웨어 기술 언어를 통해 회로를 표현한다. HDL 코드를 합성(synthesis)하여[1] 하드웨어 내부의 논리 블록 및 배선으로 변환하고, FPGA 내부에서 사용하는 바이너리 데이터인 비트스트림(bitstream) 형태로 업로드하여 실제 회로로 구성할 수 있다. 최근에는 VerilogVHDL이라는 하드웨어 기술 언어를 주로 사용한다.

일반적인 프로세서는 보편적인 목적에 맞게 설계되어 양산되는데 반해, FPGA는 어플리케이션에 맞게 최적화 된 프로세스 및 내부 연산처리 로직[2]을 직접 설계하여 물리적으로 구현하는 형태이다. 단순 MCU 대체 용도부터 시작해서 DSP나 아예 자기가 원하는 방식대로 새로운 논리 소자CPU를 만드는 것도 가능하며 이론상 한 클럭에 모든 작업을 수행할 수도 있다. (단, 두 플립플롭 사이의 논리회로가 크고 복잡해질수록 동작에 걸리는 시간이 늘어나기 때문에 클럭 주파수가 감소한다.)

인류 역사상 프로그래밍이 가능한 반도체 중 신뢰성이 높다. 이는 코드를 한 줄씩 순차적으로 실행하는 소프트웨어 방식이 아니라, 하드웨어적으로 구성된 회로가 전기 신호에 따라 즉각적으로 반응하기 때문이다. 또한 기존 회로의 동작을 방해하지 않으면서 새로운 기능을 병렬적으로 추가하거나 수정하는 것이 용이하다. 특히 실제 하드웨어로 구현하기 전, 시뮬레이션 단계에서 오동작이나 타이밍 지연(Delay) 등의 문제를 정밀하게 파악할 수 있다는 장점 덕분에 항공우주 및 방위산업 등 고신뢰성이 요구되는 분야에서 필수적으로 사용된다.

2. 역사

프로그래밍 가능한 논리 소자(PLD)의 개념은 FPGA가 나오기 전 1960년대부터 존재하였다.

1970년대에는 PLA, PAL과 같이 여러 개의 논리 소자를 입출력 핀과 연결하여 SoP(Sum of Products) 형태로 논리회로를 구성할 수 있는 소자들이 등장했다. 초기에는 퓨즈(Fuse)나 안티-퓨즈(Anti-Fuse) 구조의 한계로 인해 한 번만 기록할 수 있었으며, 전용 기록 장비가 필요했다. 당시 기술의 한계로 소자의 수는 수십 개 수준에 불과했으나, FPGA의 기원이 되는 기술적 토대가 마련된 시기이다.[3]

이후 PAL의 규모와 기능을 확장한 CPLD(Complex Programmable Logic Device)가 등장했고, 이를 더욱 발전시켜 구조적 유연성을 극대화한 것이 FPGA이다.

FPGA(Field-Programmable Gate Array)라는 명칭은, 초창기 퓨즈 방식의 ROM이나 PLD와 달리 메모리 기술을 활용하여 '현장(Field)에서' 칩 내부의 논리 게이트 배열(Gate Array)을 손쉽게 수정(Programmable)할 수 있다는 점을 강조하여 붙여졌다.

시장에 나온 재기록 가능한 첫 PLD 제품은 1984년 출시된 알테라의 EP300으로, EP300은 자외선을 이용한 EPROM 구조로 되어 있는 제품이었다.

1985년, 자일링스는 세계 최초의 상용 FPGA인 XC2064를 출시했다. 64개의 논리 블록을 탑재했으며, 전원이 켜질 때마다 외부 ROM에서 구성 데이터를 시리얼 인터페이스로 받아오는 방식이었다.

1991년, 자일링스는 XC4000 시리즈를 출시하며 FPGA 아키텍처의 표준을 확립했다. 복잡한 함수 구현이 가능하도록 논리 블록 기능을 강화하고 올림수(Carry) 전용 회로를 내장했다.

1990년대에는 JTAG 인터페이스가 등장하여 보편화되면서 PC와 케이블 연결만으로 간편하게 FPGA를 프로그래밍할 수 있는 환경이 조성되었다.

1995년 알테라는 업계 최초로 내장 메모리(Embedded Memory)를 탑재한 FLEX 10K를 출시했으며, 자일링스 역시 1998년 Virtex 시리즈에서 블록 램(Block RAM)과 하드웨어 클럭 회로를 도입하였다. 이로써 FPGA는 단순 논리 소자를 넘어 본격적인 디지털 시스템 구현이 가능한 고성능 디바이스로 발전하기 시작했다.

2000년대 들어 FPGA는 단순 논리 회로를 넘어 고성능 연산 장치로 진화했다. 2001년 자일링스 Virtex-II는 최초로 하드웨어 곱셈기(Multiplier)를 내장했고, 2002년 Virtex-II Pro는 고속 통신용 트랜시버를 내장했다.

특히 2011년 출시된 Zynq-7000 시리즈는 FPGA와 고성능 ARM 프로세서를 하나의 칩(SoC)으로 완전히 통합했다는 점에서 중요한 변화였다. 이로써 별도의 CPU 없이도 리눅스 등 운영체제(OS) 구동과 하드웨어 제어를 칩 하나에서 동시에 수행할 수 있게 되었으며, 시스템의 복잡도와 크기를 획기적으로 줄이는 계기가 되었다.

2010년대 이후 데이터센터 및 AI 분야의 수요가 급증함에 따라, 최신 FPGA(예: Versal 시리즈 등)는 고대역폭 인터커넥트, 네트워크 가속기, AI 전용 연산 유닛(Tensor Core 등)을 하드웨어적으로 통합하는 방향으로 발전하고 있다.

3. 상세

FPGA의 내부는 크게 프로그래밍 가능한 논리 블록(CLB, LAB 등), 입출력 블록(I/O Block), 그리고 이들을 연결하는 상호 연결 배선(Interconnect)으로 구성된다.

초기의 FPGA는 단순히 논리 게이트의 배열이 전부였으나, 현대의 FPGA는 기본적인 논리 회로 외에도 메모리나 연산 장치 등 특정 기능을 수행하는 고정 모듈(Hard IP)이 칩 내부에 다수 포함되어 있다.

3.1. 내부 구조

FPGA 내부 자원은 크게 "무엇이든 될 수 있는 유연한 자원"(Programmable Logic)과 "이미 정해진 고성능 자원"(Hard IP)으로 나뉜다.

3.2. 동작 특성

일반적인 마이크로프로세서와 달리, FPGA는 HDL(Hardware Description Language) 코드를 통해 하드웨어 회로 자체를 구성한다. 잘 작성된 HDL 코드는 회로도 그 자체이므로, 칩의 제조사나 세대가 달라지더라도 타이밍 제약 조건만 충족한다면 동일한 논리적 동작이 보장된다. 이러한 높은 신뢰성과 장기간 유지되는 헤리티지 덕분에 실수가 용납되지 않는 항공우주 및 방위산업 분야에서 필수적으로 사용된다. 또한, FPGA 칩은 한 번 출시되면 단종되는 경우가 드물어 장기적인 유지보수에 유리하다.

FPGA의 성능은 단순 클럭 속도보다는 주로 논리 블록의 수로 결정된다. 이는 구현하는 회로의 특성에 따라 동작 속도가 달라지고, 논리 회로를 병렬적으로 배치함으로써 처리 능력을 크게 늘릴 수 있기 때문이다. 클럭 신호에 맞추어 명령어를 차례대로 수행하는 프로세서와는 근본적으로 동작 방법이 다르다고 할 수 있다.[4] 단, 이것이 회로 자체의 동작 속도가 중요하지 않다는 뜻은 아니므로 오해해서는 안 된다.

때문에 현실의 시간과 동기화해서 운용할 수 없어서, Real-Time 시스템과의 연계가 필수적이다. 단, 이는 회로 동작 속도가 중요하지 않다는 뜻은 아니므로 주의 바람.

이때 일반적으로 FPGA 사양의 "로직 셀" 또는 "LE" 개수는 4-input LUT로 환산된 FPGA의 용량이며, AMD(Xilinx) 6-input LUT의 경우 대략 2.4:1, Altera ALM의 경우 대략 2.6:1 정도 비율로 환산되는 것으로 보인다.

FPGA는 모든 디지털 로직을 구현할 수 있지만 결코 만능은 아니다. FPGA는 특수 목적 소형 로직(DSP, 통신, 라우팅)이나 고도로 병렬화된 로직(가속기)은 매우 고성능으로 구현할 수 있지만, CPU와 같은 단일 대형 로직 구현에는 비효율적이다. 이는 FPGA가 고정된 로직 셀의 연결만을 이용해 회로를 구현하는 특성상 게이트 사이징과 인터커넥트 최적화와 같은 회로 고속화가 불가능하기 때문이다. 따라서 상용 CPU의 동작 속도가 수 GHz 단위일 때 FPGA상에 구현한 CPU의 동작 속도는 아무리 빨라도 수백 MHz 정도가 한계이며 복잡한 고급 코어는 수십 MHz도 어려울 수 있다. 따라서 현대 CPU 수준의 대형 고급 로직은 FPGA에서 연구, 교육 및 테스트 목적으로만 구현되며 실용적이지 않다.

또한 항상 CPU 보다 효율적인 것도 아니다. 제어 구문은 CPU는 순차적으로 처리하여 작은 공간으로도 충분히 복잡한 제어를 구현할 수 있다. 반면 FPGA는 제어구문을 상태 머신으로 풀어서 써야 하기 때문에 복잡한 제어 구문이 들어가면 상태머신이 지나치게 많이 증가하여 내부 공간을 크게 차지하게 된다. 최신 고성능 FPGA가 몇십년 된 CPU도 쌩쌩 돌리는 오래된 게임조차 제대로 못 돌린다. CPU를 모사하여 돌리는 건 당연히 가능하지만 게임 자체를 RTL로 구현하는 건 엄두도 못 낸다. 프로그래밍의 복잡성도 문제지만 진짜 문제는 내부 공간을 너무 차지하여 비효율적이라는 것에 있다.

이러한 한계를 극복하기 위해 FPGA(PL)와 CPU(PS)를 하나의 칩에 통합한 SoC(System on Chip) 제품도 있다. 하드웨어 로직의 높은 전용성능과 소프트웨어의 유연하고 편리한 제어를 모두 누릴 수 있어 다양한 분야에 널리 사용된다. 실제 산업현장에서도 FPGA가 단독으로 쓰이는 경우는 거의 없으며, 주로 피코/나노초 단위의 고속 처리가 필요한 분야에만 FPGA를 적용하고 이 FPGA를 다른 CPU가 제어하므로 통합 효율이 뛰어나다. 자일링스의 ZYNQ, 인텔의 Agilex SoC 등 ARM Cortex-A 시리즈 기반 코어가 주로 탑재되며 제3업체에서는 오픈 소스 RISC-V 코어를 탑재하기도 한다.

혹은 아직은 미래의 이야기지만 FPGA의 논리 블럭 안에 초소형 CPU나 상태머신을 넣으려는 시도도 있다. 현재는 논리블럭 내에 주로 연산 중심 DSP 코어가 들어가 있으며 이로 인해 연산 속도와 효율성이 크게 증가하였다. 만약 CPU나 상태머신이 논리블럭 내에 들어가게 된다면 게임 개발자들이 중간중간에 스크립팅 언어를 쓰는 것처럼 훨씬 유연하게 FPGA를 사용할 수 있다.

프로그래밍이 가능한 주제에 비교 대상은 항상 ASIC이다. ASIC은 프로그래밍이 불가능한 양산형 집적 회로이고, 성능, 전력 소모, 칩 가격 모든 면에서 FPGA보다 뛰어나지만, 개발 비용을 포함한 고정 비용이 어마무시하기 때문에 수요 규모가 크지 않으면[5] ASIC보다는 FPGA를 사용하는 게 일반적이다. ASIC과 비교해서 FPGA는 기본적으로 해당 공간에 모든 용도로 활용 가능한 로직 블록을 우겨 넣은 형태이기 때문에 전력 소모가 많으며 ASIC보단 소형화된 설계를 할 수 없다. 저전력으로 설계된 FPGA칩도 존재하며 이들도 나름의 시장을 형성하고 있다. ASIC는 인쇄 회로 기판, FPGA는 만능기판에 비유할 수도 있다. 실제로도 과거에는 PCB 또한 커스텀 제작이 어려웠다. 하지만 기술의 발달로 커스텀 PCB를 취급하는 제조업체가 상당히 늘어 옛말이 되었다.

상기한 특성들로 인해 FPGA는 인공지능이나 기계 제어 등 다양한 분야에서 활발하게 사용된다.

3.3. 설계 흐름

컴퓨터의 프로그램 코드를 실제 컴퓨터에서 실행 가능하게 컴파일 한 결과물을 바이너리라고 하는 것처럼, HDL 코드를 실제 FPGA에서 작동 가능하게 합성한 결과물을 비트스트림(bitstream)이라고 부른다. 소프트웨어 바이너리는 다른 CPU라도 같은 아키텍쳐 끼리는 호환이 가능한 반면, 하드웨어 비트스트림은 다른 칩이면 전혀 호환성이 없기 때문에 반드시 각각 합성해야 한다.

RTL 코드로 비트스트림을 합성하고 FPGA를 프로그램하기 위해서는 각 제조사에서 제공하는 전용 소프트웨어(AMD Vivado, Intel Quartus, Lattice Diamond 등)를 사용하는 것이 일반적이고, openFPGALoader를 이용해 툴 없이 비트스트림만 업로드하는 것도 가능하다. 저가 라인업의 경우 무료 버전 소프트웨어로 개발 가능하나, 고가 라인업의 경우 수백만원 가격의 Pro 에디션을 구매하여야 한다.

일부 비휘발성 FPGA는 전원을 꺼도 프로그램된 상태가 유지되지만, 대부분의 FPGA는 SRAM 기반의 휘발성이기 때문에 전원을 끄면 프로그램이 삭제되어 다시 전원이 들어와도 이전의 기능을 할 수 없다. 그렇기 때문에 FPGA는 전원을 켤 때마다 다시 비트스트림을 프로그램해야 한다. 그렇다고 전원을 켤 때 마다 컴퓨터에 연결해서 비트스트림을 다운받을 수는 없으므로, 일부 기종에는 MCU가 내장되어 전원이 켜질 때 마다 자동으로 SPI Flash나 SD card 등에 저장된 비트스트림을 읽어 프로그램 하는 기능이 있다. MCU가 내장되어 있지 않더라도 외부의 MCU를 이용하거나 PS+PL 구성의 칩에서는 MCU 대신 PS가 직접 비트스트림을 프로그램 할 수도 있다.

4. 활용


빠르고 신뢰성 있는 하드웨어 프로그래밍을 요구로 하는 현장에서 주로 쓰인다. 일반적으로 ASIC(주문형 반도체) 설계용 테스트 용도나 DSP 개발용으로 쓰거나 일부에서 MCU 용도로 사용하기도 한다.[7]

한때는 다른 저전력 MCU들에 밀리다가 최근에 들어서 가속기 용도로 활약하며 AI 분야(마이크로소프트나 인텔이 이 부분에 적극적이다.)나 암호화폐 채굴 등 막대한 연산력을 필요로 하는 분야에서 두각을 드러내고 있다. 암호화폐 채굴 분야에서는 사실 ASIC으로 넘어가기 전 단계에 해당된다. 채굴 로직을 개발해서 FPGA에 탑재해 성능 확인 후 그대로 ASIC행.

가속기 용도에서는 GPGPU와 경쟁 상대. FPGA를 사용하면 하드웨어 레벨에서 애플리케이션의 병렬 처리를 최적화 할 수 있기 때문에 GPGPU보다 성능이나 전력 소모 등에서 훨씬 유리하다. 암호 화폐 채굴기 사례에서 알 수 있듯이 잘 설계된 하드웨어 가속기는 GPGPU를 전성비에서 밟아버릴 수 있다. 그러나 하드웨어를 설계해 줘야 하는 FPGA의 특성상 설계 난이도가 매우 높다는 큰 단점이 있다.(그 어렵다는 GPGPU보다 훨씬 더!) 예를 들어 박사 학위를 가진 엔지니어 한 명이 2달 동안 어떤 동영상 처리 알고리즘을 GPGPU로 구현했는데, 동일한 알고리즘과 기능을 FPGA로 구현할 때 박사 학위를 가진 엔지니어 두 명이 1년 동안 작업해야 했다는 보고가 있다. 단순 계산하면 동일한 기능의 구현에 GPGPU 보다 12배의 노동력이 필요했던 것이다. C 등의 프로그래밍 언어로 알고리즘을 짜면 HDL로 변환해주는 HLS(High Level Synthesis)도 많이 보급되었지만, 그게 하드웨어를 몰라도 쉽게 사용할 수 있는 만능 도구라 생각하면 곤란하고, FPGA 설계는 하드웨어 설계에 대한 지식이 없는 일반적인 사람에게는 불가능에 가까운 진입 장벽을 가지고 있다. 즉, FPGA를 설계할 줄 안다는 것은, 단순한 코딩 지식 뿐 아니라 회로 설계 지식까지 전체적으로 알고 있다는 이야기가 된다.

마이크로소프트에서는 데이터 센터 서버에 알테라(Altera)의 FPGA를 도입해서 Bing 검색엔진의 성능 및 전력 소모를 개선했다고 한다.

일반인들이 체감할 수 있는 사용 사례를 꼽아보면 G-SYNC나 카메라 등이 있는데 엔비디아는 자사의 G-SYNC 컨트롤 보드에 인텔의 ARRIA FPGA를 사용하였다. 이외에도 엔비디아는 인텔제 FPGA를 많이 사용한다. Quadro Sync II에도 인텔제 FPGA가 들어가 있음을 확인할 수 있다. 영상 캠코더 분야에서 초 고해상도 영상의 무지막지한 처리량을 감당하기 위해 아예 대형 FPGA를 통째로 넣고 처리해버리는 제품들이 많다. 또한 캡쳐 보드 분야에서도 FPGA가 쓰이는 등 영상 분야에 광범위하게 쓰인다. 그리고 대다수의 경우 이 FPGA가 발열의 원인이다.

고급형 오디오 인터페이스의 신호처리 및 라우팅 용도로 FPGA를 탑재하는 경우가 많다. ASIC을 제작할 정도로 큰 수요는 없지만 극도로 낮은 입출력 레이턴시와 DSP가 필요하기 때문에 FPGA가 적격이다.

이외에도 현재는 판매되지 않는 구형 칩셋의 구현을 위해서 사용하기도 하는데 MiSTer FPGA, Analogue Pocket과 같은 레트로 게임기의 물리적 구현이 대표적인 예시이다.

5. 제조업체

FPGA 제조 업체 자체는 많지만 시장 점유율을 보면 1위 AMD[8], 2위 알테라[9] 이 두 회사가 거의 90%에 가까히 차지하고 있다. 시장점유율 사실상 FPGA 분야는 AMD와 알테라(인텔)의 양강 경쟁구도라고 볼 수 있다.

이 두 회사는 몇 안 되는 빅칩 FPGA 제조사이다보니 규모가 어느 정도 있는 장비에 들어가는 FPGA는 십중팔구 이 두 회사의 제품이 들어간다.[10] 대표적인 제품군으로 AMD의 경우 버텍스, 킨텍스, 알테라의 경우 스트라틱스, 애질렉스가 있다.

이보다 작은 소규모 회사들로는 마이크로세미[11], Lattice Semiconductor 등이 있으며, 그외의 회사들은 구색 갖추기 수준의 라인업만 있는 경우가 많다.

6. 개발 보드

FPGA 칩 단독으로는 사용이 불가능하므로, 전원부, 클럭, 입출력 포트 등이 구성된 개발 보드(Development Board) 형태로 구매하여 사용한다. 가격대는 입문용인 수만 원대부터 전문 개발용인 수천만 원대까지 다양하다. 교육용으로 제공되는 FPGA 보드의 경우 스위치/버튼 및 LED, 7세그먼트 디스플레이 등이 포함되어 있는 경우가 많다.

아래는 주요 교육용/입문용 보드 제조사 및 주요 제품 목록이다. 일반적으로 AMD/Xilinx FPGA 보드가 많이 사용된다. 최신 보드 위주로 기술한다. (구형 보드는 같은 라인업의 신형 보드에 비해 가격 대비 사양이 안 좋은 경우가 많다.)

7. 여담

Escape from Tarkov에 등장하는 고가의 아이템인 버텍스(Virtex)는 실제로 AMD에서 판매하는 FPGA이다.

8. 관련 문서


[1] 컴파일이란 용어 대신 합성(synthesis)이라고 부른다. HDL로 작성한 회로를 FPGA 내부에 업로드 할 경우, 단순히 코드가 저장되는 게 아니라 논리 회로가 물리적으로 재구성되기 때문이다.[2] 곱셈 연산이 많은 경우, 곱셈 처리 로직을 여러 개 추가하여, 그 연산 속도를 높일 수 있음[3] 이러한 PAL 칩 등은 물론 당대 컴퓨터에도 자주 사용되었다. 가령 당시 대우나 금성에서 만든 국산 MSX 컴퓨터들의 메인보드에도 PAL 칩이 하나 이상 들어가있었다.[4] 비유하자면 프로세서는 프로그래밍 언어 마냥 순차적으로 돌아가는거고, FPGA는 논리 소자 칩들로 하드웨어 코딩을 하는 거라고 생각하면 된다. 전자공학과 사람이라면 논리 소자에 대해 배우면서 소프트웨어를 하나도 사용하지 않고 순수 칩들만을 납땜해가며 시계나 계산기 등을 만들어본 적이 있을 텐데 FPGA는 이런 논리 칩/하드웨어 코딩을 납땜 대신, 소프트웨어를 도구로서 물리적인 논리 칩을 구성/재구성한다고 생각하면 된다. 당연히 이런 특성 덕분에 칩이 망가지지 않는다면 윈도우 마냥 에러가 뜰 일이 어지간해서는 없다.[5] 수요 규모가 큰 비트 코인 채굴에는 세계적으로 ASIC가 쓰인다.[6] 이렇기 때문에 가끔씩 FPGA 관련 제품 구매 시 "군사적 용도로 사용할 것이냐"에 대해서 질의 응답을 하는 벤더들 또한 있다. 몇몇 소자들은 수출 통제를 까다롭게 받아야 해서 판매가 금지된 단체나 적성국에 수출 시 법적 제재를 받게 된다. 사실 FPGA 뿐만 아니라 많은 전자부품과 EDA들이 이중용도로 분류되어 있어 확인 절차를 형식적이라도 거친다.[7] 다만 FPGA를 마이크로컨트롤러 대신에 사용하는건 보통 돈낭비라 마이크로컨트롤러로 처리 불가능한 작업을 처리하거나(나노/피코초 단위의 반응속도가 필요한 제어장비) 미친듯한 신뢰성을 이유로 절대로 고장나면 안 되는 일부 기기에 마이크로 컨트롤러 대신 쓰는 정도가 대부분이다.[8] 원래 1위는 자일링스였지만 AMD에 인수됨에 따라 브랜드가 폐지되었다.[9] 과거 인텔이 인수한 뒤 알테라 브랜드를 폐지하고 인텔 브랜드에 편입했다가 현재 다시 분사하였다.[10] 일례로 KF-21 보라매에는 자일링스의 버텍스 FPGA가 탑재된다.[11] Microchip Technology의 FPGA 부문.

분류