Upload
wave-digitech
View
965
Download
3
Embed Size (px)
DESCRIPTION
Presentation on ARM Basic
Citation preview
E-mail: [email protected]; http://www.wavedigitech.com Phone : 91-9632839173
© Copyright 2013, wavedigitech.com.
Latest update: June 15, 2013,http://www.wavedigitech.com/
Call us on : 91-9632839173E-Mail : [email protected]
Presentation on ARM Basics
Presentation on ARM Basics
By : Faizan Ali KhanMail @ [email protected]
E-mail: [email protected]; http://www.wavedigitech.com Phone : 91-9632839173
CPU Modes
• User mode : The only non-privileged mode. • Fast Interrupt mode : A privileged mode that is entered whenever the processor accepts an FIQ
interrupt. • Interrupt mode: A privileged mode that is entered whenever the processor accepts an IRQ
interrupt. • Supervisor (svc) mode :A privileged mode entered whenever the CPU is reset or when a SWI
instruction is executed.• Abort mode : A privileged mode that is entered whenever a prefetch abort or data abort exception
occurs.• Undefined mode: A privileged mode that is entered whenever an undefined instruction exception
occurs.• System mode (ARMv4 &above) : The only privileged mode that is not entered by an exception. It
can only be entered by executing an instruction that explicitly writes to the mode bits of the CPSR. • MON Mode :A monitor mode is introduced to support TrustZone extension in ARM Core.• FIQ mode :designed to support a data transfer or channel process or FIQ26 mode: a 26 bit version • IRQ mode :used for general purpose interrupt handling or IRQ26 mode: a 26 bit version
E-mail: [email protected]; http://www.wavedigitech.com Phone : 91-9632839173
Registers
• Registers R0-R7 are the same across all CPU modes; they are never banked.• R13 and R14 are banked across all privileged CPU modes except system
mode. That is, each mode that can be entered because of an exception has its own R13 and R14. These registers generally contain the stack pointer and the return address from function calls, respectively.
• R13 is also referred to as SP, the Stack Pointer.• R14 is also referred to as LR, the Link Register.• R15 is also referred to as PC, the Program Counter
• The PC is a full 32 bits wide, and used singularly as a Program Counter. • The PSR is contained within its own register, the CPSR. • Each privileged mode has a private SPSR register in which to save the
CPSR.
E-mail: [email protected]; http://www.wavedigitech.com Phone : 91-9632839173
E-mail: [email protected]; http://www.wavedigitech.com Phone : 91-9632839173
ARM Processor Registers
E-mail: [email protected]; http://www.wavedigitech.com Phone : 91-9632839173
Current Program Status Register
.
• The Current Program Status Register (cpsr) is a dedicated 32-bit register
• The condition flags indicates the various conditions that occur while performing arithmetic and logical operations. The various condition flags and their meaning are given in the following table
Table 1. Condition Flags
E-mail: [email protected]; http://www.wavedigitech.com Phone : 91-9632839173
E-mail: [email protected]; http://www.wavedigitech.com Phone : 91-9632839173
Current Program Status Register
Current Program Status Register
• The allocation of the bits within the CPSR (and the SPSR registers to which it is saved) is:
31 30 29 28 --- 7 6 - 4 3 2 1 0
N Z C V I F M4 M3 M2 M1 M0
0 0 0 0 0 User26 mode
0 0 0 0 1 FIQ26 mode
0 0 0 1 0 IRQ26 mode
0 0 0 1 1 SVC26 mode
1 0 0 0 0 User mode
1 0 0 0 1 FIQ mode
1 0 0 1 0 IRQ mode
1 0 0 1 1 SVC mode
1 0 1 1 1 ABT mode
1 1 0 1 1 UND mode
E-mail: [email protected]; http://www.wavedigitech.com Phone : 91-9632839173
Pipelining
• Pipeline is used to increase the execution speed• ARM operates only in pipeline mode (3 or 5 pipes).• Any instruction can be divided into different cycles which determine the pipe
length.
• For 3 stages pipe (fetch- decode - execute):• During fetch, memory is accessed for instruction.• During decode, control logic makes control for the execute cycle.• During execute, dataflow path is occupied.• Without pipelining each instruction will pass by the 3 phases & needs three
cycles to execute.• The 3 phases are in most cases un intersecting so while decoding the current
instruction a new instruction can be fetched.• It will appear as if the process is executing an instruction in one cycle only due
to the usage of pipelining. Thus appears faster.
E-mail: [email protected]; http://www.wavedigitech.com Phone : 91-9632839173
Pipelining
• ARM7 has a 3-stage pipeline. • ARM9 has a 5-stage pipeline.• ARM10 has 6-stage pipeline. • ARM11 has 8-stage pipeline.
• A simple 3-stage pipeline consists of fetch, decode and execute.• fetch - to fetch the instruction from the code memory indicated by the
program counter.• decode - interpret the opcode from the instruction.• execute - based on the opcode, perform required operation on the
operand(s).
• Latency: time it takes for an instruction to get through the pipeline.• Throughput: number of instructions executed per time period.• Pipelining increases throughput without reducing latency.
E-mail: [email protected]; http://www.wavedigitech.com Phone : 91-9632839173
3 Stage Pipelining
E-mail: [email protected]; http://www.wavedigitech.com Phone : 91-9632839173
Exception
• During the ordinary flow of execution in a user program, the Program Counter usually increases sequentially through the address space, with perhaps a branch here or there to nearby labels, or with branch-and-links to subroutines and functions.
• An exception causes this normal flow of execution to be diverted. Exceptions are generated by sources internal or external to the processor. This allows the processor to handle events generated by these sources; such events include:
interrupts generated by some peripheral device, an attempt to execute an undefined or unimplemented instruction, a software-generated interrupt, via the swi instruction.• The ARM processor supports seven types of exceptions. When an exception
occurs, the processor branches to a fixed address that corresponds to that exception. This fixed address, called the exception vector address, is located in the bottom 32 bytes of the memory map. These 32 bytes are called the exception vector table.
E-mail: [email protected]; http://www.wavedigitech.com Phone : 91-9632839173
ARM Processor Exceptions
E-mail: [email protected]; http://www.wavedigitech.com Phone : 91-9632839173
Handling an Exception• The ARM processor uses the additional (banked) registers associated with
each processor mode to help save the processor state. To handle an exception, the ARM processor:
copies the address of the next instruction (the return address), or the return address plus some offset, into the appropriate LR register,
copies the CPSR into the appropriate SPSR, sets the CPSR mode bits to the processor mode corresponding to the
exception, enforces ARM state by setting bit 5 (the T bit) of CPSR to zero, possibly disables fast interrupts by setting bit 6 of CPSR to one (only for
FIQ exceptions), disables normal interrupts by setting bit 7 (the I bit) of CPSR to one, and loads the address of the exception vector into the Program Counter PC.
E-mail: [email protected]; http://www.wavedigitech.com Phone : 91-9632839173
Switching from User Mode to FIQ Mode on a Fast Interrupt Exception
E-mail: [email protected]; http://www.wavedigitech.com Phone : 91-9632839173
Interrupts
• A software interrupt is a type of exception that is initiated entirely by software. On the ARM processor, the relevant instruction that does this is swi. When this instruction is executed, it causes the processor to switch into Supervisor mode and branch to the relevant exception vector address, 0x00000008. In other words, swi causes an exception, but one that is foreseen by the program.
• Software interrupts are useful because they allow a program running in User mode to switch to a privileged mode; the code that handles the software interrupt can then do whatever is needed on behalf of the user program. An operating system providing input/output routines is a classic example of this.
E-mail: [email protected]; http://www.wavedigitech.com Phone : 91-9632839173
Contd..• To the ARM processor, swi is just another type of exception. When the processor executes• this instruction, it: copies the address of the next instruction following the swi into the LR_svc (R14_svc)
register. This return address is actually PC – 4; the swi instruction can be found at PC – 8, copies the CPSR into SPSR_svc (the Supervisor mode SPSR), sets the CPSR mode bits to Supervisor mode. This has the effect of “swapping in” R13_svc
and R14_svc and “swapping out” the previously-visible R13 and R14, enforces ARM state by setting bit 5 (the T bit) of CPSR to zero, disables normal interrupts by setting bit 7 (the I bit) of CPSR to one. This means that normal
interrupts cannot cause exceptions during the swi call, unless bit 7 is later set to zero in the exception handler’s code. Fast interrupts are not disabled and can still occur;
loads the address of the exception vector, 0x00000008, into the Program Counter PC.
• Once the software interrupt handler has finished its task, it returns control to the calling program by:
1. moving the contents of register LR_svc (R14_svc) into PC, and
2. copying SPSR back to CPSR.• The following single instruction performs both of these steps:
movs pc, lr ; Copy current LR to PC and copy current SPSR to CPSR
E-mail: [email protected]; http://www.wavedigitech.com Phone : 91-9632839173
Interrupt vector table• A table of interrupt vectors (pointers to routines that handle
interrupts). • On PCs, the interrupt vector table consists of 256 4-byte
pointers, and resides in the first 1 K of addressable memory. • Each interrupt number is reserved for a specific purpose. For
example, 16 of the vectors are reserved for the 16 IRQ (interrupt request) lines.
• An interrupt vector table is also called a dispatch table.• An interrupt vector table is used in all 3 of the 3 most popular
methods of finding the starting address of the interrupt service routine
E-mail: [email protected]; http://www.wavedigitech.com Phone : 91-9632839173
Interrupt vector table
E-mail: [email protected]; http://www.wavedigitech.com Phone : 91-9632839173
ARM Architecture Revisions
E-mail: [email protected]; http://www.wavedigitech.com Phone : 91-9632839173
ARM Nomenclature
• The letters and numbers after the word “ARM” indicate the features a processor may have.
• All ARM cores after the ARM7TDMI include the TDMI features even though they may not include those letters after the “ARM” label.
• The processor family is a group of processor implementations that share the same hardware characteristics. For example, the ARM7TDMI, ARM740T, and ARM720T all share the same family characteristics and belong to the ARM7 family.
• JTAG is described by IEEE 1149.1 Standard Test Access Port and boundary scan architecture. It is a serial protocol used by ARM to send and receive debug information between the processor core and test equipment.
• Embedded ICE macrocell is the debug hardware built into the processor that allows breakpoints and watchpoints to be set.
• Synthesizable means that the processor core is supplied as source code that can be compiled into a form easily used by EDA tools.
E-mail: [email protected]; http://www.wavedigitech.com Phone : 91-9632839173
ARM Processor Families
• ARM has designed a number of processors that are grouped into different families according to the core they use. The families are based on the ARM7, ARM9, ARM10, and ARM11 cores.
• The postfix numbers 7, 9, 10, and 11 indicate different core designs. The ascending number equates to an increase in performance and sophistication. ARM8 was developed but was soon superseded.
• An ARM processor comprises a core plus the surrounding components that interface it with a bus.
• The core extensions include the following: Caches are used to improve the overall system performance. TCMs are used to improve deterministic real-time response.
E-mail: [email protected]; http://www.wavedigitech.com Phone : 91-9632839173
E-mail: [email protected]; http://www.wavedigitech.com Phone : 91-9632839173
ARM Processor Families
ARM Instruction Sets
E-mail: [email protected]; http://www.wavedigitech.com Phone : 91-9632839173
ARM Instruction Format
• Each instruction is encoded into a 32-bit word Access to memory is provided only by Load and Store instructions
• The basic encoding format for the instructions, such as Load, Store, Move, Arithmetic, and Logic instructions, is shown below
• An instruction specifies a conditional execution code (Condition), the OP code, two or three registers (Rn, Rd, and Rm), and some other information
E-mail: [email protected]; http://www.wavedigitech.com Phone : 91-9632839173
Conditional Execution of Instructions
• A distinctive and somewhat unusual feature of ARM processors is that all instructions are conditionally executed
• Depending on a condition specified in the instruction The instruction is executed only if the current state of the processor condition code flag satisfies the condition specified in bits b31-b28 of the instruction
• Thus the instructions whose condition is not meet the processor condition code flag are not executed
• One of the conditions is used to indicate that the instruction is always executed
E-mail: [email protected]; http://www.wavedigitech.com Phone : 91-9632839173
E-mail: [email protected]; http://www.wavedigitech.com Phone : 91-9632839173
E-mail: [email protected]; http://www.wavedigitech.com Phone : 91-9632839173
Using and updating the Condition Field
• To execute an instruction conditionally, simply postfix it with the appropriate condition:
• For example an add instruction takes the form:
ADD r0,r1,r2; r0 = r1 + r2 (ADDAL)• To execute only if the zero flag is set:
ADDEQ r0,r1,r2; If zero flag set then…; ... r0 = r1 + r2
• By default, data processing operations do not affect the condition flags (apart from the comparisons where this is the only effect). To cause the condition flags to be updated, the S bit of the instruction needs to be set by postfixing the instruction (and any condition code) with an “S”.
• For example to add two numbers and set the condition flags:
ADDS r0,r1,r2; r0 = r1 + r2 ;
... and set flags
E-mail: [email protected]; http://www.wavedigitech.com Phone : 91-9632839173
Memory Addressing Modes
• Pre-indexed mode• The effective address of the operand is the sum of the contents of the
base register Rn and an offset value
• Pre-indexed with writeback mode• The effective address of the operand is generated in the same way as
in the Pre-indexed mode, and then the effective address is written back into Rn
• Post-indexed mode• The effective address of the operand is the contents of Rn. The offset
is then added to this address and the result is written back into Rn
E-mail: [email protected]; http://www.wavedigitech.com Phone : 91-9632839173
Data processing Instructions
• Largest family of ARM instructions, all share the same instruction format.
• It Contains :
Arithmetic operations
Comparisons (no results ‐just set condition codes)
Logical operations
Data movement between registers
• These instruction only work on registers, NOT memory.
• They each perform a specific operation on one or two operands. First operand is always a register ‐Rn
• Second operand is sent to the ALU via barrel shifter.
E-mail: [email protected]; http://www.wavedigitech.com Phone : 91-9632839173
Arithmetic Instructions
• The basic expression for arithmetic instructions is
OPcode Rd, Rn, Rm • For example, ADD R0, R2, R4• Performs the operation R0[R2]+[R4]
SUB R0, R6, R5• Performs the operation R0[R6]-[R5]
• Immediate mode:• ADD R0, R3, #17• Performs the operation R0[R3]+17
• The second operand can be shifted or rotated before being used in the operation• For example, ADD R0, R1, R5, LSL #4 operates as follows: • the second operand stored in R5 is shifted left 4-bit positions (equivalent to
[R5]x16), and its is then added to the contents of R1; the sum is placed in R0
E-mail: [email protected]; http://www.wavedigitech.com Phone : 91-9632839173
Arithmetic Instructions
• Operations are:• ADD operand1 + operand2; Add• ADC operand1 + operand2 + carry; Add with carry• SUB operand1 ‐operand2; Subtract• SBC operand1 ‐operand2 + carry ‐1 ; Subtract with carry• RSB operand2 ‐operand1; Reverse subtract• RSC operand2 ‐operand1 + carry ‐1; Reverse subtract with carry
• Syntax:
<Operation>{<cond>}{S} Rd, Rn, Operand2
• Examples
ADD r0, r1, r2
SUBGT r3, r3, #1
RSBLES r4, r5, #5
E-mail: [email protected]; http://www.wavedigitech.com Phone : 91-9632839173
Multiplication Instructions
• The Basic ARM provides two multiplication instructions.
• Multiply
MUL{<cond>}{S} Rd, Rm, Rs; Rd = Rm * Rs
• Multiply Accumulate‐does addition for free
MLA{<cond>}{S} Rd, Rm, Rs,Rn; Rd = (Rm * Rs) + Rn
• Restrictions on use:• Rd and Rm cannot be the same registerCan be avoided by
swapping Rm and Rs around. This works because multiplication is commutative.
E-mail: [email protected]; http://www.wavedigitech.com Phone : 91-9632839173
Logic Instructions
• The logic operations AND, OR, XOR, and Bit-Clear are implemented by instructions with the OP codes AND, ORR, EOR, and BIC.
• For example• AND R0, R0, R1: performs R0[R0]+[R1]• The Bit-Clear instruction (BIC) is closely related to the AND instruction.• It complements each bit in operand Rm before ANDing them with the bits
in register Rn.• For example, BIC R0, R0, R1. Let R0=02FA62CA, R1=0000FFFF. Then the
instruction results in the pattern 02FA0000 being placed in R0.
• The Move Negative instruction complements the bits of the source operand and places the result in Rd.
• For example, MVN R0, R3
E-mail: [email protected]; http://www.wavedigitech.com Phone : 91-9632839173
Logical Operations
• Operations are:• AND operand1 AND operand2• EOR operand1 EOR operand2• ORR operand1 OR operand2• ORN operand1 NOR operand2• BIC operand1 AND NOT operand2 [ie bit clear]
• Syntax:
<Operation>{<cond>}{S} Rd, Rn, Operand2
• Examples:
ANDr0, r1, r2
BICEQr2, r3, #7
EORSr1,r3,r0
E-mail: [email protected]; http://www.wavedigitech.com Phone : 91-9632839173
Branch Instructions
• Conditional branch instructions contain a signed 24-bit offset that is added to the updated contents of the Program Counter to generate the branch target address
• Offset is a signed 24-bit number. It is shifted left two-bit positions (all branch targets are aligned word addresses), signed extended to 32 bits, and added to the updated PC to generate the branch target address
• The updated points to the instruction that is two words (8 bytes) forward from the branch instruction
• The format for the branch instructions is shown as below
E-mail: [email protected]; http://www.wavedigitech.com Phone : 91-9632839173
E-mail: [email protected]; http://www.wavedigitech.com Phone : 91-9632839173
Conditional Branches
Comparisons
• The only effect of the comparisons is to update the condition flags. Thus no need to set S bit.
• Operations are:• CMP operand1 ‐operand2; Compare• CMN operand1 + operand2; Compare negative• TST operand1 AND operand2; Test• TEQ operand1 EOR operand2; Test equivalence
• Syntax:
<Operation>{<cond>} Rn, Operand2
• Examples:
CMP r0, r1
TSTEQ r2, #5
E-mail: [email protected]; http://www.wavedigitech.com Phone : 91-9632839173
The Barrel Shifter
• The ARM doesn’t have actual shift instructions.• Instead it has a barrel shifter which provides a mechanism to
carry out shifts as part of other instructions.• Left Shift• Shifts left by the specified amount (multiplies by powers of two) • Example
LSL #5 => multiply by 32
E-mail: [email protected]; http://www.wavedigitech.com Phone : 91-9632839173
Barrel Shifter ‐Right Shifts
E-mail: [email protected]; http://www.wavedigitech.com Phone : 91-9632839173
Barrel Shifter ‐Rotations
E-mail: [email protected]; http://www.wavedigitech.com Phone : 91-9632839173
© Copyright 2013, wavedigitech.com.
Latest update: Janl 30, 2013,http://www.wavedigitech.com/
Call us on : 91-9632839173E-Mail : [email protected]
Thank You
E-mail: [email protected]; http://www.wavedigitech.com Phone : 91-9632839173