1. ARM은 뭘까
ARM을 배울건데 ARM은 뭘까, 팔인가?
그게 아니라 ARM는 임베디드 기기에 많이 사용되는 RISC 프로세서이다.
2. ARM의 구성
ARM의 큰 틀은 아래로 구별할 수 있다.
1) ARM코어
명령어 해석하고, 연산하는 녀석. (Databus로 data를 받아옴)
2) Data
맞다
그 데이터다
근데 여기서 Databus의 종류로 ARM 아키텍쳐가 아래의 2가지로 나뉜다.
(1) 폰 노이만 아키텍쳐
(2) 하버드 아키텍쳐
3. 폰 노이만 아키텍쳐
- 일반 data와 명령어가 같은 bus를 통해 공유된다.
즉, 메모리가 데이터도 저장하고, 명령어를 구별없이 저장할 수 있다.
- 구조는 다음과 같다.
메모리가 2가지 종류의 정보를 읽어올 수 있는데, 1개의 bus를 가지고 동작한다.
- 버스가 1개밖에 없으므로,
명령어를 읽어올때 데이터를 읽어올 수 없고, 데이터를 읽어올때 명령어를 읽어올 수 없다. ( 그동안엔 bus가 사용중이므로 )
- 버스가 1개밖에 없으므로,
구조가 단순하다.
3. 하버드 아키텍쳐
- 폰 노이만과 달리, Data용 버스와 명령어용 버스가 분리되어 있는 형태이다 (버스가 2개)
- 모양은 다음과 같다.
- ALU가 CPU에서 연산을 위해 명령어와 데이터를 동시에 서로다른 버스로 액세스가 가능하다.
4. 폰 노이만 vs 하버드
딱봐도 하버드의 압승이다.
- 하버드 아키텍쳐로 설계하면, 명령어처리를 끝내자마자, 다른 데이터를 읽어와야해도 다음 명령어를 버스로 바로 호출가능하다.
그래서 처리가 폰 노이만보다 빠르고 대부분의 장치에서 하버드 구조를 사용한다.
===
5. PipeLine은 ARM과 주제가 조금 머므로 생략.
(알아서 정리합시다!)
6. Instruction set에 따른 컴퓨터 아키텍쳐의 분류.
방금 폰 노이만과 하버드 구조는, Data bus를 어떻게 사용하느냐에 따른 구별이었고
이번엔 명령어 set에 따른 구별이다.
- CISC (Complex Intruction Set Computer) : 이름부터 Complex인거보니 명령어 셋이 복잡한가 보다.
- RISC (Reduced Instruction Set Computer) : 이름에 Reduce가 있는거 보니 양이 적은 명령어 셋인거 같다.
7. CISC
- 전통적인 명령어 처리방식이다.
- 명령어 주소와, 주소모드가 많다. => (구조가 복합해짐)
- 명령어가 복잡해서 명령어 해석에 큰 비용이든다.
- Hw에 의존적으로 명령어를 처리한다. => (전력소모가 큼)
- 레지스터 수가 적다. (적은 register로 연산해야해서 메모리접근이 늘어남 => 비효율적)
- 고성능을내기가 어렵다. 오래걸리니까!
8. RISC
- 명령어의 개수를 줄임으로써 hw구조를 보다 간단하게 설계함
- 고정길이의 명령어로 명령어 해독시간을 빠르게함.
- register가 많게해서 메모리접근 횟수를 줄임 (32개!)
- 메모리접근은 load,stote같은 전용 명령어로 제한 => 회로의 단순화, 불필요한 메모리 접근방지. (그래서 load-store 구조라고도 불림)
- Sw에 의존적인 명령어 처리 (컴파일러 말하는거임.) => Hw의존일때보다 적은 전력소모 => 임베디드 프로세스에 적합
- PipeLine Execution , 파이프라인 형식으로 동작함. => clock cycle이 줄어듬.
9. CISC vs RISC
- CISC와 RISC의 연산비교
RISC가 CISC에 비해 라인이 길다.
그래서 더 나빠보일 수 있는데, Load, Store 명령어를 사용해야 메모리에 접근할 수 있기 때문이다.
CISC는 명령어 1개에서 가능해서 저렇게 짧은거다.
실제로는 RISC가 더 빠르다
==
10. ARM 프로세서
지금까지 ARM의 정의와, 특정 기준에 따른 컴퓨터 아키텍쳐에 대해서 알아보았다.
위의 RISC가 바로 ARM에 사용되는 아키텍쳐이다.
이제 본격적으로 ARM에 대해 알아보자.
- 구성
1) ARM Core
2) MMU/MPU
3) Caches
4) Virtual Address
(참고) Virtual Address 가상주소
한정된 메모리 자원을 효율적으로 이용하기 위해 관리되는 가상메모리주소,.
데이터나 명령어는 가상주소를 할당받고, CPU의 MMU를 통해 실제 물리적 주소로 맵핑되어 메모리에 액세스함.
- Controller
ARM에 사용되는 Controller는 2가지가 있다.
1) Memory Controller : CPU와 메모리 사이 data를 관리
2) Interrupt Controller : 말 그대로 인터럽트 관리.
- 주변장치(Peripherals)와의 연결
주변장치, I/O장치와의 data교환을 위해서는 별도의 I/O 장치 주소공간을 할당해 줘야한다.
일반적으로 I/O에 특별히 사용되는 명령어를 I/O special 명령어라고 하는데, 따로 주소공간을 할당해서 거기다가 저장해준다.
load/store같은건 메모리에서 data근처에 저장될 수 있다. MMU가 그걸 구별함.
- Bus
여기서의 버스는 다른 디바이스와의 연결을 제어하는 Bus이다.
AMBA 2 ~ 5 까지의 다양한 방법이 있다.
- Memory
ARM프로세서의 메모리는 작을수록 비싸고 빠르다.
11. ARM에 내장된 소프트웨어
1) Initialization Code (Boot Code)
- ARM보드에서 최초로 사용되는 코드. (부팅될떄 사용됨)
- 운영체제가 실행될 수 있는 상태를 만들어줌
- Hw의 설정도 체크
2) Device Drivers
- 소프트웨어 드라이버 ㅋ
3) Operatiing System
- 실질적으로 구동된 후 시스템을 관리할 녀석이다. OS
- ARM 프로세서는 50가지가 넘는 OS를 지원한다.
OS별 특징에 따라 또 분류된다.
1) Real Time OS (실시간 OS)
어떤 이벤트에 대한 반응시간을 보장해준다.
- Hard real time application 이면 deadline넘어서까지 실행완료 안되면 error 발생
- Soft real time application 이면 deadline넘으면 성능저하 발생
ex) ThreadX같은 운영체제가 있다.
2) Platform OS
- 비 실시간성으로, 큰 용량의 OS이다.
대표적으로 WinCE, Linux가 있다.
4) Application
- 사용자가 사용할 어플리케이션 ㅋ
'개발 > 마이크로컴퓨팅' 카테고리의 다른 글
6. ARM 명령어 (0) | 2019.04.18 |
---|---|
5. ARM 디버깅 (0) | 2019.04.18 |
4. ARM 프로세서에 대해 2 (0) | 2019.04.18 |
3. ARM 프로세서에 대해 (0) | 2019.04.17 |
1. 임베디드 시스템이란 무엇일까 (0) | 2019.04.17 |