임베디드의 시작
#시작하며
해당 장에서는, 현재 21-1학기에 수강하며 공부하고 있는 임베디드 프로세스 응용에 대해 공부할 것이다. 임베디드 공부를 효과적으로 하기 위해서는, c언어로 코드가 구성되기 때문에 c 언어에 대한 이해와 Logic Design, 컴퓨터 구조에 대한 사전 지식이 필요하다. 본 임베디드 과목 공부를 시작하며 세운 목표는,
- ARM Cortex-M4 프로세서의 구조 및 동작과 어셈블리 언어 이해
- 임베디드 시스템 환경에서 C/C++ 언어를 이용하여 프로그래밍
- 임베디드 프로세서 주변 장치의 동작을 이해하고 제어할 수 있음
- 임베디드 환경에서 기본적인 개발 툴을 활용할 수 있음
등으로 지정하고 하나씩 이루어가며 열심히 공부할 것이다.
#Embedded Systems
임베디드 시스템이란, 내장형 시스템으로서 기계나 기타 제어가 필요한 시스템에 대해 제어를 위한 특정 기능을 수행하는 컴퓨터 시스템의 장치이다. 해당 시스템은 function들을 반복적으로 수행한다는 특징을 가진다. 대표적인 예로는 아래와 같은 것들이 있다.
- Data processing
- Wired and Wireless communications
- Consumer electronics
- Automotive
- Industrial
#마이크로 프로세서(MicroProcessor)
마이크로프로세서는, 작은 실리콘 칩위에 트랜지스터를 수천 만개 집적한 소자를 말하고 논리 연산을 하는 ALU, 명령어를 제어하는 Control unit과 register, busses를 포함하고 있다. Busses를 통해 프로세서가 외부와 연결되고, 코드와 데이터 메모리 또는 process에서 input/output 메모리와 연결된다.
해당 마이크로프로세서의 장점은, 집적회로 기술로 저렴한 비용으로 이용이 가능하여 컴퓨터 시스템 비용을 줄일 수 있다. 또한 매우 빠른 속도로 동작하며, 크기가 작아 시스템의 크기를 줄어든다.
마이크로프로세서의 구조로는 기본적으로 두가지가 존재한다. 하나는 폰 노이만(von Neumann)구조이고 또 다른 하나는 하버드(Harvard) 구조이다. 먼저 폰 노이만 구조는, code와 data 사이 memory space와 busses를 공유한다. 아래의 그림처럼 CPU와 Memory는 서로 분리되어있고, 둘을 연결하는 버스를 통해 명령어 읽기, 데이터 읽고 쓰기가 가능하다. 이때 메모리 내에 프로그램과 데이터 영역은 물리적인 구분이 없기 때문에, 앞서 언급한 것과 같이 code와 data가 동일한 Memory와 Bus를 공유하는 것이다. 대표적인 예로 TI MSP430 family와 같은 전형적인 마이크로 컨트롤러(Microcontroller)가 있다.
하지만 폰 노이만 구조에서는 치명적인 단점이 존재한다. 빠른 처리속도를 가지고 있어도, data와 code를 불러오는 속도가 느리기 때문에 전체적인 속도가 감소한다. 즉 계산 속도가 Memory장치 속도에 영향을 받는 것이다. 해당 현상을 폰 노이만 병목현상(Von Neumann Bottleneck)이라고 한다. 따라서, 해당 문제점을 해결하기 위해 새로운 구조가 등장했는데, 그것이 하버드 구조이다. 해당 구조는 code와 data에 대한 두 가지 독립적인 메모리 공간이 존재하며 메모리 버스 또한 그러하다. 병목 현상이 일어나는 원인은, 버스를 통해 code와 data가 공유되기 때문에, CPU는 동시 접근이 불가능하고 하나씩 처리하게 되어 발생한다. 따라서 하버드는 해당 버스를, data와 code를 동시에 받을 수 있도록 물리적으로 분리한 것이다. 이를 통해 현재 명령의 처리를 끝냄과 동시에 다음 명령을 받을 수 있어, 보다 빠른 속도로 동작할 수 있다. 하버드 구조의 대표적인 예로는 Digital Signal Processors(DSPs)가 있다.
- Complex Instruction Set Computer(CISC)
CISC는 복잡한 명령어 집합을 가지는 CPU 구조이다. 명령어가 복잡한 구조를 가지고 있기 때문에 그 수가 많고, 해석에 시간이 오래 걸려 속도가 느리고, 해석에 필요한 회로도 복잡하다. 대개 풍부한 어드레싱 구조를 가지고 있어 직교성이 좋으며 어떤 어드레싱 모드에서도 임의의 연산을 수행할 수 있다.
- Reduced Instruction Set Computer(RISC)
반면에 RISC는 CISC와 다르게 CPU 명령어의 개수를 줄여 하드웨어 구조를 보다 간단하게 만든 구조이다. 실제로 자주 사용되는 명령어를 바탕으로 적은 수의 명령어의 집합으로 구성되어, CISC보다 구조가 더 단순하다. Single Cycle Instruction을 사용하여 1 clock당 하나의 instruction을 사용하고, uniform instruction으로 모든 instruction이 동일한 포맷을 가진다.
--> 오늘날의 마이크로프로세서 구조는, CISC와 RISC의 장점을 모두 활용한 Hybrid Architecture를 사용하고 있다.
#마이크로컨트롤러(MicroController)
마이크로컨트롤러(or MCU)는 마이크로프로세서와 입출력 모듈을 하나의 칩으로 만들어 정해진 기능을 수행하는 컴퓨터를 말한다. 즉 집적회로 위에 조그만 컴퓨터라고 할 수 있다. 현대 product의 거의 모든타입에 포함되어 있고, 하나의 칩에 실시간 제어 시스템 설계에 필요한 computing power와 입력 채널을 모두 포함한다.
- Digital Signal Processor(DSP)
앞서 하버드 구조의 대표적인 예로서 소개한 DSP는, 디지털화된 신호를 원하는 방향으로 정보 신호를 수정하거나 개선할 목적으로 알고리즘에 의해 수차적으로 처리하는 것을 말한다. 일반적인 목적으로는 연속적인 아날로그 신호를 측정하여 걸러내고 압축하는 것이다. 샘플링(Sampling)과정을 통해 신호를 디지털 형태로 변환하고 ADC로 디지털화하여 연속된 수로 변환한다. (출력에는 DAC) 아날로그 처리보다 과정이 복잡하지만 아날로그 처리에 비해 데이터 압축, 오류 검출 정정과 같은 많은 이점을 가지고 있다.
- Digital Signal Controller(DSC)
DSC는 DSP의 computing power와 메모리, 주변기기를 하나의 장치에 결합한 것이다.
#마치며
해당 챕터에서는 임베디드 프로세서의 특징과 다양한 구조와 실행 단계에 대해서 공부하였다. 다음 챕터부터는 본격적으로 보드를 사용하여 임베디드 실습 lab을 진행해볼 것이다. 공부의 시작이지만 앞으로 배울 것이 더 많다는 사실에 감사한 것 같다.
'embedded' 카테고리의 다른 글
Lab2 - GPIO IN & OUT (3) | 2021.05.24 |
---|---|
Lab1 - Digital in & out (1) | 2021.05.22 |