MicroVision.- STR711F Board MicroVision & ST Seminar ARM7TDMI Processor.

Slides:



Advertisements
Similar presentations
ARM core UNIT 03 로봇 SW 교육원 조용수. 학습 목표 PIC, AVR, 8051 ARM 이란 ? ARM 특징 ARM and Thumb ARM Cortex-M0 Interrupt Vector 2.
Advertisements

1 Prof. Young Jin Nam, Daegu University 컴퓨터 구조 (Computer Architecture) 명령어 세트 : 특성과 기능 남영진
컴퓨터의 구조 2006년 2학기 컴퓨터의 개념 및 실습.
Chapter 9. 컴퓨터설계기초 9-1 머리말 9-2 데이터 처리장치 (Datapath)
ISA 심화 및 start.S code 분석 SIOR 15th 최재훈.
C++ Tutorial 1 서강대학교 데이터베이스 연구실.
Mar OSEK/VDK Woo Dong Kyun.
Chapter 7 ARP and RARP.
AMBA BUS Protocol의 이해 (AMBA 2.0 Specification)
제8장. RISC 및 슈퍼스칼라 프로세서 8.1 RISC의 출현 동기 8.2 RISC의 발전 경위
2장 마이크로프로세서 구성요소 Slide 1 (of 19).
제 2장 컴퓨터 구조.
프로그램 제어 분기(branch)와 점프(jump) 명령어 PC의 값의 변경 순차적인 프로그램의 진행순서가
9장 가로채기(Interrupt) Slide 1 (of 15).
Signal 자연계에 존재하는 모든 정보전달의 수단 신호의 공학적 표현 물소리, 바람소리, 새소리 짐승소리,불,연기,봉화…
기본 컴퓨터의 구조와 설계 Lecture #5.
마이크로프로세서(Microprocessor,µP)
기본 컴퓨터 프로그래밍 Lecture #6.
컴퓨터 과학 개론 √ 원리를 알면 IT가 맛있다 컴퓨터 과학도를 위한 첫 전공서 ehanbit.net.
2 Part 전자계산기 구조 1. 논리 회로 2. 자료 표현 및 연산 3. 명령어 및 프로세서 4. 명령 수행 및 제어 5.
컴퓨터구조 – 중간시험 (답안지) 부분점수 (사소한 실수면 -1)
7장 : 캐시와 메모리.
3장 MPU 내부구조 Slide 1 (of 28).
임베디드 하드웨어 Lecture #6.
연습문제풀이/도움말.
DSP와 TMS320F28X의 이해
DSP와 TMS320F28x의 이해.
7장 마이크로프로세서의 명령어수행과 주소지정 방식 Slide 1 (of 29).
출처: IT CookBook, 컴퓨터 구조와 원리 2.0 제 12장
컴퓨터 구조.
1 컴퓨터 시스템 소개.
4장. 컴퓨터 시스템의 구성과 기능 다루는 내용 컴퓨터 분해를 통한 본체 살펴보기 컴퓨터 구성요소 컴퓨터의 기능
Embedded System Porting (2)
9장. 중앙처리 장치의 조직과 기능 다루는 내용 컴퓨터 본체에서 CPU의 위치 살펴보기 CPU의 성능, 기능, 조직
1 마이크로프로세서의 원리 마이크로컨트롤러 AVR ATmega128.
Chapter 7. Pentium Processor
Chapter 08 제어장치와 마이크로 오퍼레이션.
4장 컴퓨터의 중앙 처리 장치 하 효 순.
Computer Architecture
6 중앙처리장치의 조직과 기능 IT CookBook, 컴퓨터 구조와 원리 2.0.
Chapter 06 명령어와 번지지정 방식.
ARM 명령어 집합 Lecture #7.
Lecture #3 프로세스(Process).
3주 컴퓨터구조.
8086 프로세서의 구조 및 동작 방식 시스템 프로그래밍 - Lecture #2 신라대학교 컴퓨터공학과 시스템 프로그래밍.
임베디드 소프트웨어 설계.
10장. 중앙처리 장치의 명령어 다루는 내용 어셈블리 프로그램의 이해 인터럽트(interrupt) 명령어 세트 주소 지정 방식.
2007년 1학기 전산학개론 성신여자대학교 컴퓨터정보학부
Chapter 4 The Von Neumann Model.
컴퓨터 시스템 개관 시스템 프로그래밍 - Lecture #1 신라대학교 컴퓨터공학과 시스템 프로그래밍.
6장 연산 장치 6.1 개요 6.2 연산장치의 구성요소 6.3 처리기 6.4 기타 연산장치.
Computer System Architecture
6-1 중앙 처리 장치의 내부 구조 6-2 명령(instruction) 6-3 주소 지정 방식
Windows 환경에서 동작하는 Arm Emulator(Simulator)
ARM Development Suite v1.2
운영체제 (Operating Systems) (Memory Management Strategies)
Computer System Overview
1. 컴퓨터 시스템 구성요소 메모리(Memory) 캐시메모리 개념 캐시메모리의 특징 적중률(hit ratio)
Chapter 12 Memory Organization
Machine architecture Programming Language Design and Implementation (4th Edition) by T. Pratt and M. Zelkowitz Prentice Hall, 2001 Chapter 2.
9장. 중앙처리 장치의 조직과 기능 다루는 내용 컴퓨터 본체에서 CPU의 위치 살펴보기 CPU의 성능, 기능, 조직
Machine architecture Programming Language Design and Implementation (4th Edition) by T. Pratt and M. Zelkowitz Prentice Hall, 2001 Chapter 2.
ARM Development Suite v1.2
Machine architecture Programming Language Design and Implementation (4th Edition) by T. Pratt and M. Zelkowitz Prentice Hall, 2001 Chapter 2.
ARM Development Suite v1.2
Introduction to Computer System 컴퓨터의 이해 3: 데이터 표현
임베디드 하드웨어 Lecture #6.
Lecture 7 7-Segment LED controller using u-controller
ARM Development Suite v1.2
4-1. 명령어 형식.
Presentation transcript:

