본문 바로가기
학교 공부/내장형 시스템

[내장형 시스템] 임베디드 시스템이란?

by 그적 2020. 9. 4.

<임베디드 입문에 앞서 전반적인 이야기>

임베디드 시스템
다른 시스템에 내장되어 해당 시스템의 기능 수행을 담당하는 컴퓨팅 시스템이다.
  특정 업무를 수행하기 위해 H/W와 S/W를 밀접하게 통합한 컴퓨팅 장치

1) 다른 시스템에 내장
2) 컴퓨팅 시스템(CPU, 메모리, 입출력 장치, 임베디드 SW가 내장)
3) 특정 기능 수행
     - 범용 시스템이 아님(특수 목적을 수행하기 위해 만들어짐)
     - 수행 기능에 특화된 H/W 및 S/W 사용
4) 임베딩하는 시스템에 따라 임베디드 시스템의 요구사항이 달라짐
     - 배터리를 이용하는 휴대폰의 경우, 전력 소모의 최소화가 중요함
     - 원자로 제어 시스템에 경우에는 실시간 처리가 필요함

 

임베디드 시스템은 대표적으로 두 부분으로 구분할 수 있다.
 ** 무조건 아래 두 분류로 나뉘는건 아니다.
① Real-Time System
: 외부 이벤트에 대해 정해진 시간 내에 행동 또는 반응해야 하는 시스템
  - 기능 정확성 및 시간 정확성을 보장한다.
  - 경성 실시간 시스템, Hard Real-Time System
  - 원자로 제어기, 미사일 유도 장치


Soft Real-Time System
: 외부 이벤트에 대해 즉각적인 반응을 요구하지 않는 시스템
  - 연성 실시간 시스템  

  - 스마트폰 

 

 

임베디드 시스템 하드웨어 구성
 = 전용하드웨어(Processor, Memory, I/O)  + 전용소프트웨어(Application, System S/W, Operating System)

< Embedded System - HW Basics편 - >

- 프로세서
 : 명령어, 기계어 들을 해석하여 지시하는 방식, 내부 레지스터를 통해 데이터를 읽어들이게 하여 CU(Control Unit)을 통해 제어신호를 내부 버스로 보낸다. 따라서 각 명령어에 해당하는 ALU로 들어간다.

- 레지스터
 : 프로세서 내부에서 데이터를 일시적으로 보관하는 기억 장치
  범용 레지스터, 제어 레지스터, 상태 레지스터

- 연산 장치(ALU) : 데이터에 대한 수학적 연산 수행

- 제어장치(CU)
: 명령어를 해석하고 실행하며, 이를 위한 내부 데이터 흐름 제어를 담당한다. 실제 과정은 프로그램 카운터(PC)가 기억장치(즉, 메모리)에 access 하여 명령어를 가져온 후, IR(명령어 레지스터)를 통과하고 명령어 해독기를 지나, 제어 신호를 발생시킨다.

- 버스(Bus)
 : 디지털 회로에서 시스템의 여러 장치를 연결하는 경로
   1) 내부버스 : ALU 사이에서 연결
   2) 외부버스 : 프로세서와 I/O 장치를 연결  

- SoC(System on Chip) : 반도체 부품이 하나로 직접 되는 기술
- MCU(Micro Controller Unit), MPU(Micro Processor Unit) : 내장한 SoC
- DSP(Digital Signal Processor) : 주로 영상 처리를 위해 사용됨

- CISC(Complex Instruction Set Computer) // 명령어 복잡, 메모리 참조 연산, 성능 낮다, 배터리 소모 빠름
- RISC(Reduced Instruction Set Computer) // 명령어 단순, load/store 구조, 성능 높다, 배터리 소모 느림
  ** Q. 임베디드 시스템에 적합한 프로세서 구조는? 때에 따라 다르다.

더보기

