임베디드 기초 강좌 4 - 새로운 고성능 임베디드 mcu의 등장

임베디드 기초 강좌 4 - 새로운 고성능 임베디드 mcu의 등장

새로운 고성능 임베디드 mcu의 등장

 

[본 컨텐츠는 ICbanQ (아이씨뱅큐)에서 진행하는 파워블로거 활동의 일환으로, 

아이씨뱅큐의 지원을 받아 작성되었습니다]

 

안녕하세요 고명호 입니다.

지난번에는 본격적인 임베디드 강좌로 CPU의 개발및 MCU의 개발배경, 

그리고 부록 강좌에서는 예전에 사용되었던 AVR, PIC 칩의 대표적인 MCU를 살펴 보았습니다.

이번에는 비교적 최근의 CPU인 ARM의 등장 배경및 대표적인 CPU를 살펴보고 

다음 강좌에서는 실제적인 MCU의 사용을 해 보겠습니다. 

 

90년대 MCU들은 비교적 작은크기와 적은 메모리 그리고 몇 안되는 IO 개수로 단순했었지만

현세대의 MCU는 그 기능이 매우 많고 방대하여 전부 이해하는 것은 시간이 많이 걸리고 

어려운 일입니다.  간단한 작업을 하는데 고성능의 MCU를 쓸 이유는 없을 것입니다. 

그래서, ARM CPU의 등장배경과 현세대의 MCU의 경우 꼭 필요한 분야가 어디인지 

그리고 어떤 곳에서 쓰이고 있는지 간략히 살펴보는 것으로 마무리를 하겠습니다.

 

 

지난시간에는 인텔 4004 CPU 가 개발된 이후 8비트 CPU의 시조가 된 8080이 개발되었고 

이 8080 CPU 가 8비트 CPU의 대표격인 z80의 원조가 되었다는 말씀을 드렸습니다.

오늘은 그 다음의 이야기인 32비트 CPU와 RISC CPU의 개발 배경에 대해서 말씀드리고, 

현세대의 임베디드의 새로운 트렌드에 대해서 말씀드리겠습니다.

 

인텔은 8080개발이후 16비트인 8086 CPU를 개발하게 되었는데 이CPU가 IBM에서 쓰이면서 

시장을 장악하게 되었습니다. 

 

8086이후 속도를 향상시킨 80286 프로세서를 개발하게 되었고, 이후 32비트 CPU인 80386 를 

개발하면서 부터 32비트 CPU의 시대가 열리게 되었습니다.

 

데스크탑 CPU라 하면 거의 인텔 CPU라고 할정도로 개인용 컴퓨터에는 인텔 CPU가 쓰였습니다.

인텔의 CPU는 CISC라는 구조의 CPU인데 하위 호환을 위해서 CPU의 명령어의 길이가 가변이면서 

또한 상당히 많은 명령어 셋을 가지고 있는것이 특징입니다.

 

이러한 CISC구조는 CPU의 명령이 다양하다는 장점이 있지만 전력소비가 많고 

명령 디코딩에 쓰이는 로직이 복잡하기 때문에 소형화가 어렵다는 단점이 있었습니다.

따라서 전력 소모도 크고 발열량도 상당하다는 단점도 함께 존재 했습니다.

 

- CISC : complex instruction set computing - 

 

이때 컴퓨터공학자들이 그 시대의 CPU를 분석해 보니 실제로 코드에서 사용되는 명령어 중 

자주 쓰이는 것은 20% 미만이고 나머지 80%는 거의 안쓰이거나 낮은 빈도로 쓰이고 있다는 

것을 발견하게 됩니다. 

 

그리하여 명령어의 갯수를 줄인 CPU를 개발하게 되었는데 이것이 RISC CPU입니다. 

RISC란 (reduced instruction set computing)의 의미로 제어와 연산에 쓰이는 꼭 필요한 명령어들만 

남겨놓은 것이 특징입니다.

 

미국의 버클리와 스탠포드에서 각각 독자적인 아키텍처를 개발하여 발전시켜 나갔는데 

스탠포드에서 유래한 CPU는 SPARC, POWER CPU가 있습니다. 

