728x90

마이크로 프로세서 이해

- 효율적 시스템 설계 필요

- HW 측면 : 플랫폼(메인보드) 설계

- SW 측면 : 프로그램 코딩 기법 이해 - 디버깅 작업에서 필수적임

 

(1) ARM 프로세서 개요

1) ARM 프로세서

2) ARM 코어 구조

3) ARM7TDMI

4) ARM 코어 로드맵

5) ARM 프로세서 요약

 

1) ARM 프로세서

- 영국 ARM사에서 개발한 32비트 RISC 프로세서

- 1983 영국 Acorn Computer 사에서 최초 개발

- Cortex-A, R, M 시리즈로 제공

 

ARM 프로세서 특징

- 32비트 임베디드 프로세서 시장 70%이상 차지

- 저전력 고성능으로 휴대용 장치에 주로 사용

- 16비트 명령어 제공

- Java 코드 가속

- DSP 기능

- 특정 메모리 영역제안 - 보안 기능

 

ARM 코어

- ARM 프로세서의 명령어 셋을 실행할수있는 하드웨어

- ARM 구조 -> ARM 코어의하드웨어구조

- ARM 시스템 코어 = ARM 코어 + 메모리 유닛(버퍼, 캐쉬,MPU 등)

 

ARM 코어 제공 형태

- 하드 매크로 셀 Hard macro cell : 레이아웃 수준 설계, 설계 변경 불가, 코어 크기 및 전원정압 고정

- 합성가능한 코어 Synthesizeable core : HDL 사용하여 RTL 수준으로 제공, 코어크기-내부메모리 변경가능, 기능변경불가

 

HDL (Hardware Description Language)

- 논리 회로를 텍스트로 표현하는 언어

- VHDL, Verilog HDL이 표준으로 채택

 

RTL (Register Transfer Level)

- 디지털 시스템을 레지스터 사이 데이터 전송 관계로 표현하는 방식

 

2) ARM 코어 구조

 

ARM 코어 특징

-32 비트 RISC CPU 코어

- RISC 타입의 기본 구조인 로드-스토어 구조

- 빠른 인터럽트가 가능하도록 설계

- 데이터 저장방식은 빅엔디언과 리틀엔디언 선택가능

 

32비트 RISC

- 데이터 기본 처리단위 : 32비트

- 명령어 셋 구조 : RISC

- 간단하고 적은 명령어 -> 간단한 코어구조 & 빠른 명령어 실행 속도

 

Load-Store 구조

- 모든 데이터 처리는 레지스터를 대상으로 함

- 메모리 인터페이스는 load /store 명령어만 사용

- 메모리상 데이터 Load 명령어로 레지스터에 로딩 후 연산

- Store 명령어로 메모리에 저장

 

빠른 인터럽트 처리

- 빠른 인터럽트 모드 제공

- 동작 모드별 중요 레지스터 뱅킹 -> 사전에 중요 레지스터 여러 셋준비

 

메모리 저장 방식

- 아래 둘중하나 선택하여 메모리 사용 유연성을 높임

- 빅 엔디언 : 최상위 비트가 하위 어드레스에 먼저 저장 -> 모토로라 IBM, 대부분 RISC 프로세서

- 리틀 엔디언 : LSB가 하위 어드레스에 먼저 저장 -> 인텔 계열 프로세서

 

3) ARM7TDMI Core

- ARM 코어를 가장 잘 설명할수 있는 간단한 구조

- 32비트 ALU, 레지스터 뱅크, 어드레스 레지스터, 쓰기데이터 레지스터, 명령어 디코더 등으로 구성

- 폰 노이만 구조를 따름 - 프로그램 메모리와 데이터메모리가 같은 경로를 사용

- 중간에 배럴 쉬프터가 한 명령어로 ALU 연산과 쉬프트 동작 동시에 수행 가능

 

4) ARM 코어 로드맵

- 클래식 ARMCore 

- Coretex 암코어 : 응용 프로세서용, 임베디드용

- 각 프로세서 군의 특성을 파악 -> 설계 목표에 부합하는 프로세서 선정

- 최신 프로세서 구조의 발전 흐름을 알아볼 수 있음

* VFP 부동소수점 고속 연산

* Jazelie 자바 명령어 가속

 

5) ARM 프로세서 요약

- ARM 7 패밀리 ; 명령어 v4T

- 3-state pipeline

 

코어끝 접미어 의미

- 코어가 제공하는 기능

- ARM7TDMI-S 예시

T = Thumb 명령어 지원

D = 디버그 인터페이스

