Fogeaters, Light The World.

12

2016-Mar

AVR / ARM / DSP 비교

작성자: title: MoonBlonix IP ADRESS: *.148.87.98 조회 수: 1735

참고자료

http://jalbum.com/AVR/9288

http://egloos.zum.com/DigiCon/v/108224

http://www.mcublog.co.kr/21




우선 CPU를 구분하는 방법중 하나인 CISC와 RISC 의 정의는 다음과 같다.


K-20160312-591616.png


* 마이크로 컨트롤러는 한개의 IC칩에 타이머, 카운터, 인터럽트, GPIO 기능을 다 집어넣은 마이크로 프로세서를 말한다.

AVR과 DSP는 마이크로 컨트롤러다.



* AVR - 8비트 RISC 프로세서.


Atmel 사에서 만든 프로세서 칩이다.

간단한 로봇 제어기나 센서 읽는 용도로 사용하면 딱이다.


메모리가 작고 연산능력이 다른 칩에 비해 딸린다.

멀티 프로세싱을 지원하지 않는다.


한 AVR 배우면 다른 AVR칩 레지스터 조금씩만 바꿔서 다 쓸 수 있다.

인터넷이 정보도 많고 배우기 좋다.

다루기도 비교적 쉽다.

주변 회로도 간단하다.

발열이 없다.

그리고 싸다.



* ARM - 32비트 RISC 프로세서 '코어'


ARM 사에서 설계한 프로세서 '구조'이다. 편하게 암이라고 부른다.

IP나 코어에 대한 설계를 하고 그 설계에 대한 로열티를 받는 회사의 작품으로, 정확히는 '칩'을 부르는 명칭이 아니다.

(그럴 일은 없겠지만 Atmel 사에서 ARM 아키텍쳐를 가져다가 패키징해 AVR 이름을 붙여서 출시할 수도 있다)

임베디드 시장에서 가장 큰 점유율을 자랑하는 프로세서 아키텍쳐.

단독으로 사용되기도 하고 핸드폰같은덴 여러가가 달려서 코어의 처리를 돕는다. (사실 그 코어도 ARM 이다)

디지털 시계나 계산기에도 이게 달린다. 라즈베리 파이 코어도 ARM.


AVR의 확장판 같은 느낌인 만큼 다루기는 비교적 어렵다. (기능이 추가되는 느낌 정도?)


메모리나 연산속도는 칩에 따라 매우 다양한데, AVR 과 비슷한 몇메가 클럭부터 DSP 급의 수백메가 클럭도 나온다.

32비트인 만큼 메모리가 크다. 칩 자체의 메모리는 AVR 이랑 비슷한데 외부메모리 달았을때 한계치가 확 높아진다.

포팅할 수 있는 RTOS 종류가 DSP보다 훨씬 많고 플랫폼OS포팅이 가능하다.

ARM7을 잘 해놓으면 후에 상위모델인 ARM9이나 ARM11으로 전환이 쉽다.

멀티프로세싱을 지원한다. (가끔 안하는 칩들도 있다)

(AVR같이 낮은 클럭을 가진 녀석들은)발열이 별로 없다.

(AVR같이 낮은 클럭을 가진 녀석들은)DSP 보다 싸다.


참고 :: https://namu.wiki/w/ARM(CPU)

https://namu.wiki/w/ARM%20Cortex-A%20%EC%8B%9C%EB%A6%AC%EC%A6%88



* DSP - 32 비트 CISC, RISC 복합 프로세서


텍사스 인스트루먼트 사의 작품이다.

ARM 이 범용적인 연산에 특화되었다면 DSP는 특정한 연산에 특화되어 있다.

자세한 특징은 아래 두번째 댓글을 참고바람.


외부 회로가 복잡하다.

연산속도가 뛰어난만큼 발열이 심하다.

비교적 자료가 적어서 예제나 라이브러리 등을 찾기가 어렵다.

상위모델로 전환이 어렵다. 5000계열과 6000계열을 거의 새로 배워야 한댄다.

비싸다.


연산속도가 뛰어난 고성능 칩 위주다.

신호와 시스템시간, ADC, 시간을 디지털화 시켜 convolution하는 기능에는 따라올 칩이 없다.

멀티 프로세싱을 지원한다.


profile

title: MoonBlonix

