May 2006 Saeid Nooshabadi saeid@unsw.edu.au ELEC2041 Microprocessors and Interfacing Lectures 27: Exceptions & Interrupts - I http://webct.edtec.unsw.edu.au/

Slides:



Advertisements
Similar presentations
More on Processes Chapter 3. Process image _the physical representation of a process in the OS _an address space consisting of code, data and stack segments.
Advertisements

ECE 353 Introduction to Microprocessor Systems
Interrupts Chapter 8 – pp Chapter 10 – pp Appendix A – pp 537 &
Chapter 12: Software interrupts (SWI) and exceptions
Interrupts (contd..) Multiple I/O devices may be connected to the processor and the memory via a bus. Some or all of these devices may be capable of generating.
Architectural Support for OS March 29, 2000 Instructor: Gary Kimura Slides courtesy of Hank Levy.
Introduction To The ARM Microprocessor
1 Last Class: Introduction Operating system = interface between user & architecture Importance of OS OS history: Change is only constant User-level Applications.
ARM 7 Datapath. Has “BIGEND” input bit, which defines whether the memory is big or little endian Modes: ARM7 supports six modes of operation: (1) User.
COMP3221 lec28-exception-II.1 Saeid Nooshabadi COMP 3221 Microprocessors and Embedded Systems Lectures 28: Exceptions & Interrupts - II
COMP3221 lec27-exception-I.1 Saeid Nooshabadi COMP 3221 Microprocessors and Embedded Systems Lectures 27: Exceptions & Interrupts - I
COMP3221 lec40-exception-review.1 Saeid Nooshabadi COMP 3221 Microprocessors and Embedded Systems Lecture 40: Review of Exception
1 OS & Computer Architecture Modern OS Functionality (brief review) Architecture Basics Hardware Support for OS Features.
Midterm Wednesday 11/19 Overview: 25% First Midterm material - Number/character representation and conversion, number arithmetic - DeMorgan’s Law, Combinational.
The ARM Programmer’s Model
What are Exception and Interrupts? MIPS terminology Exception: any unexpected change in the internal control flow – Invoking an operating system service.
Exception and Interrupt Handling
Introduction to Embedded Systems
Interrupt driven I/O. MIPS RISC Exception Mechanism The processor operates in The processor operates in user mode user mode kernel mode kernel mode Access.
1 CSE451 Architectural Supports for Operating Systems Autumn 2002 Gary Kimura Lecture #2 October 2, 2002.
AT91 Interrupt Handling. 2 Stops the execution of main software Redirects the program flow, based on an event, to execute a different software subroutine.
Operating Systems 1 K. Salah Module 1.2: Fundamental Concepts Interrupts System Calls.
1 Lecture 1: Computer System Structures We go over the aspects of computer architecture relevant to OS design  overview  input and output (I/O) organization.
Interrupt driven I/O Computer Organization and Assembly Language: Module 12.
Interrupts and Exception Handling. Execution We are quite aware of the Fetch, Execute process of the control unit of the CPU –Fetch and instruction as.
Introduction to ARM processor. Intro.. ARM founded in November 1990 Advanced RISC Machines Company headquarters in Cambridge, UK Processor design centers.
ARM7 TDMI INTRODUCTION.
Introduction to Exceptions 1 Introduction to Exceptions ARM Advanced RISC Machines.
Introduction to Operating Systems Concepts
Chapter 12: Software interrupts (SWI) and exceptions
Architectures of Digital Information Systems Part 1: Interrupts and DMA dr.ir. A.C. Verschueren Eindhoven University of Technology Section of Digital.
Interrupts and exceptions
MICROPROCESSOR BASED SYSTEM DESIGN
Microprocessor Systems Design I
Embedded System Design Center
Timer and Interrupts.
Anton Burtsev February, 2017
Computer Architecture
Day 08 Processes.
Day 09 Processes.
Chapter 10 The Stack.
Arithmetic using a stack
Computer System Overview
Module 2: Computer-System Structures
May 2006 Saeid Nooshabadi ELEC2041 Microprocessors and Interfacing Lectures 30: Memory and Bus Organisation - I
BIC 10503: COMPUTER ARCHITECTURE
Chapter 12: Software interrupts (SWI) and exceptions
Architectural Support for OS
Chapter 10 And, Finally... The Stack
CSE 451: Operating Systems Autumn 2003 Lecture 2 Architectural Support for Operating Systems Hank Levy 596 Allen Center 1.
Module 2: Computer-System Structures
CSE 451: Operating Systems Autumn 2001 Lecture 2 Architectural Support for Operating Systems Brian Bershad 310 Sieg Hall 1.
Interrupt handling Explain how interrupts are used to obtain processor time and how processing of interrupted jobs may later be resumed, (typical.
ARM Introduction.
CSE 451: Operating Systems Winter 2007 Module 2 Architectural Support for Operating Systems Brian Bershad 562 Allen Center 1.
Control Hazards Branches (conditional, unconditional, call-return)
Modified from notes by Saeid Nooshabadi
CSE 451: Operating Systems Winter 2003 Lecture 2 Architectural Support for Operating Systems Hank Levy 412 Sieg Hall 1.
Computer System Laboratory
Architectural Support for OS
Module 2: Computer-System Structures
Multiply Instructions
COMP3221: Microprocessors and Embedded Systems
Interrupts and exceptions
Contact Information Office: 225 Neville Hall Office Hours: Monday and Wednesday 12:00-1:00 and by appointment. Phone:
Module 2: Computer-System Structures
May, 2004 Modified from notes by Saeid Nooshabadi
Chapter 13: I/O Systems.
Interrupts & Syscalls.
Chapter 13: I/O Systems “The two main jobs of a computer are I/O and [CPU] processing. In many cases, the main job is I/O, and the [CPU] processing is.
Presentation transcript:

May 2006 Saeid Nooshabadi saeid@unsw.edu.au ELEC2041 Microprocessors and Interfacing Lectures 27: Exceptions & Interrupts - I http://webct.edtec.unsw.edu.au/ May 2006 Saeid Nooshabadi saeid@unsw.edu.au

Overview Instruction Set Support for Exceptions Privileged vs User modes of operation. Handling a Single Interrupt

I/O gives computers their 5 senses I/O speed range is million to one Review I/O gives computers their 5 senses I/O speed range is million to one Processor speed means must synchronize with I/O devices before use Polling works, but expensive processor repeatedly queries devices Interrupts works, more complex

Definitions for Clarification Exception: signal marking that something “out of the ordinary” has happened and needs to be handled. Caused by internal and external sources Interrupt: Externally asynchronous exception (by I/Os) Software Interrupt (SWI): User defined synchronous exception Trap: Processor’s diversion to a code to handle exception

Example of Exception Sources in ARM Externally generated interrupts An attempt by the processor to execute an undefined instruction Accessing privileged operating system functions via software interrupts (SWI). Print Access Ethernet

An I/O interrupt is like an undefined instruction exceptions except: An I/O interrupt is “asynchronous” More information needs to be conveyed An I/O interrupt is asynchronous with respect to instruction execution: I/O interrupt is not associated with any instruction, but it can happen in the middle of any given instruction I/O interrupt does not prevent any instruction from completion How does an I/O interrupt different from the exception you already learned? Well, an I/O interrupt is asynchronous with respect to the instruction execution while exception such as overflow or page fault are always associated with a certain instruction. Also for exception, the only information needs to be conveyed is the fact that an exceptional condition has occurred but for interrupt, there is more information to be conveyed. Let me elaborate on each of these two points. Unlike exception, which is always associated with an instruction, interrupt is not associated with any instruction. The user program is just doing its things when an I/O interrupt occurs. So I/O interrupt does not prevent any instruction from completing so you can pick your own convenient point to take the interrupt. As far as conveying more information is concerned, the interrupt detection hardware must somehow let the OS know who is causing the interrupt. Furthermore, interrupt requests needs to be prioritized. The hardware that can do all these looks like this. +2 = 64 min. (Y:44)

Architecture Support for Exceptions Save the PC for return But where? Where to go when Exception occurs? How to determine the Cause of exception? How to handle exceptions?

Exception Sources in ARM Reset: Occurs when the processor reset pin is asserted. (Signalling power-up) Undefined Instruction: Occurs if the processor, does not recognize the currently executing instruction. Software Interrupt (SWI): This is a user-defined intentional synchronous interrupt instruction. Prefetch Abort: Occurs when the processor attempts to execute an instruction that was not fetched, because the address was illegal. Data Abort: Occurs when a data transfer instruction attempts to load or store data at an illegal address. IRQ: Occurs when the processor external Interrupt ReQuest pin is asserted FIQ: Occurs when the processor external Fast Interrupt reQuest pin is asserted

ARM Modes of Operations Non-Privileged Mode 10000 User Normal user code 10001 FIQ Processing fast interrupts 10010 IRQ Processing standard interrupts 10011 SVC Processing software interrupts (SWIs) 10111 Abort Processing memory faults 11011 Undef Handling undefined instruction traps 11111 System Running privileged operating system tasks Privileged Modes CPSR

CPSR Encoding for Operating Modes & Interrupts mode Mode of Operation T ARM vs Thumb State (We only use ARM in ELEC2041 F FIQ Fast interrupts Disable bit I IRQ Normal interrupt Disable bit NZCV Condition Flags Changing mode bits is only possible in privileged modes

User Mode vs Privileged Modes User Applications run in User Mode Privileged modes, used to service interrupts exceptions access protected resources (via SWI Instruction) Privileged modes  User mode OK User mode  Privileged modes NOT OK Only possible through Controlled mechanisms: SWI, Exceptions, Interrupts

Rationale Privileged Modes Privileged modes protect system from getting trashed by user. Some Instructions can only be executed in privileged mode Example: User can’t directly read/write information from disk I/Os. Why not allow direct access to non- disk I/O devices in user mode? Komodo on DSLMU runs in Privileged mode. Can access everything while running Komodo

I/O Requires Privileged Modes Transmitter/receiver Status and Data words are in privileged data space; thus we must be in privileged mode to read or write them. Device drivers run in privileged mode. To access the I/O devices the user application has to make a Supervisor call to the OS via SWI instruction Komodo on DSLMU Allows access to I/O ports in User mode! Security hole !

Support for ARM Modes of Operations

Switching between Modes (User to FIQ Mode) cpsr r15 (pc) r14 (lr) r13 (sp) r12 r10 r11 r9 r8 r7 r4 r5 r2 r1 r0 r3 r6 r14_fiq r13_fiq r12_fiq r10_fiq r11_fiq r9_fiq r8_fiq Registers in use User Mode spsr_fiq cpsr r7 r4 r5 r2 r1 r0 r3 r6 r15 (pc) r14_fiq r13_fiq r12_fiq r10_fiq r11_fiq r9_fiq r8_fiq r14 (lr) r13 (sp) r12 r10 r11 r9 r8 Registers in use FIQ Mode spsr_fiq EXCEPTION Similarly in other 4 modes, though here only r13->r14 swapped. “Banked” registers stored between mode swaps. Useful for interrupt handling because nothing to set up. Can thus run more quickly. Return address calculated from User mode PC value and stored in FIQ mode LR User mode CPSR copied to FIQ mode SPSR

Exception Handling Mechanism (#1/2) The processor’s response to an exception Copies the Current Program Status Register (CPSR) into the appropriate mode Saved Program Status Register(SPSR) Sets the appropriate CPSR bits Mode bits : set appropriately. maps in the appropriate banked registers for that mode. I bit : to disable interrupts. IRQs are disabled once any other exception occurs F bit: FIQs are also disabled when a FIQ occurs. Stores the address of the return instruction (generally PC – 4) in LR_<mode>. Sets the PC to the appropriate vector address.This forces the branch to the appropriate exception handler.

Exception Handling Mechanism (#2/2) Returning from an exception handler Restore the CPSR from the SPSR_<mode>. Restore the PC using the return address stored in LR_<mode>. These can be achieved in a single instruction movs pc, lr or subs pc, lr, #4 Adding the S flag (update condition codes) to a data processing instruction when in a privileged mode with the PC as the destination register, also transfers the SPSR to CPSR Same thing for Load Multiple instruction (using the ^ qualifier) ldmfd sp! {r0-r12, pc}^

Exception Handling and the Vector Table When an exception occurs, the core: Copies CPSR into SPSR_<mode> Sets appropriate CPSR bits Interrupt disable flags if appropriate. Maps in appropriate banked registers Stores the “return address” in LR_<mode> Sets PC to vector address 0x00000000 0x0000001C 0x00000018 0x00000014 0x00000010 0x0000000C 0x00000008 0x00000004 Reset Undefined Instr FIQ IRQ Reserved Data Abort Prefetch Abort SWI Exceptions, in order serviced, are: Reset - supervisor mode Data abort - abort mode External Fast Interrupt Request - FIQ mode (eg DMA) External Interrupt Request - IRQ mode Instruction Prefetch abort - abort mode Software Interrupt (SWI)- supervisor mode (typically used to extend operating system) Undefined instruction - undefined mode Only one memory location for each vector Each vector contains branch to that particular exception handler FIQ vector is last one. This allows its handler to be run sequentially from that address, removing need for branch and its associated delays. Important because speed is essential for FIQ. Interrupt routine’s responsibility to clear interrupt condition. Can return using one instruction See exception handling module for details. To return, exception handler needs to: Restore CPSR from SPSR_<mode> Restore PC from LR_<mode> via movs pc, lr or subs pc, lr, #4

Software Interrupt (SWI) In effect, a SWI is a user-defined instruction, A planned Exception from User Application to request privileged O/S services via SWI Supervisor call. It causes: A switch to privileged Supervisor Mode. A branch to an exception trap to the SWI exception vector (0x00000008) a SWI exception handler to be called. The handler can then examine the comment field of the instruction to decide what operation has been requested.

How does user invoke the OS? SWI Invocation How does user invoke the OS? swi instruction: invoke the OS code (Go to 0x00000008, change to privileged mode) By software convention,number xxx in swi xxx has system service requested: OS performs request

Crossing the System Boundary System loads user program into memory and ‘gives’ it use of the processor Switch back swi request service I/O exception (und. Inst) Interrupt User Proc Mem System I/O Bus status reg. data reg.

Reading Material Experiment 5 Documentation Steve Furber: ARM System On-Chip; 2nd Ed, Addison-Wesley, 2000, ISBN: 0-201-67519-6. Chapter 5. ARM Architecture Reference Manual 2nd Ed, Addison-Wesley, 2001, ISBN: 0- 201-73719-1, Part A , Exceptions, chapter A2 Section 6

SWI Example under GNU Debugging tools 7;Print to console a single char in R0 swi 0x0 ;Read a single char from Kboard into R0 swi 0x4 ;Print nul-terminated string prt_str to the console ldr r0,=prt_str swi 0x2 Swi 0x11 ; Terminate the program .data prt_str: .asciz “Hello World:\n"

CPSR and SPSR Transfer Instructions MRS and MSR transfer content CPSR/SPSR to /from a general purpose register. All of status register, or just the flags, can be transferred. mrs Rd, <psr> ; Rd  <psr> msr <psr>,Rm ; <psr>  Rm msr <psrf>,Rm ; <psrf>  Rm Where <psr> = CPSR, CPSR_all, SPSR or SPSR_all and <psrf> = CPSR_flg or SPSR_flg Also an immediate form msr <psrf>,#Imm32 a 32-bit immediate, of which the 4 most significant bits are written to the flag bits. Remember using: MRS -> MR := S ie Make Register equal to Status MSR -> MS := R ie Make Status equal to Register

Modifying CPSR CPSR Unused reserved bits, may be used in future, therefore: they must be preserved when altering PSR the value they return must not be relied upon when testing other bits. Thus read-modify-write strategy must be followed when modifying any PSR: Transfer PSR to register using MRS Modify relevant bits Transfer updated value back to PSR using MSR Note: In User Mode, all bits can be read but only the flag bits can be written to.

Questions Raised about Interrupts Which I/O device caused interrupt? Needs to convey the identity of the device generating the interrupt Can avoid interrupts during the interrupt routine? What if more important interrupt occurs while servicing this interrupt? Allow interrupt routine to be entered again? Who keeps track of status of all the devices, handle errors, know where to put/supply the I/O data?

4 Responsibilities leading to OS The I/O system is shared by multiple programs using the processor Low-level control of I/O devices is complex because requires managing a set of concurrent events and because requirements for correct device control are often very detailed I/O systems often use interrupts to communicate information about I/O operations Would like I/O services for all user programs under safe control

4 Functions OS must provide OS guarantees that user’s program accesses only the portions of I/O device to which user has rights (e.g., file access) OS provides abstractions for accessing devices by supplying routines that handle low-level device operations OS handles the interrupts generated by I/O devices (and other exceptions generated by a program) OS tries to provide equitable access to the shared I/O resources, as well as schedule accesses in order to enhance system performance

Privileged Mode v. User Mode: OS can provide security and fairness Things to Remember Privileged Mode v. User Mode: OS can provide security and fairness swi: provides a way for a programmer to avoid having to know details of each I/O device. To be acceptable, interrupt handler must: service all interrupts (no drops) service by priority make all users believe that no interrupt has occurred