2009년 12월 5일 토요일

FPGA 이야기 - 1

요즘은 회사에서 FPGA 시스템을 설계 하고 있습니다. Chip 만드는 일이 많아야 좋은데, 경기가 좋지 않은지라 chip 만드려고 하는 회사가 별로 없는 것 같습니다.

FPGA에 대해서 살펴봅니다.

FPGA는 Field Programmable Gate Array의 약자입니다. Field Programmable이란 말 그대로 현장에서 프로그래밍이 가능하다는 뜻입니다. 즉, 현장에서 프로그래밍 가능한 Gate Array라고 할 수 있는데, 우선 Gate Array가 무엇인지 알아 봅니다.

  • Gate Array
Gate Array를 이용한 설계는 선사시대의 설계 방법론이라고 할 수 있습니다. 저는 해 본 적이 없고, 아마도 단시일내에 Gate Array를 이용한 설계를 할 일은 없을 것 같습니다. 직접 경험한 바가 아니므로 추측으로 설명을 하자면 다음과 같습니다.

Gate Array는 말 그대로 (digital logic) Gate가 silicon wafer 위에 일정하게 Array 형태를 이루어 분포되어 있는 상태(?) 를 말합니다. 아마도 NAND Gate 혹은 NOR Gate하고 Flipflop이 아마도 Array를 이루고 있을 겁니다. NAND(혹은 NOR) Gate의 연결 만으로 모든 combinational logic을 설계할 수 있으므로 설계자는 단순히 Gate 사이를 metal로 연결을 하여 설계를 완료합니다. 이런 설계 방법론이 대두된 이유는 digital logic IC 설계의 FAB NRE charge가 비싸기 때문입니다.(이것은 선사시대나 지금이나 마찬가지인가 봅니다.) FAB NRE는 대부분은 mask를 만들기 위해서 들어갑니다. Wafer 위에 N형 반도체, P형 반도체, Oxide, Polysilicon, Metal 등을 올리기 위해서는 수십장의 mask를 만들어야 합니다. 하지만 Gate가 모두 놓여진 상태에서 metal 만 연결하기 위해서는 mask가 많이 필요하지 않고, 그에 따라 NRE가 상당히 줄어듭니다.
Gate만 놓여 있는 Wafer를 만들어서 비교적 싼 가격에 공급하는 회사가 있다면, 설계자 입장에서 비교적 싼 가격에 그 Wafer를 사고, metal 연결에 대해서만 NRE를 내고 chip을 생산할 수 있게 됩니다. Gate Array를 이용하는 설계가 많으면 많을 수록 Gate Array Wafer가 많이 팔리게 되므로 Wafer의 가격이 낮아져서 더 많은 설계에 이용되는 선순환이 이루어질 수 있습니다. 반대로 Gate Array를 이용하는 설계가 별로 없다면, Gate Array Wafer가 별로 안팔려 가격이 상승하고, 그로 인해 더욱 Gate Array를 이용한 설계가 줄어드는 악순환이 반복될 수 있습니다. Gate Array가 선사시대의 설계 방법론이 되었고, 그렇다는 것은 그런 선순환보다는 악순환이 발생했다는 의미입니다. 무엇이 문제였을까요?

Gate Array 설계 방법을 쓰면 사용하지 못하는 Gate가 생길 가능성이 큽니다. 또한, NAND(혹은 NOR) Gate 만으로 logic을 설계하면 당연히 서로 다른 gate를 모두 이용하여 설계하는 방법보다 transisitor 갯수(즉 die area)면에서 불리합니다. 결국 die area가 늘어나서 chip 단가가 상승하고, power 소모도 더 많이 할 수 밖에 없습니다.
die area는 그렇다 치고 timing을 맞추는데, 즉 높은 동작 주파수를 달성하는데 어려움이 따를 것 같습니다. Gate의 input이 제한되어 있으므로, combinational logic이 여러 단계를 더 거쳐야할 필요가 있습니다. 그리고 회로에 따라서 metal을 이용하여 routing 하는 것에 또 다른 timing 문제를 발생시킵니다. 예를 들어 combinational logic 출력은 flipflop에 연결하려고 봤더니 flipflop이 먼 곳(가까운 곳에 있는 flipflop은 모두 다른 output을 연결해서 없다고 가정)에 있으면 느려질 수 밖에 없겠습니다. 그리고 보통 일반적인 반도체 설계의 경우 fan-out에 따라서 동일한 동작을 하는 gate가 여러 종류가 있어서 timing을 이용하여 최적화 하게 되는데, Gate Array에서는 그렇게 하기 곤란합니다.
더욱 큰 문제는 chip 내부에 analog 회로를 넣으려고 해도 방법이 없습니다. Analog 회로는 둘째치고 커다란 SRAM을 넣는 것도 참 곤란합니다.

