1. 임베디드 프로세서와 애플리케이션 프로세서의 차이

 

최근 IoT가 인기입니다. 그리고 IoT나 센서를 이야기할 때마다 빼놓을 수 없는 것이 CPU(혹은 MPU)와 MCU입니다. MPU는 Micro Processor Unit, MCU는 Micro Controller Unit의 줄임말로서 전자는 일반적으로 CPU, 후자는 마이크로 컴퓨터, 마이컴이라 부르기도 합니다. 그럼 도대체 무엇이 다른 걸까요?

 

1.jpg

 

ARM의 제품 라인업. Cortex-M이 MCU로 쓰이는 코어입니다.

 

MPU와 MCU의 차이는 몇개의 관점에서 종합적으로 봐야 할 것입니다. 왜냐하면 한가지 관점에서만 볼 경우 꼭 예외가 나오기 때문입니다. 우선 하드웨어적인 관점에서 볼까요.

 

1. MPU와 MCU는 모두 명령을 해석하고 그 결과에 맞춰 데이터를 처리하며 크게 보자면 모두 CPU라 할 수 있습니다. 또 내부 아키텍처도 항상 큰 차이가 있다고 말하기는 어렵습니다. 실제로 명령과 데이터를 다른 경로에서 다루는 MCU도 있고 캐시를 탑재한 것도 적지 않습니다. 슈퍼 스케일러를 탑재한 MCU도 있습니다(최근에는 ARM의 Cortex-M7가 있습니다). 굳이 말하자면 아웃 오브 오더 아키텍처를 탑재한 MCU는 거의 존재하지 않으며 계층 구조의 캐시를 가진 MCU도 거의 없지만 기술적으로는 딱 그 정도만 차이가 납니다. 다만 MCU 내부에는 DSP(Digital Signal Processing)을 기초로 한 아키텍처도 포함되는데 이것이 MPU에서 쓰인 사례는 없습니다.

 

2. MPU는 명령어 집합이야 어쨌던 간에 내부는 거의 RISC적으로 처리하게 됩니다. MCU는 RISC와 CISC가 섞여 있으나 대세는 RISC입니다. 그리고 x86처럼 CISC/RISC 변환을 하는 경우는 거의 없습니다.

 

3. 동작 클럭의 범위가 대체로 1자리수 정도입니다. MPU는 1GHz 이상으로 작동하는 것이 많으며 특히 PC에선 3GHz를 넘기는 것도 당연합니다. MPU도 모바일이나 임베디드용 애플리케이션 프로레서는 조금 낮은 클럭으로 작동(500Mhz 정도)하지만 스마트폰용 하이엔드에선 2GHz를 넘는 것도 드물지 않습니다.

 

4. 일반적으로 MPU는 캐시를 탑재하긴 해도 메모리는 외장형입니다. 반면 MCU는 원칙적으로 메모리를 내장(SRAM) 합니다. 또 MPU가 지원하는 메모리는 원칙적으로 DRAM 뿐이며(부팅용 플래시 메모리는 전용 컨트롤러를 갖는 것도 있지만) 플래시 메모리의 내용을 일단 DRAM에 복사하고 그걸 불러들이게 됩니다. 이에 비해 MCU는 직접 플래시 메모리에 접근해 그 내용을 SRAM로 가져오는 경우는 드뭅니다. 또 플래시 메모리 외에도 EEPROM이나 각종 OTP(One Time Programmable) ROM을 내장하는 것도 있습니다.

 

5. 특정 용도용 MPU(예를 들면 네트워크 프로세서, 모바일 프로세서 등)중에는 범용 I/O을 풍부하게 지닌 것도 있지만 일반적으로는 프로세서 간의 링크나 고속 I/O 등으로 한정되며 아날로그 주변 회로를 탑재하는 경우는 거의 없습니다. 그러나 MCU는 고속 I/O을 갖고 있는 경우는 거의 없고 USB 2.0(480Mbps)이 사실상 최고 속도입니다. 대신 저속 I/O은 매우 풍부합니다. 또 ADC(Analog/Digital Converter)와 DAC(Digital/Analog Converter), Comparator, 연산 증폭기, 전압 레퍼런스, 각종 타이머나 PWM(Pulse Width Modulation) 모듈 등 아날로그 주변 회로를 기본 지원합니다.

 

6. MPU는 좀 구형이라 해도 1.8V, 최근에는 1.5V, 1.2V의 낮은 전압으로 동작하며 여기에 맞춰 입출력 전압도 1.2V 정도로 제한돼 있습니다. 허나 MCU는 3.3V가 표준이며 오래된 건 5V의 입출력도 가능합니다.

 

정도를 볼 수 있습니다. 이제 소프트웨어적인 관점에서 봅시다.

 

1. MPU는 32비트 아키텍처하 하한선이며 최근에는 64비트 아키텍처로 건너가고 있습니다. 또 이 64비트 아키텍처는 지난 32비트 아키텍처와 호환성을 갖는 것이 일반적입니다. 반면 MCU에선 4/8/16/32비트 아키텍처가 섞여 있으며 아직까지는 4/8비트 아키텍처도 꽤 수요가 있습니다. 지금은 16비트가 32비트로 합쳐지는 분위기가 있지만 완전히 없어지기까지는 아직 상당한 시간이 필요합니다. 또 다른 아키텍처와의 호환성은 원치적으로 갖추지 않습니다.

 

2. MPU에서는 우선 OS가 작동하며 그 위에스 드라이버와 런타임이 동작하고 여기서 한발 더 나아가 거기에서 애플리케이션이 실행됩니다. 허나 MCU에서는 OS가 없거나 매우 원시적인 기능만 제공하는 RTOS(RealTime OS)만이 제공되고며 거기에서 직접 애플리케이션을 실행합니다.

 

3. MPU에서는 가상 메모리가 지극히 당연한 것이며 32비트나 64비트 가성 주소를 제공합니다. 실제 메모리 용량의 한계를 애플리케이션이 의식할 필요는 거의 없습니다. 하지만 MCU는 물리 어드레스를 애플리케이션에서 직접 다루게 됩니다. 메모리로 쓸 수 있는 SRAM 영역이 수백 바이트에서 많게는 수백 KB. 프로그램을 저장하는 Flash/EEPROM 영역이 몇 KB에서 많으면 몇 MB 정도밖에 없으며, 이 정도의 메모리 용량을 애플리케이션이 항상 의식하면서 사용할 필요가 있습니다. 메모리 관리 유닛이 존재하지 않거나 간단한 MMU(Memory Management Unit)가 탑재돼 Guard Page 등을 관리하는 정도입니다.

 

4. MPU에서는 여러 태스크(윈도우와 리눅스에선 프로세스라 부름)가 동시에 실행되는 멀티 태스크 환경이 당연하며, OS나 미들웨어도 프로세스의 형태로 구형되는 경우도 드물지 않습니다. MCU에서는 1개의 태스크만 실행하는 싱글 작업이 기본입니다. RTOS와 일부 MCU에서는 ISR(Interrupt Service Routine:인터럽트 처리 루틴)을 통해 멀티 태스킹이 가능한 것도 있지만 MPU의 멀티 태스킹과는 다소 의미가 다릅니다.

 

5. MPU에서 OS를 이용하는 환경에서는 일반적으로 애플리케이션에서 하드웨어를 직접 액세스 하는 것은 불가능하며, 디바이스 드라이버나 더 윗선에 위치한 OS 서비스를 통해야만 접속이 됩니다. MCU에서는 직접 하드웨어를 대상으로 I/O을 실행할 수 있습니다.

 

6. MPU에서 실행되는 OS 환경은, 기본적으로 탑재하는 디바이스 및 주변 회로의 드라이버나 미들웨어가 모두 로드된 상태에서야 동작하며, 이를 애플리케이션이 동적으로 호출하는 방식입니다. MCU는 필요한 디바이스용 미들웨어를 애플리케이션 개발자가 명시적으로 선택하고 애플리케이션에 가져오는 식으로 이용합니다.

 

그럼 마케팅적인 관점에서 볼까요?

 

1. MPU의 가격은 최저 10달러, 비싸다고 하도 몇천달러 정도입니다. 하지만 MCU는 아무리 비싸도 몇십달러(그나마 매우 드뭅니다), 대부분은 몇십센트, 몇달러이며 10센트가 안 되는 것도 꽤 있습니다.

 

2. MPU의 소비 전력(Active Power)은 낮을 때 몇 와트, 보통은 수십와트이며 높은 건 백와트를 넘는 것도 있습니다. 따라서 방열판으로 해결되는 경우도 있지만 상당 수는 쿨링팬을 쓰며 수냉을 전제로 깔아두는 것도 있습니다. 그러나 MCU는 가장 높은 것도 몇 와트 정도이며 일반적으로는 1W가 안됩니다. 그래서 지극히 일부의 예외를 제외하면 방열판 없이 작동합니다.

 

3. MPU의 성능은 대체로 몇 GIPS, 몇십 GIPS/몇 GFLOPS, 몇십 GFLOPS입니다. 특히 범용 제품의 경우 부동 소수점 연산 능력이 최근 꽤 강화되고 있으며 정수 연산 성능은 거의 변하지 않는 게 일반적입니다. MCU는 몇 MIPS부터 몇천 MIPS입니다. 또 MCU에서는 부동 소수점 연산은 필수가 아니에 FPU나 SIMD 연산 유닛을 옵션 취급하는 경우가 많으며, 그걸 써도 성능이 정수 연산보다 떨어지는 것이 일반적입니다.

 

가 됩니다.

 

그 밖에도 더 있지만 그럼 한도 끝도 없이 늘어나겠지요. 이 정도로 정리할 수 있을 것입니다. 또 어떤 사례를 들건 분명 예외가 나오게 되니 어디까지나 전체적인 추세로 보면 이렇다는 이야기입니다.

 

MPU와 MCU의 차이를 보는 것보다 오히려 사용처의 차이를 보는 게 알기 쉬울지도 모르겠습니다.

 

예를 들면 PC. 오늘날 PC의 원형이라고 할 수 있는 초기의 IBM-PC는 널리 알려진대로 8088을 CPU로 쓰지만, 실은 그것 외에도 또 다른 프로세서를 탑재하고 있습니다. 바로 키보드 내부에 들어간 8048 컨트롤러입니다. IBM-PC의 키보드는 처음에 83키로 시작해 나중에 101키가 나오는데 이를 행렬 형태로 배치하고 어느 키가 눌리는지를 수시로 검사한 후 그 키 코드를 IBM-PC 본체에 보내는 일을 합니다.

 

이 일을 CPU에서 다룰 수 없는 건 아니지만 CPU 부하가 높아지면 키 스캔의 빈도가 떨어질 수 있으니 키 입력을 놓칠 수 있게 됩니다. 반대로 키 입력을 놓치지 않도록 키 스캔을 우선적으로 CPU에서 처리하면 이번에는 CPU의 처리 능력이 떨어지게 됩니다. 그래서 키 스캔 전용 MCU을 따로 마련해 키 입력의 감지와 키 코드 변환을 모두 MCU에 맞기고 CPU는 키 코드만 받도록 하는 게 높은 성능은 물론 회로도 단순하게 만들 수 있으며 설계 비용도 줄어드는 방법입니다.

 

2.jpg

 

IBM이 출간한 IBM Technical Reference:IBM Personal Computer(6361453), 통칭 블루 북(Blue Book)이라 불리는 책에서 키보드 부분의 회로도를 발췌한 것입니다. 이 책은 모든 회로도와 BIOS의 모든 소스를 공개한 것으로, 덕분에 서드 파티가 IBM-PC를 빠르게 이해해 주변 회로와 호환 기종을 제조할 수 있게 됐습니다. 말하자면 시장을 빠르게 성장시킨 주역이라 할 수 있습니다.

 

