Embedded Processor Market; 2012 review

주말에 시간이 좀 있어서 오랫만에 미뤄둔 MPR(Microprocessor report; 이전에 이 블로그의 주요 소재가 되어주었던 report인데… 요즘에 읽어도 별로 글을 안써서.. 여하튼 잡설은 끝내고..)을 읽고 있는 중인데…몇 가지 재미있는 부분이 있어서 오랫만에 글을 쓰게 되었습니다..  MPR에 있는 내용의 순서와는 약간 차이가 있네요. 실질적인 내용은 fact를 제외하면 내 의견입니다.

1.
32비트 프로세서 시장은 언제 이익의 45%를 차지하지만, 갯수로 봤을 때는 17%에 불과하다. (Although 32-bit microcontrollers represented 45% of total microcontroller revenue in 2011, they nevertheless represented only 17% of units shipped.)

많은 경우 high-end 부분에만 눈을 돌리기 쉽지만, embedded processor의 많은 부분을 8-bit, 16-bit 시장에서 나온다는 거죠. 이 부분은 아직 embedded에서 기회가 상당히 남아 있다는 의미로 받아들일 수 있습니다.

2.
저가 프로세서 시장을 공략하기 위해서  ARM도 매우 작은 프로세서를 출시했습니다.

32비트 프로세서 부분에서도 controller 부분의 경우 “매우 작은” 크기를 요구하고, “code density”  부분을 중시하는 시장입니다.  이 시장을 공략하기 위해서 ARM에서는 Cortex-M 시리즈를 출시했으며, 사실 Cortex-M0가 공략의 선봉에 서 있었는데, 작년 M0+를 출시했다고 하네요 (솔직히 요즘 신경 안쓰고 있어서 몰랐습니다.). 근데, 그게  정말 작다네요.

캐시 따위는 개나 줘버려. M0보다 작고, 당연히 느리지만, 이쪽 시장에서는 빨라서 더 좋을 것이 없습니다.

결론적으로 다시 이야기하지만, 아직 MCU 시장은 남아 있습니다. 최적화만 잘하면 됩니다. 전력, 크기 두 가지에만 집중해야 합니다.

3.
고가 embedded 프로세서 시장은 버려라. 모바일은 ARM이 다 먹어가고 있다.

멀티미디어의 MIPS, 통신용 칩의 PowerPC.. 아쉽게도 점진적으로 ARM에게 시장을 빼앗기고 있습니다.
예를 들자면, PowerPC의 산실 중의 하나인 Freescale의 통신용 칩에서 PowerPC대신 ARM Cortex-A7와 A15를 사용하기로 했습니다. 말하자면, 본진 털렸습니다.

MIPS를 꾸준히 지원하던 Broadcom 역시 ARM을 license했답니다.

모바일/저전력 부분을 ARM이 가져 가고 있지만, MIPS의 경우 아직 저전력이 비교적 덜 필요한 부분(비디오 콘솔이나 셋탑박스, 라우터 등등)에서는 마켓을 꾸준히 가져가고 있다고 합니다. 이건 꾸준하군요. 기본적인 성능은 좋으니까요.

Imagination에 인수되면서, AMD처럼 CPU+GPU의 조합을 얼마나 뽑아내 줄 것인가가, 이 시장을 공고히 해서 반격을 할 것인지를 결정할 수 있을 것입니다.

4.
DSP시장은 Ceva 혹은 Tensilica(이제 프로세서라기 보다는 Audio용 DSP라 보는 것이 맞다.)가 먹고 있습니다. 시장은 잘 모르겠네요. 솔직히 별 관심이 없기도 하고요.  32비트 프로세서 시장의 일부가 DSP 시장과 겹쳐지고 있는데, Tensilica와 ARC는 이 시장을 잘 공략했습니다. 특히 tensilica는 AudioDE를 비롯한 엔진으로 공략을 잘했죠.

 

결론적으로 이제 프로세서 시장에서 먹을꺼리가 별로 남지 않았습니다.

ARM에서 가장 큰 시장을  성공적으로 점유해 버렸고, Ecosystem 역시 너무나도 안정적이라 뒤집을 수 없는 단계라 봅니다. 또한, 그 영향력이 다른 부분에까지 확대되고 있는 단계이니, 이제 좀 힘든 단계죠.

남은 시장은 소위 이야기하는 MCU market밖에 없다고 보는 것이 맞습니다. 이 시장은 아직은 M0가 완전히 점유한 것이 아니라 현재 몇년째 점유해 가는 단계인데요.. 이 부분을 효과적으로 공략해야 합니다.
일견, 비교적 간단하게 진입할 수 있는 시장이라고 생각할 수 있으나(사실 Superscalar같은 시장보다야 훨씬 편한거 사실이다.), 실은 생각보다 훨씬 비용에 민감하기 때문에 고통스러운 최적화 과정을 이겨내야 합니다.

그래도, 이쪽 시장을 어떻게 공략하느냐가 관건이죠.

이 글을 쓰고 싶었던 가장 큰 이유…(보통 주제라고 부르는..)

맨날 프로세서 과제 나오면 ARM을 이기겠다고 하는데요.. 네 좋은 겁니다. 연구용으로는 좋습니다. Paper로 맨날 이기시는것도 좋습니다.