Gate Array 설계 방법론의 다른 문제는 Risk및 비용(NRE)가 줄어들기는 하되 없어지지 않는다는 점입니다. 매우 많이 팔릴만한 chip의 경우 NRE와 Risk를 모두 감수하고 full custom으로 설계하는 것이 chip의 단가를 낮출 수 있어서 유리하고, 매우 소량 팔리는 chip의 경우에는 아래 설명할 FPGA를 이용하는 것이 유리합니다. Gate Array 설계 방법은 그 사이에 끼어 있는 형태인데, 그 사이의 시장이 별로 없었거나 개척하지 못했다는 것이 가장 큰 문제였을 겁니다.

현재 제한된 영역에서는 명맥을 유지하고 있기는 한가 봅니다. ATMEL에서 제공하는 CAP이라는 애가 있는데, Gate Array 인지는 확실하지 않지만, metal programmable한 영역이 일부 들어 있는 ARM chip을 생산해 주는 것으로 보입니다. 사용자는 metal programmable한 영역에 목적에 맞는 특별한 peripheral을 만들어 chip의 나머지인 ARM CPU 및 peripheral과 연동하여 사용할 수 있는 형태로 보입니다.

  • FPGA 란?
FPGA는 위에서 언급한 대로 Field Programmable Gate Array의 약자인데, 한마디로 정의 하면 사용자가 원하는 digital logic을 programming(혹은 configuration)통해 구현할 수 있는 chip입니다. Gate Array 설계 방법론이 metal layer를 설계하여 FAB에서 비교적 싼 chip을 생산하는 방법인 반면, FPGA 설계 방법은 그냥 FPGA 회사에서 나오는 FPGA chip을 board에 실장해 놓고 programming을 하여 사용하는 방법입니다.

FPGA는 NAND/NOR와 같은 단순한 gate를 사용하지 않고, LUT(Look-Up Table)을 이용하여 combinational logic을 구성하고, LUT의 끝에는 flipflop이 있어 sequential logic을 구현할 수 있도록 되어 있습니다. LUT가 chip 안에 Array 형태로 많이 들어있고, LUT 사이의 연결도 programming할 수 있고, chip의 I/O도 사용자가 어느 정도 정할 수 있습니다. 따라서 FPGA로는 모든 digital logic을 구현할 수 있고, interface도 자유로와 다른 chip과의 연결을 쉽게 할 수 있습니다.

FPGA도 Gate Array 방법과 비슷한 단점을 가집니다. 우선 FPGA chip 자체가 상당히 비쌉니다. 물론 내부에 들어 있는 LUT의 갯수에 따라서 가격은 많이 달라지기는 하지만 싸면 수십불에서 비싸면 수천불(Altera Stratix IV는 9천불이 넘는 애들이 있음)까지나 하는 상당히 고가의 chip입니다. 그리고 timing도 일반적인 chip 설계에 비해서 좋을 수 없습니다. 또한 일반적으로 Analog 회로는 들어가 있지 않습니다.

하지만 Gate Array 설계 방법론에 있었던 NRE와 같은 것은 전혀 없습니다. 따라서 Risk가 거의 없다고 봐야 합니다. 또한 설계를 FAB에 보내 chip을 생산하는 것이 아니고, 검증 및 디버깅도 상대적으로 쉽기 때문에 개발 기간이 짧다는 장점이 있습니다.

  • FPGA Vendor