M = 64비트 곱셈기

I = In-circuit 애뮬레이터 인터페이스

-S = 하드웨어 기술언어로 작성된 프로세서 코어, 자동 합성도구로 합성 가능

 

ARM 9 패밀리

- v4T 명령어

- 5-state pipeline, cache 사용

- Jazelle DBX 자바 가속 제공

- Havard 구조

 

ARM9E 패밀리

- ARM9 패밀리에 신호처리 명령어를 추가

- TCM : 빈번히 사용하는 데이터 엑세스 속도 향상 -> 실시간 향상

 

ARM10 패밀리

- 6state pipeline

- 64비트 명령어 처리, 부동 벡터 처리 명령 지원 VFP

- Jazelle DBX 자바 가속 제공

 

ARM11 패밀리

- 내부는 64비트, 외부는 32비트

- SIMD, TrustZone, Thumb-2 명령어 지원

- 멀티 코어 구성

 

Cortex 패밀리 (2004년부터 발표)

- A 시리즈 : 고성능 멀티미디어용

- R 시리즈 : 실시간 제어 임베디드용

- M 시리즈 : 저가격 마이크로 컨트롤러용

 

(2) ARM 명령어 구성

1) ARM ISA

2) Thumb 명령어

3) DSP 확장 명령어

4) 기타 확장 기능

 

1) ARM ISA

ARM ISA 특징

- 32비트 고정길이 명령어 : ARM 명령어

- 16비트 고정 길이 명령어 : Thumb 명령어

- 모든 명령어들이 조건부 명령어 -> 불만족시 실행 불가

- 하나의 명령어로 Shift와 ALU 연산 동시실행

- 명령어에 자동 증가/감소 모드 제공

- 여러 레지스터들을 동시에 메모리에 저장 및 로딩

=> 최대 15번 동시 읽기/쓰기 가능

 

ARM ISA 확장

- 세로축 명령어 세트별. 가로축 명령어 확장기능

- T Thumb mode : 16비트 명령어 모드. 32비트 명령어를 16비트로 재배치 -> 메모리 사용량 줄이며, 메모리 인터페이스 부담 줄임

- DSP :  해당 명령어 셋이 DSP 제공

- Z Jazelle : 자바 하드웨어로 실행

- M Mdeia: 멀티미디어 데이터 처리를 위한 명령어 확장

- Z  Trust Zone : 보안 관련

- T2 Thumb2 : Thumb 보다 축소된 명령어 기법 사용

- 명령어 셋 v4T : 버전 4 명령어 + Thumb 명령어

- v5TE : v4TE + DSP

 

2) Thumb 명령어

Thumb 16비트 명령어

- 프로그램 코드 크기 절약

- 외부 메모리 인터페이스 최소화 -> 소비전력 절약

 

ARM 명령어와 Thumb 명령어 비교

- 약 30% 프로그램 메모리 절약

- Thumb 모드 사용시 외부 메모리 소비전력 30% 절약

 

Thumb 명령어 단점

- 조건부 명령어 사용불가

- 명령어 내 상수 표현범위가 좁음

- 사용가능한 레지스터 범위가 R0 ~ R7으로 제한

 

ARM/Thumb 연동

- ARM State : ARM 명령어를 쓸수있는상태

- Thumb state : Thumb 명령어를 실행할수있는 상태

- BX 명령어로 전환 가능

- 프로세서 동작상태는 CPSR의 T 비트로 확인

 

3) DSP 확장 명령어

- CLZ(Count Leading Zero) 명령어 : MSB에서 LSB 검사하면서, 처음으로 1이 나타나는 비트위치 검색

- Saturate 연산 명령어 : 연산 결과가 표현 범위를 초과했는지 확인. 초과시 CPSR의 Q플래그 SET

- Signed Multiplication 지원 

- Signed MAC 지원

- Double word load/store : 64비트 로드스토어를 LDRD, STRD 명령어로 표현

 

4) 확장 명령어

- Jazelle : BJX(자바 실행 전환) 명령 사용 -> 자바 바이트 코드 실행 속도 향상

- Media : SIMD 명령어로 오디오 비디오 처리 능력 향상 2~4배.

- Thumb2 : Thumb 명령어 셋 확장. 16비트 명령어보다 25% 빠름. 32비트 명령어보다 메모리 공간 절약

- TrustZone : 시스템 보안 강화

- VFP(Vector Floating Point) : 부동 소수점 연산

- NEON : 멀티미디어 데이터, 신호처리가 필요한 응용프로그램 성능 향상

300x250

+ Recent posts