2010년 1월 30일 토요일

흥미 진진한 Intel vs ARM

라스베가스에서 열린 CES를 전후로 해서 다양한 소식들이 있습니다. 그 중에서 Intel 과 ARM의 대결이 계속 흥미 진진하게 진행되고 있습니다.

Intel에 대한 ARM쪽의 공격이 시작되었는데, levono에서 Skylight라고 하는 netbook이 나왔다고 합니다.
위 기사에 따르면 Lenovo Skylight는 Qualcomm Snapdragon chip을 사용한 10인치 netbook으로, harddisk는 없이 14GB의 flash memory와 2GB의 on-line storage를 사용한다고 합니다. WiFi뿐 아니라, Snapdragon을 사용하였으므로 3G WCDMA에 연결할 수 있습니다. 올 봄쯤에 소비자가 살 수 있다고 하는데, $499이라고 하니 Intel netbook에 비해 가격적인 경쟁력은 없을 것으로 추정됩니다.

반대로 ARM쪽에 대한 Intel의 공격도 있었는데, CES 기조 연설에서 Intel CEO Otellini가 선보인 LG GW990이라고 하는 스마트폰입니다.


알려진 바에 의하면 1024x480 해상도를 가지는 4.8인치 LCD를 쓰고, Intel moorsetown이라는 프로세서를 쓰고 moblin을 기본 운영체제로 사용한다고 합니다. 국내 언론에서는 괴물 스마트폰이 나왔다고 떠들었지만, 스마트폰이라고 하기보다는 전화를 지원하는 MID(Mobile Internet Device)라고 하는 것이 맞는 것 같습니다. 단순한 말장난일 수도 있지만요.

CES에서 가벼운 잽을 주고 받았는데, 이 싸움은 정확하게 말해서 Intel과 ARM의 회사대 회사의 싸움이 아닙니다. ARM이 반도체 IP 랭킹 1위이기는 하지만 Intel에 비해서는 작은 회사입니다. Intel이 가능만하다면 ARM을 사고, 사업부를 없애려고 할 수도 있는 정도라고 할까요? 정확하게는 이 싸움은 PC 기반과 Embedded 기반의 반도체 회사들의 싸움입니다. PC 기반 반도체의 맹주가 Intel이고, Intel이 이겨 주었으면 하는 회사는 아마도 Microsoft일 것입니다. 물론 Intel의 라이벌인 AMD도 PC쪽에 서 있겠지만, 적자가 계속되는 회사를 살리느라 바쁘므로 정신을 못차리고 있습니다. ARM쪽 진영에는 나머지 대부분의 반도체 회사가 서 있는 모양새입니다.

  • Intel의 고민
Intel은 전세계 반도체회사 ranking 1위이고, 이것은 탄탄한 PC 시장을 기반으로 하고 있습니다. Microsoft의 Windows 계열 PC에서는 Intel/AMD/VIA 등의 회사의 x86 CPU를 사용할 수 밖에 없고, 그 중에서 Intel이 절대 강자입니다. 전세계에서 약 3억대정도의 PC(desktop, notebook 등 모두 포함)가 매년 팔리고 있는 만큼, 엄청 큰 시장을 장악하고 있습니다. 또한, AMD를 제외하고는 뚜렷한 경쟁자가 없으므로 이익도 많이 챙길 수 있습니다.

x86 기반의 PC 시장이 계속 성장한다면 Intel은 큰 고민할 필요가 없을 수도 있겠지만, 문제는 PC 시장의 성장이 많이 둔화된 상태이고 반대로 휴대폰과 같은 기기의 시장은 매우 폭발적으로 증가한다는 점입니다. 휴대폰은 전세계적으로 1년에 10억대가 넘게 팔립니다. 시장 점유율 2위인 삼성이 약 20%의 점유율로 분기당 5천만대 넘게 팔고 있습니다. 물론 대부분은 소위 말해 피쳐폰(feature phone)이라고 하는 단순한(그래도 대부분 camera 달려있고, MP3 play도 되는...) 전화기입니다만, 스마트폰(smart phone)의 점유율이 매우 빠르게 증가하고 있습니다. 우리나라에서도 KT의 아이폰 출시로 스마트폰 바람이 불고 있는데, 미국에서는 이미 전체 휴대폰 사용자 중에 스마트폰 사용자의 비율이 10%를 훌쩍 넘어 20% 가까이 된다고 합니다.

