2010년 9월 25일 토요일

Nokia 5800 XpressMusic 사용기

얼마전에 휴대폰을 하나 새로 추가로 샀습니다. 기존에 사용하던 휴대폰은 삼성 m4655라고 하는 아래 사진과 같은 녀석이었습니다.


Windows Mobile로 구동되고 full touch되는 스마트폰이라고 볼 수 있는데, WiFi도 없고 GPS도 없는 무늬만 스마트폰이라고 볼 수 있는 녀석입니다. 하지만 기존까지 유지하던 011번호를 유지할 수 있고, 버스타고 다니면서 동영상이나 보려고, 2년쯤전에 LGT(이제는 LG U+가 됐죠)에서 개통하여 계속 사용하고 있었습니다. WiFi가 안되므로 network 접속은 휴대전화망을 이용할 수 밖에 없는데, 아무래도 데이터 요금이 무서우므로 재미있는 application(요즘말로는 앱)을 설치하거나 할 수는 없었습니다. 설치한 application으로 생각나는 것은 달랑 두 개로 하나는 배경화면 꾸미는 것하고 나머지는 TCPMP라는 동영상 player였습니다.


그런데 얼마전부터 touch sensor에 문제가 있는지 touch가 동작하지 않는 경우가 많이 생기더군요. Touch는 사실 새로 받았을 때 부터 아주 잘 동작한다고 볼 수도 없었는데, 인터넷을 돌아다녀보면 이 모델이 가지는 고질적인 문제라고 합니다. A/S 센터에 들고 가자니, 무상 보증 기간이 지났고, LGT 약정(2년)은 남았고 해서 이 전화는 받는 전화로만 쓰면서 약정을 넘기고, 그 기간동안 발신을 주로할 휴대폰을 새로 장만했습니다.


장만한 휴대폰은 Nokia 5800 XpressMusic, 일명 익뮤라고 하는 휴대폰입니다. Symbian 운영체제, 정확하게는 Symbian S60 5th edition을 사용하는 풀터치 스마트폰입니다. Wifi, GPS, 가속도 센서(중력 센서) 등을 지원합니다.


올 봄에 익뮤대란이라고 무약정으로 KT에서 많이 팔았던 휴대폰인데, 대란때 산 것은 아니고  6월 말쯤에 더이상 m4655로 전화를 거는 것이 힘들다고 생각했을 때 12개월 약정으로 구매했습니다. 익뮤는 3G 폰이므로 방통위 정책에 따라서 010 번호를 받았습니다. 익뮤를 사용해보고 괜찮다 싶으면, 기존 011 번호를 번호 연결 서비스로 연결하여 주 휴대폰으로 사용할 계획을 잡고 구매하게 되었습니다. 구매한 후 얼마 지나지 않아 익뮤의 업그레이드라고 볼 수 있는 X6가 비슷한 조건으로 시장에 팔려 약간은 속이 쓰렸습니다.


전반적으로 익뮤는 훌륭한 휴대폰이라고 볼 수 있습니다. 우선 전화 기능에서 불만은 전혀 없고, 터치도 훌륭합니다. 7월말에 있었던 공식적인 펌웨어 업데이트 전에는 스크롤을 위해서는 꼭 스크롤바를 사용해야 했는데, 업데이트 후에는 일명 키네틱 스크롤이 지원되어 매우 편해 졌습니다. 기본적으로 LG 휴대폰에서 사용하는 ez한글 입력기를 지원 하는 것도 매력적이고, 약간은 독특하게 동작하여 당황스럽기는 하지만 전화번호부 초성 검색도 가능합니다. 그리고 크기도 적당해서 전화기로서의 그립감이 상당히 좋은 편입니다.


