태그 : Arm

프로세서 상태 및 명령어 세트

프로세서 상태
어떤 명령어가 실행될 지를 결정한다
cpsr의 J( Jazelle )와 T ( Thumb )는 프로세서의 상태 반영
//ex. J 와 T 가 0이면 프로세서는 ARM 상태에 있으며 ARM 명령어를 사용하고 있다는 것을 의미
전원이 공급되는 순간은 ARM 상태
코어의 상태를 바꾸기 위해서는 특별한 분기 명령어를 사용해야함


ARM 프로세서의 명령어 세트
ARM, Thumb, Jazelle
명령어들을 서로 섞어서 쓸 수 없다
Jazelle
- Java 코드의 실행 속도를 높이기 위해 S/W 와 H/W를 감안하여 설계
- Java 코드 실행 위한 Java 가상기계수정 버전
- H/W 일부분은 Java 코드지원, 나머지는 S/W 적으로 에뮬레이션



by 일찍자라 | 2007/03/14 12:08 | Arm Architecture | 트랙백

조건부 실행

조건부 실행이란 코어가 어떤 명령어를 실행할 지의 여부를 제어할 수 있음을 의미한다
대부분의 명령어들은 코어가 그것을 실행할 지의 여부를 결정할 수 있는 조건 인자를 가지고 있는데
이것은 상태 플래그( Condition Bits ) 의 설정값을 기본으로 하고있다

명령어를 실행하기 전에 코어는 자신이 가지고 있는 조건 인자와 cpsr 의 상태플래그를 비교하고
이것이 일치하면 명령어는 실행 그렇지 않으면 무시하게 된다.

조건인자는 명령어 니모닉 바로뒤에 추가되어 명령어와 함께 인코딩 되고
만약 조건 인자가 없다면 AL ( 항상 실행 )로 설정된다
조건 니모닉

by 일찍자라 | 2007/03/14 11:37 | Arm Architecture | 트랙백

레지스터 - PSR

ARM의 Program Status Register
1개의 CPSR ( Current Program Status Register )
6개의 SPSR ( Saved Program Status Register )

PSR 의 정보
Condition code flag // ALU의 연산 결과 정보를 가지고 있는 flag 정보를 가지고 있다
Control bits // 프로세서를 제어하기 위한 비트
Reserved // 미래에 사용할 목적으로 예약해놓은 부분 ( 상태 필드, 확장 필드 )



Flag Bits
ALU를 통한 명령의 실행결과를 나타내는 부분


Control Bits
프로세서의 모드, 동작 State 와 인터럽트를 제어

I/F 비트
IRQ( I 비트 ) 또는 FIQ ( F 비트 ) 를 disable( 세트 ) 혹은 enable ( 클리어 )
T 비트
ARM Architecture xT 버전의 경우 Thumb State
상태를 나타낼 뿐 프로세서는 이 비트에 강제로 값을 쓸수 없다
BX명령에 의해서만 제어 된다
Mode Bits
ARM 의 7가지 동작 모드를 나타낸다

by 일찍자라 | 2007/03/14 01:12 | Arm Architecture | 트랙백

레지스터

레지스터
프로세서가 작업을 하는데 사용되는 값을 저장하는 공간
ARM에는 32비트 길이의 37개 레지스터가 있다.


레지스터 종류
1. 30개의 범용( General Purpose ) 레지스터
//대부분의 데이터 연산에 사용
//프로세서의 동작( Operating ) 모드에 따라 사용되는 레지스터가 제한된다

2. 1개의 프로그램 카운터 ( PC : Program Counter )
//프로그램을 읽어올 메모리의 위치를 나타낸다
3. 1개의 CPSR ( Current Program Status Register )
//프로세서가 수행하고 있는 현재의 동작 상태를 나타낸다
4. 5개의 SPSR ( Saved Program Status Register )
//이전모드의 CPSR 의 복사본
//Exception 이 발생하면 하드웨어적으로 이전모드의 CPSR값을 각각의 모드에 해당하는 SPSR에 복사
//System 모드를 제외한 모든 Privilge(특권) 모드에 각각 하나씩 존재

뱅크 레지스터
프로세서가 특정 모드에 있을 때만 사용가능한 레지스터

프로세서 모드
어떤 레지스터가 활성화되고 cpsr 레지스터를 Access 할 수 있는 권리를 같게 될지를 결정
1개의 일반모드( user ), 6개의 특권모드 ( abort, FIQ, IRQ, superviser, system, undefined )

Stack Pointer ( SP or R13 )
프로그램에서 사용하는 스캑의 위치를 저장하는 레지스터
프로세서의 동작 모드마다 별도로 할당된 SP를 가지고 있다.
ARM은 별도의 Stack 명령이 없다 - LDR/STR, LDM/STM과 같은 데이터 명령으로 Stack처리