MicroVision.- STR711F Board MicroVision & ST Seminar ARM7TDMI Processor

2 MicroVision.- STR711F Board MicroVision & ST Seminar The ARM7TDMI processor : 32-bit 범용 microprocessor 중 Advanced RISC machine 계열 중 하나 ARM7TDMI 용어설명 ARM bit Advanced RISC Machine T - Thumb architecture extension Two separate instruction sets, 32-bit ARM instructions and 16-bit Thumb instructions D - Debug extension M - Enhanced multiplier I - Embedded ICE macrocell extension ARM{x}{y}{z}{T}{D}{M}{I}{E}{J}{-S} x: 제품군, y:MMU/MPU z: 캐시 D:JTAG debug M: 곱셈기 I: embeddedICE Macrocell E: dsp 확장 J: jazelle F: VFP S: synthesizible 버전 ARM7TDMI processor

3 MicroVision.- STR711F Board MicroVision & ST Seminar ARM7TDMI Block Diagram 폰 노이만 아키텍쳐 3- 단 파이프라인 –fetch, decode, execute 32-bit 데이터 버스 (core) 32-bit 어드레스 버스 (core) 37 개 32-bit 레지스터 32-bit ARM instruction set 16-bit THUMB instruction set 32x8 Multiplier( 곱셈기 ) Barrel Shifter( 배럴 시프트 )

4 MicroVision.- STR711F Board MicroVision & ST Seminar ARM7TDMI 프로세서 2 가지 동작 상태 ( 모드 ): –ARM 모드 : executes 32-bit, word aligned ARM instructions –THUMB 모드 : execute 16-bit, halfword aligned THUMB instructions Switching state – THUMB 모드 진입 BX 명령어에서 operand register 0 번 bit 의 상태로 구분 (set) Automatically on return from an exception (IRQ, FIQ, ABORT, SWI,…), if the exception was entered with the processor in THUMB state. – ARM 모드 진입 BX 명령어에서 operand register 0 번 bit 의 상태 (clear) Automatically on the processor taking an exception. In this case, the PC is placed in the exception mode’s link register. ARM7TDMI 동작 모드 (1)

5 MicroVision.- STR711F Board MicroVision & ST Seminar 메모리에서 명령어 읽기 명령어 길이 8bit 메모리 (bus width) 16bit 메모리 (bus width) 32bit 메모리 (bus width) ARM 32bit 4 사이클 2 사이클 1 사이클 Thumb 16bit 2 사이클 1 사이클