이 스마트폰 시장이 Intel을 고민케 하고 있습니다. 스마트폰 시장의 성장이 빨라서 군침을 흘린다기 보다는, PC 기반의 computing 환경이 스마트폰이나 그와 비슷한 기기로 이동될 가능성을 우려하고 있는 것 같습니다. 사실 이런 고민은 Microsoft도 계속 하고 있었습니다. 그래서 Windows CE, PocketPC를 거쳐서 Windows Mobile로 계속 Embedded OS를 만들어내고 있습니다. 심지어 Microsoft는 PC가 아니라 콘솔 게임기가 모든 집의 거실에 설치되어 그것이 가정 내부의 모든 단말기의 허브 기능을 가지게 될 것을 내다보고, 사업분야와는 크게 관계 없는 콘솔 게임기 시장으로 진입했습니다.(Microsoft는 이 영역에 Sony의 PS3의 실패로 인해 어느 정도 시장에 안착을 했습니다만, 아직까지 콘솔 게임기가 가정 내부의 단말 허브 기능을 가지는 수준까지는 이르지 못했습니다.)

Intel은 이 스마트폰 시장에 발을 들여 놓기를 원합니다. 이 스마트폰 내부에 들어 있는 칩에서 사용되는 CPU(architecture)의 절대 강자가 ARM입니다.

Intel Desktop CPU의 performance는 현재까지 시장에 있는 어떠한 ARM 기반 CPU 보다는 좋습니다만, Power 소모가 엄청나게 많다는 커다란 단점이 있습니다. 그래서 desktop을 설치할 때 엄청난 크기의 heatsink와 fan을 달고 있죠. Performance를 줄이되 power 소모를 줄인 것이 Atom 프로세서라고 할 수 있습니다. Intel이 Atom을 발표했을 때, 스스로도 power 소모 때문에 ARM의 적수가 되기는 어렵다는 것을 알고 있었던 것 같습니다. 그래서 나온 개념이 MID(Mobile Internet Device)로 보이는데, 아직까지는 MID는 성공하지 못하고, netbook이 커다란 성공을 했습니다. 다만 Intel의 notebook 제품군인 Centrino의 시장 영역을 Atom이 어느정도 줄였겠지만 말입니다.

사실 동일한 성능이면, power 소모가 적으면 적을 수록 좋지만 Intel의 x86 architecture는 ARM의 architecture에 비해 훨씬 복잡하기 때문에 절대적으로는 ARM보다 줄이기 쉽지 않을 겁니다. 위에서 소개된 GW990도 자세한 것이 공개하지 않았지만, 일반적인 스마트폰보다는 상당히 많이 power 소모를 하지 않을까 추측됩니다. 스마트폰으로 경쟁력이 있었다면 비슷한 사이즈의 LCD를 사용해서 "우리도 비슷하게 만들 수 있어"라고 자랑해야 하는데, 상당히 크게 설계하여 "우리는 성능이 좋아"라고 말하는 듯 하기 때문이죠.

Intel이 스마트폰 시장 및 기타 mobile 기기에서 성공을 하려면 적어도 다른 ARM Chip과 비슷한 수준까지는 끌어내려야 할 것 같습니다. 어짜피 스마트폰의 power는 CPU 뿐 아니라 LCD 등의 다른 부분에서도 소모되므로, 사용자의 입장에서 크게 차이가 나지 않는 수준까지 떨어뜨리지 않으면 곤란할 겁니다.

  • ARM 진영의 꿈
ARM은 processor IP및 ISA(Instruction Set Architecture)를 license하여 돈을 버는 회사이므로 수 많은 회사가 processor IP나 ISA를 license하여 칩을 만들고 있고, 만들 수 있습니다. CES에서 발표된 Google 넥서스원에 들어간 Qualcomm Snapdragon도 ARM에서 ISA를 license하여 Qualcomm에서 만든 칩이고, Apple iPhone에 있는 Processor도 ARM Cortex-A8 CPU Core를 license하여 삼성이 만든 칩입니다. 이러한 회사들이 모두 ARM 진영이라고 보면 됩니다. 심지어 ARM의 라이벌이라고 할 수 있는 MIPS도, Intel vs. ARM의 구도에서라면 ARM쪽의 편이라고 봐야 합니다.