FPGA 시장에는 Xilinx와 Altera라는 두 회사가 막강한데 그 중에 Xilinx가 부동의 1위 자리를 지키고 있습니다. 두 회사가 약 80% 정도의 시장 점유율을 가지고 있다고 합니다. FPGA 뿐 아니라 CPLD(Complex Programmable Logic Device)를 포함한 시장 점유율에서도 비슷한 양상으로 나타나고 있습니다. 그외로 작은 애들이 있는데 actel, lattice 등이 있고, 신생 기업도 여럿 있습니다.

FPGA 시장은 사실 진입하여 성공하기 매우 힘듭니다. 우선 FPGA chip 자체를 잘 만드는 것은 당연하고, FPGA 설계를 위한 Design Software 등을 잘 갖추어야 합니다. 또한 FPGA에서 사용할 수 있는 각종 IP와 design example을 제공해 주어야 하고, 또한 third party 회사들과의 eco-system이 갖추어져야 합니다. 이 모든 것을 완비한다고 하더라도, 대부분의 엔지니어가 새로운 것을 배우는 것을 주저하기 때문에 시장 저항이 있을 수 밖에 없습니다. 따라서 당분간은 Xilinx와 Altera, 두 회사가 계속 시장을 주도할 것으로 보입니다.

저도 Xilinx/Altera의 FPGA를 모두 써 보기는 했으나, 주로 Xilinx에서 나온 제품을 많이 사용하기 때문에 Xilinx의 chip, software가 매우 익숙합니다.

  • FPGA의 응용 분야
FPGA는 Digital 영역 어디에서도 자유롭게 다른 chip과 연결하여 사용할 수 있습니다. 하지만 FPGA가 매우 비싼 만큼 어느 정도 제약이 있습니다.
시스템 회사가 제품을 만들 때는 우선 시장에서 구할 수 있는 비교적 저렴한 chip을 이용하여 구현할 수 있는 것을 모두 구현하는 것이 좋습니다. 하지만 그렇지 못한 경우가 있을 수 있는데, 대부분은 매우 빠른 interface를 가지고 있거나 매우 연산이 많이 필요한 경우로 볼 수 있습니다. 그렇다면 해당 기능을 수행하는 chip을 직접 만들거나 FPGA를 고려할 수 있습니다. 해당 제품이 매우 많이 팔린다면, chip을 직접 만드는 데 필요한 개발비용이 크게 부담이 아니므로 chip을 만드는 편이 좋겠지만, 그렇지 않은 경우에는 FPGA가 정답입니다. 즉, 제품의 시장 규모가 작은 편이라면 FPGA를 사용하는 것이 가격적으로 이득입니다.
시장 규모가 작은 시스템이면서 FPGA가 사용될 수 있을만큼 고가의 시스템은 사실 매우 많습니다. 예를 들어 산업용 시스템이나, 항공, 의료 관련 시스템 등이 쉽게 떠오를 수 있습니다. 보잉이 비행기를 만들어봐야 1년에 몇 대나 만들겠습니까? 참고로 Xilinx 사이트에서는 다음과 같은 응용 분야를 내세우고 있고, Altera가 내세우는 분야와 크게 차이가 없습니다.

- Aerospace/Defense
- Automotive
- Broadcast
- Consumer
- Data process/Storage
- Industrial/Scientific/Medical
- Wired
- Wireless

FPGA vendor 입장에서는 돈이 잘 안되겠지만, 우리 회사에서는 chip prototype을 위해서 FPGA를 사용하기도 합니다. chip을 FAB에 넣기 전에 FPGA를 이용하여 기능을 구현한 다음, 그것을 실제로 돌려 보는 겁니다. 물론 원하는 동작 clock에 비해 늦게 동작을 하지만 simulation이나 기타 다른 방법에 비해 월등히 빠르게 동작합니다. Chip의 설계를 FPGA를 이용하여 검증하는 경우가 꽤나 많이 있습니다.



====
관련 링크
====

Atmel은 FPGA도 만들고, CAP설계를 돕기 위해 ARM subsytem과 FPGA가 같이 들어 있는 chip도 제공함




1 개의 댓글:

Olsen :

답글 남기기

댓글 쓰기