임베디드 시스템(Embedded System) 정의

  • 하드웨어와 소프트웨어가 미리 정해진 특정한 기능을 수행하기 위해 결합된 시스템
  • 특정한 목적을 가지고 만들어진 프로그래밍 가능한 모든 컴퓨터
  • 컴퓨터와 달리 TV, 냉장고, 스마트폰 등은 각자의 기능을 수행하기 위한 MCU를 가지고 있으며, 이것들은 특수한 목적을 수행하기 위한 컴퓨터 이므로 임베디드 시스템이라고 할 수 있다.

 

임베디드 시스템의 구성요소는 하드웨어와 소프트웨어

하드웨어 : 마이크로 컨트롤러와 주변 회로가 PCB위에 장착되어있음

소프트웨어 : 주어진 입력에 따라 어떻게 처리해야할지 정의되어 있는 프로그램

 

1)하드웨어

프로세서 / 컨트롤러, 메모리, I/O 장치, 네트워크 장치, 센서, 구동기 등으로 구성

 

Processor

* 프로그램 명령어 처리기 

* 8bit/16bit/32bit & 64bit

* Arm계열, PowerPC계열, MIPS 계열 등

 

Memory

* 프로그램 및 data 저장

* RAM/ROM/FLASH memory

 

I/O device

* serial port, parallel port, USB, IEEE 1394A

 

Network device

* Lan(802.3, csma/cd), wireless lan(802.11, csma/ca)

 

2) 소프트웨어

컴퓨터 시스템에서 주요 소프트웨어는 펌웨어 프로그램, 디바이스 드라이버, 운영체제 (OS), 응용 프로그램으로 구분

 

2-1) 시스템 소프트웨어

시스템의 하드웨어를 관리하고 응용프로그램에게 시스템을 사용할 수 있는 효율적이고 안전한 인터페이스를 제공하는 소프트웨어(OS, 미들웨어, 디바이스 드라이버)

OS - Linux, Windows 10 Iot, QNX, AUTOSAR

Device Driver - 디바이스를 제어하기 위한 인터페이스 제공

 

2-2) 응용 소프트웨어

실제 필요한 기능을 수행하는 소프트웨어 스마트폰의 앱과 같은 기능을 수행하는 소프트웨어 (전화, SNS, 문자, 게임 등)

 

OS의 등장배경

시스템 규모가 커짐

임베디드 시스템이 해야 할 일이 많아지고 복잡해짐

순차적인 프로그램이 어렵게 됨 멀티 태스크 필요성 대두

임베디드 시스템에도 운영체제의 개념이 필요하게 됨

네트워크나 멀티미디어가 시스템의 기본으로 자리 잡음

-Network, GUI, Audio, Video

 

Real Time System

실시간 시스템의 정의

  • 정해진 시간 내에 시스템이 결과를 출력하는 적시성을 가진 시스템
  • 주어진 작업을 빨리 처리하는 것이 아니고 정해진 시간(deadline)을 넘어서는 안된다는 뜻
  • 주어진 입력(Event)에 대해 정해진 시간 내에 행동해야하는 시스템

적시성(Timeliness)이란? 열약한 환경에서도 데드라인이내에 논리적으로도 정확한 출력 값을 산출해 내는 것

Deadline이란? 반응에 요구되는 시간의 한계 값

 

Real Time System의 분류

 

Hard Real-Time System

  • 제어작업이 deadline을 어기는 경우 시스템에 심각한 영향을 주는 time-critical 속성을 지닌 시스템

예) 원자격 발전소 제어, 화재 발생 검출기, 항공기, 우주 왕복선, 자동차 등

 

Soft Real-Time System

  • Deadline을 어긴 단위 제어 작업의 무효화로 시스템의 평균적 성능에 미세한 영향을 주는 시스템                      예) 컴퓨터, 정보기기, 네트워크 관련기기 등

 

마이크로 프로세서 & 마이크로 컨트롤러

마이크로 프로세서 : CPU코어만을 칩으로 구성한다.

마이크로 컨트롤러 : CPU코어에 여러 종류 및 크기의 메모리, 네트워크 입출력 장치 등 다양한 주변장치들까지 포함

 

Cortex A/R/M 으로 제품군 세분화

ARM은 새로운 아키텍쳐를 개발하여 고속연산에 적합한 구조의 Cortex-A, 실시간 제어용 Cortex-R, 저전력 통합기기 제어용 Cortex-M을 발표했다.

2003년 CPU의 주파수를 높이는데 한계를 만나게 되자 ARM은 멀티 코어 설계 기술을 가지고 있던 NEC와 협력하여 ARM MPcore를 발표했다.

 

Advanced Micro-controller Bus Architecture

ARM에서 주도하는 Bus 규격

ARM을 SoC에 CPU로 채택하면 ARM의 성능을 최대화 하는게 좋기 때문에 ARM사가 Open해 놓은 규격

 

MC내부에서 보게되면, BUS의 통신 방식을 잘 이해할 수 있고, 지켜줄 수 있는 것이 필요하게 되는데, 이것을 Bus Interface라고 부르고, 이 Bus Interface는 Bus위에 Data를 어떻게 전송할 거냐, 어떻게 받을거냐를 control해주는 interface이다.

 

