MCU Micro Controller Unit
- 전자제품에사용되는 제어 유닛
- 주위 주변장치 GPIO, UART 등 제어함
- CPU보다 저전력, 저성능, 저럼, 많이사용
- 구성 : 메모리, 레지스터, 페리페럴, 버스 등으로 구성
참고 : https://www.hackerschool.org/Sub_Html/HS_University/HardwareHacking/04.html
PCB Printed Circuit Board
- 녹색 전자 회로 기판
- 이 위에 MCU와 다른 전자 소자 등이 올라감
IC Integrated Circuit
- 집적화된 회로
- 전자 부품, 소자들을 모아 하나의 회로에 집적화한것
- 아래의 그림은 IC칩의 패키지들. IC칩 내부 소자들을 보호하기 위한 플라스틱 케이스
- 아래의 그림은 다이칩 die chip : 실제 패키지 내부 IC
MCU 내부 장치
1. 버스
- 메모리, 페리페럴, CPU 사이 데이터 주고받기위한 공용 통로.
- Control bus 제어버스, Address bus 주소버스, Data bus 데이터버스 등 존재
- MCU가 제어 명령, 주소, 데이터 등을 전송시키는 시간을 조절하여 데이터간 충돌을 회피
2. 메모리
- 기억 장치. 휘발성 비휘발성에따라 RAM과 ROM으로 구분
- 휘발성 : 전원이 없을때 데이터가 날아감 -> RAM
- 비휘발성 : 전원이 없을때 데이터 보존 -> ROM
2.1 ROM Read Only Memory의 종류
- PROM Programmable ROM - 프로그래밍 가능한 메모리. 한번만 쓰기가능
- EPROM Erasable Programmable ROM - 자외선으로 쓰고 지우는게 가능한 PROM
- EEPROM Electric EPROM : 전기적 충격으로 쓰기 읽기가 가능한 ROM
=> 대표적인 EEPROM으로 Flash Memory가 존재
2.2 RAM Random Access Memory
- SRAM, DRAM, SDRAM이 존재
- SRAM Static Random Access Moery
-> 트랜지스터만으로 만든 메모리, 고속, 고가 소형화 힘듬
- DRAM Dynamic RAM
-> 캐퍼스터와 트랜지스터로 구성된 메모리
-> 캐퍼시터를 사용한 만큼 데이터 손실을 막기위해 충전하는 Refresh Time 필요. 저가
- SDRAM Synchronous DRAM
-> 동기식 메모리. 외부에서 공급해주는 클럭에 따라 동기화
-> 클럭 신호선이 존재하여 데이터 처리 시 지연시간 latency 필요
- 아래의 그림은 SRAM의 소자
3. 메모리맵
- 대부분의 MCU의 데이터 시트에서 제공하는 정보로 할당된 각 메모리의 주소와 용량을 알 수 있음.
- 아래은 하드웨어 구성을 위한 메모리맵으로 SRAM 영역이 0x2000 0000 ~ 0x3FFF FFFF임을 알 수 있음
- 아래의 그림은 소프트웨어적으로 분리된 메모리 맵
스택 영역 stack : 지역변수, 함수 포인터
힙 영역 heap : 동적 할당된 메모리 공간
코드 영역 code : 명령어 등이 저장됨
데이터 영역 data : 전역 변수들이 저장
4. 레지스터 register
- MCU 내부에 존재하는 가장 빠른 메모리. 비싸 페리페럴이나 CPU 내부에 작은 공간을 가짐
- 프로그램 카운터 PC Program Counter, 스택 포인터 SP Stack Pointer, 명령 레지스터 IR Instruction Register, 데이터 레지스터 DR Data Register, AR Address Register, 범용 레지스터 General Register 등 존재
4.1 레지스터 종류
- 프로그램 카운터 : 다음에 실행할 명령어의 주소를 저장하는 레지스터
* 아래의 그림은 프로그램의 실행과정으로 여기서 프로그램 카운터가 다음에 실행할 명령어 주소를 가지고 있음
=> 프로그램 카운터의 값이 실행할 명령어 위치가 되어 찾아감
다음 프로그램 카운터값은 명령어 크기만큼 +됨.
32비트 컴퓨터 즉, 4바이트 크기라면 0x0000 -> 0x0004 -> 0x0008
- 스택 포인터
-> 함수 호출과 관련된 정보들을 스택 자료구조로 저장하는 공간.
-> 함수가 호출되고 종료후 돌아갈 지점과 데이터들을 관리
- 명령어 레지스터 : 명령어들을 담는 레지스터
- 데이터 레지스터 : 데이터들을 담는 레지스터
- 범용 레지스터 : 프로그램 카운터, 스택 포인터, 명령/데이터 레지스터 제외한 범용 목적의 레지스터
5. 메모리 관리 유닛 MMU Memory Management Unit
MMU
- 메모리 공간에 프로그램을 로드하여 사용중에 충돌이나 문제를 막기위한 HW.
* 동일한 문제를 막기위한 SW로 OS가 있음.
MMU 기능과 구성 요소
- 기능 : 가상 메모리 Virtual Memory와 실제 Physical memory 사이 변환 및 메모리 보호
- 가상 메모리 : 가상의 메모리로 물리적인 메모리보다 큼
- 물리 메모리 : 실제 존재 존재하는 메모리
가상 메모리, MMU를 사용하는 이유
- 소프트웨어는 자신이 사용할 공간을 자기가 고르지 못하고 메모리 관리를 위해 운영체제가 배정해줌
- 프로그램들은 가상 메모리의 0x0000 0000에서 시작하지만 실제로 MMU가 물리 메모리의 주소로 변환해줌
- 여러 프로그램들이 초기 지점인 0x0000 0000에서 시작하고, 물리 메모리 상에서 겹쳐지지 않게 하기 위함
6. 캐시 메모리
캐시 메모리
- CPU는 매우 빠르게 동작하지만, 메모리는 CPU에 비해서 상대적으로 느림
- 중간에 데이터를 미리 모아놓기 위한 공간으로 캐시메모리 사용.
- 캐시메모리는 레지스터보다 크나 메모리에 보다 매우 작음
- 아래의 그림은 CPU와 캐시 메모리, 메모리 사이의 구조를 보여줌
7. 페리페럴 Peripheral
페리페럴
- MCU 내부에 존재하는 주변장치들, 주변장치들을 사용하기 위한 단자
- 대표적으로 통신 페리페럴로 UART, SPI, I2C 등이 존재
- 아래의 그림은 페리페럴들의 예시
UART Universal Asychronous Receive Transmiter
- 범용 비동기 수신 발신기로 송신용 Tx와 수신용 Rx 신호선 2개로 구성됨
- 비동기 인 만큼 클럭에 상관없이 통신은 가능
- 아래의 그림은 UART 통신 시 연결
- 아래의 그림은 UART 통신시 데이터 프레임(형태)
RS-232
- 비동기 통신 중 길이와 속도를 맞추기 위해 RS-232라는 표준이 제정됨
=> RS-232로 특정 규칙에 따라 UART 통신이 안정적으로 수행됨
- 아래의 그림은 RS-232 핀아웃 별 의미
- 아래의 그림은 RS-232 통신 시 데이터 프레임
명령어 실행과정
- 명령어 실행 사이클이라도 함
- 메모리에서 명령어를 가져오고 fetch, 명령어를 해독 후 decode, 실행 excution하는 과정
파이프라인
파이프라인 구조
- 명령어 실행 과정으로, 패치 -> 해석 -> 실행 -> 저장 으로 정리할 수 있음
- 이를 고속으로 하기 위한 구조를 파이프라인.
파이프라인과 싱글라인의 차이
- 기존의 싱글 라인 구조는 하나의 명령어가 종료될때까지 다음 명령어가 대기
- 파이프라인 구조에서는 첫 명령어가 다음 단계로 넘어가면 새로운 명령어가 들어와 여러 명령어가 동시 수행
- 아래의 그림은 파이프라인 구조 예시
인터럽트
인터럽트란
- 프로그램 수행시 중간에 처리해야하는 상황과 동작 -> 예외처리/인터럽트라 부름
- 인터럽트 발생시 인터럽트 종류에 따라(인터럽트 벡터 테이블을 참고하여) 정해진 명령으로 PC의 값이 변경됨
- 아래의 그림은 인터럽트 벡터 테이블로 인터럽트 종류에 따라 수행해야할 동작들의 주소를 알려줌
인터럽트 관련 용어
- 인터럽트 벡터 :인터럽트를 처리하기위한 PC값으로 벡터 테이블에서 프로그램 카운터 값을 가져옴
- 인터럽트 핸들러 ISR Interrupt Service Routine : 인터럽트 발생시 처리해야할 콜백 함수
- 아래의 그림은 인터럽트 처리 과정
을 보여줌
'컴퓨터과학 > 컴퓨터, OS' 카테고리의 다른 글
컴퓨터 개론 - 1. 컴퓨터와 자료 (0) | 2020.09.07 |
---|---|
HWSW - 2. 컴파일 (0) | 2020.08.06 |
os만들기 - 25. GDT와 IDT 다루기 (0) | 2020.08.04 |
os만들기 - 24. 변수 표시하고, 마우스 띄우기 (0) | 2020.08.03 |
os만들기 - 23. 문자(열) 처리 (0) | 2020.08.03 |