2007. 3. 1. 15:53
Lecture/ARM System Developer's Guide
1.1 RISC의 특징
1) RISC
- 매우 빠른 속도로 한 클럭 안에 실행될 수 있는 간결하면서도 막강한 명령어들을 가지고 있는 아키텍처
- 하드웨어에 의해 수행되는 명령어들의 복잡도를 줄이는 것이 목표(S/W의 유연성과 복잡성 감소)
- 컴파일러에 더욱 의존함
2) 설계 방식
- 명령어 : 상대적으로 적은 수의 명령어군, 일정한 길이 가짐
- 파이프라인 : 병렬로 실행될 수 있는 작은 단계로 쪼개져 실행
- 레지스터 : 거대한 레지스터군
- Load-Store 아키텍쳐 : 레지스터 활용하여 메모리 액세스 감소
3) 더욱 단순화되어 더 빠른 클럭으로 동작
1.2 ARM 프로세서의 특징
- 배터리 전력 요구
- 코드의 고집적도 : 비용이나 물리적인 크기의 제약으로 제한된 메모리를 가지고 있기 때문
- 속도가 느린 저가격의 메모리 소자 사용
- 프로세서 내분에 하드웨어 디버그 기술 포함
- 순수한 RISC 아키텍처를 채택하고 있지는 않음(임베디드 시스템에 국한되어 있기 때문) : 속도가 아닌 전체적으로 효율적인 시스템 성능 및 전력 소모에 근원
1.2.1 임베디드 시스템을 위한 명령어 세트
1) 가변 사이클로 실행되는 명령어
2) 복잡한 명령어 처리를 위한 인라인 배럴 시프터(Inline Barrel Shifter) : 명령어에 의해 사용되기 전에 그 입력 레지스터 중의 하나를 미리 처리
3) 16비트 Thumb 명령어 : 16비트 or 32비트 명령어로 실행
4) 조건부 실행
5) DSP 확장 명령어 : 빠른 16x16비트의 곱셈 처리를 지원하기 위해 디지털 신호 처리(DSP) 확장 명령어 추가
1.3 ARM 하드웨어 임베디드 시스템 아키텍쳐
- ARM 프로세서 : 임베디드 디바이스 제어, 원하는 동작 특성에 맞게 선택하여 사용
- 컨트롤러 : 주요 기능을 담담하는 블록(인터럽트 컨트롤러, 메모리 컨트롤러 등)
- 주변 장치 : 칩 외부로 입출력 기능 제공
- 버스 : 주변 장치간의 통신 담당
1.3.1 ARM 버스 기술 : 칩 내부 버스 사용
1) 종류
- 버스 마스터 : 다른 디바이스로 데이터를 전송할 수 있는 논리 장치
- 버스 슬레이브 : 버스 마스터로부터 전송 요청이 있을 때에만 동작
2) 버스 아키텍처 구성
① 전기적인 특성과 버스폭(16, 32, 64비트)을 담당하는 물리적인 단계
② 프로토콜 처리 단계
1.3.2 AMBA(Advanced Microcontroller Bus Architecture) 버스 프로토콜
- ASB(ARM System Bus), APB(ARM Peripheral Bus), AHB(ARM High Performance Bus)
- 사용성과 타임 투 마켓 향상
- AHB : 한방향에 집중된 멀티플레스 버스 기반, 많은 데이터량 처리(64, 128비트폭 지원), 매우 빠른 속도
1) 오리지날 AHB : 한번에 하나의 버스 마스터만 활성화
2) Multi-layer AHB : 동시에 여러 개의 버스 마스터를 활성화 상태로 만듦, 멀티프로세서 시스템에 적합
3) AHB-lite : AHB 버스의 하위셋으로 하나의 버스 마스터로 한정, 표준 AHB 버스의 모든 특성을 요구하지 않는 디자인
※ AHB와 Multi-layer AHB는 동일한 프로토콜을 지원하지만 연결 방식이 서로 다르다.
1.3.3 메모리
1) 메모리 계층 구조
- 캐시 : 일반적인 성능 향상은 가져오지만 실시간 시스템 응답에는 도움을 주지 못함(임베디드 포함)
- 주메모리 : 별도 외부의 칩 사용
- 보조 기억 장치 : 가장 크고 느린 메모리 형태
2) 메모리폭 : 한 번에 액세스할 수 있는 비트의 수
- 전체적인 성능 대 가격비에 직접적인 영향, Thumb 명령어 사용을 통해 개선 가능
3) 메모리의 종류
- ROM(Read-Only Memory)
- 플래시롬
- DRAM(Dynamic Random Access Memory) : 리프레시 작업을 해주어 데이터를 지속적으로 충전 필요
- SRAM(Static Random Access Momory) : 리프레시 작업 필요 없음
- SDRAM(Synchronous Dynamic Random Access Memory) :프로세서 버스와 동기화하여 동작
1.3.4 주변 장치
1) 메모리 컨트롤러 : 다양한 유형의 메모리를 프로세서 버스에 연결해주는 역할
2) 인터럽터 컨트롤러 : 주변 장치나 디바이스가 실행되려고 할 때, 프로세서에게 인터럽트를 발생
- 표준 인터럽터 컨트롤러 : 서비스 요청 시, 그 인터럽트 신호를 프로세서 코어에 보냄, 디바이스 비트맵 레지스터 이용
- 벡터 인터럽트 컨트롤러(VIC) : 인터럽트에 우선 순위 부여, 핸들러 주소 살펴본 후 높은 우선순위인 경우만 프로세서에게 인터럽트 신호 보냄
1.4 소프트웨어 계층 구조
1) 초기화 코드 : 리셋 이후 운영체제가 실행될 수 있는 상태로 만들어주는 역할
- 설정 코드 : OS 이미지를 부팅할 수 있도록 타겟 플랫폼을 설정하는 일 담당
- 진단 코드 : 순서대로 처리하고 있는지 확인하기 위해 하드웨어 시스템 테스트, 문제 찾음
- 부팅 코드 : 이미지를 로드한 후 그 이미지로 제어권을 넘겨주는 작업(PC를 이미지의 시작 위치로 이동)
- 메모리 리매핑 : 전원이 공급되면 초기화 곧바로 실행되어야 하기 때문
2) 운영체제
- 시스템 리소스 조직(주변 장치, 메모리 처리 시간 등)
- RTOS : 이벤트에 대한 반응 시간을 보장해야만 함, hard/soft 구분, 일반적으로 보조 저장 장치 불필요
- 플랫폼 OS: 규모가 크고 실시간성을 요하지 않는 어플리케이션 관리 → MMU 필요, 보조 저장 장치 필요
3) 어플리케이션 : 환경 제어(어플리케이션을 스케줄링)
1) RISC
- 매우 빠른 속도로 한 클럭 안에 실행될 수 있는 간결하면서도 막강한 명령어들을 가지고 있는 아키텍처
- 하드웨어에 의해 수행되는 명령어들의 복잡도를 줄이는 것이 목표(S/W의 유연성과 복잡성 감소)
- 컴파일러에 더욱 의존함
2) 설계 방식
- 명령어 : 상대적으로 적은 수의 명령어군, 일정한 길이 가짐
- 파이프라인 : 병렬로 실행될 수 있는 작은 단계로 쪼개져 실행
- 레지스터 : 거대한 레지스터군
- Load-Store 아키텍쳐 : 레지스터 활용하여 메모리 액세스 감소
3) 더욱 단순화되어 더 빠른 클럭으로 동작
1.2 ARM 프로세서의 특징
- 배터리 전력 요구
- 코드의 고집적도 : 비용이나 물리적인 크기의 제약으로 제한된 메모리를 가지고 있기 때문
- 속도가 느린 저가격의 메모리 소자 사용
- 프로세서 내분에 하드웨어 디버그 기술 포함
- 순수한 RISC 아키텍처를 채택하고 있지는 않음(임베디드 시스템에 국한되어 있기 때문) : 속도가 아닌 전체적으로 효율적인 시스템 성능 및 전력 소모에 근원
1.2.1 임베디드 시스템을 위한 명령어 세트
1) 가변 사이클로 실행되는 명령어
2) 복잡한 명령어 처리를 위한 인라인 배럴 시프터(Inline Barrel Shifter) : 명령어에 의해 사용되기 전에 그 입력 레지스터 중의 하나를 미리 처리
3) 16비트 Thumb 명령어 : 16비트 or 32비트 명령어로 실행
4) 조건부 실행
5) DSP 확장 명령어 : 빠른 16x16비트의 곱셈 처리를 지원하기 위해 디지털 신호 처리(DSP) 확장 명령어 추가
1.3 ARM 하드웨어 임베디드 시스템 아키텍쳐
- ARM 프로세서 : 임베디드 디바이스 제어, 원하는 동작 특성에 맞게 선택하여 사용
- 컨트롤러 : 주요 기능을 담담하는 블록(인터럽트 컨트롤러, 메모리 컨트롤러 등)
- 주변 장치 : 칩 외부로 입출력 기능 제공
- 버스 : 주변 장치간의 통신 담당
1.3.1 ARM 버스 기술 : 칩 내부 버스 사용
1) 종류
- 버스 마스터 : 다른 디바이스로 데이터를 전송할 수 있는 논리 장치
- 버스 슬레이브 : 버스 마스터로부터 전송 요청이 있을 때에만 동작
2) 버스 아키텍처 구성
① 전기적인 특성과 버스폭(16, 32, 64비트)을 담당하는 물리적인 단계
② 프로토콜 처리 단계
1.3.2 AMBA(Advanced Microcontroller Bus Architecture) 버스 프로토콜
- ASB(ARM System Bus), APB(ARM Peripheral Bus), AHB(ARM High Performance Bus)
- 사용성과 타임 투 마켓 향상
- AHB : 한방향에 집중된 멀티플레스 버스 기반, 많은 데이터량 처리(64, 128비트폭 지원), 매우 빠른 속도
1) 오리지날 AHB : 한번에 하나의 버스 마스터만 활성화
2) Multi-layer AHB : 동시에 여러 개의 버스 마스터를 활성화 상태로 만듦, 멀티프로세서 시스템에 적합
3) AHB-lite : AHB 버스의 하위셋으로 하나의 버스 마스터로 한정, 표준 AHB 버스의 모든 특성을 요구하지 않는 디자인
※ AHB와 Multi-layer AHB는 동일한 프로토콜을 지원하지만 연결 방식이 서로 다르다.
1.3.3 메모리
1) 메모리 계층 구조
- 캐시 : 일반적인 성능 향상은 가져오지만 실시간 시스템 응답에는 도움을 주지 못함(임베디드 포함)
- 주메모리 : 별도 외부의 칩 사용
- 보조 기억 장치 : 가장 크고 느린 메모리 형태
2) 메모리폭 : 한 번에 액세스할 수 있는 비트의 수
- 전체적인 성능 대 가격비에 직접적인 영향, Thumb 명령어 사용을 통해 개선 가능
3) 메모리의 종류
- ROM(Read-Only Memory)
- 플래시롬
- DRAM(Dynamic Random Access Memory) : 리프레시 작업을 해주어 데이터를 지속적으로 충전 필요
- SRAM(Static Random Access Momory) : 리프레시 작업 필요 없음
- SDRAM(Synchronous Dynamic Random Access Memory) :프로세서 버스와 동기화하여 동작
1.3.4 주변 장치
1) 메모리 컨트롤러 : 다양한 유형의 메모리를 프로세서 버스에 연결해주는 역할
2) 인터럽터 컨트롤러 : 주변 장치나 디바이스가 실행되려고 할 때, 프로세서에게 인터럽트를 발생
- 표준 인터럽터 컨트롤러 : 서비스 요청 시, 그 인터럽트 신호를 프로세서 코어에 보냄, 디바이스 비트맵 레지스터 이용
- 벡터 인터럽트 컨트롤러(VIC) : 인터럽트에 우선 순위 부여, 핸들러 주소 살펴본 후 높은 우선순위인 경우만 프로세서에게 인터럽트 신호 보냄
1.4 소프트웨어 계층 구조
1) 초기화 코드 : 리셋 이후 운영체제가 실행될 수 있는 상태로 만들어주는 역할
- 설정 코드 : OS 이미지를 부팅할 수 있도록 타겟 플랫폼을 설정하는 일 담당
- 진단 코드 : 순서대로 처리하고 있는지 확인하기 위해 하드웨어 시스템 테스트, 문제 찾음
- 부팅 코드 : 이미지를 로드한 후 그 이미지로 제어권을 넘겨주는 작업(PC를 이미지의 시작 위치로 이동)
- 메모리 리매핑 : 전원이 공급되면 초기화 곧바로 실행되어야 하기 때문
2) 운영체제
- 시스템 리소스 조직(주변 장치, 메모리 처리 시간 등)
- RTOS : 이벤트에 대한 반응 시간을 보장해야만 함, hard/soft 구분, 일반적으로 보조 저장 장치 불필요
- 플랫폼 OS: 규모가 크고 실시간성을 요하지 않는 어플리케이션 관리 → MMU 필요, 보조 저장 장치 필요
3) 어플리케이션 : 환경 제어(어플리케이션을 스케줄링)