PC에서 MCU가 쓰이는 또 다른 사례를 보면 오늘날 메인보드는 전원을 켰을 때 자가 진단을 하고 이상이 있으면 비프음을 알리고 LED료 코드를 표시하는 기능이 표준 탑재됩니다. 그런데 이런 진단 기능은 메모리의 불량과 CPU의 이상 유무까지도 경고하는데, 이것 역시 메인보드의 MCU에서 수행합니다. 당연한 말이지만 메모리에 이상이 있으면 CPU가 작동하지 않으니 PSOT 단계로 갈 수도 없고 그 상태에서 비프음이나 LED 표시를 할 수도 없는 것입니다.

 

실제로는 메인보드에 전원이 켤 때 우선 메인보드의 MCU가 동작해 메모리의 초기 테스트나 CPU의 부팅 시퀸스를 모니터링하고 이 때 에러가 발생하면 비프음이나 LED를 표시해 알려주는 것입니다. 이런 기능이 붙은 건 컴퓨터의 전체 역사에 비하면 비교적 최근의 일로서 그 이전의 메인보드는 뭔가 이상이 생기면 아무 증상도 나타나지 않았습니다. 그래서 하나하나 가능성을 찾아가며 테스트를 해야 했는데 지금은 MCU를 탑재하면서 수리가 매우 쉬워진 것입니다.

 

그럼 이 MCU는 부팅이 끝난 후엔 무엇을 하고 있을까요. 아무것도 하지 않을 때도 있고 전원 관리를 할 때도 있습니다. 다만 전원 관리까지 하면 처리 프로그램이 커지면서 제조 단가가 비싸질 수 있기에, 부팅 관리 전용으로 작은 MCU를 탑재하는 경우가 많습니다.

 

요컨대 특정 기능을 처리하기 위해서라면 MCU는 매우 좋은 솔루션입니다. 또 전원 관리(전원 컨트롤러에 공급해야 할 전압을 지시하거나 최대 전류량을 설정한다거나)나 온도/팬 관리, LED나 비프음의 구동, 혹은 다양한 스위치의 상태를 모니터링하는 입출력까지도 MPU는 칩셋을 거쳐 GPIO 핀을 통해 외부 회로를 구동하는 반면, MCU는 이들 사이에 직접 연결하니까(팬 컨트롤러는 따로 드라이버가 필요하지만 이건 예외로 치고) 회로 또한 훨씬 간단해집니다.

 

MPU는 뭐든지 할 수 있거나 뭘 할 때도 좋다는 게 아닙니다. 용도에 따라 MCU를 따로 빼고 작업을 분할하는 것이 효율적인 경우에 쓰는 것입니다. 

 

그런데 아까 앞에서 IoT나 센서에는 MCU가 필수라고 했는데요. 그 이유는 비용과 효율성입니다.

 

우선 비용을 봅시다. IoT시대를 맞이하여 2020년에는 500억대의 디바이스가 네트워크에 접속된다는 이야기는 자주 나옵니다. 혹은 2020년에 이 IoT의 경제 규모가 3조 400억달러가 된다는 말도 있습니다.

 

3.jpg

 

IoT 디바이스가 2020년에는 5백억대 규모에 이를 것이라는 예측. 인텔 발표회에서 제시.

 

다만 냉정하게 생각해서 3조 400억 달러를 500억대의 디바이스로 나누면 대당 60.8달러가 됩니다. 또 IoT라고 말해도 비싼 값으로 팔 수 있는 건 IoT중에서도 일부, 클라우드 서버나 데이터 처리의 빅 데이터 계열 뿐입니다. 경제 규모 속에는 통신 비용도 포함돼 있으며 클라이언트 디바이스 자체의 가격을 낮추지 않으면 안 됩니다. 단순한 센서 노드(예를 들면 기온이나 습도 등을 주기적으로 측정해 발신하는 것)는 천원이라고 해도 비싸며 가능하면 백원 아래로 줄여야 할 것입니다. 이는 IoT만의 이야기는 아니며 PC나 핸드폰, 스마트폰에서도 마찬가지입니다. 시장이 확대되는 건 가격이 떨어져 그렇습니다.

 

IoT 역시 MCU에 센서, 접속용 RF 등의 부품을 따로 사서 조립하면 만원 정도로 해결할 수 없을 정도입니다. 그런데 몇몇 업체가 내놓는 RF 통합 MCU에 센서를 연결하면 원가를 천몇백원 정도로 낮출 수 있습니다. 2020년에는 이를 몇백원 수준까지 낮추지 않으면 보급되지 않을 것이며, 거꾸로 말하면 거기까지 낮출 수 있기에 보급된다고 생각할 수 있습니다. 이 가격대로 제품을 내놓는 건 MPU에서는 절대로 불가능합니다.

 

다른 한가지는 효율설입니다. 단순한 센서 노드는 가급적 작게 만드는 걸 염두에 두고(그렇지 않으면 설치 장소를 고르기도 힘들고 제조 비용도 높아짐) 가급적 오랬동안 쓰는 게 보통입니다. 이상적인 상황이라면 작은 건전지 하나로 몇년 동안 동작할 정도는 되야 폭발적으로 보급될 수 있을 것입니다. 혹은 태양 전지와 같이 쓰는 것도 가능하지만 이건 날씨에 따라 발전량이 달라지기에 운용 조건이 더욱 까다로워질 수 있습니다.

 

게다가 단순한 센서 노드의 경우 1초에 한번씩 데이터를 수집할 필요가 없고 기껏해야 분이나 시간 단위로 작동합니다. 센서에서 값을 받아 그걸 상위 노드로 보내는 게 전부니 처리 시간의 99% 이상은 대기 상태가 됩니다. 즉 절대 성능은 낮아도 그리 지장이 없습니다. 그보다 대기 시간일 때 얼마나 소비 전력을 줄이는지가 배터리를 오래 쓸 수 있는 핵심 요소가 됩니다. 오늘날의 로우엔드 MCU는 바로 이런 용도를 위한 구성이며 MPU까지 쓸 일이 없습니다.

 

물론 IoT중에는 좀 더 자율적인 처리가 필요한 상황도 있습니다. 또 PC, 스마트폰, 태블릿이 이러한 센서 노드의 UI나 허브가 될 가능성도 있으니 MPU와 무관하지 않지만, 일단 가장 많은 수가 나와 있고 주인공이라 할 수 있는 건 MPU가 아니라 MCU입니다.

 

그런 점에서 MPU와 MCU의 차리를 봤는데요. 다음번엔 좀 더 구체적인 제품을 보도록 하겠습니다.

 

 

2. MCU 시장을 석권한 Cortex-M

  

지금까지는 다소 이론적인 이야기였습니다. 이번에는 실제 제품에 대한 이야기를 하도록 하겠습니다.

 

아래 사진은 삼성 갤럭시 S4입니다. 갤럭시 S4는 다들 아시는대로 Cortex-A15 기반 SoC인 엑시노스 5를 애플리케이션 프로세서로 사용하는데, 실은 그것 외에도 여러 부분에서 ARM 코어를 사용합니다. 

 

예를 들면 NFC의 컨트롤러 중에는 NFC의 컨트롤만 수행하는 Cortex-M이 내장되며, NAND 플래시도 내부에 Cortex-M이나 Cortex-R 코어를 넣어 웨어 레벨링 등의 처리를 합니다. 핸드폰 시절에는 1대에 평균 5~6개 스마트폰과 태블릿에서는 10개 이상의 ARM 코어가 탑재됩니다. 숫자로 따지면 Cortex-A 시리즈의 애플리케이션 프로세서보다 훨씬 많은 Cortex-M 등의 MCU가 쓰이는 셈입니다.

 

4.jpg

 

ARM TechCon 14의 기조 강연에서 CEO인 Simon Segars가 소개한 Intelligent and Invisible:What's Next for Technology?라는 슬라이드. 1개의 스마트폰에는 평균 10개 이상의 ARM 코어가 쓰입니다.

 

바로 그 MCU 시장에서 ARM은 Cortex-M라는 코어를 출시하고 있습니다. Cortex-M은 32비트 MCU로서 첫 선을 보인 건 2004년의 일입니다. MCU의 시장 그 자체는 1970년대부터 존재했기에 비교적 신형이라 해도 손색이 없습니다. 우선 MCU의 변천 그 자체에 대해 간단히 소개하겠습니다.

 

아래 그림은 1990년~2012년까지의 MCU 출하 수을 나타낸 것입니다. 1980년대에는 나름대로 수요가 있었던 4비트 MCU는 1990년대에 들어서자 판매량이 한계에 도달했고 그 대신 8비트 MCU가 크게 늘었습니다. 그 이유는 비용과 성능의 균형입니다. 1980년대에는 8비트 MCU가 널리 쓰였지만 4비트 MCU는 8비트의 절반 이하 가격으로 만들 수 있는지라, 가격이 중요한 가전 제품(밥솥이나 세탁기)에선 8비트가 가격 경쟁력에서 뒤떨어졌습니다. 또 밥솥이나 세탁기는 극단적으로 말해서 제어 루프가 수십초에 한번 정도기에 성능이 낮아도 별 문제가 없었습니다.

 

그런데 프로세스 미세화가 진행되면서 4비트 MCU와 8비트 MCU의 원가 차이가 줄어들었습니다. MCU의 경우 CPU+메모리+주변 회로라는 구성이지만 예전에는 CPU+메모리 다이가 차지하는 비중이 커서 8비트를 4비트로 바꾸기만 해도 엄청난 비용 절감이 됐습니다. 하지만 프로세스를 미세화해도 아날로그 주변 회로의 크기는 바뀌지 않아 상대적으로 CPU+메모리 비중이 줄어 4비트를 8비트로 만들어도 비용 상승이 그리 크지 않았습니다. 

 

또 백색 가전에 MCU의 탑재가 당연하게 되면서 '마이크로 컴퓨터 전기 밥솥'이라고 쓰면 팔리던 시대는 끝나고, 그 마이크로 컴퓨터로 무엇을 할 수 있는지를 따지게 됐습니다. 그러면서 기능을 늘리는 데 있어 요구가 강해졌지요. 이쯤 되니 최소한 8비트는 있어야 한다는 수요도 높아졌습니다. 1980년대 후반에는 4비트 MCU와 8비트 MCU의 출하량은 역전됩니다. 

 

5.jpg

 

ARM의 Joseph Yiu(Embedded Technology Specialist). ARM Microcontroller Updates-Markets, Technologies and Trends라는 슬라이드에서 발췌

 

물론 임베디드 시장에선 갑자기 수요가 사라질 일이 없으며 지금도 4비트 MCU가 생산/판매중입니다. 최근에는 Zilog(자일로그. 모회사는 IXYS Corporation)가 삼성의 4/8비트 MCU 라인업을 5천만 달러에 인수하는 일도 있었습니다. 삼성은 모바일에 전념하기 위해 4/8비트 MCU에서 손을 떼려는 것인데 그걸 5천만 달러를 내고 인수할 가치가 있을 정도로 아직 이 시장의 수요가 크다는 이야기입니다. 

  

다음이 8비트인데 이쪽의 역사도 깁니다. 예를 들면 인텔만 하더라도 8080 이후에 8048과 그 후속작으로 지금도 널리 쓰이는 8051을 내놨습니다. 그리고 자일로그의 Z80과 Z8 시리즈, 또 Z80의 호환 제품인 히타치 HD64180, 모토로라의 6800과 6809 등의 코어가 처음에는 CPU로 쓰였지만 나중에는 MCU로 쓰이기도 했습니다(참고로 MC6800의 코어를 이용해 제조된 MC6801을 세계 최초의 MCU라 하기도 합니다). 성능 범위도 넓으며 메모리도 최대 256KB까지 확장할 수 있습니다(요즘엔 몇 MB의 메모리 어드레스를 쓸 수 있는 8비트 MCU도 있습니다). 그래서 널리 쓰이게 됐지요.

 

