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

FPGA

'''[[전기전자공학과|전기·전자공학
{{{#!wiki style="font-family: Times New Roman, serif; font-style: Italic; display: inline;"
]]'''
{{{#!wiki style="margin:0 -10px -5px; min-height: 26px; word-break:keep-all"
{{{#!folding [ 펼치기 · 접기 ]
{{{#!wiki style="margin:-6px -1px -11px"
<colbgcolor=#009><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 · 레지스터 · 펠티어 소자 · 벅컨버터
자격증
전기 계열 기능사
전기기능사 · 철도전기신호기능사
기사
전기기사 · 전기산업기사 · 전기공사기사 · 전기공사산업기사 · 전기철도기사 · 전기철도산업기사 · 철도신호기사 · 철도신호산업기사
기능장 및 기술사
전기기능장 · 건축전기설비기술사 · 발송배전기술사 · 전기응용기술사 · 전기안전기술사 · 철도신호기술사 · 전기철도기술사
전자 계열 기능사
전자기기기능사 · 전자계산기기능사 · 전자캐드기능사
기사
전자기사 · 전자산업기사 · 전자계산기기사 · 전자계산기제어산업기사
기능장 및 기술사
전자기기기능장 · 전자응용기술사
기타 기능사
신재생에너지발전설비기능사(태양광)
기사
소방설비기사 · 신재생에너지발전설비기사(태양광) · 로봇소프트웨어개발기사 · 로봇하드웨어개발기사 · 로봇기구개발기사
}}}}}}}}}


[[컴퓨터공학|컴퓨터 과학 & 공학
Computer Science & Engineering
]]
[ 펼치기 · 접기 ]
||<tablebgcolor=#fff,#1c1d1f><tablecolor=#373a3c,#ddd><colbgcolor=#0066DC><colcolor=white> 기반 학문 ||수학(해석학 · 이산수학 · 수리논리학 · 선형대수학 · 미적분학 · 미분방정식 · 대수학(환론 · 범주론) · 정수론) · 이론 컴퓨터 과학 · 암호학 · 전자공학 · 언어학(형태론 · 통사론 · 의미론 · 화용론 · 음운론) · 인지과학 ||
하드웨어 구성 SoC · CPU · GPU(그래픽 카드 · GPGPU) · ROM · RAM · SSD · HDD · 참조: 틀:컴퓨터 부품
기술 기계어 · 어셈블리어 · C/C++ · C# · Java · Python · BIOS · 절차적 프로그래밍 · 객체 지향 프로그래밍 · 해킹 · ROT13 · 일회용 비밀번호 · 사물인터넷 · 와이파이 · GPS · 임베디드 · 인공신경망 · OpenGL · EXIF · 마이크로아키텍처 · ACPI · UEFI · NERF · gRPC · 리버스 엔지니어링 · HCI · UI · UX · 대역폭 · DBMS · NoSQL · 해시(SHA · 브루트 포스 · 레인보우 테이블 · salt · 암호화폐) · RSA 암호화 · 하드웨어 가속
연구

기타
논리 회로(보수기 · 가산기 · 논리 연산 · 불 대수 · 플립플롭) · 정보이론 · 임베디드 시스템 · 운영 체제 · 데이터베이스 · 프로그래밍 언어{컴파일러(어셈블러 · JIT) · 인터프리터 · 유형 이론 · 파싱 · 링커 · 난해한 프로그래밍 언어} · 메타데이터 · 기계학습 · 빅데이터 · 폰노이만 구조 · 양자컴퓨터 · 행위자 모델 · 인코딩(유니코드 · MBCS) · 네트워크 · 컴퓨터 보안 · OCR · 슈퍼컴퓨터 · 튜링 머신 · FPGA · 딥러닝 · 컴퓨터 구조론 · 컴퓨터 비전 · 컴퓨터 그래픽스 · 인공지능 · 시간 복잡도(최적화) · 소프트웨어 개발 방법론 · 디자인 패턴 · 정보처리이론 · 재귀 이론 · 자연어 처리(기계 번역 · 음성인식) · 버전 (버전 관리 시스템 · Git · GitHub)


1. 개요2. 역사3. 상세4. 제조업체5. 활용6. 여담7. 관련 문서

1. 개요

Field-Programmable Gate Array

프로그래밍이 가능한 집적 회로 반도체. 모든 신호가 하드웨어 레벨에서 실시간 처리된다. HDL(Hardware Description Language)이라는 특수한 하드웨어 기술 언어를 통해 합성(synthesis)[1]되고 업로드되어 하드웨어 내부의 논리 연산과 배선이 재조정된다. 현대에는 VHDLVerilog라는 하드웨어 기술 언어를 주로 쓴다.

일반적인 프로세서는 보편적인 목적에 맞게 설계되어 양산되는데 반해, FPGA는 어플리케이션에 맞게 최적화 된 프로세스 및 내부 연산처리 로직[ *곱셈 연산이 많은 경우, 곱셈 처리 로직을 여러 개 추가하여, 그 연산 속도를 높일 수 있음]을 직접 설계하여 물리적으로 구현하는 형태이다.

인류 역사상 프로그래밍이 가능한 반도체 중 신뢰성이 높다. 이는 소프트웨어처럼 코드의 명령어를 한줄 한줄 실행하는 것이 아니라, 하드웨어적으로 회로가 구성되기 때문이고, 기존 동작 및 기능을 간섭하지 않으면서도 새로운 기능을 병렬적으로 추가 및 수정을 할 수 있는 특징 덕분이다. 게다가 오동작 또는 딜레이와 같은 타이밍 정보를, 실제 FPGA로 구현하기 이전에 시뮬레이션과 합성 단계에서부터 미리 파악할 수도 있다.

