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
|
|
- 소녀 육
- 6 years ago
- Views:
Transcription
1 ARM 아키텍쳐 - ARM 아키텍쳐 - Programming 모델 - ARM 프로세서명령어 - 예외처리와시스템리셋 - ARM9TDMI 프로세서
2 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
3 ARM 의 32 비트 RISC 프로세서 IP q ARM사는직접반도체를제조하여판매하는것이아니라설계한프로세서를반도체회사에 Hard Macrocell 또는 Synthesizable core로제공 q 반도체제조회사또는 SoC 제조사에서는 ARM 사로부터제공받은 ARM core 와주변장치를추가하여 SoC(System on a Chip) 를만들어 사용자에게판매하거나자체제품에서사용 한국기술교육대학교임베디드 SOC 설계및실습 2
4 CISC 와 RISC 비교 q ARM cores are basically a RISC 한국기술교육대학교임베디드 SOC 설계및실습 3
5 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
6 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
7 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
8 ARM-based 임베디드소자의예 한국기술교육대학교임베디드 SOC 설계및실습 7
9 ARM Architecture q Programming Model 은 ARM Architecture 의분류기준 v Architecture 가동일하면 Programming model 이동일하다 Ø 프로그램의호환이가능하다 v Programming Model Ø Ø Ø Ø Ø 명령어 (Instruction Set) 데이터구조동작모드레지스터의구조 Exception 처리방식등 q 동일한 Architecture 에도여러개의프로세서가있을수있다 q 동일한프로세서 Family 라도 Architecture 가서로다를수있다. 한국기술교육대학교임베디드 SOC 설계및실습 8
10 ARM 구조의변천 한국기술교육대학교임베디드 SOC 설계및실습 9
11 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
12 ARM architecture overview 한국기술교육대학교임베디드 SOC 설계및실습 11
13 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
14 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
15 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
16 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
17 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
18 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
19 q Programming Model ARM Programming 모델 v 프로그래머가프로그램을작성하는데필요한각종정보 Ø 여기서프로그램은 C 나 C++ 이아닌어셈블리어를의미 v Programming Model 은 ARM 의 Architecture 를구분하는기준 q 프로그래머가알아야할정보들 v 명령어 v 프로세서의동작모드 v 프로세서내부레지스터의구성및사용법 v 메모리구조 v 예외처리 한국기술교육대학교임베디드 SOC 설계및실습 18
20 ARM 명령어와파이프라인 : 데이터처리명령 R0 := R1 R2 SUB R0, R1, OP2 OP 코드 오퍼랜드 2 오퍼랜드 1 ( 소스레지스터 ) 대상레지스터 한국기술교육대학교임베디드 SOC 설계및실습 19
21 LDR/STR 명령 LDR R0, [ R4, R5 ] OP 코드 옵셋 STR R0, [ R4, R5 ] 베이스레지스터 OP 코드 옵셋 대상레지스터 베이스레지스터 대상레지스터 한국기술교육대학교임베디드 SOC 설계및실습 20
22 ARM 어셈블리어프로그래밍 한국기술교육대학교임베디드 SOC 설계및실습 21
23 ARM 명령어처리과정 한국기술교육대학교임베디드 SOC 설계및실습 22
24 ARM 명령어파이프라인 한국기술교육대학교임베디드 SOC 설계및실습 23
25 ARM 구조와명령어실행 : ARM 코어의구조 한국기술교육대학교임베디드 SOC 설계및실습 24
26 ARM 명령어 (Instruction Set) q ARM 프로세서의명령어 v 32 비트 ARM instruction set v 16 비트 Thumb instruction set q Jazelle core 를확장한프로세서 v 8 비트 Java 바이트명령어 한국기술교육대학교임베디드 SOC 설계및실습 25
27 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
28 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
29 16 비트 Thumb 명령어 q Thumb 명령어 v 32 비트의 ARM 명령을 16 비트로재구성한명령 q Thumb 명령어의장점 v 코드의크기를줄일수있다 Ø ARM 명령의 65% v 8비트나 16비트와같은좁은메모리인터페이스에서 ARM 명령을수행할때보다성능이우수하다 q Thumb 명령어의단점 v 조건부실행이안된다. v Immediate 상수값의표현범위가적다 한국기술교육대학교임베디드 SOC 설계및실습 28
30 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
31 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
32 파이프라인 q ARM 프로세서코어는파이프라인을지원 v 프로세서의모든부분들과메모리장치들이계속적으로쉬지않고 동작한다. v 하나의명령이수행되고있는동안에다음에수행할명령을 decode 하고, 그 다음에수행할명령이메모리로부터읽어온다. 한국기술교육대학교임베디드 SOC 설계및실습 31
33 동작모드 : 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
34 Operating Mode (2) v Abort Mode Ø 명령이나데이터를메모리로부터읽거나쓸때오류가발생하면 ARM 은 Abort 모드가된다. Ø Abort 는외부의메모리제어기에서발생된다. v Undefined Mode Ø ARM 이정의되지않은명령을수행하려고하면수행되는프로세서의동작모드 v System Mode Ø User 모드와동일한용도로사용되지만 privilege 모드이다. Ø ARM Architecture v4 이후부터지원된다. 한국기술교육대학교임베디드 SOC 설계및실습 33
35 q 예외처리 (Exception) Operating 모드의변경 v IRQ, FIQ를비롯한대부분의 Operating 모드는외부에서발생되는조건에의해서 ARM 프로세서가하드웨어적으로변경한다. v 외부에서발생되는물리적인조건에의해서정상적인프로그램의실행을미루고예외적인현상을처리하는것을 Exception이라한다. v Operating 모드의변경은소프트웨어에의하여제어할수도있다. q 시스템콜 v User 모드에서수행되는프로그램에서 Supervisor 모드로전환하여시스템자원을사용할수있게해주는인터페이스 v OS에서는소프트웨어인터럽트 (SWI) 를사용하여시스템콜을구현 한국기술교육대학교임베디드 SOC 설계및실습 34
36 q 레지스터 레지스터 : ARM 프로세서의레지스터 v 프로세서가작업을하는데사용되는값을저장하는공간 v ARM에는 32비트길이의 37개의레지스터가있다. 명령 데이타 메모리 ALU 버스 A 버스 Register B 버스 Barrel Shifter Immediate 상수 명령어 Decoder ALU 한국기술교육대학교임베디드 SOC 설계및실습 35
37
38 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
39 ARM 상태의레지스터 한국기술교육대학교임베디드 SOC 설계및실습 38
40 특정모드에서의레지스터예 한국기술교육대학교임베디드 SOC 설계및실습 39
41 Thumb 상태의레지스터 한국기술교육대학교임베디드 SOC 설계및실습 40
42 Stack Pointer (SP 또는 R13) q 프로그램에서사용하는스택의위치를저장하는레지스터 q 프로세서의동작모드마다별도로할당된 SP 레지스터를가지고있다 q ARM 은별도의스택명령이없다 v Push 나 Pop 과같은별도의스택명령을제공하지않는다 v LDR/STR, LDM/STM 같은데이터전송명령을사용하여스택을처리 한국기술교육대학교임베디드 SOC 설계및실습 41
43 Link Register (LR 또는 R14) q 서브루틴에서되돌아갈위치정보를저장하고있는레지스터 v 서브루틴을호출하는 BL 명령을사용하면 PC 값을자동으로 LR 에저장 v 되돌아갈때는 MOV 명령을이용하여 LR 값을 PC 에저장 MOV PC, LR v ADD 나 SUB 와같은연산명령을이용하여되돌아갈위치를조정할수도있다. q 프로세서의동작모드마다별도로할당된 LR 레지스터를가지고있다 한국기술교육대학교임베디드 SOC 설계및실습 42
44 Program Counter (PC 또는 R15) q 프로그램을수행하는위치를저장하고있는레지스터 v ARM state 의경우위치정보비트 [31:2] 저장 v Thumb state 의경우위치정보비트 [31:1] 저장 q 다른범용레지스터와마찬가지로 ADD, SUB 와같은연산명령을사용하여 프로그램이분기할위치를조정가능 q 프로세서의모든동작모드에대하여하나만존재한다. 한국기술교육대학교임베디드 SOC 설계및실습 43
45 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 N Z C V Q J I F T Mode f s x c Condition Code flag Reserved Control bits 한국기술교육대학교임베디드 SOC 설계및실습 44
46 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
47
48 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
49 Aligned 과 Un-aligned 억세스 q 프로세서는메모리억세스 v Byte, halfword(2 바이트 ) 또는 word(4 바이트 ) 단위로만가능 Aligned Access Un-aligned Access x0C x0C x x x x x x00 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
50 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 까지 x08 0x x00 데이터비트 상위어드레스 x08 0x x00 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
51 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
52 예외처리 Vector 와우선순위 q 예외처리벡터 v Exception 이발생하면미리정해진어드레스의프로그램을수행 v 미리정해진프로그램의위치를 Exception Vector 라한다. q 예외처리벡터테이블 v 발생가능한각각의 Exception에대하여 Vector를정의해놓은테이블 Ø 각 Exception 별로 1 word 크기의명령어저장공간을가진다. v Vector Table에는 Branch 또는이와유사한명령으로실제 Exception을처리하기위한루틴으로분기할수있는명령으로구성되어있다. Ø FIQ 의경우는 Vector Table 의맨상위에위치하여분기명령없이처리루틴을프로그램할수 있다. v ARM 은기본적으로 0x 에 Vector Table 을둔다. (MMU 제어프로그램에의해위치변경가능 ) q Exception 우선순위 v 동시에 Exception 이발생하는경우처리를위해우선순위지정 한국기술교육대학교임베디드 SOC 설계및실습 51
53 Exception Vector Table Exception Vector Address 우선순위 전환되는동작모드 Reset 0x (High) Supervisor(SVC) Undefined Instruction 0x (Low) Undefined Software Interrupt(SWI) 0x Supervisor(SVC) Prefetch Abort 0x C 5 Abort Data Abort 0x Abort Reserved 0x IRQ 0x IRQ FIQ 0x C 3 FIQ 한국기술교육대학교임베디드 SOC 설계및실습 52
54 예외처리과정 한국기술교육대학교임베디드 SOC 설계및실습 53
55 IRQ 예외처리와레지스터사용예 0X18 번지 한국기술교육대학교임베디드 SOC 설계및실습 54
56 q ARM 프로세서명령어 ARM 프로세서명령어의특징 32비트 ARM 명령어아키텍처 v5te의명령어 16비트 Thumb 명령어 한국기술교육대학교임베디드 SOC 설계및실습 55
57 ARM 프로세서명령어의특징 : 명령어 (Instruction Set) q ARM 프로세서의명령어 v 32 비트 ARM 명령어 v 16 비트 Thumb 명령어 Ø 최근의프로세서의경우 Thumb-2 명령어지원 v v5te 에추가된명령어 q Jazelle core 를확장한프로세서 v 8 비트 Java 바이트명령어 한국기술교육대학교임베디드 SOC 설계및실습 56
58 32 비트 ARM 명령어 q 모든 ARM 명령은 32 비트로구성되어있다. v Load/Store와같은메모리참조명령이나 Branch 명령에서는모두상대주소 (Indirect Address) 방식을사용한다 v Immediate 상수는 32 비트명령어내에표시된다 Ø Immediate 상수는 32 비트이하의상수이다 q 모든 ARM 명령어는조건부실행이가능하다. q Load/Store Architecture 를사용한다. 한국기술교육대학교임베디드 SOC 설계및실습 57
59 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 / CPU 성능측정 32 bit 16 bit 16 bit with 32 bit stack ARM Thumb 한국기술교육대학교임베디드 SOC 설계및실습 58
60 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
61 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
62 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
63 32 비트 ARM 명령어의구조 Instruction type Cond 0 0 I Opcode S Rn Rd Operand 2 Cond A S Rd Rn Rs Rm Data processing / PSR Transfer Multiply Cond U A S RdHi RdLo Rs Rm Cond B 0 0 Rn Rd Rm Cond 0 1 I P U B W L Rn Rd Offest Cond P U S W L Rn Register List Cond P U 1 W L Rn Rd Offset1 1 S H 1 Offset2 Cond P U 0 W L Rn Rd S H 1 Rm Cond L Offset Cond Rn Cond P U N W L Rn CRd CPNum Offset Cond Op1 CRn CRd CPNum Op2 0 CRm Cond Op1 L CRn Rd CPNum Op2 1 CRm Cond 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
64 조건부실행 q ARM 에서모든명령은조건에따라실행여부결정가능 q 분기명령의사용을줄인다. v 분기명령이사용되면파이프라인이스톨 (stall) 되고새로운명령을읽어오는 사이클의낭비가따른다. q 조건필드 (Condition field) v 모든명령어는조건필드를가지고있으며 CPU가명령의실행여부를결정하는데사용된다. v Current Program Status Register(CPSR) 의조건플래그의값을사용하여조건을검사 한국기술교육대학교임베디드 SOC 설계및실습 63
65 조건부실행방법 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
66 조건필드 (condition field) 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
67 조건플래그변경 q 조건플래그의변경은명령어에 S 접미사를삽입 v Data processing 명령의경우 S 접미사가없으면 condition flag에영향을미치지않는다. v SUB 연산실행후결과를가지고조건플래그를세트 SUBS r0,r1,r2 ; r0 = r1 - r2 ;... and set flags q 데이터처리명령중비교를위한명령은별도로 S 접미사를삽입하지 않아도조건플래그가변경된다. 한국기술교육대학교임베디드 SOC 설계및실습 66
68 조건플래그 (Condition Flags) 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
69 분기명령어 명령어 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
70 분기명령어의구성 Cond 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
71 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
72 데이터처리명령어 q 관련명령어종류 v 산술 (Arithmetic) 연산 v 논리 (Logical) 연산 v 레지스터간의데이터 Move( 이동 ) 명령 v 비교 (Comparison) 명령 q Load /Store 구조 v 데이터처리명령은레지스터내의값과상수로만연산이루어지고메모리에서데이터를읽거나쓸때는 Load 또는 Store 명령을사용한다. 한국기술교육대학교임베디드 SOC 설계및실습 71
73 데이터처리명령어 한국기술교육대학교임베디드 SOC 설계및실습 72
74 데이터처리명령어의구조 한국기술교육대학교임베디드 SOC 설계및실습 73
75 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
76 논리연산 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
77 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
78 조건플래그에의한실행비교 한국기술교육대학교임베디드 SOC 설계및실습 77
79 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, #0xff ; r0 <- 0x00ffffff 한국기술교육대학교임베디드 SOC 설계및실습 78
80
81 오퍼랜드 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
82 오퍼랜드 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
83 오퍼랜드 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
84 오퍼랜드 2 와 Immediate 상수 q Operand 2 로 Immediate 상수로사용가능 v 32 비트명령어내에그값이지정된다. Ø Immediate 상수는 32비트상수를가질수없다 cond 0 0 # opcode S Rn Rd operand #rot x2 8-bit immediate Shifter ROR 8 비트상수값이 #rot 에지정된값의 2 배수를취하여 ROR 한값이사용 #rot = 0x4 8-bit immediate 상수 = 0xFF Immediate 상수 = 0xFF 한국기술교육대학교임베디드 SOC 설계및실습 83
85 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
86 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
87
88 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
89 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
90 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
91 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
92 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
93 단일레지스터를사용한데이터전송명령 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
94 명령어 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
95 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
96 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: ~ 범위의 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
97 LDR/STR 의 <offset> q 레지스터뱅크에서 B 버스를통해서 Barrel shifter를경유하여 ALU에전달 q Offset으로사용될수있는표현 v Unsigned 12비트 immediate 상수 (0 ~ 4095 바이트 ) v 레지스터 Ø Immediate 값으로 shift operation 지정가능 q + 또는 - 연산을함께사용가능 한국기술교육대학교임베디드 SOC 설계및실습 96
98 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 x40) 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
99 Pre-indexed 어드레스지정방식 q Base 레지스터 (Rn) 과 <offset> 으로주소계산후데이터전송 v 데이터전송이후에도 Rn 의값은별도지정이없으면변하지않는다 한국기술교육대학교임베디드 SOC 설계및실습 98
100 Pre-indexed 방식과 Auto update q Pre-indexed 방식을사용하여참조후 Base 레지스터 Rn 갱신 한국기술교육대학교임베디드 SOC 설계및실습 99
101 Post-indexed 어드레스지정방식 q Base 레지스터 (Rn) 가지정하는주소에데이터의전송후 Rn 값과 <Offset> 의연산결과로 Rn 갱신 한국기술교육대학교임베디드 SOC 설계및실습 100
102 PC Relative 어드레스지정방식 q LABEL 지정에의한어드레스지정 v 어셈블리어에서 LABEL을지정하면어셈블러가 [PC+LABEL] 형태의주소로변환하여참조 LDR r1, label. Label: DCD 0x LDR r1, [ PC, #offset ] DCD 0x q literal pool 을사용한 32 비트데이터의 Load v 어셈블러가코드영역내에데이터저장후 [PC+LABEL] 형태의주소로 변환하여참조 LDR r1, [ PC, #offset ] LDR r1, =0x DCD 0x 한국기술교육대학교임베디드 SOC 설계및실습 101
103 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
104 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
105 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
106 Block Data Transfer 명령의구조 한국기술교육대학교임베디드 SOC 설계및실습 105
107 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
108 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
109 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
110 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 증가 0x {!}, auto-update 옵션이있으면 R9 값을 0x1018 로변경 한국기술교육대학교임베디드 SOC 설계및실습 109
111 Pre-Decrement 어드레스지정 STMDB R9!, {R0,R1,R2} Base 레지스터 (R9) = 0x100C 0x1018 q 어드레스를 <register_list> 개수만큼감소해놓고, 어드레스를증가하면서데이터저장 (Decrement Before) 1 어드레스를 0x1000 로감소 R9 R9 R2 R1 R0 0x100C 0x x1000에 R0 저장후어드레스증가 3 0x1004에 R1 저장후어드레스증가 4 0x1008에 R2 저장후어드레스증가 5 {!}, auto-update 옵션이있으면 R9 값을 0x1000 로변경 한국기술교육대학교임베디드 SOC 설계및실습 110
112 Post-Decrement 어드레스지정 STMDA R9!, {R0,R1,R2} Base 레지스터 (R9) = 0x100C 0x1018 q 어드레스를 <register_list> 개수만큼감소해놓고, 어드레스를증가하면서데이터저장 (Decrement After) 1 어드레스를 0x1000 로감소 R9 R9 R2 R1 R0 0x100C 0x 어드레스증가후 0x1004에 R0 저장 3 어드레스증가후 0x1008에 R1 저장 4 어드레스증가후 0x100C에 R2 저장 5 {!}, auto-update 옵션이있으면 R9 값을 0x1000 로변경 한국기술교육대학교임베디드 SOC 설계및실습 111
113 STM/LDM 한국기술교육대학교임베디드 SOC 설계및실습 112
114 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
115 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
116 Stack Push Operations 한국기술교육대학교임베디드 SOC 설계및실습 115
117 ARM 의스택동작 한국기술교육대학교임베디드 SOC 설계및실습 116
118 Stack 의 Push 동작 STMFD SP!, {R0-R1,LR} Base 레지스터 (SP) = 0x100C q Stack 에 context 정보저장 1 어드레스를 0x1000 로감소 0x 레지스터값저장후어드레스증가 SP SP LR R1 R0 0x100C 0x 링크레지스터저장후어드레스증가 4 Stack 의위치를 0x1000 로변경 한국기술교육대학교임베디드 SOC 설계및실습 117
119 Stack 의 Pop 동작 LDMFD SP!, {R0-R1,PC} Base 레지스터 (SP) = 0x1000 q Stack 에서 context 정보를읽는다 1 레지스터값을읽은후어드레스증가 0x 링크레지스터 (LR) 값을읽어프로그램 SP SP PC R1 R0 0x100C 0x1000 카운터 (PC) 에저장 3 Stack 의위치를 0x100C 로변경 한국기술교육대학교임베디드 SOC 설계및실습 118
120 ** 참고 : 스택과서브루틴 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
121 메모리데이터와레지스터의 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
122 소프트웨어인터럽트 (SWI) 명령 명령어 SWI Software Interrupt 형식 SWI{cond} <expression> {cond} 는조건부실행을위한 condition 조건을나타낸다. <expression> 은 SWI number를기입한다. 동작 <expression> 에지시한번호로소프트웨어인터럽트를호출한다. 사용예 SWI 0x23 ; 0x23 번소프트웨어인터럽트호출 cond bit (interpreted) immediate 한국기술교육대학교임베디드 SOC 설계및실습 121
123 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
124 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
125 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> Cond 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
126 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
127 아키텍처 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
128 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
129 q Saturate 연산 Saturate 연산 v 연산결과가 + 의최대값과 - 의최소값이넘지않도록한다. v 만약값이넘으면 CPSR의 Q-flag를세트한다. Ø 세트된 Q-flag 는사용자가클리어한다. q 연산결과비교 v 일반적인산술연산의경우 Ø 0x7FFFFFFF + 1 => 0x , 즉 1이된다. Ø 0x => 0x7FFFFFFF, 즉 + 값이된다. v Saturate 연산의경우 Ø 0x7FFFFFFF + 1 => 0x7FFFFFFF 유지, Q-flag 세트 Ø 0x => 0x 유지, Q-flag 세트 q 분수연산지원 v QDADD 등을사용하면 Multiply 와함께 +1 ~ -1 까지분수연산가능 한국기술교육대학교임베디드 SOC 설계및실습 128
130 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
131 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
132 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
133 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
134 프로세서의 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
135 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
136 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
137 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 / Thumb 명령의성능이 32 비트메모리인터페이스의 ARM 명령성능과유사 0 ARM Thumb 32 bit 16 bit 16 bit with 32 bit stack 한국기술교육대학교임베디드 SOC 설계및실습 136
138 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
139 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 ; => ADD r5, pc, #0xe800 ADD r5, r5, #0x250 한국기술교육대학교임베디드 SOC 설계및실습 138
140 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
141 Directives q ARM Assembly Language Basic v Simple Example 한국기술교육대학교임베디드 SOC 설계및실습 140
142 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
143 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
144 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
145 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 mem MyVal DCI 0xEA 한국기술교육대학교임베디드 SOC 설계및실습 144
146 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
147 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 0x doadd ADD r0, r0, r1 MOV pc, lr END 한국기술교육대학교임베디드 SOC 설계및실습 146
148 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
149 q 예외처리와시스템리셋 ARM 프로세서의예외처리 예외처리 시스템리셋 한국기술교육대학교임베디드 SOC 설계및실습 148
150 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
151 예외처리 Vector 와우선순위 q 예외처리벡터 v Exception 이발생하면미리정해진어드레스의프로그램을수행 v 미리정해진프로그램의위치를 Exception Vector 라한다. q 예외처리벡터테이블 v 발생가능한각각의 Exception에대하여 Vector를정의해놓은테이블 Ø 각 Exception 별로 1 word 크기의명령어저장공간을가진다. v Vector Table에는 Branch 또는이와유사한명령으로실제 Exception을처리하기위한루틴으로분기할수있는명령으로구성되어있다. Ø FIQ 의경우는 Vector Table 의맨상위에위치하여분기명령없이처리루틴을프로그램할수 있다. v ARM 은기본적으로 0x 에 Vector Table 을둔다. (MMU 제어프로그램에의해위치변경가능 ) q Exception 우선순위 v 동시에 Exception 이발생하는경우처리를위해우선순위지정 한국기술교육대학교임베디드 SOC 설계및실습 150
152 Exception Vector Table Exception Vector Address 우선순위 전환되는동작모드 Reset 0x (High) Supervisor(SVC) Undefined Instruction 0x (Low) Undefined Software Interrupt(SWI) 0x Supervisor(SVC) Prefetch Abort 0x C 5 Abort Data Abort 0x Abort Reserved 0x IRQ 0x IRQ FIQ 0x C 3 FIQ 한국기술교육대학교임베디드 SOC 설계및실습 151
153 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
154 예외처리벡터와명령어파이프라인 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
155 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
156 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] = b ARM state로전환 FIQ disable IRQ disable SVC 모드로전환 3 LR_svc = unpredictable value 4 PC = 0x00 한국기술교육대학교임베디드 SOC 설계및실습 155
157 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] = b ARM state 로전환 IRQ disable Undefined 모드로전환 3 LR_undef = address of undefined inst PC = 0x04 q Return 명령 v MOVS PC, LR 한국기술교육대학교임베디드 SOC 설계및실습 156
158 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] = b ARM state 로전환 IRQ disable SVC 모드로전환 3 LR_svc = address of SWI PC = 0x08 q Return 명령 v MOVS PC, LR 한국기술교육대학교임베디드 SOC 설계및실습 157
159 SWI Handler q SWI 처리순서 v SWI 명령이있는위치를찾는다. v SWI 명령에있는 SWI 번호를알아낸다 cond bit (interpreted) immediate v SWI 번호에해당하는동작을수행한다. v SWI 의 Argument 는 R0, R1, R2, R3 을통해전달된다. 한국기술교육대학교임베디드 SOC 설계및실습 158
160 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] = 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
161 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] = b ARM state 로전환 IRQ disable Abort 모드로전환 3 LR_abt = address of abort PC = 0x10 q Return 명령 v SUBS PC, LR, #8 한국기술교육대학교임베디드 SOC 설계및실습 160
162 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] = b ARM state 로전환 IRQ disable IRQ 모드로전환 3 LR_irq = address of next inst PC = 0x18 q Return 명령 v SUBS PC, LR, #4 한국기술교육대학교임베디드 SOC 설계및실습 161
163 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] = b ARM state로전환 FIQ disable IRQ disable FIQ 모드로전환 3 LR_fiq = address of next inst PC = 0x1C q Return 명령 v SUBS PC, LR, #4 한국기술교육대학교임베디드 SOC 설계및실습 162
164 시스템 reset : 프로세서의 reset 과부트코드 q 프로세서에리셋신호가입력되면실행중이던명령을멈추고 1 SPSR_svc에 CPSR 값을복사 2 CPSR의값을변경 Ø Ø Ø Mode bit M[4:0] 를 Supervisor 모드인 b 로변경 I 비트와 F 비트를 1 로세트하여인터럽트를 disable T 비트를 0 으로클리어하여 ARM state 로변경 3 PC 값을 LR_svc 레지스터에복사 4 PC 값을 Reset Vector 어드레스인 0x 으로변경 5 Reset 핸들러로분기하여시스템의초기화수행 한국기술교육대학교임베디드 SOC 설계및실습 163
165 q q 리셋 handler Reset Vector 에서분기된어셈블리어로작성된처리루틴 주요동작 v 하드웨어설정 Ø Ø Ø Ø 불필요한하드웨어동작중지시스템의클록설정메모리제어기설정필요에따라 MMU나 MPU 설정 v 소프트웨어동작환경설정 Ø Ø Ø Ø 예외처리스택 (stack) 영역설정힙 (heap) 영역설정변수영역초기화 q 리셋핸들러의마지막에서는 main() 함수와같은 C 로구성된함수를호출 q 이부분을 startup 코드또는부트코드라고부른다. 한국기술교육대학교임베디드 SOC 설계및실습 164
166 q 부트코드를작성하기위해서는 부트코드 v Programmer s model, 특히명령어 v 시스템하드웨어구조및기능에대한전반적인사항등을모두알아야한다. 한국기술교육대학교임베디드 SOC 설계및실습 165
167 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
168 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
169 ARM9TDMI 내부구조 한국기술교육대학교임베디드 SOC 설계및실습 168
170 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
171 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
172 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
173 ARM9TDM 코어의 CPU 내부버스 q C 버스 v 데이터를위한전용버스 q 데이터입력버스 v 외부데이터버스에서데이터를읽어내부레지스터로전달하는경로 q ALU 버스 v ALU 의연산결과가전달되는경로 v Data Processing 명령의경우레지스터뱅크의 Destination 레지스터에결과값저장 v Data Transfer 명령의경우어드레스레지스터에저장되어어드레스를생성 한국기술교육대학교임베디드 SOC 설계및실습 172
174 데이터처리명령과내부버스 ADD Rd, Rs, OP2 OP 코드 Operand 2 : B 버스와 Barrel shifter 를통해 ALU 에입력 Operand 1 : A 버스를통해 ALU 에입력, Source 레지스터 Destination 레지스터 : ALU 버스를통해레지스터뱅크에 write 한국기술교육대학교임베디드 SOC 설계및실습 173
175 데이터전송명령과내부버스 LDR Rd, [ Rb, Offset ] OP 코드 Offset : B 버스와 Barrel shifter 를통해 ALU 에입력 Base 레지스터 : A 버스를통해 ALU 에입력 Destination 레지스터 : 데이터버스를통해읽혀진데이터가 write 되는레지스터 한국기술교육대학교임베디드 SOC 설계및실습 174
176 Multiplier 와 Shifter q Booth s 곱셈기 v 32 비트의두입력을받아서곱하여, 결과가 32 비트를넘더라도넘는부분은 버리고 32 비트만남긴다. q Barrel Shifter v 한번의연산으로데이터워드내에있는다수의비트를 shift하거나 rotate 시킬수있다. v 1 clock 사이클동안에최대 32비트 shift 가능 한국기술교육대학교임베디드 SOC 설계및실습 175
177 ARM9TDMI 코어와 EmbeddedICE 로직 ARM9TDMI 는 ARM9TDM 코어에 EmbeddedICE 로직이추가된프로세서이다 한국기술교육대학교임베디드 SOC 설계및실습 176
178 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
179 ARM9TDMI 의기본파이프라인동작 명령 사이클 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
180 LDR 명령과 interlock 사이클 명령 사이클 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
181 분기명령과파이프라인동작 명령 사이클 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
182 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
183 ARM9 프로세서의구조 한국기술교육대학교임베디드 SOC 설계및실습 182
Microsoft PowerPoint - 05-ARM-Instruction-Set.ppt
ARM 명령어집합 임베디드시스템소프트웨어 I 내용 ARM 구조 프로세서수행모드 레지스터구조 예외처리과정 ARM 명령어형식 조건수행접미사 데이터처리명령어 곱셈명령어 Load/Store 명령어 다중레지스터 Load/Store 스택명령어 SWI 명령어 Branch 명령어 상태레지스터접근명령어 명령어요약 ARM 명령어집합 2 ARM 구조특징 모든명령어가 32bit
More informationARM 아키텍쳐 - ARM 아키텍쳐 - Programming 모델 - ARM 프로세서명령어 - 예외처리와시스템리셋 - ARM9TDMI 프로세서 한국기술교육대학교 전기전자통신공학부 장영조 한국기술교육대학교임베디드 SOC 설계및실습
ARM 아키텍쳐 - ARM 아키텍쳐 - Programming 모델 - ARM 프로세서명령어 - 예외처리와시스템리셋 - ARM9TDMI 프로세서 한국기술교육대학교 전기전자통신공학부 장영조 한국기술교육대학교임베디드 SOC 설계및실습 ARM (Advanced RISC Machines) v 1990년설립 v UK-based joint venture Ø Apple Computer,
More informationARM Reverse Engineering
singi@hackerschool Facebook : @sjh21a http://kernelhack.co.kr/netsec-singi.zip - First Phase About ARM ARM Operating Mode and Registers Basic ARM Instruction Thumb Mode - Second Phase Configuration of
More informationMicrosoft Word - 1. ARM Assembly 실습_xp2.doc
ARM asm 의구조 ARM Assembly 실습 1. 기본골격 AREA armex,code, READONLY ;Mark first instruction to execute start MOV r0, #10 MOV r1,#3 ADD r0, r0, r1 ; r0 = r0 + r1 stop NOP NOP B stop ; Mark end of file 위의 asm의구조를이해하고실행해보세요.
More informationMicrosoft PowerPoint - LN_1_ARM_CPU_0.ppt [호환 모드]
프로젝트 1 1 ARM CPU Architecture 단국대학교컴퓨터학과 2009 백승재 ibanez1383@dankook.ac.kr k k http://embedded.dankook.ac.kr/~ibanez1383 강의목표 2 ARM 종류와특징및최신동향파악 ARM CPU Architecture 이해 ARM Assembly 숙지 ARM 3 ARM? Advanced
More information임베디드 시스템 구조
ARM 프로세서요약 www.dignsys.com Contents 1. 임베디드시스템의구조 2. 임베디드시스템의개발 3. ARM 아키텍처 4. ARM 프로세서의구조 5. ARM 프로세서명령어 6. Cached ARM 7. 임베디드소프트웨어개발 8. S3C2410 및실습용보드의이해 9. 디바이스제어 1 프로세서의구조 레지스터 (Register) 산술논리연산장치
More informationHere is a "PLDWorld.com"... // EXCALIBUR... // Additional Resources // µc/os-ii... Page 1 of 23 Additional Resources: µc/os-ii Author: Source: HiTEL D
Page 1 of 23 Additional Resources: µc/os-ii Author: Source: HiTEL Digital Sig Date: 2004929 µ (1) uc/os-ii RTOS uc/os-ii EP7209 uc/os-ii, EP7209 EP7209,, CPU ARM720 Core CPU ARM7 CPU wwwnanowitcom10 '
More informationhwp
BE 8 BE 6 BE 4 BE 2 BE 0 y 17 y 16 y 15 y 14 y 13 y 12 y 11 y 10 y 9 y 8 y 7 y 6 y 5 y 4 y 3 y 2 y 1 y 0 0 BE 7 BE 5 BE 3 BE 1 BE 16 BE 14 BE 12 BE 10 y 32 y 31 y 30 y 29 y 28 y 27 y 26 y 25 y 24 y 23
More informationEmbedded System
컴퓨터시스템구조론 (3 장 ) Taehyoun Kim Dept. of Mechanical & Information Engineering, University of Seoul Outline 간단한컴퓨터 (Basic Computer) 를이용한어셈블리이해 어셈블리프로그램기본구조 ARM 어셈블리어 간단한컴퓨터를이용한어셈블리이해 어셈블리어란? 프로그램 (Program)
More information<4D F736F F F696E74202D20BBB7BBB7C7D15F FBEDFB0A3B1B3C0B05FC1A638C0CFC2F72E BC8A3C8AF20B8F0B5E55D>
뻔뻔한 AVR 프로그래밍 The Last(8 th ) Lecture 유명환 ( yoo@netplug.co.kr) INDEX 1 I 2 C 통신이야기 2 ATmega128 TWI(I 2 C) 구조분석 4 ATmega128 TWI(I 2 C) 실습 : AT24C16 1 I 2 C 통신이야기 I 2 C Inter IC Bus 어떤 IC들간에도공통적으로통할수있는 ex)
More informationARM01
0 1 Chapter 1.1 1.2 1.3 1.4 1.5 ARM System Developer s guide 32, ARM., ARM,,,. ARM 1985, ARM1, 2001 20 ARM. ARM,., ARM,., ARM ARM7TDMI, 120 Dhrystone MIPS 1),. ARM7TDMI. ARM, RISC(Reduced Instruction Set
More informationuntitled
9 hamks@dongguk.ac.kr : Source code Assembly language code x = a + b; ld a, %r1 ld b, %r2 add %r1, %r2, %r3 st %r3, x (Assembler) (bit pattern) (machine code) CPU security (code generator).. (Instruction
More informationChapter ...
Chapter 4 프로세서 (4.9절, 4.12절, 4.13절) Contents 4.1 소개 4.2 논리 설계 기초 4.3 데이터패스 설계 4.4 단순한 구현 방법 4.5 파이프라이닝 개요*** 4.6 파이프라이닝 데이터패스 및 제어*** 4.7 데이터 해저드: 포워딩 vs. 스톨링*** 4.8 제어 해저드*** 4.9 예외 처리*** 4.10 명령어 수준
More informationMicrosoft PowerPoint - o8.pptx
메모리보호 (Memory Protection) 메모리보호를위해 page table entry에 protection bit와 valid bit 추가 Protection bits read-write / read-only / executable-only 정의 page 단위의 memory protection 제공 Valid bit (or valid-invalid bit)
More information9
9 hamks@dongguk.ac.kr : Source code Assembly language code x = a + b; ld a, %r1 ld b, %r2 add %r1, %r2, %r3 st %r3, x (Assembler) (bit pattern) (machine code) CPU security (code generator).. (Instruction
More informationT100MD+
User s Manual 100% ) ( x b a a + 1 RX+ TX+ DTR GND TX+ RX+ DTR GND RX+ TX+ DTR GND DSR RX+ TX+ DTR GND DSR [ DCE TYPE ] [ DCE TYPE ] RS232 Format Baud 1 T100MD+
More informationSRC PLUS 제어기 MANUAL
,,,, DE FIN E I N T R E A L L O C E N D SU B E N D S U B M O TIO
More informationMicrosoft PowerPoint - hy2-12.pptx
CPU의구조와기능 CPU 의명령어수행과정 명령어인출 (Instruction Fetch) : 기억장치로부터명령어를읽어온다 명령어해독 (Instruction Decode) : 수행해야할동작을결정하기위하여명령어를해독한다 모든명령어들에대하여공통적으로수행 데이터인출 (Data Fetch) : 명령어실행을위하여데이터가필요한경우에는기억장치혹은 I/O 장치로부터그데이터를읽어온다
More information. 고성능마이크로프로세서 LU 와레지스터 파일의구조 (2.). 직접디지털주파수합성기 (FS) 의구조 3. 고성능마이크로프로세서부동소수점연산기 (Floating-Point Unit) 구조 (2) (2.) (2.) 2. 암호화를위한 VLSI 구조와설계의개요 (2.) 다음참
이비디오교재는정보통신부의 999년도정보통신학술진흥지원사업에의하여지원되어연세대학교전기전자공학과이용석교수연구실에서제작되었습니다 고성능마이크로프로세서 LU ( rithmetic Logic Unit) 와 Register File의구조 2. 연세대학교전기전자공학과이용석교수 Homepage: http://mpu.yonsei.ac.kr E-mail: yonglee@yonsei.ac.kr
More informationINTRO Basic architecture of modern computers Basic and most used assembly instructions on x86 Installing an assembly compiler and RE tools Practice co
Basic reverse engineering on x86 This is for those who want to learn about basic reverse engineering on x86 (Feel free to use this, email me if you need a keynote version.) v0.1 SeungJin Beist Lee beist@grayhash.com
More information(1) 주소지정방식 Address Mode 메모리접근 분기주소 명령어 직접번지 Reg. 지정 Reg. 간접 Base Index 간접 Immediate 상대번지 절대번지 Long 주소 Reg. 간접 Byte Access Bit Access 내부 Data M
(1) 주소지정방식 Address Mode 메모리접근 분기주소 2. 8051 명령어 직접번지 Reg. 지정 Reg. 간접 Base Index 간접 Immediate 상대번지 절대번지 Long 주소 Reg. 간접 Byte Access Bit Access 내부 Data Memory 외부 Data Memory (2) 명령어세트 - 8051 명령어는 5 가지로분류,
More information=
written by vangelis(vangelis@wowhacker.org) 0 0000 8 1000 1 0001 9 1001 2 0010 10 1010 3 0011 11 1011 4 0100 12 1100 5 0101 13 1101 6 0110 14 1110 7 0111 15 1111 110112 + 100012 = 1011002 110 0000 0101
More informationMicrosoft PowerPoint - 30.ppt [호환 모드]
이중포트메모리의실제적인고장을고려한 Programmable Memory BIST 2010. 06. 29. 연세대학교전기전자공학과박영규, 박재석, 한태우, 강성호 hipyk@soc.yonsei.ac.kr Contents Introduction Proposed Programmable Memory BIST(PMBIST) Algorithm Instruction PMBIST
More information강의10
Computer Programming gdb and awk 12 th Lecture 김현철컴퓨터공학부서울대학교 순서 C Compiler and Linker 보충 Static vs Shared Libraries ( 계속 ) gdb awk Q&A Shared vs Static Libraries ( 계속 ) Advantage of Using Libraries Reduced
More information라는 점이다. ARM7TDMI 같은 ARM7에서는 페치(fetch), 디코드 (decode) 그리고 실행(execute)의 3단계로 구성된 파이프라인을 적 V4 PF1 ARMv5 1994 1996 1998 2000 2002 2004 2006 I-캐시 액세 + 다이내믹
자는 ARM 프로세서를 이용한 프로젝트를 처음 진행할 당시에 농담반 진담반으로 이런 말을 자주하곤 했다. ARM으로 개발하려다가 정말 암에 걸리겠다. 처음 새로운 프로세서를 접하면 누구나 한번쯤 겪는 일이다. ARM의 경우는 그 정도가 더욱 심했다. 특히 MMU는 무엇이며, 왜 필요하고 어떻게 동작하는지? FIQ와 IRQ는 같 은 인터럽트인데 왜 달리 구분하는지?
More informationMicrosoft Word - FunctionCall
Function all Mechanism /* Simple Program */ #define get_int() IN KEYOARD #define put_int(val) LD A val \ OUT MONITOR int add_two(int a, int b) { int tmp; tmp = a+b; return tmp; } local auto variable stack
More information1
1 1....6 1.1...6 2. Java Architecture...7 2.1 2SDK(Software Development Kit)...8 2.2 JRE(Java Runtime Environment)...9 2.3 (Java Virtual Machine, JVM)...10 2.4 JVM...11 2.5 (runtime)jvm...12 2.5.1 2.5.2
More informationARM 프로세서 입문
ARM 프로세서입문 내용 배경과역사주요특징 ARM 계열들개발도구 역사, 파생계열과도구들 제작 EMBEDDED SYSTEMS ACADEMY 내용 Part 1 배경과역사 RISC / CISC Acorn / Advanced RISC Machine Part 2 주요특징 Registers Interrupts Memory Thumb 3-단계명령파이프라인 5-단계명령파이프라인
More informationDE1-SoC Board
실습 1 개발환경 DE1-SoC Board Design Tools - Installation Download & Install Quartus Prime Lite Edition http://www.altera.com/ Quartus Prime (includes Nios II EDS) Nios II Embedded Design Suite (EDS) is automatically
More informationMicrosoft PowerPoint - ARM System-on-chip architecture_Chap 4_23p.ppt
1 - 전체요약 4. ARM 조직과구현 2 4.1 3 단계파이프라인 ARM 조직 레지스터뱅크 : 레지스터접근을위한 2개의입력포트, 1개의출력포트, 프로그램카운터를위한 1개의입출력포트배럴쉬프터 : ALU 입력전자리이동과회전수행 ALU : 산술연산, 논리연산실행어드레스레지스터 : 메모리주소저장어드레스증가기 : 연속적인메모리주소생성데이터레지스터 : 메모리로부터읽은데이터나저장할데이터를저장명령어디코더
More informationMicrosoft PowerPoint - 강의2.ppt
Chap 2. Embedded Processors 서경대학교컴퓨터공학과교수이광엽 kylee@skuniv.ac.kr Embedded Processors Embedded processors 발전 Microprocessors 발전 better fabrication technology standalone microcontrollers integrated processors
More informationMicrosoft PowerPoint - hy2-12.pptx
2.4 명령어세트 (instruction set) 명령어세트 CPU 가지원하는기계어명령어들의집합 명령어연산의종류 데이터전송 : 레지스터 / 메모리간에데이터이동 산술연산 : 덧셈, 뺄셈, 곱셈및나눗셈 논리연산 : 비트들간의 AND, OR, NOT 및 XOR 연산 입출력 (I/O) : CPU( 레지스터 ) 와외부장치들간의데이터이동 프로그램제어 : 분기, 서브루틴호출
More information온라인 IT 교육최강 ( 강의정보처리필기강사조대호 차시명 [CA-06 강 ] 프로세서와명령어차시 6 차시 학습내용 프로세서와명령어 학습목표 컴퓨터의구조와프로세서에대해이해할수있다 컴퓨터의명령어에대해이해할수있다 학습내용 1. 컴퓨터의구성 - 1
강의정보처리필기강사조대호 차시명 [CA-06 강 ] 프로세서와명령어차시 6 차시 학습내용 프로세서와명령어 학습목표 컴퓨터의구조와프로세서에대해이해할수있다 컴퓨터의명령어에대해이해할수있다 학습내용 1. 컴퓨터의구성 - 1 - 2. 중앙처리장치 (Central Processing Unit) 주기억장치에기억된명령을꺼내서해독하고, 시스템전체에지시신호를내는장치명령코드가명령을수행할수있게필요한제어기능을제공제어장치의구성
More informationAPOGEE Insight_KR_Base_3P11
Technical Specification Sheet Document No. 149-332P25 September, 2010 Insight 3.11 Base Workstation 그림 1. Insight Base 메인메뉴 Insight Base Insight Insight Base, Insight Base Insight Base Insight Windows
More information한국기술교육대학교장영조 한국기술교육대학교전기전자통신공학부 1
한국기술교육대학교장영조 한국기술교육대학교전기전자통신공학부 1 본슬라이드는 M. Morris Mano and Charles Kime 의 Logic and Computer Design Fundamentals 의내용을참조하였습니다. 한국기술교육대학교전기전자통신공학부 2 1. 레지스터전송과데이터처리장치 2. 순차진행과제어 3. 명령어구조 (Instruction Set
More informationC# Programming Guide - Types
C# Programming Guide - Types 최도경 lifeisforu@wemade.com 이문서는 MSDN 의 Types 를요약하고보충한것입니다. http://msdn.microsoft.com/enus/library/ms173104(v=vs.100).aspx Types, Variables, and Values C# 은 type 에민감한언어이다. 모든
More information슬라이드 1
마이크로컨트롤러 2 (MicroController2) 2 강 ATmega128 의 external interrupt 이귀형교수님 학습목표 interrupt 란무엇인가? 기본개념을알아본다. interrupt 중에서가장사용하기쉬운 external interrupt 의사용방법을학습한다. 1. Interrupt 는왜필요할까? 함수동작을추가하여실행시키려면? //***
More informationComputer Architecture
명령어의구조와주소지정방식 명령어세트명령어의형식주소지정방식실제명령어의형태 이자료는김종현저 - 컴퓨터구조론 ( 생능출판사 ) 의내용을편집한것입니다. 2.4 명령어세트 (instruction set) 어떤 CPU 를위하여정의되어있는명령어들의집합 명령어세트설계를위해결정되어야할사항들 2 연산종류 (operation repertoire) CPU 가수행할연산들의수와종류및복잡도
More informationNo Slide Title
Copyright, 2017 Multimedia Lab., UOS 시스템프로그래밍 (Assembly Code and Calling Convention) Seong Jong Choi chois@uos.ac.kr Multimedia Lab. Dept. of Electrical and Computer Eng. University of Seoul Seoul, Korea
More information<C1A4BAB8C3B3B8AE5FB1E2BBE75FC7CAB1E25F E687770>
3.2 명령어 (1) 명령어 (Instruction) 의구성 연산자 (Operation Code) 부자료 (Operand) 부 0405 명령어의연산자부분이나타낼수있는것오답 인스트럭션의순서 1) 연산자부 (Op-Code, Operation Code부 ) 1 실행할명령이들어있음 2 명령어의연산자부분이나타낼수있는것 9910 0203 명령어의형식 연산자 자료의종류
More information학습목차 r 컴퓨터본체에서 CPU 의위치살펴보기 r CPU 의성능 r CPU 의기능 r CPU 의조직 r 레지스터의조직 r 명령어사이클 r 명령어파이프라이닝 컴퓨터구조 2 9. CPU 조직과기능
컴퓨터구조 제 9 강 중앙처리장치의조직과기능 학습목차 r 컴퓨터본체에서 CPU 의위치살펴보기 r CPU 의성능 r CPU 의기능 r CPU 의조직 r 레지스터의조직 r 명령어사이클 r 명령어파이프라이닝 컴퓨터구조 2 9. CPU 조직과기능 학습목표 rcpu 의성능을향상시키는요인들을알아본다. rcpu 의기본적인기능을이해한다. rcpu 는 ALU, 제어장치, 레지스터집합,
More informationMicrosoft PowerPoint - a6.ppt [호환 모드]
이장의내용 6 장조건부처리 부울과비교명령어 조건부점프 조건부루프명령어 조건부구조 컴퓨터정보통신 어셈블리언어 2 6.2 부울과비교명령어 부울명령어 Instructions ti 동작 AND dst, src OR dst, src XOR dst, src NOT dst dst dst AND src dst dst OR src dst dst XOR src dst NOT
More informationMicrosoft PowerPoint - CHAP-03 [호환 모드]
컴퓨터구성 Lecture Series #4 Chapter 3: Data Representation Spring, 2013 컴퓨터구성 : Spring, 2013: No. 4-1 Data Types Introduction This chapter presents data types used in computers for representing diverse numbers
More informationMicrosoft PowerPoint - M07_RTL.ppt [호환 모드]
제 7 장레지스터이동과데이터처리장치 - 디지털시스템의구성 data path 모듈 : 데이터처리, 레지스터, 연산기, MUX, control unit 모듈 : 제어신호발생, 연산의순서지정 - register transfer operation : reg 데이터이동 / 처리 reg set,operation, sequence control - micro-operation
More informationComputer Architecture
CPU 의구조와기능 CPU 의기본구조 명령어실행과실행사이클 명령어파이프라이닝 CPU 의기능 2 명령어인출 (Instruction Fetch) 기억장치로부터명령어읽기 명령어해독 (Instruction Decode) 수행해야할동작을결정하기위하여명령어를해독 모든명령어들에대하여공통적으로수행 데이터인출 (Data Fetch) 명령어실행에필요한데이터를기억장치혹은 I/O
More information슬라이드 1
S3C6410 & boot loader for real target android system Naver linuxkernel26 운영자 : 박철 (e2g1234@naver.com) 강좌목적 Real target Android HW system 이해 Real target Android HW system의핵심인 ARM core 그리고 S3C6410에대하여알아본다.
More information<4D F736F F F696E74202D20BBB7BBB7C7D15F FBEDFB0A3B1B3C0B05FC1A634C0CFC2F72E BC8A3C8AF20B8F0B5E55D>
뻔뻔한 AVR 프로그래밍 The 4 th Lecture 유명환 ( yoo@netplug.co.kr) 1 시간 (Time) 에대한정의 INDEX 2 왜타이머 (Timer) 와카운터 (Counter) 인가? 3 ATmega128 타이머 / 카운터동작구조 4 ATmega128 타이머 / 카운터관련레지스터 5 뻔뻔한노하우 : 레지스터비트설정방법 6 ATmega128
More informationMicrosoft PowerPoint - hw8.ppt [호환 모드]
8.1 데이터경로와제어장치 Chapter 8 데이터경로와제어장치 많은순차회로의설계는다음의두부분으로구성 datapath: data의이동및연산을위한장치 control unit에상태신호제공 control ol unit: datapath th 에서적절한순서로 data 이동및연산을수행할수있도록제어신호제공. 먼저, datapath를설계 다음에, control unit
More informationMicrosoft Word doc
TCP/IP 구조 1. I.P 구조설명 2. ARP 구조설명 3. TCP 구조설명 4. UDT 구조설명 5. RIP 구조설명 6. BOOTP 구조설명 7. TFTP 구조설명 destination addr source addr type data CRC 6 6 2 46-1500 4 type 0X0800 IP datagram 2 46-1500 type 0X0806
More informationMAX+plus II Getting Started - 무작정따라하기
무작정 따라하기 2001 10 4 / Version 20-2 0 MAX+plus II Digital, Schematic Capture MAX+plus II, IC, CPLD FPGA (Logic) ALTERA PLD FLEX10K Series EPF10K10QC208-4 MAX+plus II Project, Schematic, Design Compilation,
More informationºÎ·ÏB
B B.1 B.2 B.3 B.4 B.5 B.1 2 (Boolean algebra). 1854 An Investigation of the Laws of Thought on Which to Found the Mathematical Theories of Logic and Probabilities George Boole. 1938 MIT Claude Sannon [SHAN38].
More information임베디드시스템설계강의자료 6 system call 2/2 (2014 년도 1 학기 ) 김영진 아주대학교전자공학과
임베디드시스템설계강의자료 6 system call 2/2 (2014 년도 1 학기 ) 김영진 아주대학교전자공학과 System call table and linkage v Ref. http://www.ibm.com/developerworks/linux/library/l-system-calls/ - 2 - Young-Jin Kim SYSCALL_DEFINE 함수
More informationhlogin2
0x02. Stack Corruption off-limit Kernel Stack libc Heap BSS Data Code off-limit Kernel Kernel : OS Stack libc Heap BSS Data Code Stack : libc : Heap : BSS, Data : bss Code : off-limit Kernel Kernel : OS
More information구문 분석
컴파일러구성 제 10 강 중간언어 / 인터프리터 Motivation rapid development of machine architectures proliferation of programming languages portable & adaptable compiler design --- P_CODE porting --- rewriting only back-end
More informationLectures for 2nd Edition
Computer Architecture Chapter 4-3 The Processor: Enhancing Performance with Pipelining 1 Data Hazards Pipeline data hazards -Backward dep. lines Write Read 2 One Alternative Approach: Compiler Scheduling
More information슬라이드 1
명령어집합 주소지정모드 (addressing mode) 내용 명령어는크게연산자부분과이연산에필요한주소부분으로구성 이때주소부분은다양한형태를해석될수있으며, 해석하는방법을주소지정방식 ( 모드 )(addressing mode) 라한다. 즉피연산자정보를구하는방법을주소지정방식이라고함 명령어형식 주소지정 명령어형식에있는주소필드는상대적으로짧다. 따라서지정할수있는위치가제한된다.
More information歯15-ROMPLD.PDF
MSI & PLD MSI (Medium Scale Integrate Circuit) gate adder, subtractor, comparator, decoder, encoder, multiplexer, demultiplexer, ROM, PLA PLD (programmable logic device) fuse( ) array IC AND OR array sum
More information4. 다음주소지정방식중속도가가장빠른주소방식은? 가. immediate addressing mode 나. direct addressing mode 다. indirect addressing mode 라. index register. 5. 간접주소 (indirect addr
강의정보처리필기강사조대호 차시명 체크문제 [CA-07 강 ] 주소지정방식과연산, 명령실행과제어 차시 7 차시 학습내용 1. 주소지정방식과연산 2. 명령실행과제어 학습목표 1. 주소지정방식과연산에대해이해할수있다 2. 명령실행과제어를이해하고해결할수있다 학습내용 3.3 주소지정방식 1. 주소설계시고려해야할점이아닌것은? 가. 주소를효율적으로나타낼수있어야한다. 나.
More informationPRO1_09E [읽기 전용]
Siemens AG 1999 All rights reserved File: PRO1_09E1 Information and - ( ) 2 3 4 5 Monitor/Modify Variables" 6 7 8 9 10 11 CPU 12 Stop 13 (Forcing) 14 (1) 15 (2) 16 : 17 : Stop 18 : 19 : (Forcing) 20 :
More informationexample code are examined in this stage The low pressure pressurizer reactor trip module of the Plant Protection System was programmed as subject for
2003 Development of the Software Generation Method using Model Driven Software Engineering Tool,,,,, Hoon-Seon Chang, Jae-Cheon Jung, Jae-Hack Kim Hee-Hwan Han, Do-Yeon Kim, Young-Woo Chang Wang Sik, Moon
More information목차 1. 제품 소개... 4 1.1 특징... 4 1.2 개요... 4 1.3 Function table... 5 2. 기능 소개... 6 2.1 Copy... 6 2.2 Compare... 6 2.3 Copy & Compare... 6 2.4 Erase... 6 2
유영테크닉스( 주) 사용자 설명서 HDD014/034 IDE & SATA Hard Drive Duplicator 유 영 테 크 닉 스 ( 주) (032)670-7880 www.yooyoung-tech.com 목차 1. 제품 소개... 4 1.1 특징... 4 1.2 개요... 4 1.3 Function table... 5 2. 기능 소개... 6 2.1 Copy...
More informationPowerPoint Presentation
FORENSICINSIGHT SEMINAR SQLite Recovery zurum herosdfrc@google.co.kr Contents 1. SQLite! 2. SQLite 구조 3. 레코드의삭제 4. 삭제된영역추적 5. 레코드복원기법 forensicinsight.org Page 2 / 22 SQLite! - What is.. - and why? forensicinsight.org
More informationDeok9_Exploit Technique
Exploit Technique CodeEngn Co-Administrator!!! and Team Sur3x5F Member Nick : Deok9 E-mail : DDeok9@gmail.com HomePage : http://deok9.sur3x5f.org Twitter :@DDeok9 > 1. Shell Code 2. Security
More information학습목표 2/33 마이크로프로세서와마이크로컨트롤러의차이를알수있다. 마이크로프로세서에서프로그램이수행되기위한명령어형식과명령어실행절차를알수있다. 프로그램을수행하려면어떤종류의명령어가필요한지알수있다. 현대컴퓨터의기본모델인저장형프로그램컴퓨터의한계점과그한계를완화하려는방법을알수있다.
마이크로프로세서의원리 마이크로컨트롤러 AVR ATmega128 저자 : 이상설 (slee@wku.ac.kr) 소속 : 원광대학교전기 정보통신공학부 학습목표 2/33 마이크로프로세서와마이크로컨트롤러의차이를알수있다. 마이크로프로세서에서프로그램이수행되기위한명령어형식과명령어실행절차를알수있다. 프로그램을수행하려면어떤종류의명령어가필요한지알수있다. 현대컴퓨터의기본모델인저장형프로그램컴퓨터의한계점과그한계를완화하려는방법을알수있다.
More informationsolution map_....
SOLUTION BROCHURE RELIABLE STORAGE SOLUTIONS ETERNUS FOR RELIABILITY AND AVAILABILITY PROTECT YOUR DATA AND SUPPORT BUSINESS FLEXIBILITY WITH FUJITSU STORAGE SOLUTIONS kr.fujitsu.com INDEX 1. Storage System
More informationAPI 매뉴얼
PCI-TC03 API Programming (Rev 1.0) Windows, Windows2000, Windows NT, Windows XP and Windows 7 are trademarks of Microsoft. We acknowledge that the trademarks or service names of all other organizations
More informationMicrosoft Word - FS_ZigBee_Manual_V1.3.docx
FirmSYS Zigbee etworks Kit User Manual FS-ZK500 Rev. 2008/05 Page 1 of 26 Version 1.3 목 차 1. 제품구성... 3 2. 개요... 4 3. 네트워크 설명... 5 4. 호스트/노드 설명... 6 네트워크 구성... 6 5. 모바일 태그 설명... 8 6. 프로토콜 설명... 9 프로토콜 목록...
More informationMicrosoft PowerPoint - polling.pptx
지현석 (binish@home.cnu.ac.kr) http://binish.or.kr Index 이슈화된키보드해킹 최근키보드해킹이슈의배경지식 Interrupt VS polling What is polling? Polling pseudo code Polling 을이용한키로거분석 방어기법연구 이슈화된키보드해킹 키보드해킹은연일상한가! 주식, 펀드투자의시기?! 최근키보드해킹이슈의배경지식
More information1217 WebTrafMon II
(1/28) (2/28) (10 Mbps ) Video, Audio. (3/28) 10 ~ 15 ( : telnet, ftp ),, (4/28) UDP/TCP (5/28) centralized environment packet header information analysis network traffic data, capture presentation network
More information<4D F736F F F696E74202D20B8B6C0CCC5A9B7CEC7C1B7CEBCBCBCAD202839C1D6C2F7207E203135C1D6C2F >
10주차 문자 LCD 의인터페이스회로및구동함수 Next-Generation Networks Lab. 5. 16x2 CLCD 모듈 (HY-1602H-803) 그림 11-18 19 핀설명표 11-11 번호 분류 핀이름 레벨 (V) 기능 1 V SS or GND 0 GND 전원 2 V Power DD or V CC +5 CLCD 구동전원 3 V 0 - CLCD 명암조절
More informationMicrosoft PowerPoint - PL_03-04.pptx
Copyright, 2011 H. Y. Kwak, Jeju National University. Kwak, Ho-Young http://cybertec.cheju.ac.kr Contents 1 프로그래밍 언어 소개 2 언어의 변천 3 프로그래밍 언어 설계 4 프로그래밍 언어의 구문과 구현 기법 5 6 7 컴파일러 개요 변수, 바인딩, 식 및 제어문 자료형 8
More informationMicrosoft PowerPoint - ch09 - 연결형리스트, Stack, Queue와 응용 pm0100
2015-1 프로그래밍언어 9. 연결형리스트, Stack, Queue 2015 년 5 월 4 일 교수김영탁 영남대학교공과대학정보통신공학과 (Tel : +82-53-810-2497; Fax : +82-53-810-4742 http://antl.yu.ac.kr/; E-mail : ytkim@yu.ac.kr) 연결리스트 (Linked List) 연결리스트연산 Stack
More information목차 제 1 장 inexio Touch Driver소개... 3 1.1 소개 및 주요 기능... 3 1.2 제품사양... 4 제 2 장 설치 및 실행... 5 2.1 설치 시 주의사항... 5 2.2 설치 권고 사양... 5 2.3 프로그램 설치... 6 2.4 하드웨
최종 수정일: 2010.01.15 inexio 적외선 터치스크린 사용 설명서 [Notes] 본 매뉴얼의 정보는 예고 없이 변경될 수 있으며 사용된 이미지가 실제와 다를 수 있습니다. 1 목차 제 1 장 inexio Touch Driver소개... 3 1.1 소개 및 주요 기능... 3 1.2 제품사양... 4 제 2 장 설치 및 실행... 5 2.1 설치 시
More informationPowerPoint 프레젠테이션
1. data-addressing mode CHAPTER 6 Addressing Modes 2. use of data-address mode to form assembly language statements 3. op of program memory address mode 4. use of program memory address mode to form assembly
More informationMicrosoft PowerPoint - chap01-C언어개요.pptx
#include int main(void) { int num; printf( Please enter an integer: "); scanf("%d", &num); if ( num < 0 ) printf("is negative.\n"); printf("num = %d\n", num); return 0; } 1 학습목표 프로그래밍의 기본 개념을
More information프로그램카운터 (Program Counter) 명령레지스터 (Instruction Register) 누산기 (AC: Accumulator) 상태레지스터 (Status Register) PSWR(Program Status Word Register) 메모리주소레지스터 (M
중앙처리장치 (CPU: Central Process Unit) 1) 제어장치 (Control Unit) 컴퓨터시스템의모든장치들에게동작을지시하고제어하는장치로주기억장치에서읽어온명령어를해독하고해당장치에게제어신호를보낸다. 구성회로 : 부호기, 명령해독기, 번지해독기 구성레지스터 : PC( 프로그램카운터 ), IR( 명령어레지스터 ) 부호기 ( 제어신호발생기 ) 해독한명령어에따라서해당장치로보낼제어신호를생성하는회로
More informationuntitled
Embedded System Lab. II Embedded System Lab. II 2 RTOS Hard Real-Time vs Soft Real-Time RTOS Real-Time, Real-Time RTOS General purpose system OS H/W RTOS H/W task Hard Real-Time Real-Time System, Hard
More informationAPI 매뉴얼
PCI-DIO12 API Programming (Rev 1.0) Windows, Windows2000, Windows NT and Windows XP are trademarks of Microsoft. We acknowledge that the trademarks or service names of all other organizations mentioned
More informationC++-¿Ïº®Çؼ³10Àå
C C++. (preprocessor directives), C C++ C/C++... C++, C. C++ C. C C++. C,, C++, C++., C++.,.. #define #elif #else #error #if #itdef #ifndef #include #line #pragma #undef #.,.,. #include #include
More informationPowerPoint 프레젠테이션
명령어의수행과제어 명령어에대해서학습하고, 명령어가수행되는과정에대하여학습한다. 1. 명령어의개요 2. 주소지정법 3. CPU 구조 4. 명령어의수행과제어 1. 명령 (Instruction) 개요 1.1 명령의구조 (1) OP Code(Operation Code) 1) 동작을지시 ( 동작부, 연산부, 명령부 ) 2) 명령의형식이나주소부의자료종류를지정. 3) 실행시스템의명령어개수와관련.
More information프로그램을 학교 등지에서 조금이라도 배운 사람들을 위한 프로그래밍 노트 입니다. 저 역시 그 사람들 중 하나 입니다. 중고등학교 시절 학교 도서관, 새로 생긴 시립 도서관 등을 다니며 책을 보 고 정리하며 어느정도 독학으르 공부하긴 했지만, 자주 안하다 보면 금방 잊어
개나리 연구소 C 언어 노트 (tyback.egloos.com) 프로그램을 학교 등지에서 조금이라도 배운 사람들을 위한 프로그래밍 노트 입니다. 저 역시 그 사람들 중 하나 입니다. 중고등학교 시절 학교 도서관, 새로 생긴 시립 도서관 등을 다니며 책을 보 고 정리하며 어느정도 독학으르 공부하긴 했지만, 자주 안하다 보면 금방 잊어먹고 하더라구요. 그래서,
More informationJVM 메모리구조
조명이정도면괜찮조! 주제 JVM 메모리구조 설미라자료조사, 자료작성, PPT 작성, 보고서작성. 발표. 조장. 최지성자료조사, 자료작성, PPT 작성, 보고서작성. 발표. 조원 이용열자료조사, 자료작성, PPT 작성, 보고서작성. 이윤경 자료조사, 자료작성, PPT작성, 보고서작성. 이수은 자료조사, 자료작성, PPT작성, 보고서작성. 발표일 2013. 05.
More informationComputer Architecture
제 2 장 CPU 의구조와기능 2.1 CPU의기본구조 2.2 명령어실행 2.3 명령어파이프라이닝 2.4 명령어세트 CPU 의기능 명령어인출 (Instruction Fetch) : 기억장치로부터명령어를읽어온다 IF ID 명령어해독 (Instruction Decode) : 수행해야할동작을결정하기위하여명령어를해독한다 모든명령어들에대하여공통적으로수행 Computer
More information<C0CCBCBCBFB52DC1A4B4EBBFF82DBCAEBBE7B3EDB9AE2D313939392D382E687770>
i ii iii iv v vi 1 2 3 4 가상대학 시스템의 국내외 현황 조사 가상대학 플랫폼 개발 이상적인 가상대학시스템의 미래상 제안 5 웹-기반 가상대학 시스템 전통적인 교수 방법 시간/공간 제약을 극복한 학습동기 부여 교수의 일방적인 내용전달 교수와 학생간의 상호작용 동료 학생들 간의 상호작용 가상대학 운영 공지사항,강의록 자료실, 메모 질의응답,
More informationPowerPoint 프레젠테이션
@ Lesson 2... ( ). ( ). @ vs. logic data method variable behavior attribute method field Flow (Type), ( ) member @ () : C program Method A ( ) Method B ( ) Method C () program : Java, C++, C# data @ Program
More informationOCW_C언어 기초
초보프로그래머를위한 C 언어기초 4 장 : 연산자 2012 년 이은주 학습목표 수식의개념과연산자및피연산자에대한학습 C 의알아보기 연산자의우선순위와결합방향에대하여알아보기 2 목차 연산자의기본개념 수식 연산자와피연산자 산술연산자 / 증감연산자 관계연산자 / 논리연산자 비트연산자 / 대입연산자연산자의우선순위와결합방향 조건연산자 / 형변환연산자 연산자의우선순위 연산자의결합방향
More information김기남_ATDC2016_160620_[키노트].key
metatron Enterprise Big Data SKT Metatron/Big Data Big Data Big Data... metatron Ready to Enterprise Big Data Big Data Big Data Big Data?? Data Raw. CRM SCM MES TCO Data & Store & Processing Computational
More information금오공대 컴퓨터공학전공 강의자료
C 프로그래밍프로젝트 Chap 13. 포인터와배열! 함께이해하기 2013.10.02. 오병우 컴퓨터공학과 13-1 포인터와배열의관계 Programming in C, 정재은저, 사이텍미디어. 9 장참조 ( 교재의 13-1 은읽지말것 ) 배열이름의정체 배열이름은 Compile 시의 Symbol 로서첫번째요소의주소값을나타낸다. Symbol 로서컴파일시에만유효함 실행시에는메모리에잡히지않음
More information학습목차 r 개념으로살펴보는 CPU 속의제어장치 r 마이크로연산 r 제어장치의동작 r 마이크로프로그램을이용한제어 컴퓨터구조 제어장치
컴퓨터구조 제 12 강제어장치 학습목차 r 개념으로살펴보는 CPU 속의제어장치 r 마이크로연산 r 제어장치의동작 r 마이크로프로그램을이용한제어 컴퓨터구조 2 12. 제어장치 학습목표 r 프로세스내의제어장치의기능과역할을공부한다. r 마이크로연산의표현을공부하다. r제어장치의구성과마이크로연산을공부한다. r제어장치의구현방법을알아본다. r 마이크로프로그램을이용한제어장치의구조와동작을공부한다.
More informationPowerPoint 프레젠테이션
Verilog: Finite State Machines CSED311 Lab03 Joonsung Kim, joonsung90@postech.ac.kr Finite State Machines Digital system design 시간에배운것과같습니다. Moore / Mealy machines Verilog 를이용해서어떻게구현할까? 2 Finite State
More informationDIY 챗봇 - LangCon
without Chatbot Builder & Deep Learning bage79@gmail.com Chatbot Builder (=Dialogue Manager),. We need different chatbot builders for various chatbot services. Chatbot builders can t call some external
More informationMicrosoft Word - ExecutionStack
Lecture 15: LM code from high level language /* Simple Program */ external int get_int(); external void put_int(); int sum; clear_sum() { sum=0; int step=2; main() { register int i; static int count; clear_sum();
More informationKDTÁ¾ÇÕ-2-07/03
CIMON-PLC CIMON-SCADA CIMON-TOUCH CIMON-Xpanel www.kdtsys.com CIMON-SCADA Total Solution for Industrial Automation Industrial Automatic Software sphere 16 Total Solution For Industrial Automation SCADA
More informationMicrosoft PowerPoint - DSD06c_ISA.pptx
한국기술교육대학교 장영조 본슬라이드는 M. Morris Mano and Charles Kime 의 Logic and Computer Design Fundamentals 의내용을참조하였습니다. 한국기술교육대학교전기전자통신공학부 2 1. 레지스터전송과데이터처리장치 2. 순차진행과제어 3. 명령어구조 (Instruction Set Architecture) 한국기술교육대학교전기전자통신공학부
More informationWindows Embedded Compact 2013 [그림 1]은 Windows CE 로 알려진 Microsoft의 Windows Embedded Compact OS의 history를 보여주고 있다. [표 1] 은 각 Windows CE 버전들의 주요 특징들을 담고
OT S / SOFTWARE 임베디드 시스템에 최적화된 Windows Embedded Compact 2013 MDS테크놀로지 / ES사업부 SE팀 김재형 부장 / jaei@mdstec.com 또 다른 산업혁명이 도래한 시점에 아직도 자신을 떳떳이 드러내지 못하고 있는 Windows Embedded Compact를 오랫동안 지켜보면서, 필자는 여기서 그와 관련된
More informationFMX M JPG 15MB 320x240 30fps, 160Kbps 11MB View operation,, seek seek Random Access Average Read Sequential Read 12 FMX () 2
FMX FMX 20062 () wwwexellencom sales@exellencom () 1 FMX 1 11 5M JPG 15MB 320x240 30fps, 160Kbps 11MB View operation,, seek seek Random Access Average Read Sequential Read 12 FMX () 2 FMX FMX D E (one
More information<4D F736F F F696E74202D20BBB7BBB7C7D15F FBEDFB0A3B1B3C0B05FC1A636C0CFC2F72E BC8A3C8AF20B8F0B5E55D>
뻔뻔한 AVR 프로그래밍 The 6 th Lecture 유명환 ( yoo@netplug.co.kr) 1 2 통신 관련이야기 시리얼통신 관련이야기 INDEX 3 ATmega128 시리얼통신회로도분석 4 ATmega128 시리얼통신컨트롤러 (USART) 분석 5 ATmega128 시리얼통신관련레지스터분석 6 ATmega128 시리얼통신실습 1 통신 관련이야기 동기
More informationCPX-E-SYS_BES_C_ _ k1
CPX-E 8727 27-7 [875294] CPX-E-SYS-KO CODESYS, PI PROFIBUS PROFINET (). :, 2 Festo CPX-E-SYS-KO 27-7 ... 5.... 5.2... 5.3... 5.4... 5.5... 5 2... 6 2.... 6 2..... 6 2..2 CPX-E... 7 2..3 CPX-E... 9 2..4...
More informationchap 5: Trees
5. Threaded Binary Tree 기본개념 n 개의노드를갖는이진트리에는 2n 개의링크가존재 2n 개의링크중에 n + 1 개의링크값은 null Null 링크를다른노드에대한포인터로대체 Threads Thread 의이용 ptr left_child = NULL 일경우, ptr left_child 를 ptr 의 inorder predecessor 를가리키도록변경
More information