수요가 높아질수록 고성능 MCU의 사용도 점점 늘어나게 됩니다. 이런 용도를 위해 인텔은 8086/8088을 바탕으로 MCU를 위해 원칩으로 만든 80186, 80188이나 8051을 16비트로 확장한 80251을 발표했습니다. 도 자일로그의 Z800과 NEC의 V 시리즈, MC6801을 16비트로 확장한 68HC12 등 다양한 제품이 존재합니다. 

 

또 새로 16비트에 최적화한 향태로 설계된 MCU도 있어(시기는 차이가 나지만) TI의 MSP430 시리즈와 히타치 SuperH 시리즈(이걸 32비트로 봐야할지 16비트로 봐야할지는 미묘하지만), 마이크로칩의 PIC24 시리즈를 비롯한 여러 제품이 시장에 출시됐습니다. 이렇게 16비트 MCU 자체는 1980년대부터 존재했지만 출하량이 눈에 띄게 커진 건1994년 이후입니다.

 

다음은 32비트겠지요. 이 시장의 선두주자는 모토로라의 MC68000입니다. 이후엔 MIPS의 R2000, R3000 코어 기반으로 만든 MIPS32 4K, MIPS32 M4K 제품이 시장에 나오기 시작했습니다. 다만 이 시점에서 32비트 코어는 MCU라기보다는 시스템 컨트롤러에 해당되며 가격이 저렴하고 그만큼 성능도 낮은 MPU였습니다. 실제로 이 시기에 인텔은 i960을 기반으로 한 MCU을 발표했으며 후지쯔는 SPARC을 바탕으로 한 SPARCLite라는 제품을 임베디드 전용으로 출시했습니다. 2002년까지 32비트는 이러한 시스템 컨트롤러용으로 쓰이는 게 일반적이었습니다.

 

이런 분위기가 바뀐 건 Cortex-M의 출시 후입니다. 여기서부터 ARM으로 이야기가 바뀝니다. 원래 ARM은 비교적 빠르게 실제 제품이 아니라 CPU IP를 판매하는 비즈니스로 전환한 바 있습니다. 이곳이 유명해진 건 애플이 뉴턴용으로 제조한 SoC가 ARM610 기반이었으며, 그 전에도 많은 파운드리와 제휴해 여러 용도로 ARM 코어 기반이 쓰인 바 있습니다. 다만 당시에 ARM의 입지는 불안정해 MPU로는 성능이 떨어지고 MCU에선 기능이 풍부하다보니 뉴턴을 비롯한 PDA와 초기의 핸드폰 애플리케이션 프로세서나 네트워크 디바이스에 쓰이는 게 전부였습니다. 즉 이 시점에선 MC68000처럼 MCU 보다는 시스템 컨트롤러에 가깝습니다.

 

이후 ARM은 ARM 7/ARM 9/ARM 11 같은 제품을 출시했습니다. 기본적으로 숫자가 클수록 나중에 나온 것이며 그만큼 성능이 높습니다. 그리고 여기에 따라서-

 

ARM 7을 출시 → ARM 6을 탑재한 제품의 가격을 인하

ARM 9을 투입 → ARM 7을 탑재한 제품의 가격을 인하

ARM 11을 투입 → ARM 9를 탑재한 제품이 가격을 인하

 

이렇게 변하며 라인업을 다졌습니다. 다만 이것은 인텔로 말하자면 하스웰이 출시된 후 아이비 브릿지를 저렴하게 내놓는 것과 같은 방식의 움직임이며 근본적인 해결책은 아닙니다. 최근에는 ARM 11도 MCU로 취급했지만 원래 ARM 11은 초기의 아이폰 애플리케이션 프로세서에 쓸 만큼의 성능을 지녔기에 MCU 치고는 다소 스펙이 넘쳤으며 제조 원가에서 불리했습니다. 

  

이를 바탕으로 ARM은 2005년에 새로운 아키텍처를 발표합니다. 애플리케이션 프로세서 전용인 Cortex-A, 실시간 제어 장치용 Cortex-R, 그리고 MCU 용인 Cortex-M입니다. 제품 세대로 따지면 ARM v6와 ARM v7이 섞여 있는데요. 실은 이들 3개의 아키텍처를 발표하기에 앞서 2004년에는 Cortex-M 시리즈의 첫 제품인 Cortex-M3가 출시됐습니다.

 

Cortex-M3의 특징은 이렇습니다.

 

1. 32비트 아키텍처는 양보할 수 없지만 32비트 명령 세트는 코드 밀도라는 점에서 8/16비트 MCU에 비해 불리합니다. 그래서 Thumb-2라 불리는 축소 명령 세트를 이용해 코드 밀도를 16비트 MCU와 동급으로 줄였습니다. Thumb-2를 도입해 코드 밀도를 16비트 MCU 수준으로 만들었다는 건 프로그램을 저장하는 메모리 영역을 32비트 ARM 네이티브 코드의 반으로 줄였다는 이야기고 저렴하게 만들 수 있다는 이야기이기도 합니다. 또 필요한 메모리의 용량이 줄어들면 메모리 액세스 역시 줄어드니 소비 전력이 낮아집니다. Cortex-M3에서는 Thumb/Thumb2 이외의 명령 세트는 실행할 수 없어 이러한 장점을 쓸 수 있게 됩니다.

 

2. 메모리 관리와 OS 지원 등의 기능을 MCU용에 맞춰 줄였습니다. 원래 MCU에서 사용한다면 풀 세트 가상 메모리는 필요 없으며 간단한 MPU(Memory Protection Unit)만 있으면 충분합니다. 당연히 동시에 실행하는 태스크(프로세스)는 1개이며 다수 프로세스의 동시 실행 같은 기능을 생략해 간단하게 만들 수 있습니다.

 

3. 목표하는 제조 프로세스를 바꿨습니다. ARM 11까지는 애플리케이션 프로세서로 작동하기 위해서 몇백 MHz의 동작 클럭이 필요했으며 여기에 맞춰 깊은 파이프라인과 첨단 미세화 공정이 필요했습니다. 그런데 MCU의 작동 클럭은 몇십 MHz가 보통이며 기껏해야 100MHz 정도니 깊은 파이프라인은 필요하지 않으며 복잡한 분기 예측도 필요 없습니다. 또 플래시 메모리나 아날로그 주변 회로를 같이 쓰는 걸 생각하면 90~130nm 정도의 제조 프로세스가 위주가 될 것입니다. 첨단 공정을 사용하지 않으면 제조 원가도 낮출 수 있습니다.

 

이 Cortex-M3를 처음으로 사용한 곳은 쓸만한 32비트 MCU 코어를 자체 개발하지 않았던 STMicroelectronics와 NXP Semiconductor 등입니다. 두 회사 모두 Cortex-M3를 기반으로 다양한 메모리 구성 옵션이나 주변 회로를 준비해 라인 업을 확충했습니다.

 

6.jpg

 

2014년 9월에 개최된 STMicroelectronics의 STM32 F7 발표회.

 

그 다음에 등장한 것이 2007년의 Cortex-M1으로 FPGA에서 Thumb-2를 실행하는 것이 목적이었습니다. FPGA에서 작동하는 조합 가능한 CPU 코어를 제공해 보급을 늘리겠다는 계획이었으나 제대로 되진 않았습니다. 예를 들어 Altera의 경우 사용자는 익숙한 NIOS II 코어를 계속 사용했기에 Cortex-M1로 갈아타는 장점이 전혀 없었습니다. 다만 여기에서 저전력 코어를 설계한 것이 2009년의 Cortex-M0 코어로 이어졌다고도 할 수 있습니다. Cortex-M0 코어의 첫 데모는 태양 전지로 CPU 코어를 구동할 수 있다는 것으로, 그 동안 8비트 저전력 MCU가 쓰이던 부분까지도 Cortex-M0으로 커버할 수 있음을 의미합니다.

 

뒤이어 2010년에는 Cortex-M3의 상위 제품으로 Cortex-M4가 발표됐습니다. 정수 파이프 라인은 Cortex-M3와 같지만 DSP 명령 유닛을 추가하고 옵션으로 FPU도 이용할 수 있으며 목표 클럭이 약간 높아져 200MHz를 넘는 클럭을 지닌 제품도 등장했습니다. 예를 들면 센서에서 스캔한 정보에 필터링을 거쳐 결과를 내놓을 경우 상당 수준의 처리 성능이 필요하며 부동 소수점 연산 성능도 요구되는 경우가 많습니다. 이게 나오면서 기존에 Cortex-M3의 라이센스를 받았던 제조사의 상당수가 Cortex-M4의 라이센스를 받아 제품을 추가하게 됩니다.

 

2010년은 ARM 기반 제품이 많아진 시기이기도 합니다. 예를 들어 프리스케일은 범용 32비트 MCU에 자사의 ColdFire 코어(68000과 명령 호환이 되는 RISC 코어)를 사용했으나 이후 Cortex-M 기반으로 바꿉니다. 아르두이노(Arduino) 등에서 큰 인기를 누린 AVR이라는 자체 8비트 아키텍처 MCU을 가진 Atmel은 AVR32라는 자체 32비트 아키텍처를 개발, 제품화했지만 이와 별도로 Cortex-M3 기반의 SAM 3 시리즈를 2009년부터 발표하기 시작해 2010년에 라인업이 크게 늘었습니다. 일본에서도 도시바가 2008년부터 Cortex-M 시리즈를 사용하기 시작했고 2010년에는 라인업이 늘었습니다. 이렇게 Cortex-M 시리즈를 쓴 이유를 업체에게 물어보면 이구동성으로 고객의 요청이 있었다는 대답이 돌아오는데요. 이러한 움직임은 이후 더욱 가속화됩니다. 

 

2011년에는 로우 엔드 Cortex-M0+가 추가됐습니다. Cortex-M0과 Cortex-M0+의 차이는 이렇습니다.

 

Cortex-M0: 저렴한 가격이 목표로 8/16비트 MCU를 대체
Cortex-M0+: 낮은 소비 전력이 목표로 8/16비트 MCU를 대체

 

ARM의 사이트에서 제시하는 데이터를 비교하면 이렇습니다.

 

프로세스 180ULL 90LP 40LP
소비 전력(Cortex-M0) 73μ W/MHz 16μ W/MHz 5.3μ W/MHz
소비 전력(Cortex-M0+) 52μ W/MHz 11μ W/MHz 3.8μ W/MHz
다이 면적(Cortex-M0) 0.13제곱 mm 0.04제곱 mm 0.008평방 mm
다이 면적(Cortex-M0+) 0.13제곱 mm 0.04제곱 mm 0.0066제곱 mm
성능(Cortex-M0) 1.99 CoreMarks/MHz:0.90,0.99 DMIPS/MHz
성능(Cortex-M0+) 2.15 CoreMarks/MHz:0.93~1.08 DMIPS/MHz

 

실제로도 Cortex-M0+는 Cortex-M0를 모든 면에서 능가합니다. 물론 그만큼 Cortex-M0 코어는 라이센스 비용 등을 싸게 책정했으며 저렴한 가격이란 의도에 맞는 제품이기도 합니다. 

 

이 Cortex-M 시리즈의 최신이 2014년에 나온 Cortex-M7입니다. 인 오더에 2명령 스케줄러를 탑재한 것과 동시에 목표 프로세스를 28nm까지 염두에 두는 구성입니다. 앞으로는 800MHz까지 클럭이 오르는 걸 전제로 하고 있습니다. 이 정도면 완전히 Cortex-A 시리즈의 로우 엔드(Cortex-A5/A7)와 성능 범위가 겹치지만 IoT 시대로 들어오면서 클라우드와 엔드 디바이스 사이에 위치해 라우터/게이트웨이 역할을 하는 디바이스라면 이 정도의 처리 성능이 필요하다고 ARM이 생각하는 듯 합니다.

 