완성도도 높은 편으로 m4655와 같은 Windows Mobile 폰에서 볼 수 있는 일명 똥침같은 것은 존재하지도 않고 당연히 리셋이 필요한 경우가 없었습니다. 개인적으로 막귀라서 잘 모르겠지만, 다른 사람들의 평가에 따르면 이름(XpressMusic)에 걸맞게 MP3 음질도 훌륭하다고 합니다. 당연히 3.5파이 이어폰 단자가 있습니다. 또한, 카메라 화질도 좋은 것 같습니다. 3.2메가픽셀에 자동 촛점(auto focus), 플래쉬를 지원하는 카메라가 달려 있는데, 예전에는 "휴대폰 카메라에 무슨 플래쉬가 필요한가?"라는 생각이 있었는데 어두운 환경에서 찍어보니 나름 플래쉬 기능도 꽤 쓸만했습니다.


개인적으로 m4655의 사용에 비해 익뮤를 사용할 때 가장 차이가 나는 부분은, Wifi를 이용하여 gmail의 연락처, 캘린더 등을 동기화를 사용하는 것이었습니다. 별도의 케이블 연결도 필요 없이 Wifi가 되는 곳이면 언제든지 동기화가 가능하므로 상당히 편리했습니다.


하지만 사용하면서 아쉬웠던 점이 몇가지 있었습니다. m4655에 설치한 앱이 달랑 두 개밖에 없을 정도로, 스마트폰의 heavy user는 아니므로 그것을 감안한고 읽어 주시기 바랍니다.


  • 발신 제한 없음
집에 네살배기 아들 녀석이 있는데, 이 녀석이 아빠가 가지고 노는 것은 모두 직접 해보려고 합니다. 그래서 아들 녀석이 만족할 수 있게끔 어느 정도 동작은 되면서, 다른 사람에게 폐가 되지 않도록 전화는 걸리지 않도록 세팅할 수 있어야 합니다. 그런데 익뮤에서는 그것이 불가능합니다. 분명 휴대폰의 설정 메뉴에는 발신 제한뿐 아니라 국제전화 제한도 있지만 동작하지 않습니다. 이 기능들은 휴대폰 자체 기능이 아니라, 통신 사업자(즉 KT)와 연동되어 동작해야 하는 것으로 보이는데, KT에서 지원하지 않는 것으로 보입니다. 당연히 앱을 설치하면 가능할 것으로 보고, call block 기능이 있는 symbian 앱을 많이 찾아 봤는데, 모두 발신이 아니라 수신 전화를 필터링하는 것 뿐이었습니다. 그럼 취미 삼아 그런 앱을 만들어 보자 싶어, symbian에서 제공하는 API에 관련된 문서까지 살펴 봤는데, 전화가 발신 되는 것을 감지하여 hook하는 API는 찾을 수 없었습니다. API 문서를 보면 발신을 감지하여 자동으로 끊게 할 수는 있을 것 같은데, 암호 화면을 띄워서 인증이 될 때까지 발신을 보류할 수는 없어 보입니다. 결국 아들에게 미안하지만, 휴대폰 전체를 잠그는 방법을 사용하고 있습니다. 여기서 또 약간의 문제가 발견되었는데, 기본 제공되는 전체 잠금은 잠금 화면에서 현재 시각이 화면에 표시 되지 않습니다. 시각을 확인하려면 암호를 넣어 잠금을 풀어야 하는 불편함을 감수해야 합니다. 새벽에 잠이 깼을 때 옆에 있는 휴대폰을 집어 시각을 확인하려고 할 때, 크흐~

전화 발신 제한 뿐 아니라, 데이터 통신 제한도 없습니다. 웹브라우저 등을 띄우면 현재 가능한 인터넷 접속 방법 중에 하나를 고를 수 있는 다이얼로그박스 같은 것이 뜰 뿐, 3G 데이터 통신을 완전히 제한하거나 암호등을 이용하여 제한하는 기능은 없습니다. Exchange Server 동기화를 위해서 사용하는 Mail for Exchange와 같은 앱은 정기적으로 인터넷 접속을 하도록 세팅할 수 있는데, 접속할 때 접속 방법을 선택하는 다이얼로그박스가 뜨지도 않고 마음대로 접속을 하는 것으로 보입니다. 다행히 데이터 통신 제한은 앱을 설치하면 가능한 것으로 보입니다.


  • 충전 문제