2016.03.12 17:48
*.148.87.98
"MCU"는 소형 컴퓨터/CPU를 통칭하는 용어이기 때문에 오직 한 종류만 있는 것이 아닙니다. 
마치 "게임기"란 분류 안에 XBOX, Play Station, 닌텐도DS와 같은 여러 종류가 있듯이, 
MCU라는 분류 안에도 업체별로 다양한 제품들이 존재합니다. 

이들 중 대중적으로 잘 알려져 있으며, 실제로도 많이 사용되는 것들을 정리해보면 다음과 같습니다.

1. AVR
이 책의 주제이기도 한 AVR은 아트멜(Atmel)이라는 미국회사에서 만든 MCU의 모델명입니다. 
이 AVR은 마이크로 프로세서 분야를 공부하고자 하는 초급자들에게 가장 인기가 있으며, 
또 가장 적합한 MCU 중 하나입니다. 그 이유는 개발 환경이 매우 잘 구성되어 있으며
(즉, 개발툴을 무료로 설치해서 쉽게 사용할 수 있습니다.), MCU에 새로운 프로그램을 기록하는 
방법이 용이하고, 하드웨어 구성이 단순하여 직관적으로 이해하기 쉽기 때문입니다.
그리고 이 같은 장점들 덕에 풍부한 학습자료(인터넷, 서적, 예제코드)가 존재한다라는
점이 바로 AVR이 큰 인기를 얻고 있는 비결이라고 할 수 있겠습니다.

"AVR"이라는 단어는 Advanced Virtual RISC의 약자라는 주장, 그리고 AVR을 디자인한 
사람들의 이름을 딴 Alf-Ebil Bogen and Vegard Wollen RISC의 약자라는 주장이 있지만,
정작 Atmel사에서는 특별한 의미가 없는 고유명칭이라 이야기하고 있습니다.

2. 8051
8051은 x86 CPU 생산업체인 인텔(Intel)에서 만든 MCU로서, TI 사의 TMS1000이라는 MCU와 
더불어 1975년에 개발된 아주 초창기의 MCU입니다. 범용적인 기능을 가진 CPU만을 만들어오던 
인텔이 보다 사용하기 쉽고 주변장치 제어용으로 적합한 제품을 구상하다 만들어 낸 것이 
바로 MCU인 것입니다. 이후 지속적으로 발전해 온 8051 역시 AVR과 비슷한 장점을 가지고 있으며, 
풍부한 학습자료가 존재하기 때문에 AVR과 더불어 인기있는 MCU 대열에 포함됩니다.

3. PIC(Peripheral Interface Controller)
PIC는 미국의 마이크로칩(MicroChip Technology)사에서 만든 MCU입니다.
PIC 역시 AVR이나 8051와 함께 널리 사용되는 MCU 중 하나이고, 특히 산업용으로 많이 
사용되고 있어 주변의 가전제품 속에서 쉽게 볼 수가 있으며, 교육용이나 취미용으로도
많이 사용되고 있습니다. 

8051과 PIC는 비교적 역사와 전통이 있는 MCU이며, 반면 AVR은 최근 각광을 받고 있는 떠오르는 MCU라고 볼 수 있겠습니다.
AVR이 각광받는 이유는 PIC보다 처리 속도가 빠르며, 8051보다 학습자료가 풍부하기 때문입니다.

4. ARM (Advanced RISC Machine)
마지막으로 ARM은 1990년에 애플(Apple)과 Acorn Computer Group 그리고 VLSI Technology란 회사가 공동으로 
투자하여 만든 벤처회사이자 제품의 이름입니다. 
특이하게도 ARM은 MCU 제품 그 자체가 아닌, MCU의 코어(Core)를 구성하는 회로를 의미합니다. 
즉, ARM사에선 오직 ARM 코어의 회로를 설계하고 연구할 뿐이며, 직접 생산하지는 않습니다.

실제 ARM 기반의 MCU 생산은 다양한 업체에서 수행하며, 회로도 사용에 대한 라이센스 비용을 지불하는 
방식으로 운영됩니다. 이처럼 ARM 기반의 MCU를 생상하는 주요 업체로는 퀄컴, 삼성, 모토로라, Nvidia, 
TI, NXP, 애플 등이 있으며, AVR 제작업체인 Atmel 또한 ARM 기반의 MCU를 생산합니다. 그리고 이렇게 만들어진 
ARM 제품에 Snapdragon(퀄컴), Tegra(Nvidia), Exynos(삼성) 등의 독자적인 이름을 부여하여 판매합니다.