마지막으로 ARM이 32비트 그 미만을 어떻게 보는지를 적어 두고자 합니다. 아래 사진은 2012년의 것으로 2013년의 숫자는 예측값인데요. 매출이 가장 크게 늘어나는 것은 32비트로 보고 있으며 4/8/16비트는 매력이 없다고 말합니다. 실제로 ARM의 임원에게서 들은 이야기를 정리하면 모든 디바이스가 32비트를 필요로 하는 것이 아니라 4/8/16비트의 수요도 현 시점에는 분명 있지만, 그런 시장은 이미 경쟁 업체의 점유율이 높기에 ARM이 진입해도 시장을 뺏어오기 어려운데다, 장기적으로는 모두 32비트로 갈 것이라 믿기에 32비트만 취급한다고 말합니다. 

 

7.jpg

 

ARM의 Joseph Yiu(Embedded Technology Specialist)의 ARM Microcontroller Updates-Markets, Technologies and Trends라는 슬라이드에서 발췌 한 것.

 

그럼 다른 제조사들은 ARM의 움직임을 그냥 보고만 있는 것일까요? 이제 다른 회사를 보도록 합시다.

 

 

3. ARM의 라이벌 MIPS, PowerPC, x86

 

지금까지는 MCU의 전반적인 분위기와 ARM은 어떤지에 초점을 맞추고 설명했으나 이번에는 그 외 다른 것은 어떤지를 소개하고자 합니다. 우선 오랫동안 ARM의 대항마였던 MIPS의 이야기입니다.

 

MIPS도 ARM에 지지 않을 정도로 오랜 역사를 가집니다. 원래 미국 스탠포드대학의 John Hennessy 교수가 RISC 프로세서 연구의 일환으로 RISC를 탑재한 프로세서를 제조하는 MIPS Computer Systems Inc.를 1984년에 설립한 것으로 시작됩니다. 이 분은 CPU 아키텍처를 다룬 다수의 저서를 낸 바 있으며 현재 스탠포드 대학의 학장이기도 합니다.

 

이 회사는 팹리스 CPU 제조 업체로서 R2000, R3000이라는 32비트 RISC 프로세서를 제조했으며 뒤이어 64비트로 옮겨 1991년에 R4000 시리즈를 발표했습니다. 이후에는 R2000, R3000의 후속작으로 확장된 명령 세트(MIPS II)를 지원하는 ECL을 도입해 빠르게 동작하는 R6000 시리즈를 1989년에 내놓았으며 64비트에서는 명령어를 확장한 MIPS IV를 탑재하는 R8000 시리즈를 1992년에 출시합니다.

 

다만 이 회사는 팹리스입니다. 그러니 양산은 다른 회사에게 맡기는 것입니다. 그 결과 R3000은 IDT, LSI 로직, NEC 일렉트로닉스, 퍼포먼스 반도체, 필립스 반도체 등의 다양한 업체들이 생산하게 됐습니다. 저마다 조금씩 성능을 개선하고 기능을 강화한 결과 R3000이라고는 해도 어느 업체에서 만들었는지에 따라 스펙이 약간씩 달라졌습니다. 이는 64비트의 MIPS IV에서는 더욱 심해졌습니다. MIPS IV에서는 MIPS 컴퓨터 자신이 설계한 R8000 외에도 아키텍처 라이센스를 따라 QED(Quantum Effect Design)가 설계한 R5000, MIPS 컴퓨터 자신이 설계했지만 널리 쓰이지 못했던 R10000과 그 파생형 등이 섞여 있어 R3000 시절보다 더욱 복잡해졌습니다.

 

요즘 MIPS 컴퓨터는 워크스테이션부터 하이엔드 서버 등의 시장을 겨냥하고 있었기에 임베디드와는 다소 거리가 있습니다. 다만 이 회사는 경영이 어려워지고 SGI가 인수하면서 이곳의 시스템에 맞춘 프로세서의 설계와 제조를 수행했으나, 이후엔 SGI의 경영 상황이 나빠지면서 1998년에 이름을 MIPS 테크놀러지로 바꿔 다시 독립하게 됩니다. 이 때 이곳은 전략을 바꿔 프로세서를 판매하는 기존의 비즈니스에서 프로세서의 IP를 판매하는 비즈니스로 전환해 ARM과 경쟁하게 됩니다. 1998년에 ARM은 겨우 ARM9를 발표한 수준이니 PDA에 쓸 정도 성능은 되지만 그게 전부라서, ARM보다 성능이 높은 코어를 IP 형태로 제공하면 사업의 여지가 있다고 판단한 것입니다. 

 

새로 MIPS32와 MIPS64라는 식으로 명령어 집합을 정의함과 동시에 MIPS32 4K와 MIPS64 5K라는 2개의 코어를 발표했습니다. 그 뒤 2000년에는 MIPS64 20K를 추가했으며 2003년에는 MIPS32/64 릴리즈 2라는 새로운 명령 세트와 MIPS32 24K 시리즈를 발표합니다. 2000년에 들어서 x86 프로세서가 급속한 성능 개선을 보이다보니 워크스테이션의 수요는 거의 사라진 상황이었습니다. 그 결과 이곳은 MFP(Multi-Function Printer)나 라우터 등의 네트워크 기기, POS나 조명 컨트롤러 등 산업 기기로 시잔을 전환합니다. 이러한 시장에서 ARM 코어는 다소 성능이 부족했으며 x86은 가격과 소비 전력이 높아 MIPS 코어는 매우 적합한 선택이었습니다.

 

그리고 MIPS32 4K 코어는 다음과 같은 라인업을 갖추게 됩니다.

 

MIPS32 4K:기본적인 32비트 코어로 거의 R3000에 해당됨
MIPS32 4KE:4K의 고성능 버전으로, 라이트 백 캐시의 구현 및 캐시 용량의 개선, 클럭 게이팅을 추가
MIPS32 4KS:4K에 암호화 가속 장치를 추가한 제품
MIPS32 M4K:4K의 MCU용 저가형 버전으로 35K게이트로 구성

 

여기에서 MIPS32 4K/4KE는 널리 쓰였으나 MIPS32 M4K는 최근에서야 보이기 시작했습니다. ARM과 비교했을 경우 몇백 MHz 정도로 작동할 때는 MIPS32가 소비 전력이 더 낮고 성능도 높았지만 100MHz가 안 될때는 성능과 소비 전력이 모두 큰 차이가 없습니다. 또 그동안 이 영역에서 MIPS32 코어가 많이 쓰이지 않았기에 소프트웨어의 자산을 계승할 것도 없었습니다. 여기에 앞서 말한대로 ARM의 Thumb/Thumb-2 처럼 MIPS도 MIPS16e라는 축소 명령 세트를 제공했는데 이거 널리 쓰이지 못하다보니 기존의 MIPS32에서 쓰던 소프트웨어를 쓸 수 있다는 장점은 MIPS32 M4K에 별로 해당되지 않았습니다.

 

아래 두 사진은 2002년 10월에 열린 세미나에서 나온 자료인데 1998년~2001년에 걸쳐 세대 교체가 이루어졌을 때, 1998년에는 모토로라의 68K(MC68000 계열)가 가장 큰 규모를 형성했던 반면 1999년에는 ARM이 이를 크게 능가하고 있음을 알 수 있습니다. 그럼 MIPS는 어땠을까요? 1998년에는 ARM을 앞서고 있었으나 1999년에는 ARM에 뒤처져 2001년에는 PowerPC가 따라오던 상황이었습니다. 이 때의 ARM은 핸드폰, 더 정확히 말하면 노키아 심비안 OS의 보급에 힘입은 것이며 이걸 제외하면 ARM과 MIPS의 세력은 비슷한 편이었습니다.

 

8.jpg

 

2002년 MicroProcessor Forum에서 열린 Trends in High-Performance Embedded Processors 세미나의 자료입니다. 당시 In-Stat/MDR의 시니어 애널 리스트였던 Tom R. Halfhill(현재는 Linley Group의 Senior Analyst)가 만든 자료입니다.

 

9.jpg

 

그 결과 이런 상황이 형성됩니다. MIPS는 이후 소니 컴퓨터 엔터테인먼트(SCE)의 플레이스테이션 2(PS2)와 플레이스테이션 포터블(PSP)의 판매량 증가에 힘입어 PowerPC를 앞서긴 하지만 이후 PS3, Xbox 360, 닌텐도 Wii가 PowerPC로 넘어가면서 게임 콘솔 시장도 잃게 됩니다. 그래서 MIPS는 이후 서버나 고급형 MFP용으로 기능과 규모를 늘리는 방향을 선택하게 됩니다. 

 

우선 2005년에는 DSP 확장, 2006년에는 멀티쓰레드를 지원하는 MIPS32 34K, 2007년에는 IPS를 개선한 MIPS32 74K를 출시했고 2008년에는 MIPS32 34K 코어가 4개인 MIPS32 1004K, 2010년에는 MIPS32 74K 코어가 4개인 MIPS32 1074K를 각각 발표합니다. 이들은 모두 네트워크 전용 설계로서 엣지 서버를 겨냥하는 구성입니다.

 

사실 2010년 쯤에는 MIPS의 점유율이 더욱 줄어든 시기입니다. 이것은 나중에 설명할 PowerPC 진영이 네트워크 프로세서의 성능을 맹렬하게 개선하던 시기이기도 하며, MIPS는 이 시장을 지킬 필요가 있었습니다. 다만 실제로 MIPS 기반 네트워크 프로세서를 제조하던 SiByte(지금은 브로드컴), RMI(NetLogic을 거쳐 지금은 브로드컴), NetLogic(지금은 브로드컴), Cavium Networks 같은 업체들은 모두 MIPS64 아키텍처 라이센스를 받아 독자적인 MIPS64 코어를 설계 및 제조했으며 MIPS32는 쓰지 않았기에 MIPS의 노력은 불필요한 게 아니었나 생각됩니다. 이들 업체는 일찍이 64비트 환경이 필요하다고 인식하고 있었으며 당시 IP의 형태로 판매되는 64비트 코어는 MIPS64 뿐이었으니 이러한 선택은 합리적이라 할 수 있겠습니다. 덕분에 MIPS32/64 Release 2세대에서 MIPS의 점유율은 점점 높아집니다.

 

그리고 MIPS가 전력을 다해서 2012년에 발표한 것이 Aptiv 시리즈입니다. 명령 세트는 MIPS32/64 Release 3에 진화했습니다. 다만 이를 채용한 제품이 출시되기 전에 회사가 Imagination Technologies에 인수되고 맙니다.

 

그럼 Imagination Technologies은 왜 인수를 했을까요? 이 회사는 PowerVR 시리즈의 GPU IP 코어 위주로 사업을 했으며 Meta 시리즈 CPU는 그리 보급되지 않았습니다. 그러는 사이에 ARM은 2006년 노르웨이의 Falanx Microsystems를 인수했으며 이곳이 보유하던 Mali GPU을 ARM 자신이 판매를 시작해 ARM과 사업의 경계가 모호해지고 있었습니다. 

 

MIPS Technologies의 제품 포트폴리오는 Imagination Technologies에게 매우 매력적이며 실제로 MIPS Technologies를 인수한 후 Imagination는 Meta CPU의 개발을 사실상 포기하고 개발팀을 거의 전부 MIPS 팀으로 이동시켰습니다. 그 결과 2013년에는MIPS32 Release 5(Release 4는 건너 뜀)에 기반한 Warrior 시리즈의 첫 제품을 내놓았습니다.

 