또 하나의 커다란 불편한 점은 충전입니다. 익뮤를 사면 5V 아답터(일반 5파이가 아니라 2파이 형태의 가는 단자를 사용)가 딸려오고 이것을 연결하여 충전을 할 수 있습니다. 하지만 익뮤는 micro USB 포트가 있어서, 당연히 micro USB를 이용하여 PC로도 충전이 가능할 것이라고 생각했었습니다만, micro USB 포트로는 충전이 되지 않습니다. micro USB 포트를 이용할 수 없기 때문에 집과 회사, 두 곳에서 충전을 하려면 아답터를 들고 다니거나 하나 더 구매할 수 밖에 없습니다.
이런 불편 때문에, 3rd party에서 USB를 2파이 아답터 소켓으로 변환하는 젠더등을 팔고는 있습니다만, 그렇게 널리 사용되는 젠더는 아니라서 가격이 비싼 편입니다. micro USB 포트를 이용하여 충전이 가능하면 24 pin 표준형 충전기에 맞는 젠더도 구하기 쉽고, 정 문제가 되면 PC를 이용하여 충전이 쉬운데 아쉬운 점입니다.
다행한 점은 배터리 소모가 크지 않아 매일 집에서 꼬박꼬박 충전을 해 주면 하루 정도 사용에는 큰 문제가 없다는 점입니다.

  • 동영상 지원 빈약
m4655를 사용할 때는 TCPMP를 이용하여 왠만한 동영상은 별도의 인코딩 없이 재생하고 smi 형태의 자막도 오버레이를 할 수 있었습니다만, 익뮤의 경우에는 그것이 불가능합니다. 익뮤는 real player를 내장하여 사용하는데 이 녀석이 MP4와 H.264만 지원하고 자막의 오버레이는 지원하지 않습니다. 자막 오버레이를 지원하고 avi 형태의 파일도 지원하는 3rd party 앱이 있는 것 같습니다만 이 앱의 성능이 그다지 좋지 않은 것으로 알려져 있습니다. 결국은 PC에서 자막까지 오버레이해서 인코딩을 거쳐야 제대로된 동영상을 감상할 수 있습니다. 
익뮤가 640x360 크기의 16:9 LCD를 지원하기 때문에 화면은 m4655(QVGA 지원)보다는 훨씬 좋기는 합니다.

  • ovi store의 빈약한 앱
개인적으로 볼 때 익뮤의 가장 큰 문제는 우리나라에서 ovi store를 통해서 구할 수 있는 앱이 너무 적다는 점입니다. ovi store는 Nokia가 만든 symbian용 app store입니다. 사실 symbian은 가장 오래된 스마트폰 platform이라 시중에 돌아다니는 앱은 정말 많은 것 같습니다. torrent를 통해서 mega pack과 같은 형태로 수천 개의 앱이 들어 있는 파일을 다운로드 받을 수 있기도 합니다. 하지만 symbian platform이 오래된 만큼, 스마트폰에서 동작하는 악성 코드가 처음 발견된 platform도 symbian입니다. 사용자는 안전하다고 확신할 수 있는 앱을 쉽게 다운로드 가능해야 합니다. 그런 통로 중에 가장 우선시 되어야 하는 것이 Nokia에서 직접 운영하는 ovi store 여야 한다고 생각합니다.
그런데 ovi store에서 구할 수 있는 앱이 너무 적습니다. 우리나라에서는 무료 앱만 다운로드 가능한 것으로 보이는데, 등록되어 있는 무료 앱이 너무 적습니다. 유료 앱의 경우에는 우리나라에서 어떤 것이 있는지 조차 확인할 수 없습니다. Proxy 서버를 이용하여 외국으로 경유하면 확인할 수 있겠지만, 그래 봤자 구매를 하려면 상당히 번거러운 절차를 거쳐야 할 것으로 보입니다.
스마트폰이 일반 피쳐폰과 다른 가장 큰 것이 앱의 설치 가능 여부라고 봤을 때, 안전한(?) 앱의 갯수가 적다는 점은 큰 문제입니다. 더군다나 이런 상황이 미래에도 크게 바뀔 가능성도 없습니다. 얼마전에 Nokia에서 N8이라고 하는 Symbian^3 platform(익뮤가 사용하는 S60 5th edition의 업그레이드 판)의 스마트폰을 출시하기는 했지만, Nokia가 주력으로 삼을 platform은 Intel과 같이 하고 있는 Meego로 보여집니다. 따라서 익뮤가 많은 지원을 받을 가망이 별로 없습니다.