ARM CPU가 Intel CPU에 비해 뛰어난 점은, Power 소모가 적다는 점입니다. 단순한 절대적인 Power 소모 비교가 아닌 성능대비 Power 소모가 매우 적습니다. 이 강점을 바탕으로 ARM 진영은 스마트폰 시장을 접수했고, 이제는 smartbook이라는 개념의 기기에 도전하고 있습니다. 위에서 소개한 Levono의 Skylight가 전형적인 smartbook이라는 개념의 기기라고 할 수 있는데, smartbook이라는 개념을 한마디로 표현하면 netbook인데 Intel CPU 안쓰고, Microsoft Windows를 안쓰는겠다고 보면 됩니다. 부가적으로 mobile network(3G network)가 약간 가미되어 있습니다. 참 재미 있는 것은 netbook의 시장 개척은 Intel Atom이 해놓았는데, 그것을 ARM 진영에서 침탈하려고 하는 형국입니다. 

Smartbook에서  가질 수 있는 ARM 진영의 무기는 재미 있게도 Low Power라는 것이 아니고, Low Price입니다. Intel Atom/Microsoft Windows를 사용하는 netbook보다 낮은 가격대에 비슷한 기능을 제공하겠다는 것입니다. 그러면서도 Power 소모가 적으니까, 좀 더 오래쓸 수 있다는 장점도 가집니다. ARM 진영은 내부에서도 여러 회사가 경쟁을 벌이고 있으므로, smartbook 제조사 입장에서는 CPU를 싼 가격에 공급 받을 수 있습니다. 또한 거기에다 가격을 낮추기 위해서 Hard Disk는 달지 않고 Solid State Storage, 즉 Board에 내장된 NAND Flash나 SD Card와 같은 추가 장치를 이용하여 사용자 데이터를 저장하도록 하는게 일반적인 smartbook concept입니다. OS는 Linux 기반이 될 겁니다. 사실 netbook 사용자가 원하는 것은 Internet 및 multimedia(동영상 및 음악), 간단한 문서작업이라고 보고 그것에 적합한 저렴한 기기를 만들겠다는 것입니다.

Smartbook에서 ARM 진영의 최대 약점은 현재 사용되고 있는 MS Windows PC의 환경과 동일한 환경을 제공해 줄 수 없다는 점입니다. PC에서 사용되는 Microsoft Windows(XP, Vista, 7 등)는 ARM에서 동작하지 않습니다. 지금으로서는 가능성은 낮지만 Microsoft가 ARM용 Windows(Windows Mobile 말고)를 만들어 준다고 하더라도, Windows 위에서 동작하던 application을 모두 다시 ARM용으로 다시 compile해야 합니다. 물론 가상화(Virtualization)라는 것도 고려해 볼 수 있겠지만, ARM 진영의 CPU가 Intel의 desktop CPU에 비해서 성능이 좋지 않은데 가상화까지 해서 Windows PC 환경을 꾸미면 좋은 결과를 얻을 수 없습니다.

  • 예상
개인적으로 볼 때는 smartbook/netbook 시장에서 ARM 진영이 어느 정도의 시장 점유율을 달성할 것으로 보는데, 최근의 시장 조사 기관들에서 발표하는 내용도 비슷합니다. 혹, ARM의 CPU 성능이 Intel을 따라가지 못하기 때문에 그렇지 않을 것 같다고 하는 사람들은 아래 동영상을 보십시오.


Intel 1.6GHz Atom 넷북과 500MHz로 동작하는 ARM Cortex-A9 development board에서 web browsing 속도를 보여주고 있습니다. 동일한 OS(당연히 linux로 추정)를 설치하고, 동일한 network에 물려서 테스트하고 있는데, ARM Cortex-A9이 약간 느리기는 하지만 크게 차이가 나는 수준은 아닙니다. 추정컨데 Core-A9의 clock을 더 높여도, atom과의 차이가 크게 줄어들거나 역전되지 않기 때문에 일부러 500MHz로 돌린 것 같은데, 그래도 생각보다 빠른 속도이고 사용하는데 큰 문제가 없는 정도입니다.

