q ARM (Advanced RISC Machines) v 1990년설립 v UK-based joint venture Ø Apple Computer, Acorn Computer Group, and VLSI Technology q 32-bit RISC Intellectu

Similar documents
Microsoft PowerPoint - 05-ARM-Instruction-Set.ppt

ARM 아키텍쳐 - ARM 아키텍쳐 - Programming 모델 - ARM 프로세서명령어 - 예외처리와시스템리셋 - ARM9TDMI 프로세서 한국기술교육대학교 전기전자통신공학부 장영조 한국기술교육대학교임베디드 SOC 설계및실습

ARM Reverse Engineering

Microsoft Word - 1. ARM Assembly 실습_xp2.doc

Microsoft PowerPoint - LN_1_ARM_CPU_0.ppt [호환 모드]

임베디드 시스템 구조

Here is a "PLDWorld.com"... // EXCALIBUR... // Additional Resources // µc/os-ii... Page 1 of 23 Additional Resources: µc/os-ii Author: Source: HiTEL D

hwp

Embedded System

<4D F736F F F696E74202D20BBB7BBB7C7D15F FBEDFB0A3B1B3C0B05FC1A638C0CFC2F72E BC8A3C8AF20B8F0B5E55D>

ARM01

untitled

Chapter ...

Microsoft PowerPoint - o8.pptx

9

T100MD+

SRC PLUS 제어기 MANUAL

Microsoft PowerPoint - hy2-12.pptx

. 고성능마이크로프로세서 LU 와레지스터 파일의구조 (2.). 직접디지털주파수합성기 (FS) 의구조 3. 고성능마이크로프로세서부동소수점연산기 (Floating-Point Unit) 구조 (2) (2.) (2.) 2. 암호화를위한 VLSI 구조와설계의개요 (2.) 다음참

INTRO Basic architecture of modern computers Basic and most used assembly instructions on x86 Installing an assembly compiler and RE tools Practice co

(1) 주소지정방식 Address Mode 메모리접근 분기주소 명령어 직접번지 Reg. 지정 Reg. 간접 Base Index 간접 Immediate 상대번지 절대번지 Long 주소 Reg. 간접 Byte Access Bit Access 내부 Data M

=

Microsoft PowerPoint - 30.ppt [호환 모드]

강의10

라는 점이다. ARM7TDMI 같은 ARM7에서는 페치(fetch), 디코드 (decode) 그리고 실행(execute)의 3단계로 구성된 파이프라인을 적 V4 PF1 ARMv I-캐시 액세 + 다이내믹

Microsoft Word - FunctionCall

1

ARM 프로세서 입문

DE1-SoC Board

Microsoft PowerPoint - ARM System-on-chip architecture_Chap 4_23p.ppt

Microsoft PowerPoint - 강의2.ppt

Microsoft PowerPoint - hy2-12.pptx