6 MicroVision.- STR711F Board MicroVision & ST Seminar ARM7TDMI 7 가지 모드 지원 : –User (usr): 일반적인 ARM 프로그램 실행상태 –FIQ (fiq): 고속 인터럽트 처리 –IRQ (irq): 일반 인터럽트 처리 –Supervisor (svc): 운영체제를 위한 보호 모드 –Abort mode (abt): 가상메모리와 메모리 보호 처리 –System (sys): 운영체제를 위한 user 모드 –Undefined (und): 하드웨어 코프로세서의 소프트웨어 에뮬레이션 모드 전환은 외부 인터럽트나 익셉션 처리를 위해 사용됨 – 대부분의 어플리케이션은 user mode 에서 실행 – 그 밖에는 인터럽트, exception, protect 된 리소스의 접근을 위해 system 모드가 사용됨. ARM7TDMI 동작 모드 (2)

7 MicroVision.- STR711F Board MicroVision & ST Seminar ARM7TDMI Registers ARM7TDMI 총 37 개 register: –31 general-purpose 32-bit registers –6 status registers(CPSR, SPSR_SVC, SPSR_adt, …) 이 37 개 register 들은 한번 볼 수는 없다.(visible 16 개 ) –The processor state and operating mode dictate which registers are available to the programmer.

8 MicroVision.- STR711F Board MicroVision & ST Seminar ARM State Registers Set

9 MicroVision.- STR711F Board MicroVision & ST Seminar THUMB State Registers Set

10 MicroVision.- STR711F Board MicroVision & ST Seminar Relationship between ARM and THUMB state registers The THUMB state registers relate to the ARM state registers in the following way:

11 MicroVision.- STR711F Board MicroVision & ST Seminar ARM7TDMI 한 개의 Current Program Status Register (CPSR), 과 5 개의 exception handler 를 위해 Saved Program Status Registers (SPSRs) These register's functions are: – 가장 최근에 실행된 ALU 동작에 대한 정보를 저장 – interrupt enable/disable 제어 – 프로세서의 동작모드 설정 Program Status Registers (1/3)

12 MicroVision.- STR711F Board MicroVision & ST Seminar Condition Code Flags –N : negative/less than flag 연산 결과가 마이너스인 경우 셋 –Z : zero flag 연산결과가 0 이 되었을 때 셋 –C : carry/borrow/extend flag 자리올림 / 내림발생 및 shift 연산에 사용 –V : overflow 발생 시 사용 In ARM state, all instructions may be executed conditionally. In THUMB state, only the Branch instruction is capable of conditional execution. Control Bits –The I, F, T and M[4:0]) bits will be changed when an exception arises. If the processor is operating in a privileged mode, they can also be manipulated by software. –T bit: 동작모드상태, 셋 되면 thumb 모드 동작, 외부 signal 에 의해서도 발생 CPSR 에 강제로 이 bit 를 바꾸면 예측하지 못하는 상태로 들어갈 수 있다. Program Status Registers (2/3)

13 MicroVision.- STR711F Board MicroVision & ST Seminar Control Bits –Interrupt disable bits: I 와 F bit Interrupt disable bit 다. Set 되었을 때 IRQ/ FIQ interrupt 를 disable 시킨다. –Mode bits: The M4, M3, M2, M1 and M0 bits (M[4:0]) are the mode bits. processor's operating mode 를 결정한다. 잘못된 값을 설정하면, processor 가 reset 되거나 복구 불능상태에 빠진다. Program Status Registers (3/3)

14 MicroVision.- STR711F Board MicroVision & ST Seminar Exception program 이 halt 되었을 때 일반적으로 발생한다. –For example to service an interrupt from a peripheral. ARM 7 가지의 exception 과 각각의 processor mode 마다 exception 을 가진다. ARM Exception vectors Exceptions (1/5)