그래도 Windows PC와 똑같지 않으므로, 무언가 불안전한 느낌이라서 안팔릴 것이라는 예상이 있을 수 있습니다. 하지만 netbook을 사는 사람은 대부분은 집에 PC나 notebook을 가지고 있는 사람이라고 합니다. 일종의 second PC라는 개념으로 장만하는 것인데, smartbook도 우선은 마찬가지의 영역을 공략하고 있습니다. Smartbook을 들고 밖에 나가서는 필요한 적당한 것을 하면 되는 것이고, 나중에 집에 있는 PC와 data를 교환하면 그만인 셈입니다.

Smartbook이 성공할 수 있는 환경이 상당히 마련되어 있습니다. Web 기반으로 대부분의 software가 제공됩니다. 이미 email 같은 것은 많은 사람들이 outlook이나 아직도 나오는지 모르겠지만 eudora와 같은 전용 프로그램을 이용하지 않고 web에서 많이 이용하고 있고, 문서 작업 같은 것도 web 기반으로 제공됩니다. 또한 web 기반 storage 등이 있으므로 smartbook의 부족한 저장 용량을 어느 정도 보충해 줍니다. Web browser만 있으면 할 수 있는 일이 정말 다양합니다. Google에서 준비 중인 Chrome OS가 이러한 추세를 대변한다고 볼 수 있습니다.

아마도 game은 smartbook에서 당분간은 성공할 수 없을 것 같습니다만, smartbook의 초점은 당분간 "이동성"에 맞추어져 있으므로 크게 문제가 되지 않을 것 같습니다. 또한 game 역시 cloud 형태로 이동하려는 시도가 여럿 있습니다. 즉, client는 단순히 입출력(화면 표시, 사용자 입력 등)만 담당하고, client의 화면에 표시될 내용, sound를 계산하는 것을 포함한 모든 것은 service 회사가 담당하고 그 사이를 network으로 연결하려고 하는 시도가 있습니다.

ARM진영이 smartbook이 성공을 하면 아마도 desktop도 바꾸려 할 것이고, 그 시점이 오면 Intel하고 Microsoft는 현재의 지위를 누리지 못할 겁니다.


반대로 Intel의 스마트폰 시장의 진입은 무언가 획기적인 일을 수행하지 않는 이상, 당분간은 어렵다고 생각합니다. 위에서 언급한 GW990이 moblin(간단히 말하면 atom용 linux)을 사용하고 있다고 하는데, ARM CPU에 linux를 올린 기기랑 사용자가 느끼기에는 별 차이가 없을 겁니다. 엄청 빠를 것 같지도 않고, 그렇다고 ARM 진영에서 제공하지 못하는 특별한 기능을 제공할 수도 없습니다. 그런 상황에서 power도 더 많이 사용하는 것 같고, 가격도 더 비쌀 것으로 추정되는 chip을 굳이 사용할 스마트폰 제조사가 별로 없을 것 같습니다.

  • 우리나라의 특수성
우리나라에서는 당분간 smartbook이 많이 팔릴 수 없겠습니다. 개인적으로 PC의 web browser로 Firefox를 주로 사용하는데, 국내 web 환경에서는 PC의 Firefox를 쓰는 것도 불편합니다. 예전에 비해서 많이 나아지기는 했지만 여전히 Firefox로는 제대로 보이지 않는 사이트가 있고, 인터넷 뱅킹, 신용카드 결재등을 처리할 수 없습니다. 즉, Microsoft Internet Explorer + x86 CPU의 형태를 가지지 않으면 모든 서비스를 기대하지 못합니다. 다만, 작년 말에 iPhone이 출시된 다음 부터는 platform 의존성 논의가 좀더 활발해 지는 것 같아서 다행이라고 생각합니다.

2010년 1월 3일 일요일

FPGA 이야기 - 4

FPGA을 이용한 설계를 할 경우, 검토해야 하는 것들에 대해서 알아봅니다.

  • FPGA 선정