Aptiv 시리즈에는 MCU을 겨냥한 microAptiv가 포함돼 있으며 Warrior 시리즈도 당연히 이를 승계한 M51xx 패밀리를 2014년 2월에 발표했습니다. MIPS32 M4K와 microAptiv 시절처럼 Microchip이 PIC32의 앞으로 제품으로 이를 도입하지 않을까 싶지만, 그 외에 워리어 시리즈가 MCU 시장에서 점유율이 나올지 혹은 Aptiv/Warrior 시리즈가 시스템 컨트롤러 용으로 쓰일지는 아직 모릅니다. 이것은 앞으로 Imagination Technologies의 방침에 달라질 것입니다.

 

 

자동차로 세력을 확대한 PowerPC

 

다음은 PowerPC입니다. PowerPC 기반 맥을 쓰신 분도 있겠지만 그건 G5 세대까지의 이야기이니 생략하도록 합시다. PowerPC 자체가 애플이 쓰는 걸 전제로 IBM과 모토로라(지금은 프리스케일)이 공동 개발한 것이기에 애플이 인텔 CPU 기반으로 시스템을 전환하면서 PowerPC 코어의 큰 수요가 갑작스레 사라지게 됩니다.

 

다행인 것은 두 회사 모두 맥 이외의 수요를 확보했다는 것입니다. IBM은 원래 1994년부터 PowerPC 400 시리즈라는 임베디드 전용 코어를 개발해 이를 광범위하게 이용했고 HPC에선 Blue Gene에도 많이 썼습니다. 또 게임기에도 쓰인 바 있어 SCE의 PS3 전용 셀 BE 프로세서, 마이크로포트의 Xbox 360 프로세서인 Xenon, 닌텐도의 Wii에 들어간 브로드웨이가 모두 PowerPC 기반입니다. 이후 셀 BE는 구성을 약간 바꿔 PowerXCell란 이름으로 HPC에 쓰입니다. 

 

그럼 프리스케일은 어땠을까요? 이전까지 68000 기반으로 구축했던 QUICC(QUad Integrated Communications Controller)라는 네트워크 프로세서를 PowerPC로 바꾼 PowerQUICC가 큰 인기를 누렸고 이를 강화한 QorIQ 시리즈를 지금도 적극적으로 출시하고 있습니다. 사실 이것은 MIPS64와 완전히 겹치는 분야로 경쟁을 하고 있기도 합니다. 어느 쪽이 먼저인지를 따지기는 어려우나 네트워크 프로세서라는 개념을 들여왔다는 점에선 분명 QUICC의 프리스케일이지만 고성능 네트워크 프로세서라는 의미에선 MIPS64이 먼저 시장을 확립했다 볼 수 있습니다.

 

다만 프리스케일은 이후에도 QUICC→ PowerQUICC→ QorIQ로 성능을 강화하며 라인업을 넓혀 점점 MIPS의 시장을 뺐아갔습니다. 또 PowerQUICC, QorIQ는 네트워크 디바이스 외에도 프린터 컨트롤러에도 쓰였는데 여기에서도 점점 MIPS를 압박해 갔습니다. 게다가 프리스케일은 자동차의 ECU에도 PowerPC를 도입해 자동차용 MCU라는 시장에서 상당한 점유율을 확보합니다. 이후 STMicroelectronics 역시 PowerPC기반의 ECU용 MCU을 발표해 현 시점에서 자동차 EUC용 MCU는 PowerPC가 큰 점유율을 차지하고 있습니다.

 

이렇게 PowerPC는 구성 멤버를 늘리는 것을 목적으로 Power.org라는 단체를 설립했습니다. 창립 멤버는 IBM이지만 프리스케일도 참여했으며 나중에는 AMCC(지금은 APM)과 벤처 기업인 P.A.Semi가 참여했습니다. AMCC는 IBM에서 PowerPC 400 시리즈의 제품 라인업을 인수해 직접 판매하는 것과 동시에 타이탄이라는 자체 코어를 개발했으며, P.A.Semi는 PA6T라는 코어를 개발해 시장에 참가했습니다.

 

이에 따라 임베디드용 PowerPC의 시장이 넓어졌으면 좋겠으나 그렇게 되진 않았습니다. 우선 P.A.Semi는 2008년 4월에 애플에게 인수되면서 Power.org에서도 탈퇴했습니다. 애플은 P.A.Semi의 제품이 아니라 기술과 개발자가 필요했던 것입니다. 그리고 그 회사는 이후 애플의 모바일 프로세서를 개발하게 되지요.

 

그리고 APM.Titan은 발표 이후 제품이 나오진 않았습니다. 분명 제품을 만든 건 맞는데 제품 출시는 안 됐다네요. 그럼 AMCC는 무얼 했을까요. PowerPC 400 시리즈 제품을 IBM이 아니라 TSMC에서 생산했습니다. 원래 AMCC가 PowerPC 400 시리즈를 인수할 때는 IBM Microelectronics가 계속 생산한다는 계약도 포함돼 있었는데 그걸 지키지 않고 TSMC에서 생산하도록 PowerPC 400시리즈를 만든 셈입니다.

 

이로써 기존 고객들에게 제품을 제공하고 새로 회사를 시작한 건 PowerPC가 아니라 ARM이 됐습니다. 이곳은 64비트 ARM v8-A의 아키텍처 라이센스를 일찍 도입해 다른 회사보다 먼저 AArch64"(64비트 명령 세트)기준 X-Gene을 40nm 세대에서 제조했습니다. 게다가 이 코어를 이용한 임베디드용 프로세서 Helix를 ARM TechCon 2014에서 발표했습니다. 왜 APM이 ARM으로 전환했는지를 알려주는 답은 아래 사진에 나와 있는데요. 지금은 아직 여러 아키텍처가 존재하지만 2018년에 임베디드 시장은 64비트 ARM에서 통일되며 이후엔 아키텍처가 아니라 구현 방법을 가지고 경쟁하게 된다는 것이 APM의 비전이고 거기에 맞춰 준비중이란 것입니다. 

 

10.jpg

 

이 프리젠테이션은 APM의 CEO인 Paramesh Gopi 박사가 설명했습니다. ARM의 CEO인 Simon Segars가 옆에 있었기에 립 서비스도 어느 정도 포함돼 있습니다.

 

그리고 Power.org의 창립 멤버 중 하나인 프리스케일도 상황이 좋지 않습니다. 이 회사는 2012년에 기존의 QorIQ의 후속작인 QorIQ Layerscape라는 아키텍처를 발표했는데 이 아키텍처는 PowerPC와 ARM 모두를 CPU 코어로 지원합니다. 실제로 2012년에 Cortex-A7을 탑재한 QorIQ LS1과 Cortex-A15를 탑재한 QorIQ LS2를 발표했으며 2014년에는 Cortex-A57을 탑재한 제품도 추가로 발표했습니다.

 

당장은 PowerPC와 Cortex-A 시리즈가 섞여 있지만 장기적으로는 PowerPC가 점점 줄어들 것이라고 봐도 썩 틀리진 않을 것입니다. PowerPC가 비록 자동차의 ECU용 MCU에서 제법 높은 점유율을 차지한다고 해도 Cortex-R 시리즈가 이 쪽에서 빠르게 점유율을 높이고 있으며 이미 TI와 Cypress(스펜션이 인수한 후지쓰 소속 팀)이 Cortex-R7 기반 자동차용 MCU의 라인업을 내놓고 있습니다. 자동차는 설계 주기가 길어서(5년) 실제로 탑재되는 MCU가 눈에 띄게 달라지는 시기는 2020년 이후겠지만 이미 점유율에선 안심할 수 없는 수준이라 합니다. 

 

 

대만의 제조 업체가 큰 점유율을 차지한 x86 

 

마지막으로 x86에 대해서도 쉽게 설명하도록 하겠습니다. 앞에서도 말했지만 x86의 2대 세력인 인텔과 AMD는 모두 x86과는 별개로 MCU용 아키텍처를 갖고 있었습니다. 인텔은 i8048과 그것의 16비트 버전인 i8096, i8048의 후속작인 i8051과 그 16비트 버전인 i80251, 그것과는 전혀 무관하게 개발된 32비트 RISC의 i960, 특허 침해에 관한 소송 관계로 DEC에서 인수한 StrongARM, 그걸 다시 만든 XScale까지는 비교적 중요한 부류에 속하며 그 외에도 세세한 것이 많습니다. 모든 제품을 인텔이 직접 제조하진 않지만 8051의 아키텍처 자체는 지금도 업계에서 널리 쓰이고 있습니다.

  

AMD는 이에 비해 훨씬 적지만 원래 8080의 세컨드 소스 생산을 하기 전엔 독자적인 Am2900가 엄청난 히트 상품이었고 그 후엔 Am29000(AMD K5 기반 32비트 RISC)가 32비트 컨트롤러로서 나름대로 팔렸습니다. 나중엔 인텔의 StrongARM/XScale에 맞서 독립된 팹리스인 Alchemy Semiconductor를 인수해 이곳이 갖고 있던 저전력 MIPS32 코어 제품을 냈다가 다시 RMI에 매각하는 등 알 수 없는 행보를 보이기도 했습니다. 이 쪽에서 고객이 그리 많았다곤 할 수 없겠지요.

 

인텔의 8051을 예외로 하면 인텔도 AMD도 x86 이외의 시장에선 그리 성공했다고 할 수 없습니다.

 

그럼 정작 x86은 어떨까요? 이를 MCU나 시스템 컨트롤러로 쓰는 건 인텔보다 AMD나 다른 호환 제조사가 열심이었습니다. 인텔 자신도 80186/80188 이후나 80286 이후에 나온 모든 제품에 임베디드 버전을 준비했지만, 이것은 임베디드용으로 지원 기간이 긴 제품을 마련했다는 이야기지 임베디드용 제품을 만들었다는 건 아닙니다. 기본적으로 PC용 제품이니까 가격이나 동작 환경은 PC에 가까워 임베디드라고는 해도 시스템 컨트롤러용, 그것도 상당히 비싼 종류에 속합니다. 인텔은 굳이 평균 판매 가격(ASP)을 낮출 이유가 없으니 비싼 제품을 계속해서 출시한 것입니다.

 

오히려 경쟁사인 AMD가 이 분야에서 적극적으로 임베디드용 x86 SoC를 오래 전부터 출시했습니다. 1996년에는 386SX 호환 코어에 주변 회로를 모두 통합한 Elan SC300를, 1987년에는 486 호환 코어에 주변 회로를 모두 통합한 Elan SC400을, 1999년에는 5x86 코어에 바꾼 Elan SC520를 제각각 발표합니다. 

 

11.jpg

 

Elan SC300. CPU 코어는 33MHz로 작동하며 소비 전력은 풀로드에서 0.66W니 MCU 치고는 크지만 저렴한 시스템 컨트롤러를 만들기에 편리했습니다.

 

12.jpg

 

Elan SC400. 클럭은 최대 100MHz이 이 경우 소비 전력이 2.2W로 꽤 높은 편. 66Mhz로 낮추면 최대 0.94W로 작동합니다.

 

13.jpg

 

Elan SC520. 133Mhz로 구동하는 5x86 CPU 코어에 외부 인터페이스는 PCI로 바뀌었습니다. 소비 전력은 133MHz일 때 최대 2W, 100Mhz일 때 1.7W입니다. 

 

National Semiconductor(지금의 TI:Texas Instruments)는 자회사였던 사이릭스(Cyrix)가 개발하는 코어를 이용해 Media GX라는 제품을 1997년에 발표했고 1999년에는 지오드(Geode)라는 후속작을 내놓습니다. 이쪽도 컨셉은 AMD Elan에 가깝지만 셋탑박스(STB)나 NAS 등으로 쓰였습니다.

 

2003년에는 AMD가 지오드 개발팀을 인수해 지오드 LX라는 제품을 개발했습니다. 다만 AMD는 제품을 만들긴 해도 보급시키진 못해 제품의 수명이 썩 길진 못했습니다. 

 

14.jpg

 

