Chapter 7 •Interupts •DMA •Channels •Context Switching Program Model Command Device Interrupt Model Done outside of user Program Wait for Device Ready Probably Hardware Service Device Service Device OS Supplied ? Programmer supplied Probably Hardware Program Model Interrupt Model Interrupt Physical Model • CPU – General Purpose Registers • • Program counter (PC) Stack Pointer (SP) – – – Program Status Word (PSW) – Includes • • • – Address, Data, and Data Control Bus status and control Memory – – – – User program Interrupt Service Routine Program Operating System Interrupt Vector Table • • State – user/supervisor, priority, etc. Program Priority Condition Codes (CC) Hardware to communicate over the BUS • • • User stack Pointer Storage Supervisor Stack Pointer Storage Includes an entry that points to the Interrupt Service Routine (Interrupt vector #) Device – Status/Control Register(s) – Includes: • • – – – Interrupt Enable bit Interrupt bit (sometimes called ready or done) Priority Level for Interrupt Service Routine (In hardware or firmware) Interrupt vector number (In hardware or firmware) Hardware to communicate with CPU over the BUS Interface Registers Keyboard Device: Keyboard Status Register (16 bit) Bit 15 Done Bit Bit 14 Interrupt Enable Bit Bits 0-2 Priority Keyboard Data Register (16 bit) Contains character entered Keyboard Interrupt Vector (16 bit) Contains the “address” in the Interrupt Vector Table Display Device: Display Status Register (16 bit) Bit 15 Ready Bit Bit 14 Interrupt Enable Bit Bits 0-2 Priority Display Data Register (16 Bit) Contains character to be displayed Display Interrupt vector (16 bit) Contains the “address” in the Interrupt Vector Table Interrupt Sequence 1) Programmer Action: 2) Enabling Mechanism for device: 4) Process to Service the Interrupt: 5) The Processor Loads the PC from the Interrupt Vector Table 6) Interrupt Service Routine is executed 7) The context is switched back 8) And the next instruction in the original program is fetched Enable Interrupts by setting “intr enable” bit in Device Status Reg When device wants service, and its enable bit is set (i.e, the I/O device has the right to request service), and the device priority is higher than the priority of the presently running program, and execution of an instruction is complete, then The Processor saves the “state” of the program (must be able to return to program) The Processor goes into Privileged (or Supervisor) Mode The Priority level is set (established by the interrupting device) The context is switched The user SP is saved and the Supervisor SP loaded The (PC) and the (PSR) are PUSHED onto the Supervisor Stack The contents of the other registers are not saved. Why? The CC’s are cleared. Why? The device provides the Vector Table entry number The routine ends with an “RTI” instruction The stored user: PSR (POP into PSR), PC (POP into PC), USP loaded (POP into SP) The Processor goes into User mode Interrupt Context Switching • User Stack – What goes on here • Supervisor Stack – – – – PC SP PSW What about IR, GP Reg ? What about the PSW, PC, GP Reg in the Supervisor? Is the Interrupt Service Program run in User or Supervisor mode? Who can write an Interrupt service routine? Alternatives for transferring Blocks of Data to/from an I/O device • Transfer can occur under program control – perhaps with a subroutine (?) • Transfer can occur with an Interrupt Service Routine – requires context switch • Transfer can occur with Direct Memory Access (DMA) – In parallel or Pseudo Parallel of the Program/CPU DMA Function • Normally, the CPU is the only controller of the BUS – Reads / Writes of Data to memory – Read/Writes of Data/Status to I/O Devices • DMA controller(s) takes over Bus control from CPU for I/O - Requires permission from Bus Controller (usually the CPU) – Suspends the CPU while it reads/writes data, or Cycle steals – uses BUS when it is not going to be utilized allowing the CPU to continue working (Note: this is different from Stallings’ definition) – Can read/write one word per DMA or a whole Block - Gives BUS back when finished - Typically interrupts the CPU when DMA is complete • DMA requires an additional Module(s) attached to bus to provide BUS supervision when it is in control Typical DMA Module Organization / Buffer DMA Operation (Block Transfer) • CPU provides direction to DMA controller(s) Like: – – – – – Read/Write Device address (which device) Starting address of memory block for data Amount of data to be transferred Mode(s) of data transfer • When transfer begins, CPU is likely goes to sleep • DMA controller deals with transfer (is BUS controller) • DMA controller releases the BUS • DMA controller sends an interrupt after finished • What about context switching ? DMA and Interrupt Breakpoints During an Instruction Cycle DMA Transfer - Cycle Stealing • CPU provides direction to DMA controller(s) • DMA controller provides bus control for a read/write cycle when the BUS is not being used – How does it know? • Transfers one word of data per cycle steal • Data Transfer is slower than Block Transfer DMA, but faster than program control or using an interrupt service routine – Why? • Slows done the CPU/program very little – Why ? “Cycle Stealing” Options • Stealing cycles when they aren’t going to be used anyway – when an instruction is not going to use the bus – when the cache is providing data – when a partition of memory is not likely to be accessed Several questions • What effect does caching memory have on DMA? • What effect does use of DRAMs have on DMA ? DMA Configurations (1) • Single Bus, Detached DMA controller • Each transfer uses bus twice – I/O to DMA then – DMA to memory CPU is suspended twice DMA Configurations (2) • Single Bus, Integrated DMA controller • Controller may support >1 device • Each transfer uses bus once – DMA to memory CPU may be suspended only once DMA Configurations (3) • Separate I/O Bus • Bus supports all DMA enabled devices • Each transfer uses bus once – DMA to memory CPU is suspended once I/O Channels • Used on large systems – systems with many devices - especially many fast devices • I/O channels are processors (programmable) dedicated to I/O • CPU instructs I/O controller to do transfer and provides it mode • I/O controller does entire transfer from one or many devices Advantages: • Makes transfers less visible to CPU, spreads the complexity • Can Improve speed • Can improve device organization flexibility I/O Channel Architectures Selector Channel: • For one fast device at a time Multiplexor Channel: • For a number of slower devices used simultaneously