The ARM Programmer’s Model Jacob Huerta, Ryan Crell, and Veronica Hohe 1/30/2015 Outline ARM Registers Von Neumann Cycle Sequence CPSR Memory Standard ARM vs.
Download ReportTranscript The ARM Programmer’s Model Jacob Huerta, Ryan Crell, and Veronica Hohe 1/30/2015 Outline ARM Registers Von Neumann Cycle Sequence CPSR Memory Standard ARM vs.
The ARM Programmer’s Model Jacob Huerta, Ryan Crell, and Veronica Hohe 1/30/2015 1 Outline ARM Registers Von Neumann Cycle Sequence CPSR Memory Standard ARM vs. Thumb ARM Instructions ARM Instructions Supervisor Mode/Kernel Mode Exceptions 1/30/2015 2 ARM Registers 1/30/2015 3 ARM Registers Instruction set = operations to change system state State = data items in processor’s visible registers/systems memory Multiple invisible registers in a processor 1/30/2015 4 ARM Registers User-level programming 15 general purpose registers PC CPSR System-level programming/exceptions 1/30/2015 Remaining registers 5 Von Neumann Cycle Sequence 1/30/2015 6 Von Neumann Cycle Sequence 1/30/2015 7 CPSR 1/30/2015 8 ARM CPSR Control Bits Protected from user-level programs Mode T Control the instruction set State bit IF 1/30/2015 Control the processor mode Bits 0-4 (must be a valid mode) Enables control interrupt Bit 6 is FIQ disable and Bit 7 is IRQ disable 9 ARM CPSR Flag Bits Condition Code Flags NZCV N (“Negative flag”) Z (“Zero flag”) 0/1 = “extends” for shift/”borrows” for subtraction V (“Overflow flag”) 1/30/2015 0/1 = result is non-zero/zero C (“Carry flag”) 0/1 = value is positive/negative 0/1 = no overflow/overflow caused by last arithmetic operation 10 ARM CPSR Unused Bits Unused bits Reserved State preserved when changing the flag or control bits Should not be altered by programs Should not rely on them when checking the PSR status 1/30/2015 Might read as 1’s or 0’s in future processors 11 ARM Memory Organization 1/30/2015 12 ARM Memory Organization View memory as linear array of bytes numbered from 0 to 232-1 Store data items in Byte (8 bits) Half-word (16 bits) Word (32 bits) Align words on 4 bytes Organize in little-endian style 1/30/2015 13 ARM Instructions 1/30/2015 14 ARM vs. THUMB Instructions ARM 32-bit instruction set 3-data address instructions 16 general purpose registers 1/30/2015 THUMB 16-bit instruction set 2-data address instructions 8 general purpose registers “Less regular” instructions Higher code density High performance 15 ARM vs. THUMB Instructions Not a “complete” architecture Supports ARM architecture The T bit in CPSR toggles the interpretation 1/30/2015 16 ARM vs. THUMB Instructions 1/30/2015 17 ARM Instructions Load-store architecture Processes only values stored in registers and instructions Performs operations on these values Stores results in register Affects memory using only load and store instructions Inability to perform memory-to-memory operations Instructions 1/30/2015 Data processing: between registers (add, sub, etc.) Data transfer: between registers and memory (load, store) Control flow: execution of instructions (branches, link, supervisor calls) 18 Supervisor Mode/Kernel Mode 1/30/2015 19 Supervisor Mode/Kernel Mode User with supervisor privileges can use system calls to affect Kernel code Device drivers Privileged code Unprivileged code 1/30/2015 User program with IO access permissions User programs 20 Exceptions 1/30/2015 21 Exceptions Normal execution is paused to handle events like 1/30/2015 Systems calls Interrupts generated by external sources Undefined instructions Traps 22 Exception Handling Save current state is Copy PC into register rl4_exc Copy CPSR into register SPSR_exc Register r13_exc = pointer to memory stack to store user registers Set processor operating mode to exception mode 1/30/2015 23 Exception Handling Set PC to value between 0x00 and 0x1C depending on exception type Restore user registers from memory stack Restore (adjusted) PC and CPSR 1/30/2015 24 Input/Output (I/O) System 1/30/2015 25 Input/Output (I/O) System I/O peripheral Device mapped to memory Device registers treated as memory locations by system Given interrupt support (make interrupt requests) Normal interrupt (IRQ) = most requests Fast interrupt (FIQ) = time-sensitive/critical requests Direct Memory Access (DMA) 1/30/2015 External to ARM processor Handles high-bandwidth I/O traffic 26 References (2001). “The Thumb Instruction Set.” Web. 2001. January 28, 2015. http://paulkilloran.com/arm/Lecture_7.pdf (2014). “About processor exceptions.” ARM. Web. http://infocenter.arm.com/help/index.jsp?topic=/com.arm.doc.dui0471g/BABGCFHB.html. (2014). “Exception handling process.” ARM. Web. http://infocenter.arm.com/help/index.jsp?topic=/com.arm.doc.dui0471g/BABGCFHB.html. (2014). “Load/store architecture.” Wikipedia. Web. August 4, 2014. http://en.wikipedia.org/wiki/Load/store_architecture. (2014). “Protection ring.” Wikipedia. Web. December 30, 2014. http://en.wikipedia.org/wiki/Protection_ring. (2014). “Reserved bits.” ARM. Web. August 4, 2014. http://infocenter.arm.com/help/index.jsp?topic=/com.arm.doc.ddi0229c/ch02s07s03.html (2014). “Trap (computing).” Wikipedia. Web. April 30, 2014. http://en.wikipedia.org/wiki/Trap_(computing). Furber, S. (2000). ARM system-on-chip architecture. Harlow, England: Addison-Wesley. (2014). Gibson, J. (2011). ARM assembly language: An Introduction (2nd ed.). Lexington, KY: The Author. 1/30/2015 27 QUESTIONS? 1/30/2015 28