FPGA Vendor에서는 여러 가지 제품 군을 가지고 있고, 동일한 제품군 내에서도 LUT의 갯수나 사용할 수 있는 내부 SRAM의 bit수, package type에 따라서 다양한 제품을 공급하고 있습니다. 원하는 시스템을 만들기 위해서는 어떤 요소를 고려하여 FPGA를 선정해야 하는지를 알아 봅니다.

(a) FPGA 내부의 hardware logic
FPGA 내부에는 LUT/SRAM을 제외하고도 ARM/PowerPC 같은 hardwired CPU가 들어 있다거나 Gigabit ethernet MAC, High speed serial I/O등의 전용 block이 들어 있는 제품이 있습니다. 설계하고자 하는 시스템에서 필요한 feature가 FPGA 내부에서 지원되는 것이 일반적으로 좋다고 볼 수 있습니다. 다만 FPGA 외부에 별도로 해당 기능의 chip을 연결하는 방법으로 구현할 수 있으므로, FPGA 내부 hardware를 사용하는 것이 유리한지를 정확하게 판단할 필요가 있습니다.

(b) Pin count
설계할 시스템을 검토하다 보면, FPGA에 연결될 다른 chip 들은 결정할 수 있습니다. 해당 chip 들과 FPGA를 연결하기 위해서는 충분한 pin count가 확보된 FPGA를 골라야 합니다. 아래에서 알아보겠지만 FPGA의 I/O pin은 Bank로 나누어져 있어서 모든 pin을 다 활용하지 못할 가능성이 있으므로 단순히 maximum I/O pin의 갯수만 보고 판단해서는 안됩니다.

(c) Design의 크기
사실 FPGA 내부에 들어갈 logic 설계가 모두 끝났으면, 그것을 합성해서 가장 tight하게 들어가는 FPGA를 고르는 것이 가격적인 면에서 유리합니다. 예를 들어 FPGA 내부의 LUT 상당 수가 아무런 일을 안하고 있다면 FPGA 선정이 잘못 되었다고 볼 수 있습니다. 문제는 logic 설계가 끝나기 전에 FPGA를 선정하고 test board를 만들어야 하는 경우가 많습니다. 이런 경우를 대비하여 FPGA Vendor에서는 동일한 package에서 크기가 다른 제품들을 생산합니다. 일단 어느정도 큰 FPGA를 선택하여 test board를 만들어 테스트하고, 설계가 완료되어 크기를 정확하게 알게 되면 board  변경 없이 동일한 package를 가진 작은 FPGA로 갈아 탈 수 있습니다.

(c) Design의 timing
당연히 설계한 내용이 원하는 속도로 움직여 주어야 합니다. 설계한 내용을 변경하여 속도를 맞출 수 있는 방법으로, flip flop을 더 많이 넣거나, parallezing하거나 하는 등의 방법을 사용하는데, 이 경우 설계한 logic의 크기가 어느 정도 증가하게 됩니다. 따라서 크기 증가 없이 좀더 높은 속도를 달성하려면, 당연히 좀더 빨리 동작하는 제품군, 혹은 동일한 제품이라도 speed grade가 더 좋은 것을 선택해야 합니다.

(d) 나머지 engineering issue
당연히 시스템의 동작 온도/환경 특성을 고려하여 FPGA를 선정해야 합니다. 일반적으로 consumer/industrial/automotive/military 규격에 부합하는 동작 온도 특성이 있습니다. 만약 자동차에 내장하고 싶으면 automotive 규격이나 좀 더 동작 온도 보장 범위가 넓은 military 규격의 FPGA를 사용해야 하는데, 그런 규격으로 나오는 FPGA의 종류는 제한되어 있으므로 그것을 고려해야 합니다. FPGA 중에서는 심지어 Aerospace라고 해서 아마도 우주선이나 위성 등을 만들 때 써도 안정성 보증된 것도 있습니다.

기타 아래에서 설명할 design security와 structured asic 지원 여부도 검토 대상입니다.

(e) 기타
사실 설계할 시스템의 판매가, 생산량 및 개발 기간 등에 따라서 FPGA 선정은 영향을 많이 받습니다. 예를 들어 한 10대 생산하여 고가에 납품하고 끝나는 시스템을 위해서 FPGA 가격을 낮추고 뭐 이런 것 할 필요가 없겠죠.