지오드 LX의 내부 구조. 컴패니언 칩이 따로 필요하지만 지오 LX 자체는 500Mhz로 구동하며 소비 전력은 0.9W로 매우 우수했습니다. 

 

오히려 이 시장에서는 대만의 회사가 점유율이 큽니다. VIA Technologies와 DM&P Electronics입니다.

 

VIA Technologies는 오랜 세월에 걸쳐 인텔의 특허 소송을 2003년 4월에 마무리지었는데 그 때의 화해 조건이 2007년 이후에 인텔 호환 프로세서나 칩셋을 제조할 수 없다는 것이었습니다. 그 전부터 비아는 사업 방향을 PC에서 임베디드로 바꿨고 특허 소송을 마무리지으면서 움직임이 가속됐다고 할 수 있겠습니다. 비아의 CPU는 인텔에 비해 다소 저렴한 가격과 소비 전력을 가진 x86 프로세서와 칩셋, 그리고 무엇보다 비아가 2001년에 제정한 Mini-ITX를 무기로 내세워 임베디드 시장에 프로세서 단품이 아닌 보드를 포함해 다양한 솔루션을 제공하는 사업을 벌이면서 회사가 살아나게 됐습니다.

 

이후 비아의 매출은 칩셋 사업에서 이탈하기 직전인 2006년에 최대 규모를 찍어 214억 대만 달러(6억 5800만 달러)를 기록했습니다. 그리고 2006년 12월에는 전년 대비 50% 감소라는 큰 폭의 매출 감소를 겪었으며 이후 2012년까지 일관되게 매출이 떨어졌습니다. 2012년의 매출은 34억 대만 달러(1억 1600만 달러)로 최대 규모의 1/6 수준입니다.

 

다만 2013년부터 매출이 개선돼 2014년에는 65억 대만 달러(2억 1400만 달러)까지 매출이 늘었습니다. 임베디드 제품의 특성상 채용이 결정되면 이후 실제 매출이 늘어나기까지 걸리는 시간은 PC와 비교가 안 될 정도로 깁니다. 또 그 매출은 오랜 시간동안 걸쳐 지속된다는 특징도 있어 사업 양상이 크게 다릅니다. 그래서 PC 비즈니스에서 임베디드 비즈니스로의 전환(혹은 그 반대)는 어렵다고 알려져 있으나 비아는 거기에 성공했습니다. 

 

마찬가지로 임베디드 시장에서 성공한 곳이 DM&P Electronics입니다. 이 회사는 SiS가 제조한 SiS500 시리즈 SoC(내부 CPU 코어는 옛 RiSE의 m6P)를 그대로 인수해 Vortex86 시리즈로 판매를 했습니다. 이후 Vortex86MX를 추가하거나 듀얼코어 구성인 Vortex86DX3, PCI Express 컨트롤러를 추가한 Vortex86EX 등 다양한 제품의 확충을 꾀하고 있습니다.

 

사실 PC104와 PCI104라는 소규모 확장 보드를 쓰는 x86 프로세서에선 아직 Vortex86의 점유율이 1위입니다. 규격으로 보면 그보다 더 작은 COM/Express라는 모듈도 있으며 여기에는 인텔/AMD 프로세서를 쓴 여러 제품이 OEM으로 출시되고 있습니다. 그러나 이러한 모듈보다 훨씬 저렴하게 시스템을 구축할 수 있고 소비 전력이 적기에 계속해서 쓰이고 있습니다.

 

인텔은 2008년부터 아톰 코어를 내세워 이 시장을 공략하려 했으며 여러 구성의 상품을 제공하거나 TSMC에서 아톰 코어를 만드는 방법까지도 동원했습니다. 허나 TSMC에서 만드는 아톰 코어는 고객을 한군데도 찾지 못해 철수했습니다. 다른 아톰 코어는 시스템 컨트롤러 및 디지털 게시판 등의 분야에 그럭저럭 쓰이고 있으나 ARM에 비해 그 수는 무시해도 좋을 정도입니다. 

 

15.jpg

 

인텔이 CES에서 발표한 퀴리

 

인텔 뿐만 아니라 VIA/DMP에도 해당되는 이야기인데 임베디드에서 x86의 장점은 윈도우와 개발 툼(예전에는 비주얼 베이직, 지금은 닷넷 계열)에서 애플리케이션을 만들 수 있다는 것이며, 거꾸로 말하면 임베디드의 구성에 비교적 호화스러운 하드웨어가 필요(하드웨어 스펙이 부족하면 윈도우가 작동하지 않으니)하다는 것입니다. 임베디드는 대부분의 용도에선 용량이 초과되는 경우가 많습니다(비아나 DMP는 리눅스, 일부는 프리 도스를 쓰기도 합니다).

 

인텔은 지금도 쿼크를 내세워 이 분야에 다시 발열 디뎠으며 그 동안 갈릴레오와 에디슨을 발표했고 올해 CES에선 퀴리를 발표했습니다. 하지만 x86의 장점은 윈도우 환경을 살릴 수 있다는 것이지 리눅스 같은 걸 사용해서 단순히 ARM과 비슷한 환경이 나온다는 것이 아닙니다. 여기서 어떻게 차별화해야 하는지 아직 인텔에서 분명한 답을 제시하지 않았으며 앞으로도 기대하긴 어려울 듯 합니다. 이 점에서는 회사의 규모가 큰 이유이긴 하지만 PS4, Xbox One 같은 세미 커스텀과 기존의 시스템 컨트롤러 분야에 진출한 AMD의 전략이 명확하다 할 수 있습니다.

 

이번에는 MCU보다 MPU에 가까운 임베디드 솔루션을 제공하는 3종류의 아키텍처를 소개하였습니다. 다음에는 MCU에 가까운 이야기를 하고자 합니다.  

 

 

4. MPU와는 다른 종류인 MCU/DSP

 

여기서 다룰 것들은 지금 보기 어려운 것들이 대다수입니다. 예전에는 많이 쓰였으나 지금은 새로운 설계가 이루어지지 않는 것들은 생략합니다. 

 

 

8비트 MCU

 

8비트 외장형 MCU는 Microchip의 PIC와 Atmel의 AVR에서 가장 널리 쓰이며 몇몇 제조사가 8051을 기반으로 한 제품을 내놓고 있습니다. 

 

16.jpg

 

마이크로칩의 8비트 MCU

 

먼저 나온 것은 마이크로칩(Microchip)입니다. 이 회사는 원래 GI(General Instrument)라는 전기 제품 제조사가 분할되서 마이크로 일렉트로닉스 부문이 스핀아웃하는 식으로 1987년 독립됐으며 1993년에는 주식 상장도 했습니다. 원래 GI는 CP1600이라는 16비트 프로세서가 있었으며 이와 조합해서 I/O 처리를 하기 위해 개발된 PIC(Programmable Interface Controller)를 기반으로 합니다. 마이크로칩은 독립하면서 8비트에 초점을 맞춰 전략이 맞아 떨어졌는데, 이 때 PIC를 Programmable Interface Controller의 줄임말이라 했다가 이후 Programmable Intelligent Computer의 줄임말로 바꿉니다.

 

첫 제품은 PIC16C5X로서 512바이트의 OTP(One-Time Programmable)와 25바이트의 SRAM을 가진 8비트 CPU입니다. CPU 코어는 독자적인 RISC 기반이며 명령 수는 33개, 1개의 명령 길이는 12비트입니다. 패키지는 여러 종류가 있는데 개발은 EEPROM의 데이터 제거용 창이 달린 패키지를 사용하며 완성되면 플라스틱 몰드로 데이터 제거용 창을 막아 출시하는 방식이 가능했습니다. 그 외에도 마스크 ROM 버전도 있었습니다.

 

이후 1992년에는 명령어 길이를 14비트, 명령 수를 35개로 늘린 PIC16C7X 시리즈, 1993년에는 14비트 길이를 유지하는 PIC16C8X시리즈와 보다 상위 모델로서 명령어 길이를 16비트로 늘린 PIC17C4X 시리즈가 등장합니다. PIC16C7/C8의 14비트 명령은 일단 PIC16C5의 14비트 명령에 상위 호환성을 강조하고 있으나 실은 별로 호환성이 없습니다. 1997년에는 하이엔드 제품으로 명령어 길이 16비트, 명령 수 58개의 MCU를 갖춘 PIC17를 발표했으나 1999년에 명령어 길이 16비트, 명령 수 75개의 PIC18을 내놓으며 하이엔드의 자리를 차지합니다. 로우엔드는 1998년에 PIC12C 시리즈가 출시됩니다.

 

이런 움직임과 함께 OTP나 EEPROM에서 플래시 메모리로 전환이 1999년~2001년에 이루어져, 더욱 로우엔드 모델인 PIC10이 2004년에 나와 이로서 8비트 라인업이 거의 완성됩니다.

 

라인업은 PIC10/12/16/18의 4개지만 아직까지 신제품이 출시되고 있으며 현재 판매중인 것도 360개 이상(패키지의 차이는 제외) 입니다. 판매가 끝난 것과 앞으로 나올 것을 더하면 1000개를 넘습니다. 2011년에는 100억번째 MCU를 삼성에 납품했다는 보도가 나올 정도입니다. 이 회사의 2014년도 매출은 193.억 달러이며 그 중 MCU 부문의 매출은 12.6억 달러, 거기에서 절반 이상이 8비트 MCU로 구성된 것이니 매출의 크기가 얼마나 되는지를 알 수 있을 것입니다.

 

다만 이 회사의 경우 라인업을 정리한다는 생각이 기본적으로 없는 듯 합니다. 여러 시리즈가 비슷한 구성, 성능, 주변 회로를 가지고 있으며 제품들이 중복돼 고를 때마다 까다롭기도 합니다. 반대로 말하면 중복을 겁내지 않고 라인업을 추가한 결과 이처럼 높은 점유율을 이끌어 낼 수 있었다고 할 수도 있습니다.

 

이를 추격하는 곳이 Atmel입니다. 이 회사는 원래 EPROM 제조사였지만 플래시 메모리나 FPGA를 다루다가 1994년부터 MCU의 생산도 시작했습니다. Atmel의 8비트 제품에서 핵심은 1997년에 발표했던 AVR 시리즈입니다. 원래 노르웨이 트론헤임에 있던 ASIC 서비스 회사(지금의 Nordic Semiconductor)가 8비트 MCU을 개발하고 이를 디자인 팀으로 끌어올린 형태인데요. 기본적으로는 PIC와 거의 같은 시장을 겨냥하고 있으나 큰 차이점이 몇가지 있습니다.

 

1. 아키텍처가 로우엔드부터 하이엔드까지 같습니다. PIC의 경우 같은 시리즈라 해도 바이너리 호환은 물론 소스 호환마저 안 되는 경우도 있습니다.

 

2. 기본적으로 1명령/사이클 처리가 가능한 높은 성능을 지니고 있습니다. PIC는 시리즈에 따라 성능이 제각각입니다.

 

3. 어드레스 스페이스가 리니어입니다. PIC는 시리즈에 따라 바뀌기도 합니다.

 

4. 제품 라인업이 정리돼 있습니다.

 

덕분에 PIC보다 쓰기 쉬워 후발 주자임에도 불구하고 높은 인기를 누리고 있습니다. 

 

17.jpg

 

Atmel

 

18.jpg

 

Atmel의 MCU를 탑재한 아르두이노 우노 3

 

특히 아두이노(Arduino) 프로젝트에서 AVR을 사용하면서 아두이노와 호환 제품에 늘리 쓰이게 된 후, 아두이노에서 AVR의 편리함과 성능을 알게 되고 아두이노가 아니라 직접 AVR을 쓰게 되는 사례도 적지 않습니다. 이 회사의 2013년도 결산에선 총 매출액이 13.9억 달러인데 그 중 MCU 부문이 9억 달러로 마이크로칩보다는 낮으나 꽤 잘 해나가고 있습니다. 최근 몇년의 실적을 보면 2011년에 역대 최대를 기록해 MCU 부문에서만 11.1억 달러의 매출을 올렸네요.

 

