FPGA, Cloud and HLS
2023년 5월에 작성된 글입니다.
Introduction
- 2015년, 인텔은 FPGA 2위 기업 알테라를 인수했습니다.
- 2017년, AWS와 Tencent는 클라우드 상에서 사용할 수 있는 FPGA 인스턴스를 발표했습니다.
- 2022년, AMD는 FPGA 1위 기업 자일링스의 인수를 완료했습니다.
현재 Azure, Alibaba Cloud 등 여러 클라우드 업체 역시 FPGA 인스턴스 서비스를 제공하고 있습니다.
FPGA에 무슨 일이 일어났는지, 또 어떤 한계에 부딪혔는지 정리합니다.
FPGA
Field-Programmable Gate Array의 약자입니다. 당연하게도 반도체는 한번 찍어내면 회로 변경이 불가능합니다. 그런데 FPGA는 회로를 원하는 대로 계속해서 변경할 수 있다는 특징이 있습니다.
로직을 메모리를 사용해서 구현했기 때문에, 실제 회로를 구현한 ASIC에 비해 성능, 소비 전력, 칩 가격 등 모든 면에서 불리합니다. 그러나 ASIC과 다르게 설계된 회로를 변경할 수 있는 유연함이 있습니다. 따라서 제품 출시 이후에도 알고리즘이나 용도 변경을 위해 업데이트가 가능합니다. 또한 ASIC은 개발 비용이 어마어마하기 때문에, 웬만한 규모의 수요가 아니면 FPGA가 경제적으로 나은 선택이 될 수 있습니다.
이러한 이유로 로켓, 인공위성, 화성 탐사 로봇 등과 같은 곳에서 널리 쓰입니다. 또한, ASIC을 양산하기 전에 테스트를 목적으로 사용될 수도 있습니다.
Computing Challenges
Versal: The First Adaptive Compute Acceleration Platform (ACAP)(WP505), p2
위에서 볼 수 있듯이 CISC에서 RISC, 멀티 코어로 발전해 오며 CPU의 성능은 개선되었지만, 현재의 구조로는 한계에 다다른 모습입니다. 최근에는 GPU와 같이 병렬처리에 특화된 프로세서를 사용함으로써 AI 등 computation intensive 한 어플리케이션에 대응해왔습니다. 그러나 암달의 법칙으로 인해, 병렬 처리로 퍼포먼스를 향상시키는 데에 한계가 있습니다. 때문에 각 목적에 특화된 아키텍처를 가진 프로세서가 필요합니다. 이를 domain specific architecture라고 합니다.
요약하자면, 지금처럼 범용 프로세서(CPU, GPU)만으로는 성능 향상에 한계가 있습니다. 각 목적에 맞는 프로세서가 필요하다는 것이죠. 모든 어플리케이션을 구동 가능한 architecture에서 벗어나 특정 영역에 특화된 domain specific architecture가 필요하다는 말입니다.
퍼포먼스 이외에도, 소비 전력 측면에서도 지금의 방식에는 문제가 있습니다.
2023 ISSCC에서 Lisa Su (AMD CEO) 박사께서 발표한 내용을 보면, 지금까지 컴퓨터의 발전 방식이 계속될 경우 슈퍼컴퓨터를 사용하기 위해서는 조만간 핵 발전소 수준의 전력이 필요하다는 것을 알 수 있습니다. Domain specific computing이 필요한 이유죠. 한 종류의 프로세서로 모든 어플리케이션을 구동하는 “one size fits all” 방식에서 벗어나, 각 목적에 특화된 프로세서를 설계해서 사용해야 하는 또 다른 이유입니다.
Cloud
컴퓨터 산업의 중심은 PC와 노트북, 모바일 시대를 거쳐 현재는 데이터 센터가 그 중심에 있습니다. 오늘날 상당수의 하드웨어 수요가 데이터 센터에 있습니다. 지금 컴퓨터 산업에서 가장 큰 시장은 의심의 여지 없이 데이터 센터입니다.
클라우드에서도 domain specific computation은 매력적입니다. 각 어플리케이션에 맞게 설계된 전용 반도체 프로세서를 사용한다면 퍼포먼스 및 소비 전력 모두 장점이 있거든요.
여기서, FPGA의 유연함이 빛을 발합니다. 수많은 고객들에게 그때그때 수요에 맞춰 필요한 서비스를 각각 제공해야 하는 데이터 센터에게 ASIC은 적합하지 않습니다. 이에 비해 FPGA는 재프로그래밍이 가능한 반도체로서 계속하여 새로운 기능 또는 업데이트된 기능을 제공할 수 있습니다. 이러한 이유로 AWS와 Azure를 비롯한 많은 클라우드 업체들이 FPGA 인스턴스를 서비스하고 있습니다. 또한 이러한 가능성을 보고 CPU 1, 2위 기업들이 FPGA 1, 2위 기업을 인수합병한 것이죠. AMD, Intel 모두 데이터 센터의 중요성을 인식하고, 데이터 센터용 FPGA를 꾸준히 출시하고 있습니다.
AMD의 CEO Lisa su 박사는 인터뷰에서 Xilinx의 인수 이유를 아래와 같이 밝혔습니다.
“We really believe together we can define the future of high performance computing”
Xilinx 인수 이후 AMD는 adaptive computing이라는 용어를 자주 쓰는데, AMD는 FPGA를 adaptive accelerator라고 부릅니다.
성공 사례들
Microsoft
2010년부터 꾸준히 FPGA를 활용한 accelerating 관련 프로젝트를 진행하고 있습니다. 특히 2015년에는, FPGA로 bing의 search ranking 시스템을 가속화해서 50% throughput 향상 또는 25%의 latency를 달성했습니다.
with AMD FPGAs
Anti-Money-Laundary Watch List Management
FPGA Accelerated Computing, Kumar Deepak (Xilinx Data Center Group)
실제 은행권에서 겪는 문제의 해결 사례입니다. Swift 포맷으로 트랜잭션이 전송되면, 의심스러운 거래인지 판단하고 해당 트랜잭션을 허가하거나 거부해야 합니다. CPU로 처리하면 5558.23ms가 소요되지만, 동일한 어플리케이션을 FPGA로 처리하면 8.47202ms이 소요됩니다.
Find “customers like me”—Enabling real-time healthcare with TigerGraph and Alveo U50
FPGA Accelerated Computing, Kumar Deepak (Xilinx Data Center Group)
비슷한 환자를 찾아야 하는 경우, 환자의 수가 많아지면 CPU는 코어가 많더라도 암달의 법칙에 따라 처리 시간이 느려집니다. 그러나 FPGA는 환자 수가 늘어나더라도 비슷한 처리 속도를 보여주었습니다. FPGA가 CPU에 비해 40배 더 빠르게 처리합니다. (FPGA - Alveo U50, CPU - 128 core AMD EPYC Rome server)
Genome-Data Processing
AWS의 FPGA 인스턴스를 사용하여 환자의 게놈 데이터 처리 시간을 20시간에서 3시간으로 단축했습니다.
HLS (High-level synthesis)
UCLA의 Jason Cong 교수님이 HLS의 장점에 대해 Microsoft Research에서 강의하신 내용입니다.
Microfost Research - C to FPGA Compilation and Domain-Specific Computing
최근까지도 FPGA와 HLS 관련된 논문들을 꾸준히 내고 있습니다.
Cloud FPGA를 사용해서 이익을 볼 수 있는 회사는 네카라쿠배 같은 IT 서비스 회사들입니다. 위에서 언급했듯이 FPGA를 사용해 컴퓨팅 비용을 획기적으로 줄인 사례들이 많이 있습니다. 따라서 자신들이 운영하던 어플리케이션을 FPGA로 구현한다면 더 적은 비용으로 더 많은 request를 처리할 수 있습니다. 직접 데이터 센터도 운영하는 회사라면 소비 전력을 줄여 TCO 감소에도 도움이 될 수 있고요.
그러나 IT 서비스 회사의 가장 큰 어려움은 FPGA 개발의 진입 장벽입니다. FPGA는 소프트웨어가 아니라 하드웨어입니다. FPGA를 사용하기 위해서는 하드웨어를 개발해야 합니다. 그러나 소프트웨어 기업이 하드웨어 개발을 하는 것은 자신들의 영역을 벗어나는 것이며, 개발 역량이 부족합니다. 또한 똑같은 알고리즘을 구현한다고 하더라도, 하드웨어로 설계하는 것이 소프트웨어 프로그래밍보다 훨씬 개발 시간과 비용이 많이 소모됩니다.
여기서 등장하는 게 HLS 개발 방식입니다. HLS는 반도체 설계 방식 중 하나입니다. 전통적으로 반도체 설계 회사들은 Verilog, VHDL과 같은 HDL(Hardware Description Language)를 사용해 반도체를 설계해 왔습니다. 그런데 HLS는 C/C++과 같은 프로그래밍 언어를 사용해서 반도체를 설계하는 방식입니다. Assembly에서 C언어와 같은 high-level language로 넘어가면서 소프트웨어 개발의 생산성이 크게 늘어났듯이, 하드웨어도 HDL 언어가 아닌 high-level language를 사용함으로써 생산성을 높이자는 시도입니다. AMD, Intel 등의 FPGA 회사들은 꾸준히 HLS 툴을 개발하고 지원하고 있습니다. 이를 사용하면 하드웨어 설계에 대한 진입 장벽을 크게 낮출 수 있습니다.
And Now..
그러나 2017년 AWS에 FPGA 인스턴스가 등장한 이후, 생각보다 FPGA의 확산은 지지부진한 모습입니다. 그 이유 중 하나는 여전히 높은 개발 진입 장벽 때문이 아닐까 싶습니다. HLS가 있다고는 하지만 하드웨어 개발에 대한 진입 장벽 역시 여전하고, 아직은 보편적인 개발 방식이 아닙니다.
이러한 어려움을 Tencent의 칩 비즈니스 관련 기사에서도 확인할 수 있습니다. Tencent 팀도 2015년 FPGA의 가능성을 확인했습니다. 연구 결과, throughput, latency, power consumption에 큰 이점이 있고, 특히 방대한 데이터를 처리해야 하는 경우 FPGA가 GPU에 비해 latency 관점에서 상당한 이점이 있다는 것을 확인했습니다. 텐센트의 연구팀이 연구 개발한 이미지 인코딩 FPGA는 CPU 인코딩 및 소프트웨어 인코딩 방식보다 높은 압축률과 low latency를 달성했으며, 스토리지 비용을 크게 절감했습니다. 이러한 배경에서 텐센트 클라우드는 2017년 1월, FPGA의 가능성을 믿고 FPGA 인스턴스를 선보였습니다. 그러나 FPGA를 개발할 수 있는 역량을 가진 회사들은 여전히 부족했고, FPGA는 업계 전체를 빠르게 장악하지 못했습니다. 텐센트의 팀 또한 많은 좌절감을 느꼈고, 2018년 많은 직원들이 팀을 떠났다고 합니다.
하지만 AMD와 인텔은 여전히 FPGA의 가능성을 믿는 듯합니다. 꾸준하게 FPGA 제품을 출시하며 데이터 센터에서 활용하고, HLS 툴을 개선하려는 노력들이 보입니다. 텐센트 또한 이후 FPGA 기반의 smartNIC 개발이 큰 성공을 거두었다고 하네요. (지금은 해당 smartNIC을 ASIC으로 개발하는 중인듯합니다). 국내에서도 네이버는 인텔 FPGA, 카카오는 AMD FPGA를 smartNIC 용도로 데이터 센터에 도입한 것으로 알고 있습니다. 또 국내 스타트업 망고부스트도 FPGA 기반의 DPU를 개발하는 중인 것 같습니다.
결국 FPGA 성공의 관건은 HLS인 것 같습니다. 개발이 쉬워져야, 더 많은 사람들이 쓸 수 있을 테니까요. 🙂
Leave a comment