15 MicroVision.- STR711F Board MicroVision & ST Seminar When handling an exception, the ARM7TDMI: –Link Register 에 다음 수행될 명령어의 주소를 저장한다. –SPSR 에 현재의 CPSR 값을 복사한다. –Exception 에 따른 값을 CPSR 로 가져온다. –Exception verctor 로부터 fetch 된 다음명령어를 PC 로 가져온다. – 여러가지 다른 exception 들로 부터 방해를 막기위해 인터럽트 disable flag 을 set 해야 한다. –THUMB 모드에서 exception 이 발생하면, pc 가 exception vector 를 읽어 올때 ARM mode 로 자동적으로 바뀌게 된다. – 저장된 Link Register 에서 – offset(exception vector) 만큼 뺀값을 pc 에 저장. – 저장된 SPSR 을 CPSR 에 복사 – 인트럽트 disable flag 를 clear 한다.( 인트럽트가 set 되어 있었다면 ) Exceptions (2/5)

16 MicroVision.- STR711F Board MicroVision & ST Seminar Reset –When the processor’s Reset input is asserted CPSR  Supervisor + I + F PC  0x Undefined Instruction –If an attempt is made to execute an instruction that is undefined LR_undef  Undefined Instruction Address + #4 PC  0x , CPSR  Undefined + I Return with : MOVS pc, lr Prefetch Abort –Instruction fetch memory abort, invalid fetched instruction LR_abt  Aborted Instruction Address + #4, SPSR_abt  CPSR PC  0x C, CPSR  Abort + I Return with : SUBS pc, lr, #4 Exceptions (3/5)

17 MicroVision.- STR711F Board MicroVision & ST Seminar Data Abort –Data access memory abort, invalid data LR_abt  Aborted Instruction + #8, SPSR_abt  CPSR PC  0x , CPSR  Abort + I Return with : SUBS pc, lr, #4 or SUBS pc, lr, #8 Software Interrupt –Enters Supervisor mode LR_svc  SWI Address + #4, SPSR_svc  CPSR PC  0x , CPSR  Supervisor + I Return with : MOV pc, lr Exceptions (4/5)

18 MicroVision.- STR711F Board MicroVision & ST Seminar Interrupt Request –Externally generated by asserting the processor’s IRQ input LR_irq  PC - #4, SPSR_irq  CPSR PC  0x , CPSR  Interrupt + I Return with : SUBS pc, lr, #4 Fast Interrupt Request –Externally generated by asserting the processor’s FIQ input LR_fiq  PC - #4, SPSR_fiq  CPSR PC  0x C, CPSR  Fast Interrupt + I + F Return with : SUBS pc, lr, #4 speeds up the response time Exceptions (5/5)

MicroVision.- STR711F Board MicroVision & ST Seminar ARM Instruction Set

20 MicroVision.- STR711F Board MicroVision & ST Seminar Summary

21 MicroVision.- STR711F Board MicroVision & ST Seminar 모든 ARM instruction 은 condition code 를 가지고 실행하고, CPSR 에서 N, Z, C, V flag 의 값에 따라 결정된다. 모든 명령어는 4bit(31-28) 의 condition code 를 가지고 있다. Condition Field (1/2)

22 MicroVision.- STR711F Board MicroVision & ST Seminar Condition Field (2/2) 15 개의 condition 이 있고, 명령어의 mnemonic 에 2 개의 접미사가 붙는다. Assembley 에서 Branch 명령의 경우 z-flag 가 set 되면, BEQ 가 된다. B initReset 0xEA00000F

23 MicroVision.- STR711F Board MicroVision & ST Seminar 모든 ARM Processor 의 branch 명령어는 condition 을 가질 수 있고, 최대 앞 뒤로 32Mbyte 만큼 분기 할 수 있다. (0-24bit: 25 개 0x1ffffff) –As the Program Counter (PC) is one of the general-purpose registers (register 15), a branch or jump can also be generated by writing a value to register 15. subroutine call 도 표준 branch 중 한 변형이다. Branch 후에는 항상 r14(lr) 에 명령어의 어드레스를 항상 저장해야 한다. load 명령어는 4Gbyte 어드레스 영역의 어떤 곳이라도 분기할 수 있다. 메모리로 부터 로드 된 32bit 값은 pc 에 들어가 branch 을 일으킨다. The ARM7TDMI processor that support the Thumb instruction set also support a branch instruction (BX) that jumps to a given address, and optionally switches executing Thumb instructions. Branch Instructions (1/2)