주로 그 시대의 중대형급 서버 컴퓨터에서 쓰였습니다.

 

그리고 버클리에서 유래한 아키텍처가 MIPS CPU 입니다. 

MIPS CPU도 중대형급 서버 컴퓨터에 쓰였습니다. 주로 그래픽 작업용 워크스테이션에 쓰였습니다.

데스크탑 시장에는 비록 도전했으나 인텔의 철옹성영역으로 실패를 하였고, 

아이러니하게도 CPU가 소형화 되면서 임베디드 기기및 게임기에 다시 쓰이게 되었습니다. 

90년대 중반 소니의 게임기 플레이스테이션 1이 서버급 CPU가 쓰였다는 광고를 하였는데

3D 폴리곤 처리 기능까지 갖추고도 저렴한 가격에 대 히트를 치면서 성공을 거두게 되었는데 

이때 사용된 CPU가 MIPS core 입니다. 

 

(정확히는 MIPS R3000 32비트 CPU이고 아이러니 하게도 3D 연산에 필요한 

부동소수점 연산 기능은 없습니다. 그래서 3차원 계산시에는 고정소수점 연산기능을 

이용해야 하는 반쪽짜리 3d CPU였습니다.)

 

MIPS 코어는 아직도 32비트 PIC 시리즈에 사용되고 있습니다.

 

 

MIPS CPU는32비트 RISC CPU이지만 어셈블리 명령어가 난해하고, 효율적이지 못한 단점이 

있었습니다. 

 

한편 Acorn이라는 영국회사에서 Acorn 이라는 RISC 아키텍처를 개발하고 자신의 

컴퓨터에 사용을 해 왔습니다만 한때는 잘 나갔으나 당대의 거물 매킨토시나 IBM에 밀려서 

사세가 기울었고, ARM 아키텍쳐를 애플과 VLSI의 조인트 벤처 기업인 ARM 에 팔았습니다. 

 

오히려 이때부터 ARM CPU의 중흥기가 시작이 됩니다. 

ARM사는 스스로 CPU를 생산하지 않고 ARM 코어를 여기저기 라이선스 해 주는 전략으로 

데스크탑 이외의 각 분야에 ARM 코어를 보급하였습니다. 

 

인텔이 데스크 탑 시장을 장악하고 있는동안 ARM은 그 밖의 시장을 장악했습니다.

게임기, 가전제품, 공유기, PDA에 이르기까지 거의 대부분이 ARM 코어를 사용하고 있습니다.

초창기에는 단지 저전력의 32비트 CPU정도로만 인식되던  CPU가 이후 코어 CPU의 속도가 

대폭 향상되어 일반 데스크탑 CPU에 버금가는 저가형 CPU들이 제조 되었습니다.

 

(라즈베리 파이 1, 라즈베리 파이 2에 쓰인 CPU도 각각 ARM V6, ARM cortex-a9 쿼드 코어급 

CPU가 쓰이고 있습니다.)

 

 

  잠깐 다른주제의 내용을 이야기 하겠습니다.

  라즈베리 파이 1,2 의 운영체제로 사용되는 리눅스는 임베디드 리눅스가 아닙니다. 

  그냥 32비트의 완전한 리눅스 입니다.

 

  임베디드 리눅스란 MMU가 없거나 메모리가 부족한 한정된 분야에서 쓰이기 위해서 

  리눅스시스템의 최소부분만을 남긴 리눅스를 의미하는데

  라즈베리 1,2 의 경우 메인메모리 512~ 1GB, 저장장치 2~32GB ARM 32비트 CPU 등을 

  채용하고 있기 때문에 완전한 리눅스 머신으로 볼수 있으며

  각종 리눅스 패키지의 배포판 (debian, ubuntu, arch linux)을 수정없이 바로 이용할 수 있기 때문에 

  완전한 리눅스 시스템으로 보는것이 타당합니다.

 

  반면에 공유기, 휴대폰, 게임기 등에 쓰이는 리눅스는 그 한정된 메모리나 저성능의 arm코어 

  등을 사용하는점에 비추어 임베디드 리눅스라고 할 수 있습니다.

 

  심지어는 서버의 역할로서 충분히 기능 할 수 있으므로 

  개인용 웹 서버를 운영하는일도 가능할 정도입니다.

 

  현재 불과 몇만원정도에 서버급의 리눅스 머신이 팔리고 있다는 사실은 10년전만해도 상상하기 

  힘든 현실이 되었습니다.  

 

 

 