메모리 종류
(종류) - 휘발성 메모리 : DRAM, SRAM => RAM 
          - 비휘발성 메모리 : ROM, Hybrid 메모리(FLASH) 

(용도별 종류)  - 주기억 장치 : 프로그램이 실행되는 동안 프로그램과 데이터 저장, DRAM
                       - 보조 기억 장치 : 주기억장치보다 빈번하게 사용되지 않는 프로그램과 데이터 저장, HDD, SD, MMC
                       - Cache : 주기억장치의 접근 속도를 빠르게 하기 위해서 프로세서 주변에 배치된 소용량 메모리, SRAM
                                      // 주기억장치와 프로세서 사이에 저장된다. 아무리 빠른 메모리 일지라도 프로세스보다 느림

- FLASH 메모리 : 임베디드 시스템에서 사용하는 메모리
 1) Wear-leveling
  : 메모리를 일차원으로 펼치면 벡터로 보인다. 특정 위치를 쓰거나 읽으면 고장 날 수 있기 때문에 메모리를 골고루 쓰게 하도록 해야한다.
 2) Out-place update 
  : 반드시 기존에 쓰여있던 메모리를 지우고, 데이터를 넣어야 한다.(업데이트가 느리다.)
 3) 블록 단위로 동작한다.
 4) MCU는 동시에 쓸 수 없다. // 일시적으로 다른 위치에 저장해야한다.

 (종류) - NOR flash : 병렬연결, code 저장
            - NAND Flash : 직렬연결, cheap, 저장용량 high, data저장
  => 1,2번 특징 때문에 FTL, JFFS, JFFS2 등과 같은 일반적인 파일 시스템을 사용할 수 없다. 

 

- Cache메모리
 : 메인 메모리부터 읽어들인 데이터를 임시 저장
   data inconsistency 발생 가능(똑같은 데이터를 기준으로 메모리 내용은 10이고, 캐시는 7이라고 한다.)
   따라서 일치하지 않게 되는데 이를 해결하는 방법은 아래와 같다.
 1) Write-Through : 캐쉬를 업데이트할 때마다 같이 업데이트를 한다. -> 속도가 느려질 수밖에 없다.
 2) Write-Back : 캐쉬가 replace 될 때 캐시에 있던 내용을 메모리에 업데이트한다.

 

 


입출력 장치 제어
: 입/출력 장치 제어를 위해서 address 할당이 필요하다.
  (Address 할당 방식)
 1) IO-Mapped : 메모리 영역과는 별도로 IO 주소 공간 할당, 명령어로 구분, 구분 신호 존재, x86
 2) Memory-Mapped : 메모리 영역의 일부를 IO장치로 사용, 주소로 구분, 회로에서 구분, ARM

입출력 장치 자원 관리
- polling : 주기적으로 disk controller를 검사
- interrupt : 현재 진행중인 명령을 멈춘다. -> multitasking 기능
- DMA : CPU 개입없이 입/출력 장치와 기억 장치 사이에 데이터를 전송
  ** DMA Controller가 필요함. 프로세서도 시스템 버스를 사용하고 있을 때, 시스템 버스를 사용하지 않도록 함.

 


interrupt 구현     // 추후 작성할 내용
- mask 레지스터
- pending 레지스터

 Q. 인터럽트를 어떻게 처리하는가?  A. 인터럽트를 처리를 프로세스에 요청
 Q. 누가함?  A. Interrupt Vector(ISR 또는 ISR의 위치가 저장된 메모리 공간 : 인터럽트를 처리해주기 위한 코드)
 Q. 어떤 인터럽트인지는 어떻게 아는가?
  - Fixed Interrupt : interrupt 발생 시 처리할 주소가 지정되어 변경되지 않음(인터럽트 벡터가 인터럽트 서비스 주소 자체)
  - Vectored Interrupt : 일반적인 마이크로 프로세서(인터럽트 벡트 주소 안에 interrupt 서비스 루틴의 주소가 존재)

댓글