현재는 m4655의 2년 약정이 끝난 상태로, 고민 중이기는 하지만 m4655를 대체할 휴대폰으로 익뮤를 계속 사용하지는 않을 것 같습니다. 나름 괜찮은 스마트폰을 사용할 수 있는 기회를 준(?) KT에는 미안한 일이지만, 위약금을 내고 해지할 예정입니다. 그동안 발신은 계속 익뮤를 통해서 KT에 전화요금을 납부했으므로 약간은 죄책감(?)을 덜 느끼기는 합니다.

m4655를 대체할 휴대폰을 장만해야 하는데, 스마트폰을 장만한다면 아마도 안드로이드폰을 사지 않을까 싶습니다. 아니면 011 번호를 유지할 수 있는 2G 피쳐폰을 사는 것도 고려하고 있는데, 여러모로 고민을 하고 있습니다.



2010년 5월 5일 수요일

Altera Cyclone III, NIOS2 간단 사용기

현재 일하고 있는 회사에서는 사용하고 개발하는 대부분의 FPGA Board는 Xilinx의 FPGA를 사용하고 있고, 개인적으로도 Xilinx FPGA를 많이 사용해 봤습니다. 하지만 최근에 어떤 IP를 개발하고 테스트하는데 Altera Cyclone III FPGA를 사용해 봤습니다. Xilinx FPGA를 사용한 Board를 직접 개발해서 할 수도 있었지만, 범용으로 사용할 것도 아니고 IP 테스트용이므로 off-the-shelf board를 사서 쓰는 편이 좋다는 판단이었습니다. Verilog RTL을 구현하는데는 Xilinx나 Altera나 별 차이가 없겠지만, IP 테스트를 위해서 Board가 몇가지 기능을 지원해야 하는데, Altera Cyclone III FPGA Develpment Kit과 3rd party daughter board를 연결하면 그런 기능이 모두 해결되어서 선정하게 되었습니다.

Cyclone III series의 FPGA 중에서 가장 큰 FPGA가 달려 있는 board입니다.

이 보드는 USB 지원에 약간 문제가 있었습니다. 원래의 계획은 USB를 이용하여 PC에서 test data를 전달하고 그것을 board에서 동작시키는 것이 목적이었습니다만, USB 지원이 쉽게 되지 않았습니다. Board 설명에서는 FPGA Configuration을 위한 USB Blaster도 지원하고, 일반 USB를 지원하여  PC와 연결할 수 있다고 나오는데, 정작 Board에는 USB Type-B connector가 하나 뿐입니다. Board 내부의 Altera Max CPLD를 이용하여 USB Blaster 기능과 사용자의 USB 기능을 switching할 수 있도록 되어 있는 것 같은데, 정작 USB를 직접 사용하는 design example을 제공해 주지도 않습니다. 어떻게든 가능하게 만들 수는 있겠지만, 시간이 없어서 USB를 사용하겠다는 생각은 포기하고 다른 방법을 사용했습니다.

Altera FPGA는 수년 전에 Startix II를 한번 사용해 봤을 뿐인데, 그 때도 그다지 자세히 살펴보지는 않았습니다. Cyclone III를 사용하면서 좀 자세히 살펴 봤는데, Xilinx의 Spartan-3에 비해 아래와 같은 장점이 있는 것 같습니다.