온라인 IT 교육최강 ( 강의정보처리필기강사조대호 차시명 [CA-06 강 ] 프로세서와명령어차시 6 차시 학습내용 프로세서와명령어 학습목표 컴퓨터의구조와프로세서에대해이해할수있다 컴퓨터의명령어에대해이해할수있다 학습내용 1. 컴퓨터의구성 - 1

APOGEE Insight_KR_Base_3P11

한국기술교육대학교장영조 한국기술교육대학교전기전자통신공학부 1

C# Programming Guide - Types

슬라이드 1

Computer Architecture

No Slide Title

<C1A4BAB8C3B3B8AE5FB1E2BBE75FC7CAB1E25F E687770>

학습목차 r 컴퓨터본체에서 CPU 의위치살펴보기 r CPU 의성능 r CPU 의기능 r CPU 의조직 r 레지스터의조직 r 명령어사이클 r 명령어파이프라이닝 컴퓨터구조 2 9. CPU 조직과기능

Microsoft PowerPoint - a6.ppt [호환 모드]

Microsoft PowerPoint - CHAP-03 [호환 모드]

Microsoft PowerPoint - M07_RTL.ppt [호환 모드]

Computer Architecture

슬라이드 1

<4D F736F F F696E74202D20BBB7BBB7C7D15F FBEDFB0A3B1B3C0B05FC1A634C0CFC2F72E BC8A3C8AF20B8F0B5E55D>

Microsoft PowerPoint - hw8.ppt [호환 모드]

Microsoft Word doc

MAX+plus II Getting Started - 무작정따라하기

ºÎ·ÏB

임베디드시스템설계강의자료 6 system call 2/2 (2014 년도 1 학기 ) 김영진 아주대학교전자공학과

hlogin2

구문 분석

Lectures for 2nd Edition

슬라이드 1

歯15-ROMPLD.PDF

4. 다음주소지정방식중속도가가장빠른주소방식은? 가. immediate addressing mode 나. direct addressing mode 다. indirect addressing mode 라. index register. 5. 간접주소 (indirect addr

PRO1_09E [읽기 전용]

example code are examined in this stage The low pressure pressurizer reactor trip module of the Plant Protection System was programmed as subject for

목차 1. 제품 소개 특징 개요 Function table 기능 소개 Copy Compare Copy & Compare Erase

PowerPoint Presentation

Deok9_Exploit Technique

학습목표 2/33 마이크로프로세서와마이크로컨트롤러의차이를알수있다. 마이크로프로세서에서프로그램이수행되기위한명령어형식과명령어실행절차를알수있다. 프로그램을수행하려면어떤종류의명령어가필요한지알수있다. 현대컴퓨터의기본모델인저장형프로그램컴퓨터의한계점과그한계를완화하려는방법을알수있다.

solution map_....

API 매뉴얼

Microsoft Word - FS_ZigBee_Manual_V1.3.docx

Microsoft PowerPoint - polling.pptx

1217 WebTrafMon II

<4D F736F F F696E74202D20B8B6C0CCC5A9B7CEC7C1B7CEBCBCBCAD202839C1D6C2F7207E203135C1D6C2F >

Microsoft PowerPoint - PL_03-04.pptx

Microsoft PowerPoint - ch09 - 연결형리스트, Stack, Queue와 응용 pm0100

목차 제 1 장 inexio Touch Driver소개 소개 및 주요 기능 제품사양... 4 제 2 장 설치 및 실행 설치 시 주의사항 설치 권고 사양 프로그램 설치 하드웨

PowerPoint 프레젠테이션

Microsoft PowerPoint - chap01-C언어개요.pptx

프로그램카운터 (Program Counter) 명령레지스터 (Instruction Register) 누산기 (AC: Accumulator) 상태레지스터 (Status Register) PSWR(Program Status Word Register) 메모리주소레지스터 (M

untitled

API 매뉴얼

C++-¿Ïº®Çؼ³10Àå

PowerPoint 프레젠테이션

프로그램을 학교 등지에서 조금이라도 배운 사람들을 위한 프로그래밍 노트 입니다. 저 역시 그 사람들 중 하나 입니다. 중고등학교 시절 학교 도서관, 새로 생긴 시립 도서관 등을 다니며 책을 보 고 정리하며 어느정도 독학으르 공부하긴 했지만, 자주 안하다 보면 금방 잊어

JVM 메모리구조

Computer Architecture

<C0CCBCBCBFB52DC1A4B4EBBFF82DBCAEBBE7B3EDB9AE2D D382E687770>

PowerPoint 프레젠테이션

OCW_C언어 기초

김기남_ATDC2016_160620_[키노트].key

금오공대 컴퓨터공학전공 강의자료

학습목차 r 개념으로살펴보는 CPU 속의제어장치 r 마이크로연산 r 제어장치의동작 r 마이크로프로그램을이용한제어 컴퓨터구조 제어장치

PowerPoint 프레젠테이션

DIY 챗봇 - LangCon

Microsoft Word - ExecutionStack

KDTÁ¾ÇÕ-2-07/03

Microsoft PowerPoint - DSD06c_ISA.pptx

Windows Embedded Compact 2013 [그림 1]은 Windows CE 로 알려진 Microsoft의 Windows Embedded Compact OS의 history를 보여주고 있다. [표 1] 은 각 Windows CE 버전들의 주요 특징들을 담고

FMX M JPG 15MB 320x240 30fps, 160Kbps 11MB View operation,, seek seek Random Access Average Read Sequential Read 12 FMX () 2

<4D F736F F F696E74202D20BBB7BBB7C7D15F FBEDFB0A3B1B3C0B05FC1A636C0CFC2F72E BC8A3C8AF20B8F0B5E55D>

CPX-E-SYS_BES_C_ _ k1

chap 5: Trees

Transcription:

ARM 아키텍쳐 - ARM 아키텍쳐 - Programming 모델 - ARM 프로세서명령어 - 예외처리와시스템리셋 - ARM9TDMI 프로세서

q ARM (Advanced RISC Machines) v 1990년설립 v UK-based joint venture Ø Apple Computer, Acorn Computer Group, and VLSI Technology q 32-bit RISC Intellectual Property 제공 v ARM은 silicon을제조판매하지는않는다. v Hardware IPs Ø ARM core designs Ø Peripheral IP (Intellectual Property) ü Design Libraries v Software IPs ARM 아키텍처 : ARM 소개 Ø Power Management / Security Monitor v Development tools : ADS, RVDS Ø Modeling / Design / Debugging q 현재 70 개이상의 semiconductor 파트너보유 한국기술교육대학교임베디드 SOC 설계및실습 1

ARM 의 32 비트 RISC 프로세서 IP q ARM사는직접반도체를제조하여판매하는것이아니라설계한프로세서를반도체회사에 Hard Macrocell 또는 Synthesizable core로제공 q 반도체제조회사또는 SoC 제조사에서는 ARM 사로부터제공받은 ARM core 와주변장치를추가하여 SoC(System on a Chip) 를만들어 사용자에게판매하거나자체제품에서사용 한국기술교육대학교임베디드 SOC 설계및실습 2

CISC 와 RISC 비교 q ARM cores are basically a RISC 한국기술교육대학교임베디드 SOC 설계및실습 3

RISC 개념 q Reduced number of instructions v Simple instructions Ø Ø Can be executed in a single cycle Complicated operations by combining several simple instructions v Fixed-length instructions for making pipeline simple q Pipelines v Ideally, one instruction per clock cycle q Registers v Large general-purpose register set v Act as a fast local memory store for all data processing operations q Load-store architecture v Separate load and store instructions v Enable memory access optimization (memory access scheduling, out-of-order memory access, etc.) 한국기술교육대학교임베디드 SOC 설계및실습 4

ARM 의추가적인개념 q Ultimate Goal v Low power consumption for portable embedded applications v Reduction of development costs q Requirements v High code density v Support for slow and low-cost memory devices v Reduction of die area v Hardware debug technology è The ARM core is not a pure RISC architecture 한국기술교육대학교임베디드 SOC 설계및실습 5

Unique Features of ARM Instructions Sets q Variable cycle execution for certain instructions v Code density is more important v E.g. load-store-multiple instructions q Inline barrel shifter leading to more complex instructions v Both shift and arithmetic in an instruction q Thumb 16-bit instruction set v To improve code density q Conditional execution v To improve pipeline performance v To improve code density q Enhanced DSP instructions v No need for extra DSP core 한국기술교육대학교임베디드 SOC 설계및실습 6

ARM-based 임베디드소자의예 한국기술교육대학교임베디드 SOC 설계및실습 7

ARM Architecture q Programming Model 은 ARM Architecture 의분류기준 v Architecture 가동일하면 Programming model 이동일하다 Ø 프로그램의호환이가능하다 v Programming Model Ø Ø Ø Ø Ø 명령어 (Instruction Set) 데이터구조동작모드레지스터의구조 Exception 처리방식등 q 동일한 Architecture 에도여러개의프로세서가있을수있다 q 동일한프로세서 Family 라도 Architecture 가서로다를수있다. 한국기술교육대학교임베디드 SOC 설계및실습 8

ARM 구조의변천 한국기술교육대학교임베디드 SOC 설계및실습 9

ARM Architecture 와프로세서 Architecture 특 징 프 로 세 서 v1, v2, v3 이전버전, 현재는거의사용않됨 ARM610, v4 System 모드지원 StrongARM(SA-1110, ) v4t v5te v5tej v6 v4 의기능과 Thumb 명령지원 v4t 의기능 ARM/Thumb Interwork 개선 CLZ 명령, saturation 명령, DSP Multiply 명령추가 v5te 의기능 Java 바이트코드실행 SIMD 명령 (MPEG4 같은미디어처리용 ) Unaligned access 지원 ARM7TDMI, ARM720T ARM9TDMI, ARM940T, ARM920T ARM9E-S, ARM966E-S, ARM946E-S ARM1020E XScale ARM7EJ-S, ARM9EJ-S, ARM1020EJ-S ARM1136EJ-S, ARM1176JZ NEON SIMD v7 Cortex-A, Cortex-R, Cortex-M Dynamic Compiler Support T : Thumb 명령지원, D : JTAG Debug, M: Fast Multiplier, I: Embedded ICE macrocell, E : DSP 기능확장, J : Jazelle Java 명령지원, F: Vector Floating-point unit, ARMxxx-S : Synthesizable version 한국기술교육대학교임베디드 SOC 설계및실습 10

ARM architecture overview 한국기술교육대학교임베디드 SOC 설계및실습 11

ARM Architecture 비교 Cortex-A : Cortex-A5, Cortex-A8, Cortex-A9 MPCore, Cortex-A9 Single Core 복잡한 OS 및사용자응용프로그램에사용 Cortex-R : Cortex-R4 및 Cortex-R4F, 실시간시스템용임베디드용 Cortex-M : Cortex-M0, Cortex-M1FPGA, Cortex-M3, Cortex-M4(F) 비용이중요한응용프로그램용으로최적화된임베디드수준이높은용도 한국기술교육대학교임베디드 SOC 설계및실습 12

ARM7 Family q 32/16-bit RISC Architecture q Unified bus architecture v Both instructions and data use the same bus q 3 stage pipelining v Fetch / Decode / Execution q Coprocessor interface q EmbeddedICE-RT support, JTAG interface unit q Optional support for MMU (Memory MangementUnit) v Easy to port operating systems with virtual addressing capability 한국기술교육대학교임베디드 SOC 설계및실습 13

ARM9 Family q 32/16-bit RISC Architecture q Harvard Architecture - Separate memory bus architecture q 5 stage pipelining q Coprocessor interface q EmbeddedICE-RT support, JTAG interface unit q Embedded Trace Macro Cell v Trace instruction and data execution in real time on the processor v Useful when debugging applications with time-critical segments 한국기술교육대학교임베디드 SOC 설계및실습 14

q 6 stage pipeline q Parallel load/store unit ARM10 Family v Allow computation to continue while data transfers complete q 64-bit data bus q Optional support for Vector Floating-Point v 7 th stage in pipeline v Increase FP performance q Out-of-order completion ARM10EJ-S integer core in ARMv5TEJ implementation - 32-bit ARM - 16-bit Thumb - 8-bit Jazelle instruction set MMU - Single TLB for both instruction and data Memory Protection Unit (MPU) -Partition external memory into 8-protection regions Cache (I/D) - Configurable to 0KB or 4-128KB Tightly Coupled Memory (TCM) -Configurable to 0KB or 4KB-1MB 한국기술교육대학교임베디드 SOC 설계및실습 15

q 8-stage pipeline v Load-store pipeline v Arithmetic pipeline q Parallel load/store unit ARM 11 Family v Allow computation to continue while data transfers complete v Non-blocking cache q 64-bit data bus q Out-of-order completion q The first core to implement ARMv6 v SIMD (Single Instruction Multiple Data) extensions for media processing, specifically designed to increase video processing performance v DSP support (dual 16-bit MAC instructions) q Example v ARM1136J-S v ARM1136JF-S 한국기술교육대학교임베디드 SOC 설계및실습 16

Cortex-A8 q Successor to the ARM11 q Dual-issue in-order execution superscalar pipeline v 13 stages q Support for NEON signal processing extensions v 64/128-bit hybrid SIMD architecture v Multimedia and signal processing applications Ø 3D graphics, speech processing, telephony, image processing, sound synthesis, compressed audio decoding, etc. v own pipeline (10 stages) and register file v Need for vectorizing compiler v Target for OpenMAX API q Thumb-2 instruction set 한국기술교육대학교임베디드 SOC 설계및실습 17

q Programming Model ARM Programming 모델 v 프로그래머가프로그램을작성하는데필요한각종정보 Ø 여기서프로그램은 C 나 C++ 이아닌어셈블리어를의미 v Programming Model 은 ARM 의 Architecture 를구분하는기준 q 프로그래머가알아야할정보들 v 명령어 v 프로세서의동작모드 v 프로세서내부레지스터의구성및사용법 v 메모리구조 v 예외처리 한국기술교육대학교임베디드 SOC 설계및실습 18

ARM 명령어와파이프라인 : 데이터처리명령 R0 := R1 R2 SUB R0, R1, OP2 OP 코드 오퍼랜드 2 오퍼랜드 1 ( 소스레지스터 ) 대상레지스터 한국기술교육대학교임베디드 SOC 설계및실습 19

LDR/STR 명령 LDR R0, [ R4, R5 ] OP 코드 옵셋 STR R0, [ R4, R5 ] 베이스레지스터 OP 코드 옵셋 대상레지스터 베이스레지스터 대상레지스터 한국기술교육대학교임베디드 SOC 설계및실습 20

ARM 어셈블리어프로그래밍 한국기술교육대학교임베디드 SOC 설계및실습 21

ARM 명령어처리과정 한국기술교육대학교임베디드 SOC 설계및실습 22

ARM 명령어파이프라인 한국기술교육대학교임베디드 SOC 설계및실습 23

ARM 구조와명령어실행 : ARM 코어의구조 한국기술교육대학교임베디드 SOC 설계및실습 24

ARM 명령어 (Instruction Set) q ARM 프로세서의명령어 v 32 비트 ARM instruction set v 16 비트 Thumb instruction set q Jazelle core 를확장한프로세서 v 8 비트 Java 바이트명령어 한국기술교육대학교임베디드 SOC 설계및실습 25

32 비트 ARM 명령어 q 32 비트 ARM 명령어의특징 v 모든 ARM 명령어는조건부실행이가능하다. v 모든 ARM 명령은 32 비트로구성되어있다. Ø Ø Load/Store 와같은메모리참조명령이나 Branch 명령에서는모두상대주소 (Indirect Address) 방식을사용한다 Immediate 상수는 32 비트명령어내에표시된다 ü Immediate 상수는 32 비트이하의상수이다 v ARM 명령은크게 11 개의기본적인 Type 으로구분된다. q 32 비트의고정된명령길이를사용하는이유 v Pipeline 구성이용이 v 명령디코더의구현이쉽다 v 고속으로처리가능 한국기술교육대학교임베디드 SOC 설계및실습 26

ARM 명령어요약 Instruction Type Instruction ( 명령 ) 1 Branch, Branch with Link B, BL 2 Data Processing 명령 ADD, ADC, SUB, SBC, RSB, RSC, AND, ORR, BIC, MOV, MVN, CMP, CMN, TST, TEQ 3 Multiply 명령 MUL, MLA, SMULL, SMLAL, SMULL, UMLAL 4 Load/Store 명령 LDR, LDRB, LDRBT, LDRH, LDRSB, LDRSH, LDRT, STR, STRB, STRBT, STRH, STRT 5 Load/Store Multiple 명령 LDM, STM 6 Swap 명령 SWP, SWPB 7 Software Interrupt(SWI) 명령 SWI 8 PSR Transfer 명령 MRS, MSR 9 Coprocessor 명령 MRC, MCR, LDC, STC 10 Branch Exchange 명령 BX 11 Undefined 명령 한국기술교육대학교임베디드 SOC 설계및실습 27

16 비트 Thumb 명령어 q Thumb 명령어 v 32 비트의 ARM 명령을 16 비트로재구성한명령 q Thumb 명령어의장점 v 코드의크기를줄일수있다 Ø ARM 명령의 65% v 8비트나 16비트와같은좁은메모리인터페이스에서 ARM 명령을수행할때보다성능이우수하다 q Thumb 명령어의단점 v 조건부실행이안된다. v Immediate 상수값의표현범위가적다 한국기술교육대학교임베디드 SOC 설계및실습 28

q ARM state 와 Thumb state v ARM state ARM / Thumb Interwork Ø Ø 32 비트 ARM 명령을수행하는상태 Reset 및 SWI, IRQ, FIQ, UNDEF, ABORT 와같은 Exception 발생시프로세서는 무조건 ARM state 가된다. v Thumb state Ø 16 비트 Thumb 명령을수행하는상태 q ARM / Thumb Interwork v ARM state에서 Thumb state로 Thumb state에서 ARM state로상태가전환되는작업 v BX 명령에의해서이루어진다. 한국기술교육대학교임베디드 SOC 설계및실습 29

Java 명령 q Jazelle core 가확장되면 8 비트 Java 명령어수행가능 q 일반적으로사용되는 Java 바이트코드의 95 % 를하드웨어로구현 v 소프트웨어 JVM : 1.0 Caffeinemarks/MHz v Jazelle 내장된 ARM core : 5.5 Caffeinemarks/MHz q Jazelle core 는 12K 보다작은 gates 수로구현이가능하다. 한국기술교육대학교임베디드 SOC 설계및실습 30

파이프라인 q ARM 프로세서코어는파이프라인을지원 v 프로세서의모든부분들과메모리장치들이계속적으로쉬지않고 동작한다. v 하나의명령이수행되고있는동안에다음에수행할명령을 decode 하고, 그 다음에수행할명령이메모리로부터읽어온다. 한국기술교육대학교임베디드 SOC 설계및실습 31

동작모드 : Operating Mode (1) q Operating 모드는현재프로세서가어떤권한을가지고어떤종류의작업을하고있는지를나타낸다. v User Mode Ø Ø User task 또는어플리케이션을수행할때의프로세서의동작모드 ARM 프로세서의동작모드중유일하게 Un-privileged 모드로메모리나 I/O 장치와같은시스템자원을사용하는데제한이있다 v FIQ(Fast Interrupt Request) Mode Ø 빠른인터럽트의처리를위한프로세서의동작모드 v IRQ(Interrupt Request) Mode Ø 일반적으로사용되는인터럽트를처리하기위한프로세서의동작모드 v SVC(Supervisor) Mode Ø Ø Ø 시스템자원을관리할수있는프로세서의동작모드 Operating 시스템의커널이나드라이버를처리하는모드 Reset 이나소프트웨어인터럽트 (SWI) 가발생하면 ARM 은 Supervisor 모드가된다. 한국기술교육대학교임베디드 SOC 설계및실습 32

Operating Mode (2) v Abort Mode Ø 명령이나데이터를메모리로부터읽거나쓸때오류가발생하면 ARM 은 Abort 모드가된다. Ø Abort 는외부의메모리제어기에서발생된다. v Undefined Mode Ø ARM 이정의되지않은명령을수행하려고하면수행되는프로세서의동작모드 v System Mode Ø User 모드와동일한용도로사용되지만 privilege 모드이다. Ø ARM Architecture v4 이후부터지원된다. 한국기술교육대학교임베디드 SOC 설계및실습 33

q 예외처리 (Exception) Operating 모드의변경 v IRQ, FIQ를비롯한대부분의 Operating 모드는외부에서발생되는조건에의해서 ARM 프로세서가하드웨어적으로변경한다. v 외부에서발생되는물리적인조건에의해서정상적인프로그램의실행을미루고예외적인현상을처리하는것을 Exception이라한다. v Operating 모드의변경은소프트웨어에의하여제어할수도있다. q 시스템콜 v User 모드에서수행되는프로그램에서 Supervisor 모드로전환하여시스템자원을사용할수있게해주는인터페이스 v OS에서는소프트웨어인터럽트 (SWI) 를사용하여시스템콜을구현 한국기술교육대학교임베디드 SOC 설계및실습 34

q 레지스터 레지스터 : ARM 프로세서의레지스터 v 프로세서가작업을하는데사용되는값을저장하는공간 v ARM에는 32비트길이의 37개의레지스터가있다. 명령 데이타 메모리 ALU 버스 A 버스 Register B 버스 Barrel Shifter Immediate 상수 명령어 Decoder ALU 한국기술교육대학교임베디드 SOC 설계및실습 35

q q Operating 모드별사용가능한레지스터 ARM state 의경우 v 16개의범용레지스터 Ø R0에서 R15의키워드를사용하여관리 Ø R0에서 R12는연산명령과같은범용으로사용 Ø R13(SP), R14(LR), R15(PC) 는특수한목적으로사용 ü 연산명령에서사용할수도있다. v 1개의 CPSR v Privilege 모드의경우각각 1개의 SPSR Thumb state 의경우 v 8개의범용레지스터 Ø R0에서 R7 v R13(SP), R14(LR), R15(PC) 레지스터 Ø 연산명령에서사용불가 v 1개의 CPSR v Privilege 모드의경우각각 1개의 SPSR 한국기술교육대학교임베디드 SOC 설계및실습 37

ARM 상태의레지스터 한국기술교육대학교임베디드 SOC 설계및실습 38

특정모드에서의레지스터예 한국기술교육대학교임베디드 SOC 설계및실습 39

Thumb 상태의레지스터 한국기술교육대학교임베디드 SOC 설계및실습 40

Stack Pointer (SP 또는 R13) q 프로그램에서사용하는스택의위치를저장하는레지스터 q 프로세서의동작모드마다별도로할당된 SP 레지스터를가지고있다 q ARM 은별도의스택명령이없다 v Push 나 Pop 과같은별도의스택명령을제공하지않는다 v LDR/STR, LDM/STM 같은데이터전송명령을사용하여스택을처리 한국기술교육대학교임베디드 SOC 설계및실습 41

Link Register (LR 또는 R14) q 서브루틴에서되돌아갈위치정보를저장하고있는레지스터 v 서브루틴을호출하는 BL 명령을사용하면 PC 값을자동으로 LR 에저장 v 되돌아갈때는 MOV 명령을이용하여 LR 값을 PC 에저장 MOV PC, LR v ADD 나 SUB 와같은연산명령을이용하여되돌아갈위치를조정할수도있다. q 프로세서의동작모드마다별도로할당된 LR 레지스터를가지고있다 한국기술교육대학교임베디드 SOC 설계및실습 42

Program Counter (PC 또는 R15) q 프로그램을수행하는위치를저장하고있는레지스터 v ARM state 의경우위치정보비트 [31:2] 저장 v Thumb state 의경우위치정보비트 [31:1] 저장 q 다른범용레지스터와마찬가지로 ADD, SUB 와같은연산명령을사용하여 프로그램이분기할위치를조정가능 q 프로세서의모든동작모드에대하여하나만존재한다. 한국기술교육대학교임베디드 SOC 설계및실습 43

q q Program Status Register (PSR) ARM 의 Program Status Register v 1개의 CPSR(Current Program Status Register) v 5개의 SPSR(Saved Program Status Register) PSR 레지스터의정보 v Condition code flag Ø ALU의연산결과정보를가지는 flag 정보를가지고있다 v Control bits Ø 프로세서를제어하기위한비트로구성되어있다 v Reserved 31 28 27 24 23 16 15 8 7 6 5 4 0 N Z C V Q J I F T Mode f s x c Condition Code flag Reserved Control bits 한국기술교육대학교임베디드 SOC 설계및실습 44

PSR 레지스터 flag bits q Flag bits 는 ALU 를통한명령의실행결과를나타내는부분이다. v Negative flag ( N 비트 ) Ø ALU 연산결과마이너스가발생한경우세트 v Zero flag ( Z 비트 ) Ø ALU 연산결과 0 가발생한경우세트 v Carry flag ( C 비트 ) Ø Ø ALU 연산결과자리올림이나내림이발생한경우세트 shift 연산에서 carry 가발생한경우세트 v overflow flag ( V 비트 ) Ø ALU 연산결과 overflow 가발생하면세트 v Q flag ( Q 비트 ) Ø ARM Architecture v5te/j 에서새롭게추가된 saturation 연산명령의수행결과 saturation 이발생하면세트된다. Ø 이비트는사용자에의해서만클리어된다. v J 비트 Ø ARM Architecture v5tej 에서새롭게추가된 Java 바이트코드를수행하는 Jazelle state 임을나타낸다. 한국기술교육대학교임베디드 SOC 설계및실습 45

ARM 메모리구조 q 메모리는프로그램과데이터를저장하는공간이다. q Big/Little Endian 지원 v ARM core는 Big-Endian 과 Little-Endian을모두지원 v 외부의핀에의해서하드웨어적으로결정된다. q ARM 에서사용가능한데이터 Type v byte : 8비트 v Halfword : 16 비트, 2 바이트 v Word : 32 비트, 4 바이트 q Un-aligned access v 기존의 ARM Architecture v4t, v5t, v5te 등은지원되지않는다. Ø Data Abort 발생 v ARM Architecture v6 에서는지원한다. 한국기술교육대학교임베디드 SOC 설계및실습 47

Aligned 과 Un-aligned 억세스 q 프로세서는메모리억세스 v Byte, halfword(2 바이트 ) 또는 word(4 바이트 ) 단위로만가능 Aligned Access Un-aligned Access 31 24 23 16 15 8 7 0 11 22 33 44 0x0C 31 24 23 16 15 8 7 0 11 22 33 44 0x0C 11 22 33 44 0x08 11 22 33 44 0x08 11 22 33 44 0x04 11 22 33 44 0x04 11 22 33 44 0x00 11 22 33 44 0x00 Word 단위 Access : 0x00, 0x04, 0x08, Half-Word Access : 0x00, 0x02, 0x04, 0x06, 0x08, Word 단위 Access : 0x01, 0x06, 0x07, Half-Word Access : 0x01, 0x03, 0x05 Abort Abort 한국기술교육대학교임베디드 SOC 설계및실습 48

Little-Endian 과 Big-Endian q Big-Endian q Little-Endian v 메모리의하위어드레스 (Byte 어드레스 v 메모리의하위어드레스 (Byte 어드레스 0 ) 에 MSB(Most Significant Byte) 가 0 ) 에 LSB(Least Significant Byte) 가 위치하고있는메모리구조 위치하고있는메모리구조 v MSB 는메모리데이터의가장상위비트 v LSB 는메모리데이터의가장하위비트 0 24 에서 31 까지 에서 7 까지 31 24 23 16 15 8 7 0 8 9 10 11 4 5 6 7 0x08 0x04 0 1 2 3 0x00 데이터비트 상위어드레스 31 24 23 16 15 8 7 0 11 10 9 8 7 6 5 4 0x08 0x04 3 2 1 0 0x00 Byte 어드레스 Word 어드레스 q0,4,8 은 word 어드레스, 0,2,4,6,8,10 은 halfword 어드레스, 0,1,2,3,4, 은 byte 어드레스를니타낸다. qword 로메모리를억세스하는데 1,2 또는 3 번지를억세스하면 un-aligned 억세스가된다. q32bit data 저장예 - 0x1234abcd 한국기술교육대학교임베디드 SOC 설계및실습 49

q q 예외처리 (Exception Handler) 예외처리 (Exception) v 외부의요청이나오류에의해서정상적으로진행되는프로그램의동작을잠시멈추고프로세서의동작모드를변환하고미리정해진프로그램을이용하여외부의요청이나오류에대한처리를하도록하는것 v Exception 의예 Ø I/O 장치에서인터럽트를발생시키면 IRQ Exception 이발생하고, 프로세서는발생된 IRQ Exception 을처리하기위해 IRQ 모드로전환되어요청된인터럽트에맞는처리동작수행 ARM 의 Exception v Reset v Undefined Instruction v Software Interrupt v Prefetch Abort v Data Abort v IRQ(Interrupt Request) v FIQ(Fast Interrupt Request) 한국기술교육대학교임베디드 SOC 설계및실습 50

예외처리 Vector 와우선순위 q 예외처리벡터 v Exception 이발생하면미리정해진어드레스의프로그램을수행 v 미리정해진프로그램의위치를 Exception Vector 라한다. q 예외처리벡터테이블 v 발생가능한각각의 Exception에대하여 Vector를정의해놓은테이블 Ø 각 Exception 별로 1 word 크기의명령어저장공간을가진다. v Vector Table에는 Branch 또는이와유사한명령으로실제 Exception을처리하기위한루틴으로분기할수있는명령으로구성되어있다. Ø FIQ 의경우는 Vector Table 의맨상위에위치하여분기명령없이처리루틴을프로그램할수 있다. v ARM 은기본적으로 0x00000000 에 Vector Table 을둔다. (MMU 제어프로그램에의해위치변경가능 ) q Exception 우선순위 v 동시에 Exception 이발생하는경우처리를위해우선순위지정 한국기술교육대학교임베디드 SOC 설계및실습 51

Exception Vector Table Exception Vector Address 우선순위 전환되는동작모드 Reset 0x0000 0000 1 (High) Supervisor(SVC) Undefined Instruction 0x0000 0004 6 (Low) Undefined Software Interrupt(SWI) 0x0000 0008 6 Supervisor(SVC) Prefetch Abort 0x0000 000C 5 Abort Data Abort 0x0000 0010 2 Abort Reserved 0x0000 0014 IRQ 0x0000 0018 4 IRQ FIQ 0x0000 001C 3 FIQ 한국기술교육대학교임베디드 SOC 설계및실습 52

예외처리과정 한국기술교육대학교임베디드 SOC 설계및실습 53

IRQ 예외처리와레지스터사용예 0X18 번지 한국기술교육대학교임베디드 SOC 설계및실습 54

q ARM 프로세서명령어 ARM 프로세서명령어의특징 32비트 ARM 명령어아키텍처 v5te의명령어 16비트 Thumb 명령어 한국기술교육대학교임베디드 SOC 설계및실습 55

ARM 프로세서명령어의특징 : 명령어 (Instruction Set) q ARM 프로세서의명령어 v 32 비트 ARM 명령어 v 16 비트 Thumb 명령어 Ø 최근의프로세서의경우 Thumb-2 명령어지원 v v5te 에추가된명령어 q Jazelle core 를확장한프로세서 v 8 비트 Java 바이트명령어 한국기술교육대학교임베디드 SOC 설계및실습 56

32 비트 ARM 명령어 q 모든 ARM 명령은 32 비트로구성되어있다. v Load/Store와같은메모리참조명령이나 Branch 명령에서는모두상대주소 (Indirect Address) 방식을사용한다 v Immediate 상수는 32 비트명령어내에표시된다 Ø Immediate 상수는 32 비트이하의상수이다 q 모든 ARM 명령어는조건부실행이가능하다. q Load/Store Architecture 를사용한다. 한국기술교육대학교임베디드 SOC 설계및실습 57

16 비트 Thumb 명령어 q q q Thumb 명령어 v 32비트의 ARM 명령을 16비트로재구성한명령 Thumb 명령어의장점 v 코드의크기를줄일수있다 Ø ARM 명령의 65% v 8비트나 16비트와같은좁은메모리인터페이스에서 ARM 명령을수행할때보다성능이우수하다 Thumb 명령어의단점 v 조건부실행이안된다. v Immediate 상수값의표현범위가적다 Dhrystone 2.1 / sec @20MHz 30000 30000 25000 20000 15000 10000 5000 0 CPU 성능측정 32 bit 16 bit 16 bit with 32 bit stack ARM Thumb 한국기술교육대학교임베디드 SOC 설계및실습 58

Thumb-2 명령어 q ARM Architecture v6 이상에서지원되는 16 비트명령어 v 새롭게추가된 ARM 명령과 equivalent 한명령어추가 q Code density 와 performance 를개선 v Memory footprint는 ARM 명령의 74 % v 기존의 ARM 명령에비해 74% v 기존의 Thumb 명령에비해 25% 빠르다 한국기술교육대학교임베디드 SOC 설계및실습 59

Java 명령 q Jazelle core 가확장되면 8 비트 Java 명령어수행가능 q 일반적으로사용되는 Java 바이트코드의 95 % 를하드웨어로구현 v 소프트웨어 JVM : 1.0 Caffeinemarks/MHz v Jazelle 내장된 ARM core : 5.5 Caffeinemarks/MHz q Jazelle core 는 12K 보다작은 gates 수로구현이가능하다. 한국기술교육대학교임베디드 SOC 설계및실습 60

32 비트 ARM 명령어 Instruction Type Instruction ( 명령 ) 1 Branch, Branch with Link B, BL 2 Data Processing 명령 ADD, ADC, SUB, SBC, RSB, RSC, AND, ORR, BIC, MOV, MVN, CMP, CMN, TST, TEQ 3 Multiply 명령 MUL, MLA, SMULL, SMLAL, SMULL, UMLAL 4 Load/Store 명령 LDR, LDRB, LDRBT, LDRH, LDRSB, LDRSH, LDRT, STR, STRB, STRBT, STRH, STRT 5 Load/Store Multiple 명령 LDM, STM 6 Swap 명령 SWP, SWPB 7 Software Interrupt(SWI) 명령 SWI 8 PSR Transfer 명령 MRS, MSR 9 Coprocessor 명령 MRC, MCR, LDC, STC 10 Branch Exchange 명령 BX 11 Undefined 명령 한국기술교육대학교임베디드 SOC 설계및실습 61

32 비트 ARM 명령어의구조 31 28 27 20 16 15 11 8 7 0 Instruction type Cond 0 0 I Opcode S Rn Rd Operand 2 Cond 0 0 0 0 0 0 A S Rd Rn Rs 1 0 0 1 Rm Data processing / PSR Transfer Multiply Cond 0 0 0 0 1 U A S RdHi RdLo Rs 1 0 0 1 Rm Cond 0 0 0 1 0 B 0 0 Rn Rd 0 0 0 0 1 0 0 1 Rm Cond 0 1 I P U B W L Rn Rd Offest Cond 1 0 0 P U S W L Rn Register List Cond 0 0 0 P U 1 W L Rn Rd Offset1 1 S H 1 Offset2 Cond 0 0 0 P U 0 W L Rn Rd 0 0 0 0 1 S H 1 Rm Cond 1 0 1 L Offset Cond 0 0 0 1 0 0 1 0 1 1 1 1 1 1 1 1 1 1 1 1 0 0 0 1 Rn Cond 1 1 0 P U N W L Rn CRd CPNum Offset Cond 1 1 1 0 Op1 CRn CRd CPNum Op2 0 CRm Cond 1 1 1 0 Op1 L CRn Rd CPNum Op2 1 CRm Cond 1 1 1 1 SWI Number Long Multiply Swap Load / Store Byte /Word Load / Store Multiple Halfword transf. Imm. Offset(v4) Halfword transf. Reg. Offset(v4) Branch Branch Exchange (v4t) Coprocessor data transfer Coprocessor data operation Coprocessor register transfer Software Interrupt 한국기술교육대학교임베디드 SOC 설계및실습 62

조건부실행 q ARM 에서모든명령은조건에따라실행여부결정가능 q 분기명령의사용을줄인다. v 분기명령이사용되면파이프라인이스톨 (stall) 되고새로운명령을읽어오는 사이클의낭비가따른다. q 조건필드 (Condition field) v 모든명령어는조건필드를가지고있으며 CPU가명령의실행여부를결정하는데사용된다. v Current Program Status Register(CPSR) 의조건플래그의값을사용하여조건을검사 한국기술교육대학교임베디드 SOC 설계및실습 63

조건부실행방법 q 조건에따라명령어를실행하도록하기위해서는적절한조건을접미사로붙여주면됨 : v 조건없이실행 ADD r0,r1,r2 ; r0 = r1 + r2 (ADDAL) v Zero flag 가세트되어있을때만실행하고자하는경우 ADDEQ r0,r1,r2 ; If zero flag set then ;... r0 = r1 + r2 한국기술교육대학교임베디드 SOC 설계및실습 64

조건필드 (condition field) 31 28 24 20 16 12 8 4 0 Cond Opcode [ 3 1 : 2 8 ] M nemon ic ex tensi on Interpret at i on St atus fl ag st ate fo r ex ecut i on 0000 EQ Equal / equals zero Z set 0001 NE Not equal Z clear 0010 CS/HS Carry set / unsigned higher or same C set 0011 CC/LO Carry clear / unsigned lower C clear 0100 MI M inus / negative N set 0101 PL Plus / positive or zero N clear 0110 VS Overf low V set 0111 VC No overf low V clear 1000 HI Unsigned higher C set and Z clear 1001 LS Unsigned lower or same C clear or Z set 1010 GE Signed greater than or equal N equals V 1011 LT Signed less than N is not equal to V 1100 GT Signed greater than Z clear and N equals V 1101 LE Signed less than or equal Z set or N is not equal to V 1110 AL Always any 1111 NV Never (do not use!) none 한국기술교육대학교임베디드 SOC 설계및실습 65

조건플래그변경 q 조건플래그의변경은명령어에 S 접미사를삽입 v Data processing 명령의경우 S 접미사가없으면 condition flag에영향을미치지않는다. v SUB 연산실행후결과를가지고조건플래그를세트 SUBS r0,r1,r2 ; r0 = r1 - r2 ;... and set flags q 데이터처리명령중비교를위한명령은별도로 S 접미사를삽입하지 않아도조건플래그가변경된다. 한국기술교육대학교임베디드 SOC 설계및실습 66

조건플래그 (Condition Flags) 31 28 27 24 23 16 15 8 7 6 5 4 0 N Z C V Q J I F T Mode f s x c Condition Code flag Reserved Control bits Flag 논리연산산술연산 Negative (N=1) 사용되지않는다 Signed 연산에서비트 31 이세트되어 Negative 결과발생 Zero (Z=1) 연산결과가모두 0 연산결과가 0 Carry (C=1) Shift 동작결과 carry 발생연산결과가 32 비트를넘으면세트 overflow (V=1) 사용되지않는다연산결과가 31 비트를넘어 sign bit 상실 한국기술교육대학교임베디드 SOC 설계및실습 67

분기명령어 명령어 B, BL Branch, Branch Link B{L}{cond} <expression> 형식 {L} 은 branch with link 로 R14(LR) 에 PC 값을저장하도록한다. {cond} 는조건부실행을위한 condition 조건을나타낸다. <expression> 은 destination 을나타내며 offset 으로계산된다. 동작 {cond} 조건에맞으면, <expression> 이가리키는위치로분기하고, {L} option 이사용되면 LR 에 PC 값을저장한다. Flag 영향없음 B there ; 무조건 there 로분기하라 사용예 BL sub+label ; 어드레스를계산한후서브루틴콜 CMP R1,#0 ; R1 과 0 을비교하고, BEQ fred ; R1 이 0 이면 fred 로분기 한국기술교육대학교임베디드 SOC 설계및실습 68

분기명령어의구성 31 28 27 25 24 23 0 Cond 1 0 1 L Link bit Offset 0 = Branch 1 = Branch with link Condition field q 분기할주소계산 v PC 값을기준으로비트 [23:0] 에해당하는 Offset이사용된다. v 24 비트의 Offset Ø 맨상위비트는 +/- sign 비트 Ø 나머지 23 비트를이용하여 2비트왼쪽으로 shift 한값을사용 Ø 분기가능한어드레스영역 : PC +/- 32MB 한국기술교육대학교임베디드 SOC 설계및실습 69

q Branch with Link (BL) 명령 Subroutine 구현 v 다음에수행할명령의위치를 LR에저장한다. v LR = PC 4 ß 파이프라인단계에서 F- D Ex - 즉 BL이실행중일때는다음 PC는 BL 로부터 2번째명령어를인출중이다. 따라서돌아갈번지는 BL로부터첫번째명령어를저장 q Subroutine 에서 Return v LR 에저장된주소를 PC 에옮긴다. MOV pc, lr ; pc = lr 한국기술교육대학교임베디드 SOC 설계및실습 70

데이터처리명령어 q 관련명령어종류 v 산술 (Arithmetic) 연산 v 논리 (Logical) 연산 v 레지스터간의데이터 Move( 이동 ) 명령 v 비교 (Comparison) 명령 q Load /Store 구조 v 데이터처리명령은레지스터내의값과상수로만연산이루어지고메모리에서데이터를읽거나쓸때는 Load 또는 Store 명령을사용한다. 한국기술교육대학교임베디드 SOC 설계및실습 71

데이터처리명령어 한국기술교육대학교임베디드 SOC 설계및실습 72

데이터처리명령어의구조 한국기술교육대학교임베디드 SOC 설계및실습 73

q 산술연산명령어 산술연산 opcode 명령 동 작 설 명 0100 ADD Rd := Rn + Op2 Add 0101 ADC Rd := Rn + Op2 + Carry Add with Carry 0010 SUB Rd := Rn Op2 Subtract 0110 SBC Rd := Rn Op2 1 + Carry Subtract with Carry 0011 RSB Rd := Op2 - Rn Reverse subtract 0111 RSC Rd := Op2 Rn 1 + Carry Reverse Subtract with Carry q 문법 : v <Operation> {<cond>} {S} Rd, Rn, Operand2 q 예제 v ADD r0, r1, r2 ; r0 := r1 + r2, ADDC r0, r1, r2 ; r0 := r1 + r2 + C v SBC r0, r1, r2 ; r0 := r1 r2 + C 1 v SUBEQ r3, r3, #1 ; if Z=1, r3 := r3 - #1 v RSBLES r4, r5, r7 ; if Z=1 or N=1, N!=V, r4 := r7- r5, and set flags 한국기술교육대학교임베디드 SOC 설계및실습 74

논리연산 q 논리연산명령어 opcode 명령 동 작 설 명 0000 AND Rd := Rn AND Op2 AND 1111 ORR Rd := Rn OR Op2 OR 0001 EOR Rd := Rn XOR Op2 Exclusive OR 1110 BIC Rd := Rn AND (NOT Op2) Bit Clear q 문법 : v <Operation> {<cond>} {S} Rd, Rn, Operand2 q 예제 : v AND r0, r1, r2 v BICEQ r2, r3, #7 ; r2 := r3 and (not #7 ) v EORS r1,r3,r0 ; r1 := r3 xor r0, and set flags 한국기술교육대학교임베디드 SOC 설계및실습 75

q q 비교연산 비교연산의결과는조건플래그를변경하는것 v S bit를별도로 set 할필요가없다. 비교연산명령어 opcode 명령동작설명 1010 CMN CPSR flags := Rn + Op2 Compare Negative 1011 CMP CPSR flags := Rn-Op2 Compare 1000 TEQ CPSR flags := Rn EOR Op2 Test bitwise equality 1001 TST CPSR flags := Rn AND Op2 Test bits q 문법 : v <Operation> {<cond>} Rn, Operand2 v Destination 레지스터가없다 q 예제 : v CMP r0, r1 v TSTEQ r2, #5 한국기술교육대학교임베디드 SOC 설계및실습 76

조건플래그에의한실행비교 한국기술교육대학교임베디드 SOC 설계및실습 77

q 데이터 Move 명령어 데이터 Move 명령 opcode 명령 동 작 설 명 1101 MOV Rd := Op2 Move register or constant 1111 MVN Rd := 0xFFFFFFFF EOR Op2 Move Negative register q 문법 : v <Operation> {<cond>} {S} Rd, Operand2 v Operand 1이없다 q 예제 : v MOV r0, r1 ; r0 <-r1 v MOVS r2, #10 ; r2 <- 10, set flag v MVNEQ r1, r2 ; if zero flag set then r1 <- ~r2 v MVN r0, #0xff000000 ; r0 <- 0x00ffffff 한국기술교육대학교임베디드 SOC 설계및실습 78

오퍼랜드 2 와배럴시프터 (Shift) q q q Shifts Left v Multiplies by powers of 2 v e.g. Ø LSL #5 = multiply by 32 Ø LSL = ASL Logical Shift Right v Divide by powers of 2 (unsigned) v e.g. Ø LSR #5 = divide by 32 Arithmetic Shift Right v Divide by powers of 2 (signed) v e.g. Ø Sign bit을유지 Ø 2's complement operations. Ø ASR #5 = divide by 32 (signed) Logical Shift Left(LSL) CF Destination 0 Logical Shift Right(LSR) 0 Destination CF Arithmetic Shift Right Destination CF 한국기술교육대학교임베디드 SOC 설계및실습 80

오퍼랜드 2 와배럴시프터 (Rotate) q Rotate Right (ROR) v LSB 가 MSB 로돌아 (wraparound) 온다 Rotate Right Destination CF q Rotate Right Extended (RRX) v CPSR C flag 를 33 번째비트로 Rotate Right through Carry 사용하면서 1 비트가 rotate right Destination CF 한국기술교육대학교임베디드 SOC 설계및실습 81

오퍼랜드 2 에서배럴시프터사용법 q 레지스터가 SHIFT 되는횟수는 2 가지방법으로지정가능 v 명령어에 5 비트의 immediate 상수를지정 Ø Shift 동작이 1 사이클내에같이처리된다. ADD r5, r5, r3 LSL #3 v 레지스터를사용하고, 레지스터에는 5 비트의값을지정 Ø 추가적으로레지스터값을읽어오는사이클이필요하다. ü ARM에는 2개의레지스터 read 포트만존재한다. ADD r5, r5, r3 LSL r2 q Shift 가명시되지않으면 default shift 적용 v LSL #0 v barrel shifter 동작이없다. 한국기술교육대학교임베디드 SOC 설계및실습 82

오퍼랜드 2 와 Immediate 상수 q Operand 2 로 Immediate 상수로사용가능 v 32 비트명령어내에그값이지정된다. Ø Immediate 상수는 32비트상수를가질수없다 31 28 2726 25 24 21 20 19 1615 12 11 0 cond 0 0 # opcode S Rn Rd operand 2 25 11 8 7 0 1 #rot x2 8-bit immediate Shifter ROR 8 비트상수값이 #rot 에지정된값의 2 배수를취하여 ROR 한값이사용 #rot = 0x4 8-bit immediate 상수 = 0xFF Immediate 상수 = 0xFF000000 한국기술교육대학교임베디드 SOC 설계및실습 83

PSR 전송명령 q PSR(Program Status Register) Transfer 명령 v 1개의 CPSR, 5개의 SPSR의 PSR 레지스터와 ARM의내부레지스터 R0~R15 사이의데이터전송명령 v MRS : Move PSR to Register v MSR : Move Register to PSR q CPSR 레지스터억세스 v 모든 Privilege 모드에서억세스가능 Ø T 비트는강제로어떤값을 write 할수없다. v User 모드에서는모든비트를읽을수는있으나 Flag field 만 write 가능 q SPSR 레지스터억세스 v 각각의동작모드에서제정된 SPSR 만억세스가능 v User 모드의경우에는억세스가능한 SPSR이없다 한국기술교육대학교임베디드 SOC 설계및실습 84

PSR 전송명령 (MSR) 명령어 MSR Move Register to PSR 형식 MSR{cond} <PSR[_fields]>, Rm {cond} 는조건부실행을위한 condition 조건을나타낸다. <PSR> 은 CPSR 또는 SPSR을말한다. [_fields] 는 f,x,s,c의 4 가지를말하며같이사용도가능하다. f,x,s,c는 PSR의각 8비트단위필드 동작 Rm 레지스터의내용을 <PSR[_fields]> 에옮긴다. 사용예 MSR CPSR, r0 ; CPSR := r0 MSR CPSR_f, r0 ; CPSR의 condition flags 비트 := r0 MSR CPSR_fc, r1 ; CPSR의 flags, control 비트 := r1 MSR CPSR_c, #0x80 ; CPSR의 control 비트 := 0x80, IRQ disable 한국기술교육대학교임베디드 SOC 설계및실습 85

32 비트 Multiply 명령어 MUL 32 비트 Multiply MUL{cond}{S} Rd, Rm, Rs {cond} 는조건부실행을위한 condition 조건을나타낸다. 형식 {s} 는 CPSR 의 flags 비트의세트여부를결정한다. Rd 는 Destination 레지스터 Rm 과 Rs 는곱셈이되는레지스터 동작 Rd := Rm * Rs 레지스터동작만사용가능하고 Immediate 상수는사용할수없다. 32 비트이상의결과는버린다. 사용예 MUL R1, R2, R3 ; R1 := R2 * R3 한국기술교육대학교임베디드 SOC 설계및실습 87

32 비트 Multiply-Accumulate 명령어 MLA 32 비트 Multiply-Accumulate 형식 MLA{cond}{S} Rd, Rm, Rs, Rn {cond} 는조건부실행을위한 condition 조건을나타낸다. {s} 는 CPSR의 flags 비트의세트여부를결정한다. Rd는 Destination 레지스터 Rm과 Rs는곱셈이되는레지스터, Rn은더해지는레지스터 동작 Rd := Rm * Rs + Rn 사용예 MLA R1, R2, R3, R4 ; R1 := R2 * R3 + R4 한국기술교육대학교임베디드 SOC 설계및실습 88

64 비트 Multiply Long Multiply : Multiply singed/unsigned 64-bit value 명령어 MULL 64 비트 Multiply 형식 [U S]MULL{cond}{S} RdLo, RdHi, Rm, Rs U: unsigned, S:signed {cond} 는조건부실행을위한 condition 조건을나타낸다. {s} 는 CPSR의 flags 비트의세트여부를결정한다. RdLo, RdHi 는 64비트결과가저장되는레지스터 Rm 과 Rs는곱셈이되는레지스터 동작 사용예 RdHi,RdLo := Rm * Rs 64 비트의결과를얻는다. SMULL R0, R1, R2, R3 ; [R1,R0] := R2 * R3 UMULL R0, R1, R2, R3 ; [R1,R0] := R2 * R3 한국기술교육대학교임베디드 SOC 설계및실습 89

64 비트 Multiply-Accumulate Long Multiply and Add : Multiply singed/unsigned 64-bit value 명령어 MLAL 64 비트 Multiply-Accumulate 형식 [U S]MLAL{cond}{S} RdLo, RdHi, Rm, Rs U: unsigned, S:signed {cond} 는조건부실행을위한 condition 조건을나타낸다. {s} 는 CPSR의 flags 비트의세트여부를결정한다. RdLo, RdHi 는 64비트결과가저장되는레지스터 Rm 과 Rs는곱셈이되는레지스터 동작 RdHi, RdLo := Rm * Rs + (RdHi, RdLo) 사용예 SMLAL R0, R1, R2, R3 ; [R1,R0] := [R1,R0] + R2 * R3 UMLAL R0, R1, R2, R3 ; [R1,R0] := [R1,R0] + R2 * R3 한국기술교육대학교임베디드 SOC 설계및실습 90

q q ARM 의 Load / Store 구조 ARM 의데이터전송명령 v memory to memory 데이터처리명령을지원하지않음 v 처리하고자하는데이터는무조건레지스터로이동해야함 v 처리절차 1 데이터를메모리에서레지스터로이동 2 레지스터에읽혀진값을가지고처리 3 연산결과를메모리에저장 ARM 의메모리억세스명령 v 단일레지스터데이터전송명령 (LDR / STR) v 블록단위데이터전송명령 (LDM/STM) v 단일레지스터를사용한메모리와레지스터내용을스왑 (SWP) 한국기술교육대학교임베디드 SOC 설계및실습 91

단일레지스터를사용한데이터전송명령 q 단일레지스터데이터전송명령명령 억세스단위 Load 명령 Store 명령 워드 (Word) LDR STR 바이트 (Byte) LDRB STRB 하프워드 (Halfword) LDRH STRH Signed 바이트 Signed 하프워드 LDRSB LDRSH q 모든명령어는 STR / LDR 다음에적절한 Condition 코드를삽입하여조건부실행가능 v e.g. LDREQB 한국기술교육대학교임베디드 SOC 설계및실습 92

명령어 LDR Load LDR(Load) 명령 형식 LDR{cond}{size}{T} Rd, <Address> {cond} 는조건부실행을위한 condition 조건을나타낸다. {size} 는전송되는데이터크기를나타내며, B(byte), H(halfword), SB(signed byte) 와 SH(signed halfword) 가있다. {T} 는 post-indexed 모드에서 non-privilege 모드로데이터가전송된다. Rd는읽어온메모리값이 write 되는레지스터 <Address> 부분은베이스레지스터와 Offset으로구성된다. 동작 <Address> 가나타내는위치의데이터를 {size} 만큼읽어서 Rd 에저장한다. 사용예 LDR R1, [R2,R4] LDREQB R1, [R6,#5] ; R2+R4 주소의메모리데이터를 R1 에저장 ; 조건이 EQ 이면 R6+5 주소의데이터를바이트 만큼읽어 R1 에저장 한국기술교육대학교임베디드 SOC 설계및실습 93

STR(Store) 명령 명령어 STR Store STR{cond}{size}{T} Rd, <Address> {cond} 는조건부실행을위한 condition 조건을나타낸다. 형식 {size} 는 B(byte), H(halfword) 가있다. {T} 는 post-indexed 모드에서 non-privilege 모드로데이터가전송된다. Rd 는 write 할데이터가들어있는레지스터 <Address> 부분은베이스레지스터와 Offset 으로구성된다. 동작 <Address> 위치에 Rd 를저장한다. 사용예 STR R1, [R2,R4] STREQB R1, [R6,#5] 단위저장 ; R2+R4 주소에 R1 의내용을저장 ; 조건이 EQ 이면 R6+5 주소에 R1 의내용을 byte 한국기술교육대학교임베디드 SOC 설계및실습 94

LDR/STR 의어드레스지정방법 명령어 <Address> fields Effective 어드레스 Pre-indexed 방법 [ Rn, <offset>] Post-indexed 방법 [ Rn ], <offset> Rn: base 레지스터 [Rn, +/- expression]{!} [Rn, +/- Rm]{!} [Rn, +/- Rm, shift cnt]{!} [Rn], +/- expression [Rn], +/- Rm [Rn], +/- Rm, shift cnt Rn +/- expression Rn +/- Rm Rn +/- (Rm shift cnt) Rn Rn Rn expression: -4095 ~ +4095 범위의 12비트 Immediate 상수 shift: LSL,LSR, ASR, ROR 와 RRX의 shift 동작 cnt: 1~31 범위의 4비트값! : auto-update 또는 write-back, pre-indexed 방식의경우 base 레지스터를 update * Halfword 또는 signed halfword 인경우에는 8 비트 Immediate 상수또는 shift 동작없는레지스터가사용이가능하다. 한국기술교육대학교임베디드 SOC 설계및실습 95

LDR/STR 의 <offset> q 레지스터뱅크에서 B 버스를통해서 Barrel shifter를경유하여 ALU에전달 q Offset으로사용될수있는표현 v Unsigned 12비트 immediate 상수 (0 ~ 4095 바이트 ) v 레지스터 Ø Immediate 값으로 shift operation 지정가능 q + 또는 - 연산을함께사용가능 한국기술교육대학교임베디드 SOC 설계및실습 96

LDR/STR 사용예 LDR R1, [R0] ; Load R1 from the address in R0 LDR R8, [R3, #4] ; Load R8 from the address in R3 + 4 LDR R12, [R13, #-4] ; Load R12 from R13-4 STR R2, [R1, #0x100] ; Store R2 to the address in R1 + 0x100 LDRB R5, [R9] ; Load byte into R5 from R9 ; (zero top 3 bytes) LDRB R3, [R8, #3] ; Load byte to R3 from R8 + 3 ; (zero top 3 bytes) STRB R4, [R10, #0x200] ; Store byte from R4 to R10 + 0x200 LDR R11, [R1, R2] ; Load R11 from the address in R1 + R2 STRB R10, [R7, -R4] ; Store byte from R10 to addr in R7 - R4 LDR R11, [R3, R5, LSL #2] ; Load R11 from R3 + (R5 x 4) LDR R1, [R0, #4]! ; Load R1 from R0 + 4, then R0 = R0 + 4 STRB R7, [R6, #-1]! ; Store byte from R7 to R6-1, then R6 = R6 1 LDR R3, [R9], #4 ; Load R3 from R9, then R9 = R9 + 4 STR R2, [R5], #8 ; Store R2 to R5, then R5 = R5 + 8 LDR R0, [PC, #40] ; Load R0 from PC + 0x40 (= address of LDR + 8 + 0x40) LDR R0, [R1], R2 ; Load R0 from R1, then R1 = R1 + R2 LDRSH R5, [R9] ; Load signed halfword to R5 from R9 LDRSB R3, [R8, #3] ; Load signed byte to R3 from R8 + 3 LDRSB R4, [R10, #0xC1] ; Load signed byte to R4 from R10 + 0xC1 STRH R10, [R7, -R4] ; Store halfword from R10 to R7 - R4 한국기술교육대학교임베디드 SOC 설계및실습 97

Pre-indexed 어드레스지정방식 q Base 레지스터 (Rn) 과 <offset> 으로주소계산후데이터전송 v 데이터전송이후에도 Rn 의값은별도지정이없으면변하지않는다 한국기술교육대학교임베디드 SOC 설계및실습 98

Pre-indexed 방식과 Auto update q Pre-indexed 방식을사용하여참조후 Base 레지스터 Rn 갱신 한국기술교육대학교임베디드 SOC 설계및실습 99

Post-indexed 어드레스지정방식 q Base 레지스터 (Rn) 가지정하는주소에데이터의전송후 Rn 값과 <Offset> 의연산결과로 Rn 갱신 한국기술교육대학교임베디드 SOC 설계및실습 100

PC Relative 어드레스지정방식 q LABEL 지정에의한어드레스지정 v 어셈블리어에서 LABEL을지정하면어셈블러가 [PC+LABEL] 형태의주소로변환하여참조 LDR r1, label. Label: DCD 0x12345678 LDR r1, [ PC, #offset ] DCD 0x12345678 q literal pool 을사용한 32 비트데이터의 Load v 어셈블러가코드영역내에데이터저장후 [PC+LABEL] 형태의주소로 변환하여참조 LDR r1, [ PC, #offset ] LDR r1, =0x12345678 DCD 0x12345678 한국기술교육대학교임베디드 SOC 설계및실습 101

q Block Data Transfer 명령 블록단위데이터전송명령 v 하나의명령으로메모리와프로세서레지스터사이에여러개의데이터를옮기는명령 v Load 명령인 LDM 과, Store 명령인 STM 명령이있다. q Block Data Transfer 명령의응용 v Memory copy, memory move 등 v Stack operation Ø Ø ARM 에는별도의 stack 관련명령이없다 LDM/STM 이용하여 pop 또는 push 동작구현 한국기술교육대학교임베디드 SOC 설계및실습 102

Store Multiple(STM) 명령 명령어 STM Store Multiple 형식 STM{cond}<addressing mode> Rn{!}, <register_list> {cond} 는조건부실행을위한 condition 조건을나타낸다. {address mode} 는어드레스의생성방법을정의한다. Rn은 base 레지스터를나타낸다. {!} 는데이터전송후 base 레지스터를 auto-update <register_list> 저장할데이터를가지고있는레지스터지정 동작 사용예 Base 레지스터 Rn이지정한번지에 <register_list> 에있는여러개의데이터를저장하는명령 STMIA R0, {R1,R2,R3} ; R1,R2,R3 의데이터를 R0 의위치주소부터차례로 저장, 동작완료후 R0 는변화없다. STMIA R0!, {R1,R2,R3} ; R1,R2,R3 의데이터를 R0 의위치주소부터 차례로저장, 동작완료후 R0:= R0+12 (3 워드주소값 ) 로변화. 한국기술교육대학교임베디드 SOC 설계및실습 103

Load Multiple(LDM) 명령 명령어 LDM Load Multiple 형식 동작 사용예 LDM{cond}<addressing mode> Rn{!}, <register_list>{^} {cond} 는조건부실행을위한 condition 조건을나타낸다. {address mode} 는어드레스의생성방법을정의한다. Rn 은 base 레지스터를나타낸다. {!} 는데이터전송후 base 레지스터를 auto-update <register_list> 읽어온데이터를저장할레지스터지정 {^} 는 privilege 모드에서 stack 동작할때 PC 와 CPSR 복원 Base 레지스터 Rn이지정한번지에서여러개의데이터를읽어 <register_list> 로읽어들이는명령 LDMIA R0, {R1,R2,R3} ; R0 의위치에서데이터를읽어 R1,R2,R3 에저장. LDMFD sp, {pc}^ ; sp(stack point) 에서 return 될위치 (PC) 를읽어 PC 를 update 하고 CPSR 을 SPSR 로부터복사 한국기술교육대학교임베디드 SOC 설계및실습 104

Block Data Transfer 명령의구조 한국기술교육대학교임베디드 SOC 설계및실습 105

LDM/STM 의레지스터리스트 q <register_list> 에서사용가능한레지스터 v R0 에서 R15(PC) 까지최대 16 개 q 연속된레지스터표현 v {r0-r5} 와같이 - 로표현가능 q <register_list> 의순서지정 v 항상 low order 의 register 에서 high order 순으로지정 LDM r10, {r2,r3,r1} 실제동작 LDM r10, {r1,r2,r3} 한국기술교육대학교임베디드 SOC 설계및실습 106

LDM/STM 의어드레스지정방식 Addressing Mode 키워드 ( 표현방식 ) 데이터 스택 유효어드레스계산 Pre-increment Load LDMIB LDMED Increment before load Post-increment Load LDMIA LDMFD Increment after load Pre-decrement Load LDMDB LDMEA Decrement before load Post-decrement Load LDMDA LDMFA Decrement after load Pre-increment Store STMIB STMFA Increment before store Post-increment Store STMIA STMEA Increment after store Pre-decrement Store STMDB STMFD Decrement before store Post-decrement Store STMDA STMED Decrement after store 한국기술교육대학교임베디드 SOC 설계및실습 107

Pre-Increment 어드레스지정 STMIB R9!, {R0,R1,R2} Base 레지스터 (R9) = 0x100C q 어드레스증가후데이터저장 R9 R2 R1 R0 R9 0x1018 0x100C 0x1000 (Increment Before) 1 R9 -> 0x1010 증가후 R0 저장 2 R9 -> 0x1014 증가후 R1 저장 3 R9 -> 0x1018 증가후 R2 저장 4 {!}, auto-update 옵션이있으면 R9 값을 0x1018로변경 한국기술교육대학교임베디드 SOC 설계및실습 108

Post-Increment 어드레스지정 STMIA R9!, {R0,R1,R2} Base 레지스터 (R9) = 0x100C q 데이터저장후어드레스증가 (Increment After) R9 R9 R2 R1 R0 0x1018 0x100C 1 0x100c에 R0 저장후 R9 -> 0x1010 증가 2 0x1010에 R1 저장후 R9 -> 0x1014 증가 3 0x1014 에 R2 저장후 R9 -> 0x1018 증가 0x1000 4 {!}, auto-update 옵션이있으면 R9 값을 0x1018 로변경 한국기술교육대학교임베디드 SOC 설계및실습 109

Pre-Decrement 어드레스지정 STMDB R9!, {R0,R1,R2} Base 레지스터 (R9) = 0x100C 0x1018 q 어드레스를 <register_list> 개수만큼감소해놓고, 어드레스를증가하면서데이터저장 (Decrement Before) 1 어드레스를 0x1000 로감소 R9 R9 R2 R1 R0 0x100C 0x1000 2 0x1000에 R0 저장후어드레스증가 3 0x1004에 R1 저장후어드레스증가 4 0x1008에 R2 저장후어드레스증가 5 {!}, auto-update 옵션이있으면 R9 값을 0x1000 로변경 한국기술교육대학교임베디드 SOC 설계및실습 110

Post-Decrement 어드레스지정 STMDA R9!, {R0,R1,R2} Base 레지스터 (R9) = 0x100C 0x1018 q 어드레스를 <register_list> 개수만큼감소해놓고, 어드레스를증가하면서데이터저장 (Decrement After) 1 어드레스를 0x1000 로감소 R9 R9 R2 R1 R0 0x100C 0x1000 2 어드레스증가후 0x1004에 R0 저장 3 어드레스증가후 0x1008에 R1 저장 4 어드레스증가후 0x100C에 R2 저장 5 {!}, auto-update 옵션이있으면 R9 값을 0x1000 로변경 한국기술교육대학교임베디드 SOC 설계및실습 111

STM/LDM 한국기술교육대학교임베디드 SOC 설계및실습 112

q 스택동작 LDM/STM 의스택 (Stacks) 동작 v 새로운데이터를 PUSH 를통해 top 위치에삽입하고, POP 을통해가장최근에삽입된데이터를꺼내는자료구조형태. q 스택의위치지정 v Base pointer : Stack 의 bottom 위치를지정 v Stack pointer : Stack 의 top 위치를지정 PUSH {4, 8, 6} POP SP 6 8 SP 8 Result of pop = 6 SP BASE BASE 4 BASE 4 한국기술교육대학교임베디드 SOC 설계및실습 113

q q Stack 의 Type Stack pointer 가나타내는위치에따라 Stack 의형태지정 v Full stack : Stack pointer가 Stack의마지막주소를지정 v Empty stack : Stack pointer가 Stack의다음주소를지정 Stack 의 Type v Full Descending stack Ø Stack pointer가 stack의 top을지정하고 push가필요하면어드레스감소하면서사용 Ø ARM compiler의경우는항상이방법을사용한다. Ø STMFD / LDMFD v Full Ascending stack Ø STMFA / LDMFA v Empty Descending stack Ø STMED / LDMED v Empty Ascending stack Ø STMEA / LDMEA 한국기술교육대학교임베디드 SOC 설계및실습 114

Stack Push Operations 한국기술교육대학교임베디드 SOC 설계및실습 115

ARM 의스택동작 한국기술교육대학교임베디드 SOC 설계및실습 116

Stack 의 Push 동작 STMFD SP!, {R0-R1,LR} Base 레지스터 (SP) = 0x100C q Stack 에 context 정보저장 1 어드레스를 0x1000 로감소 0x1018 2 레지스터값저장후어드레스증가 SP SP LR R1 R0 0x100C 0x1000 3 링크레지스터저장후어드레스증가 4 Stack 의위치를 0x1000 로변경 한국기술교육대학교임베디드 SOC 설계및실습 117

Stack 의 Pop 동작 LDMFD SP!, {R0-R1,PC} Base 레지스터 (SP) = 0x1000 q Stack 에서 context 정보를읽는다 1 레지스터값을읽은후어드레스증가 0x1018 2 링크레지스터 (LR) 값을읽어프로그램 SP SP PC R1 R0 0x100C 0x1000 카운터 (PC) 에저장 3 Stack 의위치를 0x100C 로변경 한국기술교육대학교임베디드 SOC 설계및실습 118

** 참고 : 스택과서브루틴 q 스택의용도중하나는서브루틴을위한일시적인레지스터저장소를제공하는것. q 서브루틴에서사용되는데이터를스택에 push 하고, caller 함수로 return 하기전에 pop 을통해원래의정보로환원시키는데사용 : STMFD SP!,{R4-R12, LR} ; stack all registers... ; and the return address... LDMFD SP!,{R4-R12, PC} ; load all the registers ; and return automatically q privilege 모드에서 LDM 을사용하여 Pop 을할때 S bit set 옵션인 ^ 가레지스터리스트에있으면 SPSR 이 CPSR 로복사된다. 한국기술교육대학교임베디드 SOC 설계및실습 119

메모리데이터와레지스터의 Swap 명령 명령어 SWP Swapping Data between register and memory 형식 동작 사용예 SWP{cond}{B} Rd,Rm,[Rn] {cond} 는조건부실행을위한 condition 조건을나타낸다. {B} 는 byte 단위의데이터교환을나타낸다. Rd 는 Destination 레지스터로메모리의내용이기록된다. Rn 은 base 레지스터를나타낸다. Rm 은메모리에기록될데이터가저장된레지스터이다. Rn이지정하는위치의데이터를읽어 Rd에저장하고, Rm의데이터를메모리에기록한다. SWP r0,r1,[r2] ; r2 가지정하는 word 어드레스에서데이터를읽어 r0 에 기록하고, r1 을 r2 의어드레스에저장한다. 한국기술교육대학교임베디드 SOC 설계및실습 120

소프트웨어인터럽트 (SWI) 명령 명령어 SWI Software Interrupt 형식 SWI{cond} <expression> {cond} 는조건부실행을위한 condition 조건을나타낸다. <expression> 은 SWI number를기입한다. 동작 <expression> 에지시한번호로소프트웨어인터럽트를호출한다. 사용예 SWI 0x23 ; 0x23 번소프트웨어인터럽트호출 31 28 27 24 23 0 cond 1 1 1 1 24-bit (interpreted) immediate 한국기술교육대학교임베디드 SOC 설계및실습 121

q SWI 명령의응용 ** 참고 : SWI 명령의호출 v 프로그램제어목적으로사용 v OS의시스템콜구현 Ø User 모드에서 SWI의호출에의해 Supervisor 모드로전환가능 v 디버깅등 q SWI 가호출되면 v SWI Exception 발생 v SPSR_svc에 CPSR 저장 v CPSR 변경 v LR_svc에 PC 값저장 v PC는 0x08 번지 (SWI Vector) 로분기 v SWI 핸들러에서호출된 SWI 번호에맞는동작실행 한국기술교육대학교임베디드 SOC 설계및실습 122

Coprocessor 관련명령 q ARM 은 16 개의 Coprocessor 지원 v 기능과명령의확장을위해 q Coprocessor 관련명령 v Coprocessor 와 ARM 사이레지스터내용전송명령 Ø Ø MRC 명령 ü 코프로세서레지스터내용을 ARM 레지스터로전송 MCR 명령 ü ARM 레지스터의내용을코프로세서레지스터로전송 v Coprocessor 와외부메모리사이데이타전송명령 Ø LDC 명령 ü 메모리에서코프로세서로데이터 load Ø STC 명령 ü 코프로세서에서메모리에데이터 store v Coprocessor 데이터처리명령 Ø CDP 명령 ü 코프로세서의데이터처리초기화 한국기술교육대학교임베디드 SOC 설계및실습 123

Coprocessor 레지스터전송명령 q Coprocessor 와 ARM 사이레지스터내용전송명령 q 문법 v MRC : Move to Register from Coprocessor Ø 코프로세서레지스터내용을 ARM 레지스터로전송 v MCR : Move to Coprocessor from Register Ø ARM 레지스터의내용을코프로세서레지스터로전송 <MRC MCR>{<cond>}<cp_num>,<opc_1>,Rd,CRn,CRm,<opc_2> 31 28 27 26 25 24 23 22 21 20 19 16 15 12 11 8 7 5 4 3 0 Cond 1 1 1 0 opc_1 L CRn Rd cp_num opc_2 1 CRm Opcode Condition Code Specifier ARM Source/Dest Register Transfer To/From Coprocessor Opcode Coprocessor Source/Dest Register 한국기술교육대학교임베디드 SOC 설계및실습 124

q 프로세서의상태 (state) 프로세서의상태변경명령 v ARM state : 프로세서가 32비트 ARM 명령을처리상태 v Thumb state : 프로세서가 16비트 Thumb 명령을처리상태 명령어 BX Branch and Exchange 형식 BX{cond} Rn {cond} 는조건부실행을위한 condition 조건을나타낸다. Rn은 R0~R15까지의레지스터가사용될수있다. 비트 0 에는 ARM state로변환되는지아니면 Thumb state로변환되는지를나타낸다. 동작 Rn 이지정하는어드레스로분기하고 state 를변환한다. 사용예 BX r0+1 ; r0가지정하는위치로분기하고, Thumb state로변환 BX r0 ; r0가지정하는위치로분기하고, ARM state로변환, 이때비트 0는 0이다. 한국기술교육대학교임베디드 SOC 설계및실습 125

아키텍처 v5te 의명령어 Architecture 특징프로세서 v1, v2, v3 이전버전, 현재는거의사용않됨 ARM610, v4 System 모드지원 StrongARM(SA-1110, ) v4t v5te v5tej v6 v4 의기능과 Thumb 명령지원 v4t 의기능 ARM/Thumb Interwork 개선 CLZ 명령, saturation 명령, DSP Multiply 명령추가 v5te 의기능 Java 바이트코드실행 SIMD 명령 (MPEG4 같은미디어처리용 ) Unaligned access 지원 ARM7TDMI, ARM720T ARM9TDMI, ARM940T, ARM920T AEM9E-S, ARM966E-S, ARM946E-S ARM1020E XScale ARM7EJ-S, ARM9EJ-S, ARM1020EJ-S ARM1136EJ-S T : Thumb 명령지원, E : DSP 기능확장, J : Java 명령지원 ARMxxx-S : Synthesizable core 한국기술교육대학교임베디드 SOC 설계및실습 126

q CLZ 명령 Count Leading Zero 명령 v MSB 로부터최초 1 이나타내는위치검색 q CLZ 명령응용 v 인터럽트 Pending 비트검사 v Normalize 명령어 CLZ Count Leading Zero 형식 동작 CLZ{cond} Rd, Rm {cond} 는조건부실행을위한 condition 조건을나타낸다. Rd 는결과를저장한다. Rm 은검사할레지스터를나타낸다. Rm 레지스터의내용을검사하여 MSB로부터맨먼저 1이나타나는위치를 Rd에저장한다. 한국기술교육대학교임베디드 SOC 설계및실습 127

q Saturate 연산 Saturate 연산 v 연산결과가 + 의최대값과 - 의최소값이넘지않도록한다. v 만약값이넘으면 CPSR의 Q-flag를세트한다. Ø 세트된 Q-flag 는사용자가클리어한다. q 연산결과비교 v 일반적인산술연산의경우 Ø 0x7FFFFFFF + 1 => 0x80000000, 즉 1이된다. Ø 0x80000000 1 => 0x7FFFFFFF, 즉 + 값이된다. v Saturate 연산의경우 Ø 0x7FFFFFFF + 1 => 0x7FFFFFFF 유지, Q-flag 세트 Ø 0x80000000 1 => 0x80000000 유지, Q-flag 세트 q 분수연산지원 v QDADD 등을사용하면 Multiply 와함께 +1 ~ -1 까지분수연산가능 한국기술교육대학교임베디드 SOC 설계및실습 128

Saturate 연산명령 명령어 QADD Add and Saturating 형식 QADD{cond} Rd, Rm, Rn 동작 Rd := SAT(Rm + Rn) 명령어 QSUB Subtract and Saturating 형식 QSUB{cond} Rd, Rm, Rn 동작 Rd := SAT(Rm - Rn) 명령어 QDADD Add and Double Saturating 형식 QDADD{cond} Rd, Rm, Rn 동작 Rd := SAT(Rm + SAT(Rn*2)) 명령어 QDSUB Subtract and Double Saturating 형식 QDSUB{cond} Rd, Rm, Rn 동작 Rd := SAT(Rm SAT(Rn*2)) 한국기술교육대학교임베디드 SOC 설계및실습 129

Signed Multiply 명령 q Signed 16 x 16 과 signed 32 x 16 곱셈명령추가 명령어 SMULxy Signed 16 * 16 bit Multiply 형식 동작 SMULxy{cond} Rd, Rm, Rs Rd := Rm[x] * Rs[y] 명령어 SMULWy Signed 32 * 16 bit Multiply 형식 동작 SMULWy{cond} Rd, Rm, Rs Rd := (Rm * Rs[y])[47:16] v x,y : B 또는 T Ø B 는 bottom, T 는 top SMULTBEQ R8, R7, R9 ; EQ 조건이면 R7[31:16] 과 R9[15:0] 을곱해서 ; R8 에저장한다. SMULWB R2, R4, R7 ; R4 와 R7[15:0] 를곱해서 R2 에저장한다. 한국기술교육대학교임베디드 SOC 설계및실습 130

Signed Multiply-Accumulate 명령 명령어 SMLAxy Signed 16 * 16 bit Multiply and Accumulate 형식 SMLAxy{cond} Rd, Rm, Rs, Rn 동작 Rd := Rn + Rm[x] * Rs[y] 명령어 SMLAWy Signed 32 * 16 bit Multiply and Accumulate 형식 SMLAWy{cond} Rd, Rm, Rs, Rn 동작 Rd := Rn + (Rm * Rs[y])[47:16] 명령어 SMLALxy Signed long 16 * 16 bit Multiply and Accumulate 형식 SMLALxy{cond} RdLo, RdHi, Rm, Rs 동작 RdHi,RdLo := RdHi,RdLo + Rm[x] * Rs[y] SMLALTB R1, R2, R7, R8 ; R7[31:16] 과 R8[15:0] 를곱하고 ; R1, R2 값을더해서 R1, R2 에저장한다. 한국기술교육대학교임베디드 SOC 설계및실습 131

Doubleword 단위 LDR / STR q Doubleword (64 비트 ) 단위의 LDR / STR 지원 v Destination 레지스터는 2개씩사용되는데, 짝수번호로시작하는레지스터로지정하면다음레지스터와한쌍을이룬다. Ø R0, R2, R4, R6, R8, R10, R12 로지정 명령어 LDRD Load Double Word 형식 LDR{cond}D Rd, <address_mode> 동작 Rd := <address>, R(d+1) := <address + 4 byte> LDRD R6, [R10, #0x10] STRD R6, [R10, #0x10] ; R10+0x10 위치의한워드를 R6에읽어오고 ; R10+0x14의한워드는 R7에읽어온다. ; R6의내용을 R10+0x10의위치에저장하고 ; R7의내용을 R10+0x14에저장한다. 한국기술교육대학교임베디드 SOC 설계및실습 132

프로세서의 state 변경명령 q Architecture v4t 의 state 변경명령 v BX 명령제공 v 서브루틴콜하는경우링크레지스터에되돌아갈주소를저장하는기능이없다. ADR r0, into_t+1 ; 분기주소지정 BX r0 ; into_t 상태로분기 CODE16 ; thumb 명령어 into_t ADR r5, back_to_arm ; ARM 주소지정 BX r5 ALIGN CODE32 back_to_arm : ARM 명령어 q Architecture v5te 의 state 변경명령 v BLX 명령 v State 의변경과링크레지스터에되돌아갈주소저장 한국기술교육대학교임베디드 SOC 설계및실습 133

BLX 명령 명령어 BLX Branch with link and exchange 형식 BLX label Label must be within +/- 32MB BLX{cond} Rm Rm은 branch 할주소를가지고있고, Thumb으로 branch 하는경우 bit [0] 는 1로되어있어야한다. 동작 BLXNE R2 Branch to label or address in Rm and change the state ; NE 조건이면 R2 가지정하는위치로분기하면서 ; 비트 0 의정보에따라상태를전환하고 ; 되돌아올주소를 LR(R14) 에저장한다. BLX thumfunc ; thumfunc 로분기하면서 Thumb 상태로전환하고 ; LR 에되돌아올주소를저장한다. 한국기술교육대학교임베디드 SOC 설계및실습 134

16 비트 Thumb 명령어 q 장점 - 코드사이즈감소 v v 컴파일완료후바이너리이미지의크기가 ARM 보다 65% 감소 Flash 메모리와같은저장장치의크기를줄여제품단가감소 - 16 비트메모리인터페이스에서향상된성능지원 v v v 명령어가 16비트로구성되면 16비트메모리인터페이스에서한번만 fetch를하므로성능향상 à 32비트 ARM 명령은 2번에걸쳐 fetch 동작을수행한다. 16비트메모리인터페이스로구성하면칩의핀수를줄여단가및전력소모감소시스템의안정성향상과전력소모감소 q 단점 - 조건부실행이안된다. - 사용되는레지스터가 R0~R7로제한된다. - Immediate 상수값의사용범위가제한적이다. - Inline barrel shifter를사용할수없다. 한국기술교육대학교임베디드 SOC 설계및실습 135

Thumb 명령의성능비교 q ARM 명령과 Thumb 명령의메모리인터페이스에따른성능비교 q Dhrystone 2.1 q v 소프트웨어성능측정도구 v 높을수록좋은성능을나타낸다 성능비교 v 32 비트메모리인터페이스 Ø Ø ARM/Thumb 명령처리성능이가장우수 ARM 명령을사용하는경우더욱더우수 v 16 비트메모리인터페이스 Ø Ø Thumb 명령이 ARM 명령보다처리성능우수 Stack 은 32 비트로동작되므로 32 비트메모리인터페이스보다는성능감소 v 16 비트메모리인터페이스와 32 비트 stack 메모리 Ø Dhrystone 2.1 / sec @20MHz 30000 30000 25000 20000 15000 10000 5000 Thumb 명령의성능이 32 비트메모리인터페이스의 ARM 명령성능과유사 0 ARM Thumb 32 bit 16 bit 16 bit with 32 bit stack 한국기술교육대학교임베디드 SOC 설계및실습 136

q Thumb 명령사용의필요성 ARM or Thumb? v 이미지의크기가작고, 좁은메모리인터페이스에서높은성능보유 q Thumb 명령만으로는사용불가 v 일부명령, PSR 전송명령, Coprocessor 명령등을위한 Thumb 명령이없다 v Exception 발생하면 ARM 프로세서는 ARM state로무조건전환된다. v 따라서 Thumb 명령만사용하고자하여도항상 ARM 명령과같이사용된다. q ARM state 와 Thumb state 의변경 v Interworking 이라한다. v BX 명령사용한다. à ARM 명령어의 BX 명령어설명참조 q Thumb 명령어 à 어셈블리어로직접작성하지않는다 v C 로프로그램하고컴파일과정에서 Thumb 명령어로컴파일 한국기술교육대학교임베디드 SOC 설계및실습 137

ARM Pseudo Instruction q ADR/ADRL v Load a program-relative or register-relative address into a register v ADR: generates one instruction (ADD or SUB) Ø +/-255 bytes for non-aligned address Ø +/-1020 bytes for word-aligned address v ADRL: generates two data processing instructions Ø +/-64KB for non-aligned address Ø +/-256KB for word-aligned address q Syntax v ADR{<cond>}{L} <Rd>, <expr> <expr> := a program-relative or register-relative expression q Example start MOV r0, #10 ADR r4, start ; => SUB r4, pc, #0xC ADRL r5, start + 60000 ; => ADD r5, pc, #0xe800 ADD r5, r5, #0x250 한국기술교육대학교임베디드 SOC 설계및실습 138

ARM Pseudo Instruction q LDR v Load a register with either Ø a 32-bit constant value or an address q Syntax v LDR{<cond>} <Rd>, =[<expr> <label_expr>] q Example LDR r1,=0xfff ; LDR r1, [pc, offest_to_litpool] ; ; litpool DCD 0xfff LDR r2,=place ; LDR r2, [pc, offset_to_litpool] ; ; litpool DCD place 한국기술교육대학교임베디드 SOC 설계및실습 139

Directives q ARM Assembly Language Basic v Simple Example 한국기술교육대학교임베디드 SOC 설계및실습 140

ARM Assembly Language Basic q Line {label} {instruction directive pseudo-instruction} {;comment} q Case rules v can be upper or lower cases, but not mixed q Line length v long line can be split onto several lines by backslash ( ) Ø but limited by 128 ~ 256 q Labels v symbols that represent address q Comments v ; Ø calculated during assembly 한국기술교육대학교임베디드 SOC 설계및실습 141

q Constants v Numbers ARM Assembly Language Basic Ø Decimal: 123 Ø Hexadecimal: 0x78 Ø n_xxx ü n: base between 2 and 9 ü xxx: number in that base q Boolean v {TRUE}, {FALSE} q Characters v a, b, q Strings v abcde123 $$ xyz 한국기술교육대학교임베디드 SOC 설계및실습 142

q AREA Directives v instructs assembler to assemble a new code or data section v sections are independent indivisible chunks of code or data manipulated by the linker v

Directives q DCB (=), DCW, DCD (&), DCQ, DCI v Allocates 1, 2, 4, 8 and integer of memory, respectively v Integer defining an ARM or Thumb instruction {label} DCx expr {, expr} Ø expr : numeric expression, program-relative expression q Example Data1 DCD 1, 5, 20 ; defines 3 word of 1, 5, 20 Hello DCB hello, 0 Data2 DCD mem06+4 ; defines 1 word of label mem06 + 4 MyVal DCI 0xEA000000 한국기술교육대학교임베디드 SOC 설계및실습 144

q MACRO and MEND Directives v Start of macro definition and End v $label: parameter that is substituted with a symbol given when the macro is invoked àusually a label v macroname: macro name v $parameter: substituted when the macro is invoked q Example MACRO {$label} macroname {$parameter {,$parameter} } ; code MEND MACRO ; Definition $label test $p1, $p2 mov $p1, $p2 MEND abc test r1, r2 ; Usage ; = abc movr1, r2 한국기술교육대학교임베디드 SOC 설계및실습 145

q Calling subroutine Program Example AREA subrout, CODE, READONLY ENTRY start MOV r0, #10 MOV r1, #3 BL doadd stop MOV r0, #0x18 LDR r1, =0x20026 SWI 0x123456 doadd ADD r0, r0, r1 MOV pc, lr END 한국기술교육대학교임베디드 SOC 설계및실습 146

q Thumb assembly language Program Example AREA ThumbSub, CODE, READONLY ENTRY CODE32 header ADR r0, start+1 BX r0 CODE16 start MOV r0, #10 MOV r1, #3 BL doadd stop MOV r0, #0x18 LDR r1, =0x20026 SWI 0xAB ;Thumb semihosting SWI doadd ADD r0, r0, r1 MOV pc, lr END 한국기술교육대학교임베디드 SOC 설계및실습 147

q 예외처리와시스템리셋 ARM 프로세서의예외처리 예외처리 시스템리셋 한국기술교육대학교임베디드 SOC 설계및실습 148

q q 예외처리 (Exception) ARM 프로세서의 Exception v 외부의요청이나오류에의해서정상적으로진행되는프로그램의동작을잠시멈추고프로세서의동작모드를변환하고미리정해진프로그램을이용하여외부의요청이나오류에대한처리를하도록하는것 v Exception 의예 Ø I/O 장치에서인터럽트를발생시키면 IRQ Exception 이발생하고, 프로세서는발생된 IRQ Exception 을처리하기위해 IRQ 모드로전환되어요청된인터럽트에맞는처리동작수행 ARM 의 Exception v Reset v Undefined Instruction v Software Interrupt v Prefetch Abort v Data Abort v IRQ(Interrupt Request) v FIQ(Fast Interrupt Request) 한국기술교육대학교임베디드 SOC 설계및실습 149

예외처리 Vector 와우선순위 q 예외처리벡터 v Exception 이발생하면미리정해진어드레스의프로그램을수행 v 미리정해진프로그램의위치를 Exception Vector 라한다. q 예외처리벡터테이블 v 발생가능한각각의 Exception에대하여 Vector를정의해놓은테이블 Ø 각 Exception 별로 1 word 크기의명령어저장공간을가진다. v Vector Table에는 Branch 또는이와유사한명령으로실제 Exception을처리하기위한루틴으로분기할수있는명령으로구성되어있다. Ø FIQ 의경우는 Vector Table 의맨상위에위치하여분기명령없이처리루틴을프로그램할수 있다. v ARM 은기본적으로 0x00000000 에 Vector Table 을둔다. (MMU 제어프로그램에의해위치변경가능 ) q Exception 우선순위 v 동시에 Exception 이발생하는경우처리를위해우선순위지정 한국기술교육대학교임베디드 SOC 설계및실습 150

Exception Vector Table Exception Vector Address 우선순위 전환되는동작모드 Reset 0x0000 0000 1 (High) Supervisor(SVC) Undefined Instruction 0x0000 0004 6 (Low) Undefined Software Interrupt(SWI) 0x0000 0008 6 Supervisor(SVC) Prefetch Abort 0x0000 000C 5 Abort Data Abort 0x0000 0010 2 Abort Reserved 0x0000 0014 IRQ 0x0000 0018 4 IRQ FIQ 0x0000 001C 3 FIQ 한국기술교육대학교임베디드 SOC 설계및실습 151

q q 예외처리벡터에사용되는명령어 Exception 마다 1 word 크기의명령어저장공간할당 v Exception vector 테이블에서는 1 개의 ARM 명령만을사용할수있다. Ø 실제 Exception Handler가있는분기명령으로만들어진다. v FIQ의 Vector Table은맨상위에있으므로핸들러를직접작성할수있다. Exception Vector Table 에서사용할수있는명령어 v Branch 명령 (B) Ø 가장일반적으로사용된다. Ø Branch 명령은 PC 값을기준으로 +/- 32MB 내에있어야한다. ü Handler가 32MB 영역을벗어나면다른명령을사용하여야한다. v Move 명령 (MOV) Ø Destination 레지스터를 PC로하면 Branch 명령과같이사용가능 Ø 한사이클내에처리된다. Ø Handler 어드레스가 8비트상수와 ROR로표시가능해야사용가능하다. v Load 명령 (LDR) 과 Literal Pool Ø 메모리영역내의어떤위치라도이동이가능하다. Ø 메모리에서주소를읽기위한 1 사이클이더필요하다. 한국기술교육대학교임베디드 SOC 설계및실습 152

예외처리벡터와명령어파이프라인 q 예외처리와명령어파이프라인 v Exception 종류별로 CPU 에서발생한 Exception 을인식하는시점의 pipeline stage 가모두다르다. v 따라서복원되는 PC 값의조정이필요하다. q 예외처리복귀명령 Exception Pipeline Stage Return 명령 Undefined Instruction Decode stage MOVS PC, LR Software Interrupt(SWI) Decode stage MOVS PC, LR Prefetch Abort Execute stage SUBS PC, LR, #4 Data Abort Memory stage SUBS PC, LR, #8 IRQ Execute stage SUBS PC, LR, #4 FIQ Execute stage SUBS PC, LR, #4 한국기술교육대학교임베디드 SOC 설계및실습 153

q q 예외처리복귀 Exception 처리가완료되면다음의절차를수행하여복귀 1. LR_<mode> 값을 PC 에복사한다. 2. SPSR_<mode> 를 CPSR 에복사한다. v 주의사항 : 2 가지동작이하나의명령으로처리되어야한다. Exception 복귀명령 v Data processing 명령에 S 접미사를사용하고 PC 를 destination 레지스터로사용하는방법 Ø Privilege 모드에서 S 접미사를사용하면 CPSR 복원 SUBS PC, LR, #4 v LDM 명령을사용하고 register list 뒤에 ^ 옵션사용 Ø Stack 에되돌아갈주소값이계산되어들어가있어야한다. LDM SP!, {PC}^ 한국기술교육대학교임베디드 SOC 설계및실습 154

q 발생조건 예외처리 : 리셋예외처리 v ARM 로 Reset 신호가입력되면 Reset Exception 발생 q 예외처리발생에따른 ARM 의동작 순서동작동작설명 1 SPSR_svc = CPSR 2 CPSR 값변경 CPSR[5] = 0 CPSR[6] = 1 CPSR[7] = 1 CPSR[4:0] = 10011 b ARM state로전환 FIQ disable IRQ disable SVC 모드로전환 3 LR_svc = unpredictable value 4 PC = 0x00 한국기술교육대학교임베디드 SOC 설계및실습 155

q q Undefined Instruction 예외처리 발생조건 v ARM에정의되지않은명령을실행하고자하면발생 v Coprocessor에서응답이없으면발생예외처리발생에따른 ARM의동작 순서동작동작설명 1 SPSR_undef = CPSR 2 CPSR 값변경 CPSR[5] = 0 CPSR[6] = no change CPSR[7] = 1 CPSR[4:0] = 11011 b ARM state 로전환 IRQ disable Undefined 모드로전환 3 LR_undef = address of undefined inst + 4 4 PC = 0x04 q Return 명령 v MOVS PC, LR 한국기술교육대학교임베디드 SOC 설계및실습 156

q q 소프트웨어인터럽트예외처리 (SWI) 발생조건 v SWI 명령이실행되면 Exception 발생예외처리발생에따른 ARM의동작 순서동작동작설명 1 SPSR_svc = CPSR 2 CPSR 값변경 CPSR[5] = 0 CPSR[6] = no change CPSR[7] = 1 CPSR[4:0] = 10011 b ARM state 로전환 IRQ disable SVC 모드로전환 3 LR_svc = address of SWI + 4 4 PC = 0x08 q Return 명령 v MOVS PC, LR 한국기술교육대학교임베디드 SOC 설계및실습 157

SWI Handler q SWI 처리순서 v SWI 명령이있는위치를찾는다. v SWI 명령에있는 SWI 번호를알아낸다. 31 28 27 24 23 0 cond 1 1 1 1 24-bit (interpreted) immediate v SWI 번호에해당하는동작을수행한다. v SWI 의 Argument 는 R0, R1, R2, R3 을통해전달된다. 한국기술교육대학교임베디드 SOC 설계및실습 158

q q Prefetch Abort 예외처리 발생조건 v 잘못된어드레스공간에서명령을읽으려고하면 Exception 발생 v MMU나메모리 controller서발생한 Abort 신호입력에의해서발생예외처리발생에따른 ARM의동작 순서동작동작설명 1 SPSR_abt = CPSR 2 CPSR 값변경 CPSR[5] = 0 CPSR[6] = no change CPSR[7] = 1 CPSR[4:0] = 10111 b ARM state 로전환 IRQ disable Abort 모드로전환 3 LR_abt = address of abort +4 4 PC = 0x0C q Return 명령 v SUBS PC, LR, #4 한국기술교육대학교임베디드 SOC 설계및실습 159

Data Abort 예외처리 q q 발생조건 v 잘못된어드레스공간에서데이터를읽거나쓰려고하면 Exception 발생 v MMU나메모리 controller서발생한 Abort 신호입력에의해서발생 예외처리발생에따른 ARM 의동작 순서동작동작설명 1 SPSR_abt = CPSR 2 CPSR 값변경 CPSR[5] = 0 CPSR[6] = no change CPSR[7] = 1 CPSR[4:0] = 10111 b ARM state 로전환 IRQ disable Abort 모드로전환 3 LR_abt = address of abort + 8 4 PC = 0x10 q Return 명령 v SUBS PC, LR, #8 한국기술교육대학교임베디드 SOC 설계및실습 160

q q IRQ 예외처리 발생조건 v 외부장치에서발생된인터럽트 (IRQ) 신호가 ARM에입력되면 Exception 발생예외처리발생에따른 ARM의동작 순서동작동작설명 1 SPSR_irq = CPSR 2 CPSR 값변경 CPSR[5] = 0 CPSR[6] = no change CPSR[7] = 1 CPSR[4:0] = 10010 b ARM state 로전환 IRQ disable IRQ 모드로전환 3 LR_irq = address of next inst + 4 4 PC = 0x18 q Return 명령 v SUBS PC, LR, #4 한국기술교육대학교임베디드 SOC 설계및실습 161

q q FIQ 예외처리 발생조건 v 외부장치에서발생된인터럽트 (FIQ) 신호가 ARM에입력되면 Exception 발생예외처리발생에따른 ARM의동작 순서동작동작설명 1 SPSR_fiq = CPSR 2 CPSR 값변경 CPSR[5] = 0 CPSR[6] = 1 CPSR[7] = 1 CPSR[4:0] = 10001 b ARM state로전환 FIQ disable IRQ disable FIQ 모드로전환 3 LR_fiq = address of next inst + 4 4 PC = 0x1C q Return 명령 v SUBS PC, LR, #4 한국기술교육대학교임베디드 SOC 설계및실습 162

시스템 reset : 프로세서의 reset 과부트코드 q 프로세서에리셋신호가입력되면실행중이던명령을멈추고 1 SPSR_svc에 CPSR 값을복사 2 CPSR의값을변경 Ø Ø Ø Mode bit M[4:0] 를 Supervisor 모드인 10011 b 로변경 I 비트와 F 비트를 1 로세트하여인터럽트를 disable T 비트를 0 으로클리어하여 ARM state 로변경 3 PC 값을 LR_svc 레지스터에복사 4 PC 값을 Reset Vector 어드레스인 0x00000000 으로변경 5 Reset 핸들러로분기하여시스템의초기화수행 한국기술교육대학교임베디드 SOC 설계및실습 163

q q 리셋 handler Reset Vector 에서분기된어셈블리어로작성된처리루틴 주요동작 v 하드웨어설정 Ø Ø Ø Ø 불필요한하드웨어동작중지시스템의클록설정메모리제어기설정필요에따라 MMU나 MPU 설정 v 소프트웨어동작환경설정 Ø Ø Ø Ø 예외처리스택 (stack) 영역설정힙 (heap) 영역설정변수영역초기화 q 리셋핸들러의마지막에서는 main() 함수와같은 C 로구성된함수를호출 q 이부분을 startup 코드또는부트코드라고부른다. 한국기술교육대학교임베디드 SOC 설계및실습 164

q 부트코드를작성하기위해서는 부트코드 v Programmer s model, 특히명령어 v 시스템하드웨어구조및기능에대한전반적인사항등을모두알아야한다. 한국기술교육대학교임베디드 SOC 설계및실습 165

ARM9TDMI 프로세서 q q q ARM Architecture v4t 사용 5 단의 pipeline 을사용 Harvard Architecture 사용 v 메모리인터페이스분리 Ø Ø 명령어를읽는메모리인터페이스 데이터를읽고쓰기위한메모리인터페이스 v 동시에명령어의 fetch 와데이터의억세스가가능 q Clock speed 향상 v 반도체기술의발달 v 늘어난 pipeline stage q 1.5 CPI(Clock Cycle Per Instruction) 한국기술교육대학교임베디드 SOC 설계및실습 166

ARM9TDMI 프로세서 q ARM9TDMI 는 ARM9 core 에다음과같은기능이확장된프로세서이다 v T : Thumb 명령지원 Ø 32 비트 ARM 명령과 16 비트 Thumb 명령모두지원 v D : Debug 지원 Ø Ø Core 내부에디버그를지원하기위한기능과디버그를위한입출력신호가추가 디버거를사용하기위해서는반드시필요한부분 v M : Enhanced Multiplier 지원 Ø Ø 64 비트결과를낼수있는 32x8 의 Enhanced Multiplier 지원 기본은 2 비트, M 확장된 8 비트로계산시간단축 v I : Embedded ICE Logic Ø Ø 디버거를이용하여명령어 breakpoint 나데이터 watchpoint 를설정가능하도록한다. 디버거를사용하기위해서는 Debug 지원 (D 확장 ) 과함께반드시필요 한국기술교육대학교임베디드 SOC 설계및실습 167

ARM9TDMI 내부구조 한국기술교육대학교임베디드 SOC 설계및실습 168

q 레지스터 Bank ARM9TDM core 내부구조 v 37 개의 32 비트레지스터 v 데이터처리를위한저장공간으로사용 q 명령어해석기 v 입력되는명령을해석하는장치 q 제어장치 q ALU v 명령에따라필요한제어동작수행하고필요에따라제어신호를외부로구동 v 32 비트산술및논리연산수행 q Multiplier v 32 비트의 Booth s 곱셈기가연결되어 32 비트곱셈연산수행 한국기술교육대학교임베디드 SOC 설계및실습 169

q 어드레스 Incrementer ARM9TDM 코어내부구조 v 순차적인명령어를 fetch 할때사용 (Instruction 용 ) v LDM 이나 STM 같은 block 단위의데이터전송명령이실행될때사용 (Data 용 ) q 메모리인터페이스분리 v Harvard Architecture Ø 명령어를읽는메모리인터페이스 ü 어드레스 IA[31:0], 데이터 ID[31:0] Ø 데이터를읽고쓰기위한메모리인터페이스 ü 어드레스 DA[31:0], 데이터 DD[31:0] 한국기술교육대학교임베디드 SOC 설계및실습 170

q A 버스 ARM9TDMI 코어의 CPU 내부버스 v 레지스터뱅크에서바로 ALU에연결된다. v Data Processing 명령의경우 Operand 1(Source 레지스터 ) 가전달되는경로 v Data Transfer 명령의경우 Base 레지스터값이전달되는경로 q B 버스 v 레지스터뱅크에서 Barrel Shifter를통하여 ALU에연결된다 v Data Processing 명령의경우 Operand 2가전달되는경로 v Data Transfer 명령의경우 Offset 값이전달되는경로 v Barrel shifter : Ø Operand 2 와 Offset 을지정할때 shift operation 을같이사용할수있도록한다. 한국기술교육대학교임베디드 SOC 설계및실습 171

ARM9TDM 코어의 CPU 내부버스 q C 버스 v 데이터를위한전용버스 q 데이터입력버스 v 외부데이터버스에서데이터를읽어내부레지스터로전달하는경로 q ALU 버스 v ALU 의연산결과가전달되는경로 v Data Processing 명령의경우레지스터뱅크의 Destination 레지스터에결과값저장 v Data Transfer 명령의경우어드레스레지스터에저장되어어드레스를생성 한국기술교육대학교임베디드 SOC 설계및실습 172

데이터처리명령과내부버스 ADD Rd, Rs, OP2 OP 코드 Operand 2 : B 버스와 Barrel shifter 를통해 ALU 에입력 Operand 1 : A 버스를통해 ALU 에입력, Source 레지스터 Destination 레지스터 : ALU 버스를통해레지스터뱅크에 write 한국기술교육대학교임베디드 SOC 설계및실습 173

데이터전송명령과내부버스 LDR Rd, [ Rb, Offset ] OP 코드 Offset : B 버스와 Barrel shifter 를통해 ALU 에입력 Base 레지스터 : A 버스를통해 ALU 에입력 Destination 레지스터 : 데이터버스를통해읽혀진데이터가 write 되는레지스터 한국기술교육대학교임베디드 SOC 설계및실습 174

Multiplier 와 Shifter q Booth s 곱셈기 v 32 비트의두입력을받아서곱하여, 결과가 32 비트를넘더라도넘는부분은 버리고 32 비트만남긴다. q Barrel Shifter v 한번의연산으로데이터워드내에있는다수의비트를 shift하거나 rotate 시킬수있다. v 1 clock 사이클동안에최대 32비트 shift 가능 한국기술교육대학교임베디드 SOC 설계및실습 175

ARM9TDMI 코어와 EmbeddedICE 로직 ARM9TDMI 는 ARM9TDM 코어에 EmbeddedICE 로직이추가된프로세서이다 한국기술교육대학교임베디드 SOC 설계및실습 176

ARM9TDMI 파이프라인 명령어패치 ARM/Thumb 디코드 Reg Select Reg Read 쉬프트 ALU 연산 메모리억세스 레지스터에기록 FETCH DECODE EXECUTE MEMORY WRITE ARM : Thumb : PC PC-4 PC-8 PC PC-2 PC-4 q ARM9 의경우 ARM7 과달리 32 비트 ARM 명령어와 16 비트 Thumb 명령어 decoder 를별도로가지고있다. q Memory stage 가추가되어 LDR 명령이사용되더라도매사이클마다하나의 명령이실행된다. 한국기술교육대학교임베디드 SOC 설계및실습 177

ARM9TDMI 의기본파이프라인동작 명령 사이클 1 2 3 4 5 6 7 8 9 10 ADD R0, R1, R2 F D E M W SUB R1, R2, R4 F D E M W AND R2, R1, R0 F D E M W LDR R4, [ R5 ] F D E M W ORR R3, R2, R1 F D E M W ADD R1, R2, R4 F D E M W AND R1, R2, R3 F D E M F : Fetch D : Decode E : Execute M : Memory W : Write I : Interlock q LDR 명령이사용되더라도매사이클마다하나의명령어실행 v CPI = 1 v 단 LDR 명령의 Destination 레지스터가다음명령에서사용되면안된다. 한국기술교육대학교임베디드 SOC 설계및실습 178

LDR 명령과 interlock 사이클 명령 사이클 1 2 3 4 5 6 7 8 9 10 ADD R0, R1, R2 SUB R1, R2, R4 AND R2, R1, R0 LDR R4, [ R5 ] ADD R1, R3, R4 ORR R3, R2, R1 F D E F D E F D E F D E F D E F D E AND R1, R2, R3 F D q LDR 명령과 Interlock 사이클 v LDR 명령의 Destination 레지스터가다음명령에서사용되는경우발생 v CPI = 1.2

분기명령과파이프라인동작 명령 사이클 1 2 3 4 5 6 7 8 9 10 ADD F D E M W BL 0x8000 F D E L A SUB AND F D F 버려진다 STR (0x8000) F D E M W AND F D E F : Fetch D : Decode E : Execute L : Link Return A : Adjust M q Branch 명령이사용되면 v Fetch 한명령을모두버리고지정된분기하여새로운명령을읽는다 Ø Pipeline이깨진다 (break) 한국기술교육대학교임베디드 SOC 설계및실습 180

ARM9TDMI 프로세서 Family q ARM9TDMI 프로세서 Family v ARM9TDMI core 를사용하여만들어진프로세서 q Cached ARM9TDMI Processor v ARM9TDMI core 와 Cache 를가지고있는프로세서 v ARM920T Ø Ø Ø 16K Instruction/Data Cache Memory Management Unit (MMU) Write Buffer v ARM922T ß Excalibur s core Ø Ø Ø 8K Instruction/Data Cache Memory Management Unit (MMU) Write Buffer v ARM940T Ø 4K Instruction/Data Cache Ø Memory Protection Unit (MPU) Ø Write Buffer 한국기술교육대학교임베디드 SOC 설계및실습 181

ARM9 프로세서의구조 한국기술교육대학교임베디드 SOC 설계및실습 182