이 두 회사의 제품 중 로우엔드인 PIC10/12나 TinyAVR은 효율적인 패키지와 저전력을 특징으로 하는데요. 화재 감지기의 경우 건전지만으로 10년 구동, 자동차용 부품의 경우 버튼 전지로 2년 구동이 가능하기도 해 지금도 널리 쓰이고 있습니다. 특히 Atmel은 이 분야에서 TinyAVR/RF/암호화 엔진을 하나의 칩에 넣은 제품을 대량으로 출시하고 있습니다. 하이엔드는 PIC18과 AVR XMEGA처럼 주변 회로가 풍부해 다양한 주변 회로나 통신 회로를 탑재해 다기능 센서에 쓰이는 경우가 많습니다. 보급형 제품은 PIC16과 megaAVR처럼 아두이노 급 제품에 쓰이는 식입니다. 사실 IoT에서도 성능만 놓고 보면 이정도도 됩니다.

 

8비트에서 가장 중요한 건 이 2가지지만 실제로는 또 있습니다. 수 차례 이름이 나온 인텔 8051입니다. 위키피디아의 MSC-51 항목을 보면 74개 회사가 8051 호환 제품을 내놓고 있다고 하는데요. 실제로는 목록에 나온 회사 외에도 IP 코어의 형태로 8051 코어를 발표하는 업체들이 있으며 그것까지 포함하면 80개 가까이의 회사가 제품을 내놓고 있다고 봅니다. 지금 나오는 것만 해도 Cypress의 PSoC 3, Silicon Labs의 8비트 MCU는 비교접 쉽게 구할 수 있으며 개발 환경도 제공합니다. 

 

무엇보다 8051은 외장형 MCU로 쓰기보다는 디바이스의 내부 컨트롤러로 쓰는 비율이 훨씬 많을 수도 있겠습니다. 예를 들어 Cypress의 EZ-USB FX2LP는 8051 코어를 내장한 USB 2.0 디바이스용 컨트롤러입니다. 그 외에도 10/100BASE-T의 이더넷 컨트롤러, IEEE 802.11b의 Wi-Fi 컨트롤러에도 8051 코어를 쓴 설계가 많습니다. 요즘 하이엔드 제품은 USB 3.0, 기가비트 이더넷, IEEE 802.11g/n/ac 같은 고속 인터페이스로 이행하면서 8051에서는 성능이 따라가지 못해 Cortex-M을 사용하는 사례가 늘어나고 있는 듯 하지만, 그렇다고 구형 제품의 수요가 갑자기 사라지진 않으니 지금도 제품이 출시되고 있습니다. 

 

IP 코어 형태로 제공되는 8051 코어도 마찬가지로 컨트롤러 임베디드를 겨냥해서 나오고 있지만 부족한 성능을 보완하는 신기한 디자인이 많습니다. 예를 들면 폴란드의 DCD(Digital Core Design)가 제공하는 DQ8051이라는 IP 코어는 인텔의 오리지널 8051보다 20~26배 빠른 속도를 내며 ASIC외에 주요 FPGA에서 쓸 수 있습니다. 상위 모델인 DQ80251은 66배 빨라졌기에 ASIC의 처리 성능을 끌어올리고 싶지만 프로그램은 그대로인 경우에도 쓸 수 있습니다. 

 

19.jpg

 

DCD의 웹사이트엔 8051 코어를 사용한 자사 제품의 벤치마크 데이터가 있습니다.

 

또 적지 않은 것이 Z80, Z8, HD64180 등의 수요입니다. HD64180의 경우 히타치 혼자서 제공했기에 최근에는 잘 보이지 않으나, Z80은 여러 세컨드 소스가 있으며 IP 형식으로 유통되고 있어 일부 디바이스의 컨트롤러로도 여전히 쓰이고 있습니다.

 

이는 일본 이외에 다른 국가의 경우지만 기술적인 이유가 아니라 정치적인 이유로 Z80을 여전히 쓰는 곳도 있습니다. 또 이 Z80을 바탕으로 해서 MCU용으로 개발한 Z8 코어는 원 개발사인 자일로그의 제품이 여전히 남아 있으며 Z8 앙코르란 이름으로 신제품도 계속 나오고 있습니다. 다만 이 회사는 현재 IXYS Corporation이라는 전원부 반도체를 주요 사업으로 삼은 회사의 자회사가 됐으며, 그래서 모터 제어를 중시한 구성의 라인업이 많습니다.

 

그리고 저 위에서 말했지만 이곳은 삼성의 4/8비트 MCU 라인업을 인수해 2012년에는 8051까지 제품 라인업에 추가했습니다. 이는 오래된 MCU에서 작동되는 애플리케이션은 모두 끌어안겠다는 의도가 명확이 드러나는 행보입니다.  

 

이 외에도 유명한 곳이라면 Cypress의 M8C 코어를 사용한 PSoC1, STMicroelectronics의 STM8 시리즈, 대만 Holtek Semiconductor의 HT RISC 코어, 그리고 일본에는 르네사스 일렉트로닉스의 78K 시리즈와 라피스 컨덕터(OKI 컨덕터)의 ML610xxx 시리즈, 엡슨의 S1C88 시리즈, 도시바의 TLCS-870/C1, 파나소닉 MN101 등 독자적인 아키텍처를 쓰는 제품이 많습니다. 저마다 독자적인 사용자와 애플리케이션을 쓰는지라 광범위한 제품이라 말하긴 좀 어렵습니다. 

 

 

16비트 MCU

 

이어서 16비트 MCU입니다. 원래는 8비트 MCU의 고성능 버전이란 식으로 늘어난 시장이나, 최근에는 Cortex-M0을 비롯해 저전력 32비트 MCU가 16비트의 성능 범위를 차지하고 있습니다. 그 결과 오히려 32비트보다 전기를 덜 쓴다는 걸 내세워 제품이 늘어나고 있는 불안정한 상황이기도 합니다. 또 업체 중에는 16비트를 제공하지 않는 곳도 많습니다. 예를 들어 Atmel은 8비트 AVR XMEGA가 16비트 MCU 수준이라고 평가하고 있으며 16비트 코어는 대외적으로 존재하지 않습니다. 프리스케일은 자동차용으로 S12라는 아키텍처 기반의 제품을 지금도 판매하고 있으나 범용으로는 8비트와 32비트만 있습니다.

 

그리고 이 시장에선 의외로 절대적인 비중의 업체/아키텍처가 존재하지 않습니다. 비교적 중요한 아키텍처를 꼽아 보자면 우선 8비트의 황제인 마이크로칩의 PIC24라 할수 있습니다. PIC24는 재미있는 제품인데 발표 자체는 2001년에 dsPIC로 이뤄졌으며 이것이 2004년에 dsPIC30로 발표됩니다. 뒤이어 2005년에는 고성능 버전인 dsPIC33도 나와 PIC24F/H라는 형태로 판매됩니다. dsPIC는 나중에 설명하게 될 DSP를 16비트 MCU와 조합한 구성으로 이 회사는 16비트 MCU만으로는 그만큼 매력이 없다고 판단했을 수도 있겠습니다. 

 

8비트 PIC는 명령어 길이가 일치하지 않은데, PIC24는 24비트 명령을 불러 32비트로 저장합니다. 이 때 상위 8비트는 Phantom Byte라 0으로 저장하니 어드레스 활용에선 다소 아까운 방법입니다. 명령 수는 많지만 8비트 PIC(특히 PIC18)의 명령에 PIC24만의 3 오프랜드 명령을 채운 식이라 다소 혼란스러운 부분입니다.

 

라인업을 보면 PIC24F는 초저전력용, PIC24H(와 나중에 추가되는 PIC24E)는 고성능용입니다. 예를 들어 PIC24E의 하이엔드 제품인 PIC24EP512GU814는 70MIPS의 처리 성능과 512KB 플래시, 52KB SRAM을 탑재해 32채널 ADC(A/D Converter)나 UART/SPI/I2C/USB/CAN을 총 13채널, PWM 모듈 16개, 16/32비트가 총 13개인 구성입니다.

 

다음은 TI(Texus Instruments)입니다. TI는 한때 8051 기반 MCU를 판매했지만 현재 8비트는 모두 단종됐으며 지금은 16비트 MSP430이 이 회사  제품 중엔 로우엔드 취급을 받습니다.

 

MSP430 시리즈 자체는 동작 클럭이 최대 25MHz, 플래시 메모리가 최대 512KB, SRAM 최대 66KB로 하이 엔드 8비트보다 오히려 떨어지는 수준입니다. 다만 대부분의 명령은 1사이클로 실행할 수 있으니 계산하면 25MIPS입니다. 오히려 저전력을 내세워 0.9V로 작동하는 MSP430L092 같은 경우 소비 전류는 작동 시 45μ A/MHz, 대기 모드에서 6μ A, 슬립 상태에선 3μ A, 복귀는 5μ s 미만으로 알려졌습니다. 8비트 제품과 비교해 보면 Atmel의 picoPower라 불리는 저전력 기술을 탑재한 ATtiny13A 같은 제품의 경우 작동 시 190μ A/MHz에 대기 모드에서 24μ A/MHz로 이정도만 해도 상당히 낮은 편이나 MSP430은 그것을 능가하고 있습니다.

 

또 MSP430 중에는 미국 Ramtron(2012년에 Cypress가 인수)가 개발한 FRAM을 탑재한 제품도 있어 플래시 메모리 대신 FRAM을 이용해 성능 개선과 소비 전력 절감을 실현할 수도 있습니다. 게다가 MSP430 코어에 13.56MHz의 RF 트랜시버를 통합한 RF430, ZigBee용의 1GHz 미만 RF 트랜시버를 통합한 CC430 같은 제품도 있으며 CC430은 IoT 센서 노드 및 RF4CE을 사용한 리모컨 컨트롤러를 위한 저가형 솔루션으로서 광고하는 물건입니다. 

 

일본의 경우 르네사스 일렉트로닉스가 옛 히타치 계열의 H8S/H8SX라는 코어(독자적인 16비트 CISC)와 SH 시리즈의 RISC 코어(주소/데이터 길이는 32비트니 이것만 보면 32비트 코어라 할 수 있으나 명령은 16비트 길이로 고정돼 있어 16비트로 분류하는 경우도 있음) 기반 제품이 현역이며, 기존의 NEC 계열에서는 78K 시리즈를 16비트로 만든 78K0 코어가 있습니다. 원래 미쓰비시 전기 계열예 속한 제품 중에는 M16C/R8C 코어가 있으며 이 4종류의 코어를 이용한 16비트 MCU가 계속 나오고 있습니다. 또 78K0과 R8C의 후속작으로 2010년에 발표된 RL78이란 시리즈도 있습니다. 이 회사는 16비트를 RL78로 모으려는 듯 합니다. 

 

20.jpg

 

TI의 MSP430 시리즈

 

21.jpg

 

르네사스 일렉트로닉스의 RL78 시리즈

 

이렇게 메이저나 범용에 속하는 제품을 봤습니다. 마이너하거나 특수 용도로만 쓰이는 제품의 경우.

 

Ensilica의 eSi-1600(16비트 MCU IP)
Maxim Integrated의 MAXQ
Pyramid Semiconductor의 PACE P175x
RDC Semiconducto의 R88xx/R11xx
Spansion(원 후지쓰 소속)의 F2MC-16 시리즈
STMicroelectronics의 ST10
Unicore Systems(8086/80186 IP 링크는 PDF)
Zilog의 Z16/ZNeo

 

