임베디드 시스템(Embedded System)이란?
임베디드 시스템(Embedded System)이란 도대체
무엇일까. 임베디드 시스템이란 아주 간단하게 말하자면 어떤 특정한 처리를 하기 위해 전용으로 설계되어 내장된
시스템이라 할 수 있다. 임베디드 시스템에는 다양한 것이 있다. 예를 들어, 전기밥솥은 임베디드 시스템의
예로서 좋은 사례일 것이다. 밥솥을 사용할 때, 밥짓기 모드(최근에는 현미 모드, 신속 밥짓기 모드
등도 있다)를 선택하고 스타트 버튼을 누른다고 하는 식으로 조작을 한다.
조작의 순서나 모드의 판별, 또 모드별 온도나 시간 제어는 밥솥에 “내장된(Embedded)” 전용 시스템이 하고 있는 셈이다(그림 1).

이런 정의에서 말하자면, PC는 임베디드 시스템이라고는 말하기 어려운 부분이
있다. PC는 인스톨하는 소프트웨어에 의해 다양한 처리가 가능하도록 할 있기 때문이다.
임베디드 시스템의 실현 방법
임베디드 시스템을 실현하기 위해서는 크게 나누어 다음 2가지 방법이 있다.
(1) 모두 하드웨어로 제어하고 있는 경우 우선, 하나는 그림 2와 같이 하드웨어만으로
시스템을 실현하는 방법이다. 예를 들어, 선택한 모드를 플립플롭으로 유지하고, 그것에 의해 선택된 회로가
동작하여 기기의 다양한 상태를 제어한다. 그림 2의 회로는 표준 로직 74 시리즈의 IC가 사용되고 있지만, 최근에는 더욱
고도의 규모가 큰 회로를 필요로 하기 때문에 PLD(Programmable Logic Device: 프로그래밍 가능한 로직 디바이스)나
ASIC(Application Specific Integrated Circuit: 어플리케이션을 위해 전용으로 설계된 IC)가 사용되고 있다.

(2) CPU+소프트웨어로 처리하고 있는 경우 이
방법은 범용의 CPU(Central Processing Unit)와 ROM(Read Only Memory)이나 RAM(Random Access Memory) 등의 메모리를
접속한 하드웨어(CPU 보드)를 필요로 하기 때문에, (1)의 연장선상에 있다고 수 있겠지만. 그것만으로는 시스템이
동작하지 않는다. CPU를 움직이기 위한 프로그램을 작성하여 메모리에 저장해야 비로소 시스템으로 완성되는
것이다(그림 3). 즉, 완전히 동일한 CPU 보드라도 메모리에 저장하는 프로그램을 바꿔 넣으면 다른 동작을 실행하도록 수도 있다.

