임베디드 시스템


1 정의

넓은 범주에서 정의하자면, 일반적인 목적으로 만들어진 컴퓨터가 아닌, 특수한 목적을 가지고 만들어진 프로그래밍 가능한 모든 컴퓨터를 의미한다. PC는 임베디드 시스템을 구축하는 데 사용되긴 하지만, 그 외에도 수많은 용도로 사용될 수 있으므로 그 자체로 임베디드 시스템은 아니다. 하지만 컴퓨터와는 달리 어떤 특수한 목적만을 수행하기 위해 만들어진상 컴퓨터들, 예를 들면 전화기, 냉장고, TV, FAX 등은 각자의 기능을 수행하기 위한 MCU를 가지고 있으며, 이것들은 특수한 목적을 수행하기 위한 컴퓨터이므로 임베디드 시스템이라고 할 수 있다.

2 특징

성능은 일반 목적 컴퓨팅과 임베디드 컴퓨팅 양 쪽 모두에게 중요한 요소이긴 하지만, 임베디드의 경우 그것 말고도 신경써야 할 것들이 많다. 반대로 말하자면, 임베디드 시스템은 일반 목적 컴퓨터에 비해 더 정교하게 작동해야 한다는 뜻이다.
마이크로프로세서에 의해 수행되는 명령은 아주 정교해야 하는 경우가 있다. 예를 들어 자동차를 컨트롤하는 마이크로프로세서의 경우, 차의 연비를 높이면서 오염을 최소화함과 동시에 차의 퍼포먼스를 높이기 위한 복잡한 필터링을 수행해야 한다.
여러 선택지를 가진 유저 인터페이스를 컨트롤하기 위해 자주 사용된다. GPS를 사용한 네비게이션이 복잡한 유저 인터페이스의 좋은 예이다.
여기다 임베디드 시스템을 더 복잡하게 만들기 위해(?) 일정 시간 안에 수행되어야 하는 데드라인을 만들기도 한다.
  • 실시간
많은 임베디드 시스템의 경우 실시간으로 수행되는 것이 중요한데, 만약 어떤 데이터가 데드라인 안에 준비되지 못한다면 시스템이 멈춘다. 실제로 1997년 화성에 착륙한 탐사선 마스 패스파인더는 착륙 후 화성의 기상 정보를 지구로 전송하는 과정에서 우선 순위의 역전이 생기는 바람에 데이터들이 제 시간 안에 처리되지 못했고, 이상을 감지한 시스템은 스스로를 리셋했다. 이후 다시 기상 정보를 수집해 지구로 보내는 과정에서 같은 일이 반복해서 발생하면서 탐사 임무를 제대로 수행하지 못한 일이 발생한 적이 있다. #1
  • 멀티레이트(Multirate)
이 실시간 작업은 하나만 수행되는 게 아니라 여러개가 동시에 일어나기도 한다. 임베디드 시스템은 어떤 것들은 slow rate로, 어떤 것들은 fast rate로 수행되도록 동시에 컨트롤해야 한다. 멀티미디어를 예로 들면, 스트리밍되는 오디오 부분과 비디오 부분은 서로 rate가 다르지만, 반드시 싱크로나이즈 되어야 한다.
  • 최적화(optimization)
전자제품이라던가 여러 기계들이 고유의 목적을 위한 마이크로프로세서를 가지고 있게 되었지만, 그들이 가진 컴퓨터 능력의 한계가 있을 수 있다. 마이크로프로세서가 단가 문제 등으로 상대적으로 작은 크기이거나 기능이 적거나 할 경우. 여러 가전제품들에 임베디드 시스템을 넣기 위해선 프로그래밍의 최적화가 필요하다. 이 때문에 아직도 어셈블리어가 현역에서 돌아가는 것이며, 더 성능 좋은 알고리즘과 메모리 등의 자원 역시 절약의 필요성이 크다. 이 때문에 사용 가능한 프로그래밍 언어에도 제약이 많을 수 있다. 요즘이야 자바를 돌리는 머신이 구현된 보드도 나온다지만, 대체로 대부분의 제품들은 보통 어셈블리어 혹은 C언어 정도를 쓴다.