요소라고 하기에는 그렇지만 FPGA를 선정할 때 꼭 가격 확인을 해야 합니다. 미국에서도 그런지 모르겠지만, 국내에서는 Xilinx FPGA를 구하게 되면, FPGA의 가격이 크기 순서대로 정해져 있지 않은 경우가 있습니다. 주로 많이 팔리는 FPGA가 비교적 싼 가격을 가진다고 합니다. 또한 동일한 크기의 FPGA의 경우 일반적으로 최신 제품군에 있는 제품이 가격이 더 쌉니다. 최신 제품군 FPGA의 경우 좀더 미세한 공정을 사용하므로 die size 면에서 유리하기 때문입니다.

  • Board 설계시 유의 사항
FPGA Board를 설계하는 것은 다른 일반적인 Board를 설계하는 것에 비해서 쉬울 수도 있고, 고려해야 할 것들이 오히려 많을 수도 있습니다. 우선 FPGA에서 dedicated function으로 동작하는 pin의 갯수가 매우 적습니다. FPGA Configuration에 관련된 pin과 high speed serial I/O pin 정도가 dedicated fuction pin입니다. 해당 pin은 FPGA Application Note 등을 참고로 하여 정확하게 연결해야 합니다.
나머지 pin 들은 사용자의 설계에 따라서 다양한 형태로 각종 interface 표준을 맞추어 이용할 수 있습니다. 즉, 일반적으로 FPGA와 다른 chip을 연결할 때 pin-to-pin으로 대충 연결해도 무방하다는 뜻입니다. 하지만 제한적인 요소가 몇가지 있습니다.

우선 global clock pin이 따로 있고, 이 pin에서 들어오는 signal은 FPGA내부의 PLL과 연결도 쉽고 FPGA 전체로 퍼져있는 clock buffer tree와 연결하기도 쉬운 구조로 되어 있어서 입력 pin에서 FPGA 내부의 flipflop까지의 signal delay가 작습니다. 외부 clock을 꼭 global clock pin에 연결해야 하는 것은 아니지만, clock이 매우 빠르고 해당 clock으로 FPGA pin에 인가된 signal을 latch해야 하는 경우에는 global clock pin을 쓰는 것이 여러가지 면에서 권장됩니다. global clock pin은 clock으로 사용하지 않을 경우에는 일반 input pin이나 output pin으로 쓸 수 있습니다.

I/O pin들이 bank라는 이름의 group으로 나누어져 있습니다. 그리고 해당 bank에 I/O Power pin들은 모두 연결되어 있으므로 동일한 전압을 인가해 주어야 합니다. 따라서 같은 bank의 pin이 서로 다른 I/O voltage를 요구하는 interface를 사용할 수는 없습니다. 예를 들어 어떤 bank의 특정 pin을 LVTTL(3.3V Power 요구)로 이용하고, 다른 pin은 SSTLII-1.8(1.8 V Power 요구 : DDR2 SDRAM에서 사용하는 interface)를 사용하는 식의 구성은 안됩니다. 또한 I/O Interface에 따라서 reference voltage가 필요한 경우가 있는데(예 : SSTLII-1.8의 경우, Power 외에 reference 0.9V가 필요함), 이런 경우 reference voltage의 입력으로 사용할 pin이 정해져 있으므로 주의 해야 합니다.

그리고 LVDS와 같은 differential I/O의 경우 differential pair가 정해져 있으므로 아무렇게나 고른 두 개의 pin으로는 연결하면 안되고, 꼭 pair를 맞추어 연결해야 합니다.

  • Structured ASIC
FPGA의 가격은 작은 것들은 몇 달러부터 시작하지만, 어느 정도 큰 것들은 수천불까지 합니다. 시스템의 판매량이 적고, 고가라면 크게 문제가 되지 않겠지만, 판매량이 많고, 상대적으로 시스템 판매 가격 중에 FPGA의 가격이 차지하는 비중이 크다면, 가격이 싼 솔루션을 찾을 필요가 있습니다. 당연히 연간 수십만대, 수백만대씩 팔린다면, 비싼 FAB NRE와 상당히 긴 개발 기간을 감수하고도 chip을 직접 만드는 것이 유리할 가능성이 큽니다. 하지만 만대~수만대 정도 된다면 chip을 만드는 것은 고려하기 곤란한데, 이때 선택할 수 있는 것이 Structured ASIC이라는 방법입니다.