임베디드 소프트웨어란, CPU 보드의 메모리에 저장하여 CPU 보드상에서 동작시키는
소프트웨어를 말한다. 여기서는 (2)의 실장에 주안점을 두고, 임베디드 소프트웨어를 작성해 나가는 방법을 해설한다.
소프트웨어의 장점
방금 전에 설명한 (1)의 방법에서는 회로도를 작성하면 되겠지만, (2)의 방법에서는
CPU 보드의 회로도와, 그 위에 주행하는 소프트웨어 양쪽 모두를 개발할 필요가 있다. 언뜻 보기에, (2)의 방법은
하드웨어와 소프트웨어 양쪽 모두가 필요하기 때문에 설계가 힘들 것으로 생각할지도 모른다. 그러나
(2)의 방법에는 다음과 같은 큰 이점이 있다. 일반적으로 소프트웨어 개발에서는 개발 도구를 염가로 갖출 수 있다.
이미 설명한 것처럼, 같은 CPU 보드라도 소프트웨어를 바꿔 넣음으로써 다른 처리를 하게 할 수 있다. 또, 메모리의
용량에 빈 곳이 있으면, 기능을 추가할 수도 있다. 더구나 프로그램에 문제(버그)가 발견되어도 즉석에서 수정할 수 있다. 한편,
ASIC 등의 하드웨어 개발에서는 일반적으로 고가의 개발 도구를 필요로 하므로, 개발에는 큰 투자와 시간이 필요하게
된다. 또 다른 처리를 하게 하거나 기능을 추가하려면, 그로 인한 회로가 필요하게 된다. 또 회로에 잘못이
발견되었을 때에 그것을 수정하기 위해서는 많은 수고와 비용이 뒤따른다.
소프트웨어의 결점
소프트웨어로 개발할 때에도 몇가지 문제점이 있다. 우선,
소프트웨어를 동작시키려면, CPU+메모리라고 하는 하드웨어가 필요하다는 것이다.
그렇다고는 해도, 일부러 ASIC를 개발하는 것보다는 훨씬 싼 가격으로 CPU 보드를 실현할 수 있다. 또
하나는 처리속도이다. 하드웨어만으로 처리하는 경우와 소프트웨어로 처리하는 경우를 비교하면, 일반적으로는 하드웨어로
처리하는 쪽이 고속이다. 사람이 버튼을 눌러 LED를 점등 시킨다…고하는 것처럼, 그다지 고속이 아닌 처리는 소프트웨어로도
충분히 처리할 수 있지만, ns급의 성능이 요구되는 처리는 하드웨어로 처리해야 할 것이다. 물론,
소프트웨어에서의 처리 성능을 높이기 위해, 한층 고속의 CPU를 사용하는 방법도 있다. 그러나 고성능의 CPU는
가격도 비싸고, 그것이 제품 가격에 반영되므로 어느 정도 성능의 CPU를 채용해야 하는가 하는 것은 사실 매우 중요한 문제이기도 하다.
임베디드 시스템용 CPU
임베디드 소프트웨어를 동작시키는데 있어서 빠뜨릴 수 없는 것이 CPU이다. 많은
vender로부터 임베디드 시스템용 CPU가 릴리스되고 있다는 사실은 독자 여러분도 알고 있을 것이다. 이「임베디드
시스템용」이라고 하는 의미는 무엇일까. 임베디드 시스템에 있어서는 다음과 같은 사항을 배려하지 않으면 안된다.
(1)
코스트 기판면적, 부품가격 등, 물리적인 코스트. 큰 칩은 임베디드 시스템에 적합하지 않다. (2)
소비전력 배터리 구동의 제품은 당연히 거치형에서도 저소비전력이 바람직하다(냉각팬 등은 고장의 원인이 되기도 한다). (3)
성능 처리 대상에 대해 충분히 빠른 속도여야 한다(특히 사람의 조작에 충분히 따라잡을 있을 정도). (4)
공급의 안정성 공장의 제어 시스템 등에서는 5년 또는 10년이라고 하는 장기간 사용되는 경우가 많다.
A/S하려고 했을 때 이미 부품이 없는 것은 곤란하다. 이러한 요구를 충분히 만족시키는 것이「임베디드 시스템용
CPU」인 것이다. 표 1에 임베디드 시스템용으로 불리는 CPU의 주된 것을 나타낸다. 임베디드 시스템이란, 앞에서 설명한 전기밥솥과
같이 간단한 것부터 DVD/HDD 레코더라고 하는 고기능의 것까지 다양하다. 그 때문에 성능이나 소비전력, 그리고
코스트에 따라, 여러가지 CPU가 각 제조사로부터 릴리스되고 있다.

또, 임베디드 CPU는 아니지만, 맨 아래에
최근의 PC에 사용되는 CPU를 들어 보았다. 특히, 소비전력에서는 임베디드용 프로세서는 매우 유리하다는 것을
수 있을 것으로 생각한다. 그러나 프로세서로서의 처리 능력은 PC용 프로세서보다 뒤떨어진다. 이것은
칩의 크기를 작게 함으로써 코스트다운을 꾀하기 위함과, 소비전력의 저감에 따른 trade-off에 의한 것이다. 임베디드
시스템은 특수하여 대부분 프로세서의 주변 칩은 미리 정해져 있는 경우가 많기 때문에 예를 들어, DRAM 컨트롤러나,
그래픽 컨트롤러라고 하는 하드웨어 로직을 탑재하고 있는 것을 많이 볼 수 있다. 이와 같은 어플리케이션을
겨냥한 프로세서 아키텍처를 취하는 것도 임베디드 프로세서의 특징이다.
|