24 MicroVision.- STR711F Board MicroVision & ST Seminar List of branch instructions B, BL Branch, and branch with link BX Branch and exchange instruction set (ARM 모드에서 Thumb 모드로 전환 ) Examples Blabel; branch unconditionally to label BCClabel; branch to label if carry flag is clear BEQlabel ; branch to label if zero flag is set MOVPC, #0 ; R15 = 0, branch to location zero BLfunc; subroutine call to function funcMOVPC, LR; R15=R14, return to instruction after the BL MOVLR, PC; store the address of the instruction after the next one into R14 LDRPC, =func; load a 32-bit value into the program counter Branch Instructions (2/2)

25 MicroVision.- STR711F Board MicroVision & ST Seminar ARM 은 16 개의 data processing instructions. 대부분의 data processing instruction 은 2 개의 operand 를 가진다. (Move 와 Move not 은 하나의 operand 만 가진다.) 하나의 register 에 하나의 결과값을 저장한다. ( Compare 와 Test 명령은 제외 -condition code 로 업데이트함. 결과를 저장하지 않는다.) – 두개의 operand 중 하나는 항상 register 고, 나머지는 shitfer operand 다.( 그밖에 즉치나 register 값이다. 가 올 수도 있다.) –ALU 가 operand2 로 사용하기 전에 shifter 후에 operand 로 사용할 수 있다. Data Processing (1/2)

26 MicroVision.- STR711F Board MicroVision & ST Seminar List of data processing instructions Data Processing (2/2)

27 MicroVision.- STR711F Board MicroVision & ST Seminar 곱셈 명령어들 (1/2) ARM 은 2 가지 형식의 곱셈명령어가 있다. –normal, 32-bit result –long, 64-bit result 곱셈명령어는 항상 입력으로 두개의 operand register 를 가진다. For example) MULR4, R2, R1 ; Set R4 to value of R2 multiplied by R1 MULSR4, R2, R1 ; R4 = R2xR1, set N and Z flags MLAR7, R8, R9, R3 ; R7 = R8xR9 + R3 일반적으로 normal 연산에서 결과값은 항상 하위 값만 가진다.

28 MicroVision.- STR711F Board MicroVision & ST Seminar 곱셈 명령어들 (2/2) 64bit 의 결과를 위해서는 4 개의 곱셈 명령이 있다. (long 곱셈 ) –2 개의 값을 곱해서 상위와 하위로 나누어서 각각 저장한다. SMULLR4, R8, R2, R3; R4 = bits 0 to 31 of R2xR3 ; R8 = bits 32 to 63 of R2 x R3 UMULLR6, R8, R0, R1; R6, R8 = R0 x R1 UMLALR5, R8, R0, R1; R5, R8 = R0 x R1 + R5, R8

29 MicroVision.- STR711F Board MicroVision & ST Seminar Load / Store 명령어 (1/2) Load/ store 명령어는 3 가지 타입이 있다. –load / store 하나의 register 값을 갖는다. –load / store multiple register values –swap a register value with the value of a memory location load / store 하나의 register 값을 갖는다 –LDR/STR, Load/Store word –LDRB/STRB, Load/Store byte –LDRH/STRH, Load/Store unsigned halfword –LDRSB, Load signed byte –LDRSH, Load signed halfword

30 MicroVision.- STR711F Board MicroVision & ST Seminar Load / Store 명령어들 (2/2) Load and Store multiple registers –List of load and store multiple instructions LDM, Load multiple STM, Store multiple –STMDB SP!, {R0,R4,R5,R6,LR} Swap a register value with the value of a memory location –List of semaphore instructions SWP, Swap SWPB, Swap Byte –SWP R12, R10, [R9] ; load R12 from address R9 and ; store R10 to address R9 –SWPB R3, R4, [R8] ; load byte to R3 from address R8 and ;store byte from R4 to address R8

31 MicroVision.- STR711F Board MicroVision & ST Seminar The Software Interrupt instruction enters supervisor mode –ARM 에서는 swi 를 거의 사용하지 않는다. 대표적으로 사용하는 것은 JTAG 에뮬레이터를 사용하기 위해서 사용된다. Semihosting library 호출시 SWI : Software Interrupt

MicroVision.- STR711F Board MicroVision & ST Seminar THUMB Instruction Set

33 MicroVision.- STR711F Board MicroVision & ST Seminar Summary