일반적인 Structured ASIC은 Gate Array와 FPGA의 중간 정도 영역에 있는 설계 방법입니다. Structured ASIC은 FPGA와 같이 LUT/SRAM 등의 표준화된 요소들을 이용하여 설계하는데, FAB에서 직접 생산되는 점이 다릅니다. 즉, "Field Programmable"하지는 않습니다. Gate Array와 마찬가지로, LUT/SRAM 등이 들어 있는 wafer에 사용자의 logic 부분에 해당 하는 것만 metal layer를 이용하여 추가로 구현하는 방식으로 되어 있어 NRE가 비교적 저렴하고, 생산까지 소요되는 기간이 짧다는 장점이 있습니다. 일반적인 Structured ASIC 분야에서는 eASIC, CHIPX 등의 회사가 유명한 것 같습니다.

Altera에서도 이런 Structured ASIC을 제공합니다. HardCopy ASIC이라는 이름으로 제공하는데, Altera의 high performance FPGA 제품군인 Stratix 시리즈의 FPGA에 대응되는 형태입니다. 만약 설계자가 Stratix 시리즈의 FPGA를 이용하여 digital logic을 구현하였다면, 그 구현 내용을 Altera에서 FPGA와 동일한 동작을 하는 ASIC을 생산해 주는 형태입니다. 설계 내용을 바탕으로 SRAM based LUT를 metal layer와 LUT보다 작은 크기를 가지는 cell을 이용하여 특정한 기능으로 고정하고, programmable routing도 metal layer를 이용하여 고정하는 방법으로 cost reduction(die size 감소)을 하게 됩니다. FPGA 기반의 설계 내용을 1대1 매핑을 통하므로 risk가 상당히 낮습니다. NRE도 chip을 직접 만드는 것에 비해 저렴할 것으로 예상됩니다. 또한 LUT와 routing 등이 고정되므로 좀더 빠른 동작속도를 가질 수 있는 것과, power consumption이 줄어든다는 것, 그리고 configuration이 필요 없다는 것 등이 부가적인 장점입니다.

Xilinx에서도 EasyPath라고 하는 cost reduction 방법을 제공하는데, 이것은 엄밀히 말해서 structured ASIC이라고 할 수는 없습니다. Xilinx의 white paper를 살펴보면 Effective Die Size니 뭐 어렵게 설명하고 있는데, 결국 EasyPath는 FPGA를 생산하는 과정중에 테스트를 줄이는 방식으로 cost reduction을 하는 것으로 보입니다. 사용자의 설계 내용을 살펴보고, FPGA에서 사용하지 않는 요소들은 테스트 하지 않거나, 사용하지 않는 요소들의 불량으로 인해 불량품 판정을 받은 FPGA를 재활용(?)하는 방법으로 cost reduction을 하게 됩니다. 아무래도 Altera HardCopy에 비해서는 cost reduction이 크지 않을 것이라는 예상이 가능하고, 사용자는 FPGA를 싸게 공급 받는 것 뿐이므로, Altera HardCopy와 같이 power, 동작 속도, configuration 관련 부분이 필요 없다는 부가적인 잇점은 없습니다. 대신 Altera HardCopy에 비해서 NRE가 저렴하고, Risk가 더 적을 것이라는 예상이 가능합니다.

  • Design Security