가 있습니다. 나머지는 8비트에서 소개했던 DCD의 80251의 IP 코어 정도가 있겠습니다. RDC와 Unicore는 80186 호환이며 스펜션과 ST는 이미 단종된 제품이라 현역 코어는 매우 적습니다. 일본의 경우-

 

라피스 컨덕터의 ML610xxx/ML620xxx
엡슨의 S1C17

 

같은 것이 있으나 이것도 특수 고객을 위한 제품에 속합니다. 

 

 

32비트 MCU

 

ARM과 MIPS/PowerPC/x86은 이미 소개했으니 남아 있는 것은 모두 마이너하거나 특수 용도겠지요. 일단 봅시다.

 

Atmel AVR32 UC3: 미국 Atmel이 제공하는 자체 32비트 코어와 이를 사용한 32비트 MCU. 다만 최근에 이 회사는 범용 제품에 ARM 기반 MCU을 권장하며 AVR32 코어는 ASIC등으로 돌리려 합니다. 

 
Cortus APS/FPS 시리즈: 프랑스 Cortus가 제공하는 32비트 코어 IP. 애플리케이션 프로세서와 MCU 모두 쓸 수 있지만 대게는 ASIC의 임베디드용 컨트롤러로 쓰이는 경우가 많습니다.

 
Ensilica eSi-3200: 저가형 32비트 RISC MCU IP.ASIC와 FPGA를 모두 지원합니다. ASIC의 경우 90nm 공정에서 700MHz로 구동하며 15K 게이트에서 소비 전력은 18μ W/MHz로 적은 편. 성능은 2.44CoreMark/MHz로 알려졌습니다. 상위 모델로 좀 더 성능을 올린 eSi-3250도 있습니다.


프리스케일(Freescale) ColdFire/ColdFire+: ARM을 소개할때도 잠깐 언급했으나 MC68K라는 명령 호환 RISC 코어는 예전에 808이라는 8비트 코어와 별도로 Flexis 시리즈로 나와 8비트→ 32비트 마이그레이션을 하는 용도로 썼으나, 지금은 특정 용도나 ASIC용으로 알려져 있으며 범용으로는 Cortex-M 기반의 Kinetis를 권장하고 있습니다.

 
인피니언(Infineon) TriCore: 인피니언이 독자적으로 개발한 32비트 코어입니다. MPU, MCU, DSP의 3종류의 코어가 1개의 프로세서에 들어가기에 그런 이름이 붙었습니다. 인피니언은 이를 다양한 용도로 내놓았으나 사용 실적이 있는 곳은 자동차용 뿐이며 그나마도 점점 점유율이 줄어들고 있습니다. 

 
파나소닉 AM32: 파나소닉의 독자적인 32비트 코어입니다. 3/4 스테이지 가변 파이프라인을 갖춘 독자 제품이며 파나소닉 이외의 회사에서 쓴 걸 본 적은 없습니다. 

 
르네사스 일렉트로닉스: 16비트를 소개할 때 말했던 히타치의 SuperH나 미쓰비시의 M32R, NEC의 V850 코어에 더해 SuperH와 V850의 후속작인 RH850, 독자적인 CISC 코어인 RX 시리즈와 32비트까지 크게 나눠 5종류의 제품이 있으며, 여기에 더해 ARM 기반인 RZ 시리즈까지 제공합니다.

 
스펜션(Spansion) FR: 원래는 후지쯔에서 개발한 독자적인 RISC 코어를 기반으로 한 범용 MCU지만 이미 단종에 들어갔습니다.

 
TI"C2000: Piccolo라는 애칭을 갖고 모터 제어나 안전 등의 분야에 특화시키는 형태로 애플리케이션이 전개되고 있습니다. 

 
도시바 TLCS900/H1: 범용 제품이지만 도시바 자체가 ARM MCU에 주력하고 있다보니 라인 업도 적고 단종에 들어간 것이나 마찬가지입니다.

 

그 외에 IP 기준으로 따지자면 좀 더 여러가지가 있지만 MCU 용이 아니라 MPU용에 가깝습니다. (예를 들면 오라클의 OpenSPARC, ESA의 LEON 등) 그래서 명단에선 생략했습니다. 또 주요 FPGA 업체는 모두 자사 제품에서 작동하는 CPU IP(Altera의 Nios II, Lattice의 Mico32, Xilinx의 MicroBlaze)를 제공하고 있기에 선택지가 많습니다. 다만 선택의 판단 기준은 절대 성능이 아니라 가격과 소프트웨어 지원이 중요하기에 그만큼 세력이 강한 ARM을 고르는 경우가 많습니다. 

 

 

VLIW/DSP

 

MCU의 용도로 VLIW를 사용하는가? 라고 생각할 수 있겠으나 실제로 그런 구성의 제품이 존재하기에(스펜션의 FR-V 등) 놀랄만한 일이긴 합니다. VLIW와 DSP는 범용으로 쓸 수 없는 특정 용도를 위한 것을 가리킵니다. 예전에는 트랜스메타의 크루소(Crusoe)와 Efficeon이 채택한 방식이며 비교적 최근의 제품 중에는 인텔의 아이테니엄이 VLIW입니다. 동시에 다수의 명령을 처리할 수 있는 구조이며, 명령의 곱급 자체가 다수의 명령을 패키징하는 형태로 전달되는 시스템입니다. 

 

사실 이 VLIW는 DSP에도 사용합니다. DSP는 Digital Signal Processor의 줄임말로 간단히 말해서 신호 처리를 전문으로 하는 프로세서입니다. 음성 처리(블루투스 헤드셋이나 스피커)에 DSP가 빠지는 일은 없습니다. 또 음성 인식이나 키넥트 같은 동작 인식은 대량의 데이터를 필터링해서 특징을 추출해낼 필요가 있는데 이런 처리에는 DSP가 제격입니다.

 

DSP의 내부는 MAC(단일 곱셈-누산기)에 적합한 구조로 되어 있습니다. MAC는 Y=A×X+B처럼 곱셈과 덧셈을 연속해서 하는 것이며, 필터링을 걸 때는 다수의 연산이 필요하기에 그만큼 많은 MAC 유닛을 동시에 작동시켜야 합니다. 이를 위해서는 명령 자체를 VLIW 방식으로 공급하는 것이 적합하며 대부분의 DSP는 VLIW 방식으로 구현되어 있습니다.

 

그리고 DSP 연산 자체는 MCU에도 들어가며 Cortex-M4의 DSP 연산 유닛은 1사이클에 단일 MAC를 처리하도록 한 것입니다. 그 외에도 8~32비트 MCU에 액셀러레이터 방식으로 16비트x32비트나 32비트x32비트의 MAC 유닛이 추가된 MCU는 많습니다. 다만 이들은 1사이클에 1개밖에 MAC을 처리하게 됩니다. 그래서 VLIW 방식의 DSP 프로세서는 1사이클에 4~16개의 MAC이 가능한 것도 존재합니다. 최근에는 디지털 전원의 제어 및 모터의 미세한 제어 등에도 DSP를 사용하는 경우가 늘어났기에 특정 용도를 위한 VLIW/DSP MCU가 많이 존재합니다. 하나씩 열거해 보지요. 

 

ARC CPU: ARC International(2010년에 Synopsis에 인수)가 제공하는 32비트 CPU/DSP IP입니다. 커스터마이즈의 범위가 넓으며 DSP 없이 32비트 코어로 쓸 수도 있고 DSP를 중시한 구성으로 만드는 것도 가능합니다. 로우엔드인 ARM EM4는 32비트 MCU에 맞는 구성입니다. 옵션으로 DSP 유닛도 추가할 수 있습니다.


AnalogDevices(ADI) Blackfin: 동작 클럭은 200~600MHz로 빠르며 최대 2400MMAC/sec의 처리 성능을 갖고 있습니다. 오디오, 자동차, 보안, 감시, 시험 프로세스 제어 등 폭넓은 용도로 쓰이는 범용 제품입니다.


CEVA DSP-Core: CEVA는 오디오용을 주로 겨냥한 DSP 코어의 IP 제조사입니다. TeakLite는 저가형/저전력 제품이며 CEVA-X는 성능과 비용와 균형을 맞춘 것, CEVA-XC는 절대 성능을 높인 것으로 핸드폰이나 블루투스 헤드셋, 오디오 기기의 제조사에서 많이 쓰이고 있습니다.

 
프리스케일 StarCore: 원래는 별도의 DSP로 제품을 제공했으나 지금은 3.5G/4G의 기지국에 주로 쓰이고 있습니다.

 
프리스케일 DSC: DSC는 Digital Signal Controller의 줄임말로 주로 모터 제어에 쓰이며 DSP 코어+모터 제어용 주변 회로를 묶어 제공합니다.

 
Microchip dsPIC30/33: 앞서 PIC24를 소개할 때도 언급했는데 원래는 16비트 MCU 코어에 17비트x17비트의 MAC 유닛(곱셈은 40비트)를 탑재한 것입니다. 절대적인 처리 성능은 떨어지나 신호 처리와 일반적인 데이터 처리에서 나름대로의 속도를 낼 수 있는 구성입니다.

 
Tensilica DPU: 지금은 Cadence가 인수했는데 이 회사는 VLIW기반의 DSP IP를 1997년부터 제공했으니 꽤 역사가 있습니다. 이곳의 특징은 고객이 구성을 자유롭게 바꿔 프로세서를 구성할 수 있다는 것으로, 실제로 Xtensa 같은 오디오 dSP처럼 어느 정도의 용도에 맞춰 커스터마이즈된 IP도 제공하지만 최대한으로 커스터마이즈하는 것도 가능합니다. 오래된 분야에선 Stretch의 S6이 Xtensa LX를 사용합니다. 최근에는 AMD의 GPU에 탑재된 트루 오디오의 정체가 Tensilica의 오디오 DSP 기반인 것으로 알려졌습니다.

 
TI C5000/C6000: DSP의 창시자라 부를 수 있는 회사인 TI가 1983년에 발매한 TMS32010은 세계 최초는 아니어도 성공한 제품으로 범위를 한정 지으면 첫 제품이라 할 수 있습니다. 현재 C5000이 오디오와 휴대 기기용 저전력 제품으로 쓰이며 C6000이 모터 제어 및 전력 제어, 디지털 무선 등에 쓰입니다. 더 상위 모델로는 KeyStone이라는 게 있어서 산업용 카메라나 3.5G/4G의 기지국에 제공합니다.


스펜션 FR-V: 원래는 후지쯔에서 개발된 RISC 방식의 가변 길이 VLIW 프로세서 코어입니다. 명령어 길이는 32비트로 1~4웨이까지 있으며 스펜션의 인수에 따라 FR-V도 스펜션의 라인업에 들어갔지만 단종됐고 제품 페이지도 존재하지 않습니다.

 

이처럼 수많은 제품을 열거하다가 글이 끝나게 됐는데요. 실제로도 정말 많은 회사와 제품이 이 시장에 존재합니다. 많이 생략했다고는 하지만 그걸 하나한 말하자면 한도끝도 없습니다. 이미 회사가 사라진 곳도 있거든요.

 

이렇게 임베디드는 일반적인 PC나 스마트폰용 SoC/CPU와는 또 다른 세계입니다. 

 

소스:

http://pc.watch.impress.co.jp/docs/column/1month-kouza/20150108_682634.html
http://pc.watch.impress.co.jp/docs/column/1month-kouza/20150115_683646.html
http://pc.watch.impress.co.jp/docs/column/1month-kouza/20150122_684769.html
http://pc.watch.impress.co.jp/docs/column/1month-kouza/20150129_685567.html

기글하드웨어(http://gigglehd.com/zbxe)에 올라온 모든 뉴스와 정보 글은 다른 곳으로 퍼가실 때 작성자의 허락을 받아야 합니다. 번역한 뉴스와 정보 글을 작성자 동의 없이 무단 전재와 무단 수정하는 행위를 금지합니다.