2. 역사

FPGA가 있기 전에 1970년대에 GAL, PAL 라고 하는 여러개의 로직 소자를 엮어서 입출력 구성을 자기 마음대로 바꿀수 있는 소자가 있었다. 다만 시기가 시기인 만큼 프로그래밍 가능한 수준은 아니었고 외부 핀과 연결되어서 제어하는 방식이었다. 아직 반도체 공학이 발전하지 않은 시절이라 이때의 소자수는 수십개 정도였는데 FPGA의 역사는 이곳에서 시작한다고 볼 수 있다.[2]

이후 PAL를 더 많이 사용해서 기능을 늘린 PLD가 탄생하고 이 PLD의 규모가 커진 CPLD(Complex Programmable Logic Device)가 나오게 되고 이후 더 발전한 개념인 FPGA가 나오게 된다.

Field-Programmable Gate Array라는 이름이 붙은 이유는 간단한데 기존에 PLC, CPLD 소자 같은 경우는 초창기의 ROM처럼 퓨즈 방식인 경우가 많아서 공장이 아니라면 프로그래밍이 불가능한 제품이 많았기 때문이다. FPGA에서는 메모리를 통한 소자 수정을 통해서 더 간단하게 기록할 수 있게 되었고 이때부터 제조사가 아니어도 논리 소자를 프로그래밍 할 수 있게 되었다.

시장에 나온 첫 FPGA는 알테라의 EP300이다. EP300은 자외선을 이용한 EPROM 구조로 되어 있는 제품이었다.

3. 상세

칩셋 내부에 로직 게이트를 자유자재로 구현할 수 있도록 진리표를 이용해 로직을 만들어 내는 RAM과 플립플롭이 빽빽히 박혀있고 내부 결선을 직접 변경할 수 있기 때문에 사용자의 용도에 맞게 온갖 칩을 설계 가능하다. 단순 MCU 대체 용도부터 시작해서 DSP나 아예 자기가 원하는 방식대로 새로운 논리 소자CPU를 만드는 것도 가능하며 이론상 한 클럭에 모든 작업을 수행할 수도 있다. (단, 두 플립플롭 사이의 논리회로가 크고 복잡해질수록 동작에 걸리는 시간이 늘어나기 때문에 클럭 주파수가 감소한다.)

일반적인 마이크로프로세서와 비교하였을 때, 잘 동작하던 코드가 세대가 달라진다든지 칩의 종류가 달라진다든지 했을 때 발생할 수 있는 이슈에서 상대적으로 자유롭다. HDL 언어는 회로도를 단지 언어로 표현한 것이기 때문에, 잘 작성된 코드는 FPGA 칩의 생산 시대와 제조사를 불문하고 동작이 보장된다. 그리고 이러한 안정적인 헤리티지를 계속 발전시켜 나감으로써 선순환이 지속된다. 이는 특히 실수가 용납되지 않는 항공우주 분야에서 대체제가 없는 이유 중 하나이다. 하지만 합성기에 따라 결과가 달라질 수도 있고, 칩 별로 사양이 전부 다르기 때문에 주의가 필요하긴 하다. 다행이도 FPGA 칩은 한번 출시되면 단종되는 경우가 적다.

주요 성능의 지표로는 동작 속도가 아닌 논리 블록의 수로 평가되는데, 이는 구현하는 회로의 특성에 따라 동작 속도가 달라지고 게이트 간 결선을 통해 동시에 수 만에서 수백 만의 명령을 단 한 번에 병렬적으로 실행할 수도 있기 때문이다. 클럭 신호에 맞추어 명령어를 차례대로 수행하는 프로세서와는 근본적으로 동작 방법이 다르다고 할 수 있다.[3] 때문에 현실의 시간과 동기화해서 운용할 수 없어서, Real-Time 시스템과의 연계가 필수적이다.

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

단순 프로그래머블 논리 소자 말고도 별도의 CPU를 탑재할 필요 없이 자체적인 CPU를 탑재한 제품도 나오고 있으며 이를 통해서 다양한 분야에 널리 사용되는 중이다. 실제 산업현장에서 일반적으로 FPGA 단독으로 쓰이는 경우는 거의 없기 때문이다. 보통은 피코/나노초 단위로 고속처리가 중요한 분야만 FPGA를 적용하고 이 FPGA를 다른 CPU가 제어하는 식으로 많이 쓰인다. 자일링스의 ZYNQ, 인텔의 어질렉스 SOC 등등 둘다 ARM 코어텍스-A 기반 코어 탑재.

이런 특성 때문에 다양한 분야에서 쓰이고 있으며 대표적으로 인공지능이나 기계 제어 등에서 많이 쓰이고 있다.

비휘발성 FPGA는 전원을 꺼도 프로그램이 보존되니 상관이 없지만, 휘발성 FPGA는 전원을 끄면 프로그램이 삭제되기 때문에 전원을 켤 때마다 재설치가 필요하다. 일부 기종은 MCU가 내장되어 있어서 전원을 켤 시 자동으로 프로그램이 설치되는 것도 있고, 전원을 켤 때마다 외부에서 프로그램을 설치해주어야 하는 기종도 있다. 보통 이 경우는 외부에 MCU를 따로 설치한다.

4. 제조업체

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

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

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

5. 활용


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

한때는 다른 저전력 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가 발열의 원인이다.

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

6. 여담

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

7. 관련 문서



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

분류