34 MicroVision.- STR711F Board MicroVision & ST Seminar Thumb 명령어는 ARM 명령어의 파생 계열이다. –Optimized for code density. 대부분의 Thumb instruction 은 ARM instruction: –ADD Rd, #Offset8 <> ADDS Rd, Rd, #Offset8 Inline expansion of Thumb Instruction to ARM Instruction –Real time decompression –Thumb instructions are not actually executed on the core The core needs to know whether it is reading Thumb instructions or ARM instructions. –Core has two execution states - ARM and Thumb –Core does not have a mixed 16 and 32 bit instruction set. Thumb 어떻게 동작할까 ?

35 MicroVision.- STR711F Board MicroVision & ST Seminar Thumb Instruction Set Decompression Rd 0 0 1RdConstant 150 Always condition THUMB: ADD Rd,#Constant ARM: ADDS Rd, Rd, #Constant Major opcode Constant Destination & source register Zero extended constant I S op1+op2 Minor opcode

36 MicroVision.- STR711F Board MicroVision & ST Seminar Branch 명령어들 Thumb supports four types of branch instruction: –unconditional branch => 전후 2Kbytes(2^11) –conditional branch => 전후 256 bytes (2^8) List of branch instructions –Bconditional branch –Bunconditional branch –BLBranch with link –BXBranch and exchange instruction set

37 MicroVision.- STR711F Board MicroVision & ST Seminar Data Processing 명령어들 Thumb data-processing instruction 은 ARM data-processing instruction 의 축약이다. – 모든 Thumb data-processing instructions set the condition codes List of data-processing instructions –ADC, Add with Carry –ADD, Add –AND, Logical AND –ASR, Arithmetic shift right –BIC, Bit clear –CMN, Compare negative –CMP, Compare –EOR, Exclusive OR –LSL, Logical shift left –LSR, Logical shift right –MOV, Move –MUL, Multiply –MVN, Move NOT –NEG, Negate –ORR, Logical OR –ROR, Rotate Right –SBC, Subtract with Carry –SUB, Subtract –TST, Test

38 MicroVision.- STR711F Board MicroVision & ST Seminar Load / Store Register 명령어들 Thumb 에서는 8 가지의 load / store register 명령어들 List of load and store register instructions –LDRLoad word –LDRBLoad unsigned byte –LDRHLoad unsigned halfword –LDRSBLoad signed byte –LDRSHLoad signed halfword –STRStore word –STRBStore byte –STRHStore halfword

39 MicroVision.- STR711F Board MicroVision & ST Seminar Load / Store 곱셈 명령어들 Thumb 에서는 4 가지 load / store 곱셈 명령어 2 개의 block copy (a load and store) 나머지 2 개는 스택명령어인 PUSH / POP 이다. 스택명령어는 full descending stack 동작만 지원한다. stack pointer 는 base register 로 사용된다. List of load and store multiple instructions –LDMLoad multiple –POPPop multiple –PUSHPush multiple –STMStore multiple

MicroVision.- STR711F Board MicroVision & ST Seminar ARM vs THUMB

41 MicroVision.- STR711F Board MicroVision & ST Seminar Code size Generally, routines in THUMB code are between 65 and 70% the size of the equivalent ARM code. 65%70%75% 60% % of ARM code size

42 MicroVision.- STR711F Board MicroVision & ST Seminar Code performances vs Memory width

43 MicroVision.- STR711F Board MicroVision & ST Seminar All instructions are 32 bits long. Most instructions are executed in one single cycle. Every instructions can be conditionally executed. A load/store architecture –Data processing instructions act only on registers Three operand format Combined ALU and shifter for high speed bit manipulation –Specific memory access instructions with powerful auto-indexing addressing modes –32 bit,16 bit and 8 bit data types –Flexible multiple register load and store instructions Arm Instruction Set Advantages

44 MicroVision.- STR711F Board MicroVision & ST Seminar All instructions are exactly 16 bits long to improve code density over other 32-bit architectures The Thumb architecture still uses a 32-bit core, with: –32-bit address space –32-bit registers –32-bit shifter and ALU –32-bit memory transfer Gives.... –Long branch range –Powerful arithmetic operations –Large address space Thumb Instruction Set Advantages