Link Register ( LR or R14 )
서브루틴에서 되돌아갈 위치 정보를 저장하고 있는 레지스터
서브루틴을 호출하는 BL 명령을 사용하면 PC값을 자동으로 LR에 저장
되돌아 갈때는 MOV 명령을 이용하여 LR 값을 PC에 저장 -- MOV PC, LR
ADD 나 SUB와 같은 연산명령을 사용하여 되돌아갈 위치를 조정할 수도 있음
프로세서의 동작 모드마다 별도로 할당된 LR 레지스터를 가지고 있다

Program Counter ( PC or R15 )
프로그램을 수행하는 위치를 저장하고 있는 레지스터
ARM State : 위치정보 [31:2] 저장
Thumb State : 위치정보 [31:1] 저장
다른 범용 레지스터와 마찬가지로 ADD, SUB와 같은 연산 명령 사용 분기 위치 조정가능
프로세서의 모든 동작모드에 대하여 하나만 존재 한다

by 일찍자라 | 2007/03/14 00:17 | Arm Architecture | 트랙백

프로세서 Family

동일한 프로세서를 사용한 제품군

ARMTDMI core를 사용한 ARM940T나 ARM920T와 같은 프로세서를 ARM9TDMI 프로세서 Family라 부름
ARM 프로세서 Family

by 일찍자라 | 2007/03/13 23:14 | Arm Architecture | 트랙백

ARM9 코어 데이터 흐름 모델(하버드)


ARM9TDM 코어의 내부구조


레지스터 Bank
37개의 32bit 레지스터
데이터 처리를 위한 저장 공간으로 사용

명령어 해석기
입력되는 명령을 해석하는 장치

제어장치
명령에 따라 필요한 제어 동작 수행하고 필요에 따라 제어 신호를 외부로 구동

ALU
32bit 산술 및 논리 연산 수행

Multiplier
32bit의 Booth`s 곱셈기가 연결되어 32bit 곱셈연산 수행

어드레스 Incrementer
순차적인 명령어를 fetch 할 때 사용
LDM 이나 STM 같은 block 단위의 데이터 전송명령이 실행될 때 사용

내부 버스 ( Internal Bus )
프로세서 내부에서 레지스터와 ALU사이의 신호를 교환. 그 결과를 다시 레지스터에 전달하는 경로
A버스, B버스 , C 버스 ( 데이터 전용 버스 )

메모리 인터페이스 분리( Havard Architecture )
명령어를 읽는 메모리 인터페이스 - Address IA[31:0], Data ID[31:0]
데이터를 읽고 쓰기 위한 메모리 인터페이스 - Address DA[31:0], Data DD[31:0]

by 일찍자라 | 2007/03/13 18:46 | Arm Architecture | 트랙백

ARM7 코어 데이터 흐름 모델(폰 노이만)


Arm7 은 폰노이만 아키텍쳐로 구현되어 있기때문에 데이터와 명령어가 같은 버스를 공유한다.


->
데이터의 흐름

레지스터 파일
32비트 레지스터로 구성되어 있는 저장 공간
대부분의 명령어는 signed, unsigned 의 32bit값을 포함
signed 8bit/16bit값은 메모리에서 읽은후 레지스터에 저장전에 <strong>부호확장기를 거쳐 32bit로 변경된후 저장

Rn, Rm
소스 레지스터
소스 오퍼랜드는 버스 A, B 를 통해 레지스터 파일로부터 읽혀진다

ALU( Arithmetic Logic Unit ) ,MAC (Multiply-Accumulate Unit )
A버스와 B버스에서 각각 Rn, Rm 의 값을 읽어서 연산수행
Rm 이 ALU 로 입력되기 전에 배럴시프터를 거쳐 선처리 작업을 할 수 있음

Rd
결과 레지스터
결과 버스를 통해 Rd안에 그 결과값이 저장된다


by 일찍자라 | 2007/03/13 18:37 | Arm Architecture | 트랙백

소프트웨어 계층구조

H/W 에서 동작하는 S/W 추상 레이어

초기화 코드
하드웨어 장치들을 초기화 해주는 코드
특정 타겟 또는 특정 타겟 그룹에 의존적

Device Driver
주변 장치와의 표준 인터페이스를 제공

운영체제
초기화 과정 다음에 읽혀져 실행될 코드
하드웨어 리소스와 인프라스트럭쳐(infrastructure)를 사용하기 위한 일반적인 프로그래밍 환경 제공

Application
임베디드 시스템의 특정 태스크를 수행

by 일찍자라 | 2007/03/13 16:13 | Arm Architecture | 트랙백

AMBA 버스 프로토콜

Advanced Microcontroller Bus Architecture 의 약자로
1996년에 소개되어 ARM 프로세서에 사용되는 온칩(on-chip) 버스 Architecture

ASB(ARM System Bus)
APB(ARM Peripheral Bus)
AHB(ARM High Performance Bus)

by 일찍자라 | 2007/03/13 15:17 | Arm Architecture | 트랙백

◀ 이전 페이지          다음 페이지 ▶