(1) Hardwired multiplier 갯수
Xilinx의 Spartan-3의 경우 18x18 multiplier와 accumulator 등이 내장된 DSP block이라는 hardwired logic이 있는데 Cyclone III는 18x18 multiplier만 hardwired logic으로 들어 있습니다. 대신 비슷한 가격대의 device를 비교하면 Cyclone III가 월등히 많은 multiplier가 들어 있습니다. 이번에 테스트한 IP도 FIR Filtering이 필요해서 multiplier를 사용했는데 Cyclone III가 이런 부분의 사용에서는 유리할 것으로 보입니다.

(2) PLL
FPGA에는 clock에 관련된 hardwired module을 제공해서 clock synthesize나, delay 조정등을 할 수 있도록 되어 있습니다. Altera와 Xilinx에서 제공하는 clock module의 기능이 너무 복잡해서 모든  feature를 비교할 경우는 모르겠지만, 단순히 입력 clock의 frequency를 multiply하고 divide하는 기능만 보면 Altera의 cyclone III가 Xilinx의 spartan-3보다 뛰어납니다. Cyclone III의 경우 512배의 multiply와 divide를 지원하는데 반해 Spartan-3는 32배씩만 지원합니다. 물론 Cyclone III의 경우도 PLL의 동작 조건 등을 만족시키려면 512배를 완전 자유롭게 사용하지는 못합니다만, 좀 더 자유로운 편임은 분명합니다. 이번 테스트에서도 clock divide 값으로 143을 써야하는 경우가 있었는데, PLL 한 개만 사용해서 깔끔하게 끝나더군요.

  • SOPC를 이용한 NIOS II system
테스트를 위해서 사용할 외부 chip 하나가 SPI를 이용하여 레지스터 셋팅을 필요로 해서 Altera NIOS II를 이용해 봤습니다. SPI를 통해서 레지스터 세팅하는 부분도 hardware RTL로 coding하면 되지만, 셋팅값을 이리 저리 바꾸는데는 아무래도 software를 이용하는 편이 좋을 것 같아서 한 번 사용해 봤습니다.
Xilinx에서는 "따라해 보세요" 스타일의 문서를 제공해서 그것만 읽으면 쉽게 따라할 수 있는데, Altera는 그런 문서가 없어서 Altera에서 제공하는 video를 보고 따라해 봤습니다.

(1) SOPC Builder
Xilinx에서 제공하는 Platform Studio와 비슷한 기능이 있는 tool입니다. NIOS II CPU Subsystem을 GUI 환경에서 만들 수 있도록 합니다. 다른 점이 있다면 Platform Studio는 FPGA Top을 만들어 주는 대신 SOPC는 module을 만들어 줍니다. 즉, FPGA Top은 Schematic Editor를 사용하거나 아니면 HDL을 이용하여 사용자가 직접 묶도록 되어 있습니다. 불편한 대신 장점이 있는데 FPGA 하나에 서로 다른 CPU Subsystem을 여러개 넣는 것도 가능한 것으로 보입니다. 즉 NIOS II CPU를 여러개 독립적으로 넣어서 구동하는 것도 쉽게 가능한 것으로 보입니다.

약간 불편한 점이라고 하면 MegaWizard와 같이 project를 만들지 않고 그냥 IP 형태로 만들어 두는 것은 지원하지 않는 것 같습니다. Quartus II에서 project를 만들어야 SOPC를 띄울 수 있도록 되어 있습니다. 사용한 버젼이 9.1이었는데 추후 버젼에서는 개선될 지 모르겠습니다.
 그리고 사용자 IP를 BUS(Altera는 Avalon이라는 BUS 사용)에 붙이려면 어떻게 해야 하는지, Wizard나 아니면 쉬운 예제같은 것을 찾기 힘들었습니다. 모든 문서 자료를 꼼꼼하게 살피면 당연히 가능하겠지만, 쉽게 찾을 수는 없었습니다. 대신 IP 테스트를 위해서 필요했던 enable/reset 관련 몇개의 signal을 BUS에 붙이는 대신 그냥 GPIO에 연결해서 가볍게 해결했습니다. 이런 부분은 Top을 사용자가 만들수 있으므로, Xilinx에 비해서 훨씬 쉽게 느껴졌습니다.