회사에서 많은 노력과 비용을 들여 만든 시스템을 악의적인 다른 회사가 간단한 reverse engineering 만으로 동일한 기능의 제품을 만들 수 있다면 어떻게 될까요? 대부분의 시스템 회사가 시중에서 팔리는 chip을 이용하여 설계를 하기 때문에, 다른 회사의 악의적인 도용에 항상 노출되어 있습니다. 보드의 구성을 파악하여 동일하게 만들고, ROM이나 Flash 등의 비휘발성(non-volatile) memory에 들어 있는 data를 복사하면, 이른바 dead copy를 어렵지 않게 만들 수 있습니다.
FPGA를 이용한 시스템도 동일한 위험에 노출되어 있습니다. 많이 사용하는 SRAM based FPGA는 외부의 program memory chip 등에서 configuration data를 loading해야 동작을 합니다. JTAG 등을 이용하여 Program memory chip이나 FPGA의 configuration data를 읽어내는 간단한 방법을 사용하거나, configuration data가 loading될 때 logic analyzer 등을 이용하여 data를 capture하는 방법을 사용하면, dead copy를 만들 수 있습니다. FPGA 시스템의 경우 BOM cost에 비해서 고가로 팔리는 경우가 많고, 개발을 위해서 노력과 시간이 다른 시스템에 비해 더 많이 걸리는 경우가 많아서, 좀더 위험하다고 볼 수 있습니다.
이러한 Design Security 문제를 해결하기 위해서 많은 방법이 있을 수 있습니다. 우선 Anti-fuse 방식 혹은 Flash 기반의 FPGA를 선택하면, configuration data가 board 위에서 돌아다니지 않으므로 좀더 안전하고, JTAG이나 다른 방법(예를 들어 FPGA에 configuration data를 읽어 밖으로 내보내는 design을 download하여 수행하고 외부에서 capture하는 방법)으로 configuration data가 읽어지지 않게 하면 됩니다. 하지만 많이 사용되는 SRAM based FPGA는 기본적으로 configuration data가 FPGA 외부에서 인가되어야 하므로 좀더 어려운 방법이 요구되는데, FPGA Vendor에서는 아래와 같은 방법을 제공합니다.

(1) Configuration Bitstream Encryption
Configuration data를 AES(Advanced Encryption Standard)와 같은 방법으로 암호화하는 방법을 사용하는 FPGA 제품들이 있습니다. Board 위에서는 Encrypted data만 FPGA로 전달되고, FPGA 내부에서 decryption을 하여 configuration이 진행됩니다. 이 때 FPGA 내부에는 사용자가 정한 암호화를 위한 key 값이 저장되어 있어야 하는데, 이 key 값은 정상적인 방법으로는 읽어 낼 수 없고, key 값이 없이 encrypted data를 reverese engineering으로 decrypt하는 것은 수학적으로 어렵다고 알려져 있습니다. key 값은 보통 JTAG을 통해서 FPGA에 쓰여 지는데, FPGA에서 이 key 값을 어떻게 유지하고 있느냐가 문제입니다. Altera에서 나온 Startix II/III/IV와 같은 FPGA에서는 이 key 값을 OTP(One Time Programmable) memory에 담고 있어서 한번 write하면 계속 그 key 값을 유지합니다만, 나머지 FPGA들은 대부분 key를 담고 있는 memory도 SRAM을 사용하여 key 값을 유지하기 위해서는 전원이 필요합니다. 이 경우에는 key값을 저장하는 SRAM에 별도로 전원을 인가할 수 있는 구조로 되어 있어, 외부에 코인(coin) 건전지 등을 달아서 key 값을 유지시킬 수 있는 구조로 되어 있습니다. 보통의 코인 건전지로 수년간 key 값을 유지할 수 있다고 하는데, 그만큼 유지하는지는 확인해 본 적은 없습니다.

(2) 별도의 Security Chip 이용
다른 방법으로 별도의 Security Chip을 이용하는 방법이 있습니다. 아래의 Altera 문서를 보면 Maxim에서 나온 DS28E01이라는 chip을 이용하는 방법이 자세히 나오는데, 다른 Vendor의 FPGA에서도 사용할 수 있는 방법입니다.
An FPGA Design Security Solution Using a Secure Memory Device
외부 Security Chip에 Random Number를 이용하여 Challenge-Response 방식의 인증을 요청하고, 이 인증에 문제가 없는 경우에만 동작하도록 하는 logic을 FPGA 내부에 구성하는 방법입니다. 이 때, FPGA 내부에 Random Number를 만드는 방법(이것도 아주 간단하지는 않습니다)과 key값을 이용한 hash algorithm 등의 logic이 구성되어야 하는데, FPGA configuration data는 capture할 수 있으므로 reverse engineering을 열심히 하면 깰 수는 있을 겁니다. 다만 그러한 reverse engineering을 통해서 시스템을 도용하려고 하는 시간과 노력이 더 많이 필요할 뿐입니다.