컴퓨터의 기본 구성 요소

  1. 입력장치
  2. 출력장치
  3. 중앙처리장치(CPU)
  4. 주기억장치(Memory)
  5. 보조기억장치(Storage)

 

CPU는 크게 3부분으로 구성

  • CU (Control Unit) - 프로그램에 따라 명령과 제어 신호를 생성 정보와 데이터의 흐름을 결정하고, 각종 장치의 동작을 제어
  • Register - CPU에서 데이터를 처리하기 위해 일시적으로 저장되는 장소 (CPU Clock으로 동작한다)
  • ALU (Arithmetic Logic Unit) - 산출 연산과 논리 연산을 수행하는 디지털 회로

 

hello 프로그램을 만들면 그것은 disk 안에 저장이 된다. 이걸 실행하면 BUS를 통해서 disk에서 메인 메모리쪽으로 데이터를 이동시켜 로드 시킨다. 그러면 CPU는 PC(프로그램 카운터)를 프로그램이 로딩되어 있는 메모리의 주소를 가리키고 거기서부터 인스트럭션을 한 줄씩 CPU로 가져와서 명령어를 디코딩하고 그걸 실행한 후 그 결과를 메모리에 저장하는 방식으로 프로그램을 실행해 나가게 된다.

 

마이크로 프로세서의 구조

CPU는 최소한의 동작을 위하여 CU, ALU 이외에도 Program Counter, IR, Address Register, Data Register, ACC 등을 포함하고 있는 게 일반적인 구조.

 

CPU내부에는 Processor 내부의 기억장소인 특정한 목적의 Register가 있다.

  • PC : Program Counter, CPU가 현재 실행하고있는 instructuin의 주소를 가리킴
  • IR : PC가 가리키는 Instruction의 주소에서 읽어온 instruction을 담아두는 기억장소
  • Address Register : 현재 사용하는 Data를 access하기 위한 data의 주소를 가리키는 값을 담아두는 기억장소
  • Data Register : Address Register가 가리키는 주소의 실제 값
  • ACC : 특수한 register로서, 연산에 사용되는 값들을 저장하며, 연산의 결과값을 잠시 저장하는 일이 많으며, 외부 사용자가 직접 access할 수 있는 register가 아니고, CPU 혼자 독식하는 register

 

Register들 이외의 기본적인 CPU의 Component들

  • Decoder : IR에 가져온 instruction을 해석하여 CU에 넘김
  • CU : Central Unit, Decoder에서 받아온 것을 각종 제어 신호로 변환하여 제어신호를 발생 시킴.
  • ALU : 산술 연산을 담당하는 unit

동작과정

  1. PC가 Address BUS를 통해 저장된 프로그램의 내용을 Memory로 로딩 시킨다
  2. 그런 후 memory 의 내용중 한줄의 내용(Instruction + Data)을 Data Bus를 통해 가져와서
  3. Instruction Decoder를 통해 Instruction 과 Data를 분리하여
  4. IR 과 Register Bank로 이동시키고
  5. ALU를 통해 연산을 수행한다

CPU는 항상 정해진 규칙에 의해서 일을 한다

  • Fetch : PC를 읽어서 메모리에서 해당 주소의 명령어를 읽어온다. 읽어온 명령어를 IR(Instructuin Register)에 저장
  • Decode : IR에 있는 명령어를 해석한다.
  • Read : 실행에서 사용할 데이터를 읽어온다.
  • Excute : 해석된 명령어에 맞는 제어신호를 보냄. 실제로 명령어 실행

 

PipeLine 구조의 명령어 처리

 

CISC 방식의 마이크로 프로세서

  • CISC (complex Instruction Set Computer)
  • 가변길이 명령어를 사용한다. (1byte~8byte)
  • 프로그램 내장방식으로 설계되어 있다.
  • 명령어 해석기가 마이크로 프로그램(마이크로 코드)으로 구성되어 있다.
  • 명령어가 가변적이고 복잡하므로 CISC 방식이라고 한다.
  • 인텔, AMD가 대표적인 예이다.
  • CISC 방식의 마이크로프로세서의 IU에서 명령어 디코더가 마이크로 프로그램으로 설계되어 있어 실행 속도가 RISC에 비해 느리다.

 

RISC(Reduced Instruction Set Computer) 방식의 프로세서

  • 명령어의 고정된 고정길이 명령어 사용
  • 일반적으로 하버드 구조로 구성
  • 명령어 개수가 적다
  • 속도가 빠르다. 명령어의 단일 사이클 실행
  • 명령어 디코더가 하드와이어로 구성되어 있다.
  • ARM, MIPS, SPARC이 대표적인 예

RISC CPU는 고정된 길이의 명령어를 사용하고 명령어의 종류가 미리 정해져 있으므로 해석 속도가 빠르고 여러 개의 명령어를 처리하기에 적합하다는 장점이 있다.

 

하버드 구조(Harvard architecture)