상용과제로는 살짝 다시 생각해 볼 필요가 있습니다. 프로세서는 하드웨어만 이겨서 될 시장이 아니므로, 어느 정도 환경을 맞춰 나갈 수 있는 가능성에 투자해야 합니다.

상용 과제로 나오면서, 하드웨어만 하는 교수들에게 휘둘려서 1GHz를 넘겨야 한다느니, ARM을 발라버리겠다느니.. 하는데 집중하고, 컴파일러는 매일 GCC 포팅 정도(그것도 버그 투성이로..)에서 멈추고, 최적화 라이브러리, 디버거, 개발환경은 어느 집 개가 물어주는 것인지 알고 계시는 분들께서는 정말 생각을 “조금만” 바꿀 필요가 있습니다.

지금 하는 과제가 show-up이 목적이면 좋은데, “제대로된 상용화”라면 될 시장에 집중해야 합니다. 옆에서 꼬셔가는 교수님들도 개인 돈 투자해서 그 시장에서 성공하고, 투자금을 회수 할 수 있다고 생각하시는지 물어보고 싶을때가 많습니다.
좋은 이야기하면 프로젝트 따기, 위원들 설득하기 쉬우시죠. 하지만, 결과물이 잘되어 상용화까지 가는 경우가 (있으면 더할 나위 없이 좋겠지만..개인적으로는 상당히 부정적입니다.) 별로 없겠죠.

이쪽 필드에서는 몇 년간 들어갈 일이 없이, 옆에서 구경하는 입장에서 그냥 아쉬움에 적어봤습니다.

 

 

 

wxPython

예전에 simulator를 만들때 cross platform에서 GUI를 만드는 것이 참 어려웠던 기억이 있습니다.

그나마 좀 쓸만한 것이 TK 기반의 gui들인데, 그나마 perl-tk를 이용하는 것이  가장 무난했던 것 같습니다. (그 전에는 TCL/TK를 썼지만, linux에 perl은 windows를 제외한 대부분의 platform에 porting되어 있으니까요.. 단, perl-tk는 가끔 없는 것도 있다는 것이 함정)

Python을 잘쓰지는 못하지만, 역시 TK inter가 있으니까요. 문제는 다들 느끼시듯이 TK가 그다지 이쁘지 않다는 것..

회사 분이 소개시켜주셔서 wxPython에 관심을 가지게 되었는데.. platform의 native GUI API library를 사용한다니, TK보다야..

여하튼, 찾아보니 아래와 같은 PDF 문서가 검색되네요.. 아쉽게도 번역서는 없고.. 좀 봐야겠습니다. Python은 예전에 마눌님께서 bioinformatics에 관심이 있다고 하셔서 잠시  봤던 것이 전부인데(마눌님은 안하시고, 저만 교양삼아 봤다는..).. 그래도 뭐 언어가 다 언어죠..

시간이 될 때 틈틈히 봐야겠습니다.

http://eduunix.ccut.edu.cn/index2/pdf/Manning.Publications.wxPython.in.Action.Mar.2006.pdf

HM 모델에서 doxygen으로 문서 만들기

이거 사실 어려운 거 아닌데, 생각보다 모르시는 분들이 많으시네요..

HM model에 보면 doc directory에 doxygen을 통해서 문서를 생성할 수 있도록 설정이 되어 있고,  graphviz를 이용해서 아주 훌륭한 class 상속관계도를 볼 수도 있습니다.

저는 Linux에서라면야 대부분 깔려있겠지만, 혹시라도 안깔려 있다면 sudo apt-get이나 sudo yum install 통해서 doxygen package와 graphviz package를 설치하십시요.

이후에는 doc 디렉토리에서 doxygen이라고 입력하시면 html 디렉토리가 생기고, 거기에 있는 index.html을 web browser로 보시면 됩니다. (보시면 HM 3.4라고 적혀있을텐데, 살포시 무시하십시오. 그건 그냥 doxygen configuration에 그렇게 적혀 있으니 그런 겁니다.)

windows의 경우 저는 cygwin 신봉자(?)라서..

cygwin의 setup program을 통해서 마찬가지로 doxygen을 설치하시고..

graphviz의 cygwin port를 여기에 나온 설명대로 설치합시다. 요약하면, cygwin terminal에서 아래 명령을 통해서 setup을 실행시키고(당연히 cygwin setup입니다!!)

cygstart -- /path/to/setup.exe -K http://cygwinports.org/ports.gpg

설치할때 여러 미러 중에서  ftp://ftp.cygwinports.org/pub/cygwinports 를 선택해서 사용하는 것입니다. 위의 미러를 선택하면 graphviz package가 보이므로, 이를 설치하면 됩니다.

쉽죠?

p.s.

살짝 관계없는 이야기인데.. 예전에 doxygen 가지고 verilogHDL 문서를 만들면 어떨까해서, 이런 저런 scripting을 했던 경험이 있는데 별로 만족스럽지는 못했었습니다.

그런데, 이번에 doxygen보는 김에 생각나서 보니, systemverilog에서 doxygen을 사용하는 것이 가능하더군요. (물론, 스크립트를 통해서기는 하지만..)

음.. 써봐야지.. 🙂