ARM은 앞서 설명드린 세 개의 MCU보다 고성능을 자랑하며, 그렇기 때문에 보다 복잡함을 요구하는 주변장치에 
대한 제어가 가능합니다. 그래서 LCD와 같은 그래픽 장치, 카메라 장치, 공유기와 같은 네트워크 관련 장치, 
혹은 터치스크린과 같은 사용자와의 상호관계가 필요한 장비에 적합합니다.

ARM의 성능이 매우 뛰어나다보니 심지어 리눅스(Linux)나 윈도우(Windows CE) 같은 하나의 운영체제를 작동시키는 
것이 가능하며, 만능 운영체제인 리눅스를 활용 가능함에 따라 매우 다양한 작업을 ARM을 통해 할 수 있게 되었습니다. 
현재 수 많은 유무선 공유기, 전자사전, 네비게이션, 디지털 TV 등에 ARM 기반 MCU가 탑재되어 있으며, 
최근에는 대부분의 스마트폰에 탑재되어 마치 하나의 개인 PC에 버금가는 활용도를 자랑하고 있습니다.

여기서 소개한 것들 이외에도 훨씬 더 많은 종류의 MCU들이 존재합니다. 
(http://en.wikipedia.org/wiki/List_of_common_microcontrollers 혹은 http://bit.ly/4tZ62n에서 확인 가능)
그런데 한가지 재미있는 점은, 다양한 MCU 사이에 표준(예. 통신 프로토콜)이 존재하며, 결국엔 "전기신호"라는 
공통분모를 가지고 있기 때문에, 이들 중 하나만 깊게 공부하면 나머지는 어렵지 않게 이해할 수 있게 된다는 점입니다. 
profile

title: MoonBlonix

2016.03.12 17:49
*.148.87.98
List of Articles
번호 제목 글쓴이 날짜 조회 수
공지 [Web] 클라우드 IDE + 2 title: MoonBlonix 2017-06-25 15124
72 [VS] 다중 프로젝트 dll로 연결하기 title: MoonBlonix 2016-11-13 1626
71 [VS] DllMain 에서 DLL 호출하기 title: MoonBlonix 2016-11-13 1591
70 [Win API] 유니코드, 멀티바이트, TCHAR 문자열함수 title: MoonBlonix 2016-11-08 1457
69 [AVR] LED 입출력을 제어해보자 - 1 file title: Zwei츠바이 2016-09-16 1600
68 [알고리즘] 문자열 검색 title: MoonBlonix 2016-04-17 1698
67 [AVR] ATTiny13A 그리고 ADC에 대해 + 2 title: MoonBlonix 2016-04-01 1545
66 [OpenCV] 32bit(x86) 빌드 및 초기설정(GPU, TBB, IPP 등) title: MoonBlonix 2016-03-29 1543
65 [OpenCV] Mat 픽셀 접근방법 title: MoonBlonix 2016-03-26 1676
64 [OpenCV] Mat 구조를 Tesseract 에서 쓸 수 있게 title: MoonBlonix 2016-03-24 1453
63 [영상처리] Bitmap 구조 분석 title: MoonBlonix 2016-03-24 1704
62 [OpenCV] 3.x - 캠 사용 & 얼굴 인식 title: MoonBlonix 2016-03-24 1682
61 [tesseract] (3.0.4) vs2013으로 빌드하기 title: MoonBlonix 2016-03-23 1604
60 [OpenCV] 3.1 설치하기 file title: MoonBlonix 2016-03-17 1425
» AVR / ARM / DSP 비교 file + 2 title: MoonBlonix 2016-03-12 1735
58 (작성중)[OpenCV/ARM/DSP] 임베디드 환경에서의 OpenCV 사용 title: MoonBlonix 2016-03-12 1602
57 [OpenCV] 예제 코드 모음 file title: MoonBlonix 2016-03-12 1789
56 [OpenCV] 마커 추출 file title: MoonBlonix 2016-03-12 1404
55 [OpenCV] 영상 이진화 & 레이블링(Blob Labeling) file + 3 title: MoonBlonix 2016-03-12 1535
54 [OpenCV] 문자 인식 file + 1 title: MoonBlonix 2016-03-12 1465
53 [AVR] ATTiny13A 에 대한 숨겨진 사실들 title: MoonBlonix 2016-03-10 1626