하버드 구조의 컴퓨터들은  명령어들을 저장하는 프로그램 메모리와 데이를 저장하는 데이터 메모리를 나누어서 서로 다른 영역에 위치하게 하고 프로그램을 수행할 때에 OP_CODE1이 실행될때에 데이터 메모리에 저장된 OPERAND1을 읽어와서 실행하는 구조로 되어있다.

 

CISC 와 RISC 비교

구분 CISC RISC
명령어 길이 가변길이 명령어(1~8바이트) 고정길이 명령어(4바이트)
명령어 개수 256개 이상 약 30여개
명령어 해석기 마이크로 프로그램 하드와이어
설계 방식 프로그램 내장 방식 하버드 구조
속도 (상대적으로) 느리다 (상대적으로) 빠르다
명령어 실행 사이클

명령어 마다 다름

(4~16사이클이상)

평균적으로 1 사이클

 

 

ARM mode와 THUMB mode

THUMB mode는 ARM mode의 반쪽 version이라고 볼 수 있다.

16bit bus line을 가진 Memory에서도 효율적으로 사용할 수 있도록 ARM 명령어들을 16 bit로 압축한 명령어 set을 발표하는데 그것이 ARM의 일부분인 THUMB인 것입니다.

 

 

자율주행차 구현을 위한 기술들

기존 자율주행 연구에서 기계학습의 역할

- (영상) 입력을 해석하는 제한된 용도로만 사용

영상입력 -> 인식 알고리즘 -> 제어 알고리즘 -> 제어 명령

 

인식알고리즘 : 사물인식, 추적, 차선 인식

제어 알고리즘 : 차선 이탈 경고(LDW), 전방 추돌 경고 (FCW), 지능형 순향제어 (ACC), 자동 긴급제동장치(AEB

 

Caller Sabed Register와 Callee Saved Register

Caller Sabed Register

Callee가 마음대로 사용할 수 있는 레지스터. 함수 호출 후 복귀 했을 때 위의 레지스터 값이 변하지 않아야 한다면 함수 호출 전에 caller는 레지스터를 백업해야 한다.

Callee Sabed Register

Caller가 마음대로 할 수 있는 레지스터. Callee는 이들 레지스터를 사용하기 전에 반드시 백업한 후 사용해야 하며 이전 함수로 복귀하기 전에 값을 복구해 주어야 한다.

 

함수의 호출 : 스택 프레임

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
int main(void)
{
    int a=1;
    int b=2;
    fct1();
}
 
void fct1(void)
{
    int c=3;
    int d=4;
    fct2();
}
void fct2(void)
{
    int e=5;
    int h=6;
}
http://colorscripter.com/info#e" target="_blank" style="text-decoration:none;color:white">cs

 

 
stack ↑
 
h=6
e=5
d=4
c=3
b=2
a=1

 

e,h stack frmae

 

 

스택 프레임(Stack Frame) 함수 호출 시 해당되는 메모리 블록 (지역변수의 선언으로 인해 할당되는 메모리 블록)

fct1() 함수가 호출되면서 함수 내부에 선언된 변수 c,d가 스택에 할당, 이 메모리 블록을 fct1()함수의 스택 프레임이라 한다. fct1()함수가 반환되면 스택 프레임도 반환된다.

main()의 스택 프레임 변수 a,b fct1()의 스택 프레임 변수 c,d fct2()의 스택 프레임 변수 e,f

 

함수의 호출 : 스택 포인터

 

r0
r1
r2
r3
r4  ir
r5  sp
r6  lr
r7  pc

 

시작 sp 위치 a=1

fct1 호출 전 c=3

fct2() 호출 전 e=5

최종 sp 위치 7번째블록 (h=6 윗블록)

----------------------------------

fct2 반환후 sp 위치 : 7번째블록 (h=6 윗블록) -> e=5

fct1 반환후 sp 위치 : e=5 -> c=3

 

SP 레지스터 : 스택 프레임을 가리키는 레지스터

sp 레지스터 값은 변수가 하나 하나씩 할당될 때마다 증가하면서 다음 변수가 할당될 메모리 위치를 가리킨다.

 

호출한 함수가 종료될 경우, 스택 프레임 단위로 sp 레지스터 값을 이동시켜야 한다.

(함수 안에서 선언된 변수들을 모두 변환해야 하기 때문)

 

함수의 호출 : 프레임포인터

프레임 포인터 레지스터 되도랑감 ( 함수호출 전 )

sp 위치를 저장하는 레지스터

 

함수fct1 호출시 sp 레지스터에 저장된 값을 fp 레지스터에 저장

함수 fct1 반환시 fp에 저장된 값을 참조하여 다시 sp 레지스터에 되돌린다.

 

즉, 함수 호출 이전 위치를 sp가 가리키게 된다.

(호출한 함수의 스택 프레임이 반환된 셈)

 

프로세서모드 sbs soc 리눅스장단점 암바 인터럽트 xxxxxx

------------------------------------------------------------------------------------------------

마이크로프로세서 컴퓨터 기본구조 

파이프라인관련 시스크 리스크 차이점 

하버드 구조

자율주행 기능

함수호출 스택프레임,포인터

 

+ Recent posts