(2) NIOS II EDS(Embedded Design Suite)
Xilinx SDK와 동일한 기능을 제공하는 tool로, NIOS II CPU용 software를 만들 수 있도록 해 줍니다. Xilinx와 마찬가지로 Eclipse 기반으로 동작하고, JTAG(USB Blaster)을 이용하여 debugging합니다. Eclipse 기반의 IDE를 사용해 본 사람이라면 크게 문제 없이 적응할 수 있습니다. EDS만 관련된 것은 아니지만, 콘솔로 UART를 사용하지 않고, JTAG(USB Blaster)를 사용하도록 되어 있다는 점이 독특합니다. Software에서 printf 등으로 출력한 결과를 eclipse 환경에서 창이 하나 열리면서 보여주는 형태로 되어 있습니다. 따라서 보드에 시리얼 연결 등의 기능이 없어도 디버깅에 무리가 없습니다.
사용하는 중에 약간의 문제가 있었는데, EDS를 이용하여 build한 software binary와 FPGA configuration bitstream을 어떻게 합치는지 찾을 수 없었습니다. Xilinx SDK에서는 기본적으로 software binary와 bitstream을 합쳐서 FPGA download하는 방법으로 진행되므로 합쳐진 bitstream을 쉽게 찾을 수 있는데, NIOS II EDS는 hardware bitstream을 별도로 download한 후에 software binary는 추후에 download하는 방식이라서 합치려면 별도의 작업을 통해서 해야 할 것 같습니다. 그런데 몇가지 문서를 살펴 봐도 software binary를 bitstream(sof 파일)과 합치는 방법에 대해서는 자세히 나와 있지 않는 것 같습니다. 좀더 깊게 조사하면 방법을 찾을 수 있었겠지만, 결국에는 합치지 못했습니다. 어짜피 IP 테스트용이니까 별로 상관이 없었습니다.

  •  기타
사용한 board에서 LVDS와 같은 differential I/O로 연결해야 하는 부분이 있었는데, 이 부분에서 문제가 있었습니다. Differential I/O 핀이 Single Endede I/O(LVTTL 같은 애들) 핀과 가까이 있으면 Signal Integrity에 문제가 있다고 하면서 Quartus II에서 routing을 하지 못하더군요. 당연히 핀 사이에 노이즈가 문제가 될 수 있으므로 그것을 막고자 한 것 같은데, digital logic만 주로 설계한 사람으로서 처음 보는 에러였습니다. Xilinx FPGA에서도 비슷한 문제가 생길 수도 있을 것 같은데, LVDS를 많이 사용해 보지 않아서 확실하지는 않습니다. 아무튼 Altera FPGA에서 LVDS와 같은 differential I/O를 사용하는 경우에는 아무 pin이나 마구 쓰면 안되므로, Board 설계할 때 신경을 좀 써야 할 것 같습니다.

  • 마치며
Altera FPGA및 tool이 불편하다는 식의 이야기를 주로 한 것 같은데, Xilinx FPGA를 주로 사용했던 사람으로 느끼는 어쩔 수 없는 것일 뿐이고, Altera FPGA가 나쁘다는 이야기는 아닙니다. Altera에서 제공하는 모든 문서 자료나 video 등을 살펴보면 불편하거나 잘 안되는 부분도 해결할 수 있었을 겁니다. 다만, Altera website에서 빠른 시간 안에 딱 필요한 자료를 찾는 것이 쉽지는 않았습니다. 역시 Xilinx FPGA를 주로 사용했던 사용자라서 느끼는 점인지도 모르겠습니다.
참고로 개발한 IP는 Cyclone III FPGA Development Kit에서 잘 동작했습니다.

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을 통해서 시스템을 도용하려고 하는 시간과 노력이 더 많이 필요할 뿐입니다.