임베디드 기기의 경우에 대부분 8비트 CPU가 주류였으나 복잡한 계산및 속도가 필요하게 되면서 

임베디드용 MCU에도 32비트급 CPU가 필요해 졌습니다.

그리하여 MIPS의 임베디드 시장 진출이 먼저 이루어 졌고, 뒤이어 ARM core도 임베디드 시장에 

진입하게 됩니다.

 

원래의 ARM CPU는 외부에 메모리등을 추가로 달아줘야 했습니다. (일반적인 CPU) 

이러한 ARM cpu가 임베디드 영역에 쓰이기 위해서는 몇가지 기능이 새로 추가가 되었습니다.

즉 임베디드 시장의 수요가 32비트로 넘어가게 되면서 성능과 저전력을 타협하여 

 

극단적인 고 성능(CLOCK 1GHz 이상)대신에 임베디드 기기에 적당한 클럭(80MHz 이하)을 

가지고 CPU 내부에 메모리와 제어유닛을 포함하는 형태로의 ARM 코어가 발전하게 됩니다.

(ARM cortex-m0 시리즈)

 

이때 ARM 코어 특히 cortex-m0 시리즈는 32비트 CPU의 장점을 가지면서 저전력이고, 

게다가 라이선스만 취득하면 누구나 CPU의 제조가 가능했기 때문에 

수많은 임베디드 CPU제조 업체가 cortex-m0 시리즈 MCU를 생산하기 시작했습니다.

다음 그림은 icbanq 에서 판매가 되고 있는 ARM cortex-m0 코어를 가진 MCU 종류들입니다. 

 

 

(그림 1) ARM MCU


종류도 다양하고 제조사도 다양한 것을 알 수 있습니다. 

심지어 가장 저렴한것은 1000 원대부터 가격이 형성되어 있습니다!!

 

ARM 코어는 저전력의 RISC CPU 이면서도 CISC CPU가 가지는 장점을 추가하고 

또한 C 언어에서 쓰이는 언어 형식(pre increment, post increment) 등을 어셈블리에 

직접 도입하여 명령어의 효율성이 대폭 증대되었습니다.

 

그리고 이시점부터 고성능 임베디드 CPU의 거의 대세가 되다시피 하였습니다.

우리가 실생활에 쓰는 첨단 IT기기의 대부분은(인텔 CPU가 장착된 노트북등을 제외하면) 

ARM 코어를 사용한다고 해도 과언이 아닙니다. 

 

심지어는 초소형 시계, 게임기, 공유기내부에서 쓰이는 CPU도 ARM 코어 입니다. 

애플워치나 아이패드 아이폰에는 어떤 CPU가 쓰였을까요?

ARM 기업의 초기 투자자가 애플사라는것은 아시죠?

그래서 이제는 임베디드를 하면서 ARM 코어에 대한 이해가 없으면 안되는 정도가 된 것입니다.

 

지루한 역사 이야기를 해서 재미가 없으셨죠?

암튼 읽어 주셔서 감사합니다.

 

이번시간에는 현세대 임베디드 CPU의 대표격인 ARM core에 대해 알아보았습니다.

다음 시간에는 ARM core가 사용된 개발보드의 하나를 리뷰해 보고 

사용하는 방법을 간략하게 살펴 보겠습니다.

 

[본 컨텐츠는 ICbanQ (아이씨뱅큐)에서 진행하는 파워블로거 활동의 일환으로, 

아이씨뱅큐의 지원을 받아 작성되었습니다]

 

 

관련 사이트 

 

http://www.icbanq.com/shop/product_list.asp?catg_code=102117100&orderby=3&theme_code=&list_type=3&areaPowerList1=

&areaPowerList2=&areaPowerList3=&areaPowerList4=&prod_mfg=&searchtext=

arm&pagesize=10

 

관련 물품

 

http://www.icbanq.com/P005686826/S