FPGA(Field Programmable Gate Array)는 ASIC(Application-Specific Integrated Circuit)와 같은 기존 로직 소자와 달리 고성능 컴퓨팅(HPC) 및 프로토타이핑 등 다양한 용도에 맞게 프로그래밍(및 재프로그래밍) 가능하도록 설계된 다목적 집적 회로입니다.
'필드 프로그래머블'이라는 용어는 제조사에서 출하된 이후에도 FPGA를 현장에서 프로그래밍할 수 있는 기능을 의미합니다. 기술 제조업체인 Xilinx가 1985년에 FPGA를 처음 출시했습니다.
FPGA는 하드웨어를 물리적으로 수정하지 않고도 새로운 또는 실험적인 용도를 포함한 다양한 사용 사례에 맞게 적용할 수 있습니다. 이러한 재구성 가능한 유연성은 복잡한 연산 수행 또는 단순 로직 게이트 역할을 하도록 구성 가능한 고정 프로그래밍 가능 로직 블록(PLB) 배열과 유연한 상호 연결을 통해 구현됩니다. FPGA는 또한 장치 내 디지털 데이터 저장을 위해 단일 비트 플립플롭부터 고밀도 메모리 어레이까지 다양한 메모리 요소를 포함합니다.
FPGA는 고성능과 뛰어난 유연성을 모두 제공하여 높은 가치를 지닙니다. 특히 고성능, 저지연 및 실시간 유연성이 요구되는 애플리케이션에 유용합니다. 이러한 이유로 통신, 자동차, 항공우주 산업에서 널리 사용됩니다.
FPGA와 ASIC는 서로 다른 용도로 사용됩니다.
ASIC는 특정 애플리케이션용으로 개발 및 최적화되며 재구성할 수 없습니다. 내부 회로 요소(트랜지스터)는 고정된 구조로 배열되며, 그 사이에 고정되어 변경 불가능한 상호 연결(배선)이 있습니다.
ASIC은 한 가지 목적으로만 사용되기 때문에 해당 목적에 필요한 로직 요소만 통합합니다. 예를 들어, 부동 소수점 승수가 필요하지 않은 경우 설계에 통합되지 않습니다.
반대로, FPGA는 잠재적인 애플리케이션에 대해 구성 및 재구성될 수 있습니다. ASIC과 마찬가지로 내부 회로 요소는 고정된 구조(프로그래밍 가능한 로직 블록 또는 PLB)로 배열되지만 그 사이에는 재구성 가능한 상호 연결이 있습니다. FPGA의 로직 요소는 다양한 애플리케이션을 지원하기 위해 선택되지만 특정 로직 요소를 사용하지 않으면 '손실'되는 문제가 있습니다. 특정 애플리케이션에 부동 소수점 승수가 필요하지 않지만 FPGA에 부동 소수점 승수가 포함되어 있는 경우, 해당 리소스는 연결되지 않고 FPGA 내에서 '낭비되는 공간'을 나타냅니다.
두 장치 모두 수억 개의 트랜지스터를 포함할 수 있지만 ASIC는 이러한 트랜지스터를 사용하여 유연성을 희생하는 대신 높은 효율성과 성능을 제공할 수 있습니다. ASIC을 개발하기 위한 초기 NRE 비용은 엄청날 수 있지만 단가는 상대적으로 낮을 수 있습니다.
FPGA는 트랜지스터를 사용하여 높은 효율성과 고성능을 제공하면서도 엄청난 유연성을 제공합니다. FPGA를 개발하는 데 드는 초기 NRE 비용은 매우 낮은 반면, 단가는 일반적으로 더 높습니다. 이러한 규칙은 어렵고 빠른 규칙이 아니라는 점에 유의하는 것이 중요합니다. 예를 들어 성능 분야의 경우, 최근 FPGA는 500MHz 이상의 클럭 속도를 제공하도록 발전했으며 일반적으로 최첨단 실리콘 공정 구조로 제작됩니다. 즉, 새로운 FPGA 세대가 등장할 때마다 FPGA와 ASIC의 경계가 점점 모호해지고 있습니다.
FPGA는 Verilog 또는 VHDL과 같은 표준 하드웨어 기술 언어(HDL)를 사용하여 PLB와 상호 연결을 구성함으로써 맞춤형 하드웨어 디바이스가 됩니다.
특정 FPGA 기반 기능과 이러한 기능 간의 상호 연결은 HDL로 '설명'되어 있습니다. 이 설명은 FPGA 구성 파일을 생성하기 위해 컴파일됩니다. 하드웨어 기술 언어를 사용하면 내장 FPGA 리소스(메모리 어레이, PCI 코어 등)를 사용할 수 있을 뿐만 아니라 보다 원시적인 FPGA 요소에서 맞춤형 로직 회로(가산기, 멀티플렉서 및 기타 애플리케이션별 기능)를 생성할 수 있습니다.
합성이라는 과정에서 HDL 코드는 넷리스트(HDL 코드 구현에 필요한 로직 게이트 및 상호 연결에 대한 효과적인 설명)로 변환됩니다. 그런 다음 넷리스트는 실제 회로를 구성하는 PLB와 상호 연결에 매핑됩니다.
Intel, Altera 등의 제조업체에서 생산하는 최신 FPGA는 높은 로직 밀도, 플래시 메모리, 내장 프로세서, 디지털 신호 처리(DSP) 블록 등 광범위한 디지털 및 아날로그 기능을 제공합니다. FPGA는 전기적 입력 및 출력 수정, 사용할 내부 리소스 선택, 구성 가능한 라우팅 리소스를 통한 리소스 연결 방식 결정을 통해 구성 및 재구성할 수 있으며, 결과적으로 특정 문제를 해결하는 전용 하드웨어 솔루션을 구현할 수 있습니다.
소프트웨어와 마찬가지로 복잡한 FPGA 설계 개발은 IP(Intellectual Property) 코어라고 하는 다양한 기능과 디지털 회로의 사전 설계된 라이브러리를 사용하여 간소화할 수 있습니다. 이러한 라이브러리는 FPGA 벤더 및 다양한 기능 개발을 전문으로 하는 서드파티 공급업체로부터 구매 또는 임대할 수 있습니다.
최신 FPGA 장치는 재구성 가능한 기능을 구현하기 위해 마이크로컨트롤러, 컨버터와 같은 기존 회로 구성 요소 외에도 다양한 프로그래밍 가능 요소를 조합하여 사용합니다.
이러한 프로그래밍 가능 요소는 주로 CLB(Configurable Logic Block), 프로그래밍 가능 상호 연결, 프로그래밍 가능 라우팅, IOB(Programmable Input/Output Block), 온칩 메모리, DSP(Digital Signal Processing) 블록입니다.
CLB(Configurable Logic Block)는 FPGA의 핵심 구성 요소입니다. CLB는 일반적으로 몇 가지 기본 로직 요소(로직 게이트, 소형 룩업 테이블, 플립플롭, 멀티플렉서 등)를 포함합니다. CLB 내에서 플립플롭은 일반적으로 주요 데이터 저장 요소 역할을 하지만, 최신 제품군에서는 CLB 내에 소용량 메모리 요소가 통합될 수도 있습니다.
전기적으로 프로그래밍 가능한 스위치로 연결된 와이어 세그먼트로 구성된 연결은 FPGA의 로직 블록 간 라우팅 경로를 제공합니다. 여러 개의 기본 반도체 스위치를 포함하는 스위치 박스는 일반적으로 FPGA의 프로그래밍 가능 상호 연결을 구현하는 데 사용됩니다. 이러한 상호 연결을 통해 특정 유닛 또는 입력 패드의 출력을 회로 내의 다른 셀 또는 패드에 연결할 수 있습니다.
사전 제작된 와이어 세그먼트는 프로그래밍 가능 상호 연결에 의해 연결(또는 미연결)되어 FPGA 내에 완전히 프로그래밍 가능한 라우팅 인프라를 제공합니다. 라우팅 리소스는 계층적 구조로 되어 있으며, FPGA 내에서 다양한 길이를 포괄하는 장선, 중선, 단선의 조합을 사용합니다. 프로그래밍 가능 상호 연결로 구현되는 이 프로그래밍 가능 라우팅 인프라를 통해 사용자는 특정 작업 또는 애플리케이션 구현을 위해 FPGA 리소스를 구성할 수 있습니다.
FPGA와 다른 외부 장치 간의 인터페이스는 IOB(Input/Output Block)를 통해 구현됩니다. IOB는 FPGA가 연결되는 모든 외부 장치의 프로토콜과 일치하도록 구성된 프로그래밍 가능 입출력 리소스입니다. FPGA로 들어오거나 나가는 모든 신호는 장치 핀과 연결된 IOB를 통해 이루어집니다.
초기 FPGA는 플립플롭(FF)만 사용하여 FPGA 로직 블록에 메모리를 통합했습니다. 하지만 FPGA의 기능이 향상됨에 따라 점점 더 복잡해지는 설계에는 데이터 버퍼링 및 재사용을 위한 전용 온칩 메모리가 필요해졌습니다. 최신 FPGA는 대용량 SRAM 메모리 어레이, 소형 LUT(Look-Up Table), 기존 플립플롭 요소를 사용하여 특정 애플리케이션에 필요한 저장 공간을 제공합니다.
초기 FPGA에서 사용 가능한 유일한 산술 리소스는 단순 가산기였으며, 더 복잡한 연산은 기본 로직 요소를 조합하여 구현했습니다. 하지만 실리콘 기술이 발전함에 따라 더 복잡한 산술 리소스가 FPGA에 통합되었고, 결국 최신 FPGA DSP 블록으로 발전했습니다. DSP 블록은 고성능 산술 함수 구현에 필요한 고도로 최적화된 리소스(곱셈기, 누산기 등)를 제공합니다.
DSP 블록을 사용하면 범용 CLB로 이러한 기능을 구현할 필요가 없어 CLB를 다른 용도로 활용할 수 있습니다. 디지털 필터링, 컨볼루션, 푸리에 변환, 삼각 함수 연산 등의 작업에서 이러한 리소스를 활용하면 레이더 처리, 빔포밍, 패턴 인식 등 다양한 애플리케이션에서 실시간 성능을 구현할 수 있습니다.
FPGA는 다양한 유형의 구성 가능성, 전력 소비, 프로그래밍 가능 요소 및 온칩 메모리를 제공하는 여러 가지 종류로 제공됩니다.
본질적으로 다목적인 FPGA는 다양한 애플리케이션에 적합합니다.
FPGA는 고속 병렬 처리 기능으로 인해 신호 처리 및 데이터 수집에 선호됩니다.
FPGA는 고속 신호 처리 알고리즘으로 인해 드론과 같은 무인 항공기에 사용되는 비행 제어, 센서 처리 및 통신 작업을 수행하는 데 매우 적합합니다.
전력망, 정유 공장 및 정수 공장과 같은 인프라를 모니터링하는 데 사용되는 산업용 제어 시스템은 다양한 산업의 고유한 요구 사항을 충족하도록 쉽게 최적화할 수 있는 FPGA를 사용합니다. 이러한 중요 산업에서 FPGA는 효율적인 사이버 보안을 위해 다양한 자동화 및 하드웨어 기반 암호화 기능을 구현하는 데 사용할 수 있습니다.
FPGA는 유연성이 필요한 작업에 유용한 솔루션이지만, 작업별 ASIC는 표준화된 작업에 더 적합한 경우가 많습니다. 새로운 시스템이 개발됨에 따라 FPGA는 신기술을 위한 새로운 ASIC을 개발하고 프로토타이핑하는 데 유용합니다.
FPGA는 고대역폭, 저지연 서버, 네트워킹 및 스토리지 인프라를 촉진하여 데이터 센터에 가치를 더합니다.
IBM® Storage FlashSystem은 사이버 복원력과 향상된 데이터 스토리지 기능을 제공합니다.
IBM Storage는 데이터 스토리지 하드웨어, 소프트웨어 정의 스토리지, 그리고 스토리지 관리 소프트웨어로 구성된 제품군입니다.
IBM® Technology Expert Labs는 IBM 서버, 메인프레임 및 스토리지를 위한 인프라 서비스를 제공합니다.