Interrupts and Exceptions Todays lecture Use addressing to get - - PowerPoint PPT Presentation

interrupts and exceptions today s lecture
SMART_READER_LITE
LIVE PREVIEW

Interrupts and Exceptions Todays lecture Use addressing to get - - PowerPoint PPT Presentation

Interrupts and Exceptions Todays lecture Use addressing to get data from the outside world Data is moved from peripherals to memory Addressing schemes


slide-1
SLIDE 1

Interrupts and Exceptions

slide-2
SLIDE 2

Today’s lecture

Use ¡addressing ¡to ¡get ¡data ¡from ¡the ¡outside ¡world ¡

Data ¡is ¡moved ¡from ¡peripherals ¡to ¡memory ¡ Addressing ¡schemes ¡

Memory-­‑mapped ¡vs. ¡isolated ¡I/O ¡

Data ¡movement ¡schemes ¡

Programmed ¡I/O ¡vs. ¡Interrupt-­‑driven ¡I/O ¡vs. ¡Direct ¡memory ¡access ¡

slide-3
SLIDE 3

Most modern operating systems pre-emptively schedule programs

If ¡a ¡computer ¡is ¡running ¡two ¡programs ¡ A ¡and ¡B, ¡the ¡O/S ¡will ¡periodically ¡ switch ¡between ¡them ¡

  • 1. Stop ¡A ¡from ¡running ¡
  • 2. Copy ¡A’s ¡register ¡values ¡to ¡memory ¡
  • 3. Copy ¡B’s ¡register ¡values ¡from ¡memory ¡
  • 4. Start ¡B ¡running ¡

How ¡does ¡the ¡O/S ¡stop ¡ program ¡A? ¡

Register ¡ File ¡ Memory ¡ Program ¡ Counter ¡

slide-4
SLIDE 4

We can treat most devices “as if” they were memory with an “address” for reading/writing

Many ¡ISAs ¡oMen ¡make ¡this ¡analogy ¡ explicit ¡⎯ ¡to ¡transfer ¡data ¡to/from ¡a ¡ parPcular ¡device, ¡the ¡CPU ¡ ¡can ¡access ¡special ¡addresses ¡ Example: ¡Video ¡card ¡can ¡be ¡accessed ¡via ¡ addresses ¡3B0-­‑3BB, ¡3C0-­‑3DF ¡and ¡A0000-­‑ BFFFF ¡

slide-5
SLIDE 5

Most ISAs one of two protocols for addressing devices: memory-mapped I/O or isolated I/O

Memory I/O Memory C000 D000 FFFF 0000

Memory-­‑mapped ¡I/O ¡ reserves ¡a ¡porPon ¡of ¡ main ¡memory ¡ addresses ¡for ¡I/O ¡

Main memory 00000000 FFFFFFFF I/O devices 00000000 0000FFFF

Isolated ¡I/O ¡creates ¡a ¡ separate ¡memory ¡ address ¡space ¡for ¡ devices ¡

slide-6
SLIDE 6

Memory-mapped I/O divides main memory addresses into actual memory and devices

Apple ¡IIe ¡(right) ¡had ¡a ¡16-­‑bit ¡address ¡bus ¡

Addresses ¡C000-­‑CFFF ¡accessed ¡I/O ¡devices. ¡ No ¡actual ¡main ¡memory ¡at ¡C000-­‑CFFF ¡ All ¡other ¡addresses ¡reference ¡main ¡memory. ¡

I/O ¡addresses ¡are ¡shared ¡by ¡many ¡peripherals. ¡

C010 ¡→ ¡keyboard ¡ ¡ C030 ¡→ ¡speaker ¡

Some ¡devices ¡may ¡need ¡several ¡I/O ¡addresses. ¡

Memory I/O Memory C000 D000 FFFF 0000

slide-7
SLIDE 7

We use control and addressing to determine when data goes to memory or devices

Each ¡device ¡has ¡to ¡monitor ¡the ¡address ¡bus ¡to ¡see ¡if ¡it ¡is ¡the ¡target. ¡ (Apple ¡IIe ¡example) ¡

Main ¡memory ¡ignores ¡any ¡transacPons ¡with ¡addresses ¡C000-­‑CFFF. ¡ ¡ The ¡speaker ¡only ¡responds ¡when ¡C030 ¡appears ¡on ¡the ¡address ¡bus. ¡

Control Address Data

Hard disks CD-ROM Network Display CPU Memory

slide-8
SLIDE 8

Isolated I/O creates two separate address spaces and needs two sets of instructions

Example ¡(x86): ¡

regular ¡instrucPons ¡like ¡MOV ¡reference ¡RAM ¡ special ¡instrucPons ¡IN ¡and ¡OUT ¡access ¡a ¡ separate ¡I/O ¡address ¡space ¡ An ¡address ¡could ¡refer ¡to ¡either ¡main ¡memory ¡or ¡ an ¡I/O ¡device, ¡depending ¡on ¡the ¡instrucPon ¡used ¡

Main memory 00000000 FFFFFFFF I/O devices 00000000 0000FFFF

slide-9
SLIDE 9

iclicker

MIPS ¡provides ¡the ¡following ¡instrucPons ¡ ¡for ¡managing ¡memory: ¡load word, load halfword, load byte, store word, store halfword and ¡store byte. ¡ ¡ ¡ Which ¡I/O ¡addressing ¡method ¡does ¡MIPS ¡use? ¡ a) Memory-­‑mapped ¡I/O ¡ b) Isolated ¡I/O ¡

slide-10
SLIDE 10

MIPS/SPIMbot uses memory-mapped I/O

Examples ¡

lw $reg, 0xffff0020($0) # gets SPIMbot x-coord sw $reg, 0xffff0010($0) # sets bot speed = $reg

¡ Some ¡control ¡commands ¡require ¡a ¡sequence ¡of ¡instrucPons ¡

sw $reg, 0xffff0014($0) li $t0, 1 sw $t0, 0xffff0018 # sets bot angle = $reg ¡

¡

slide-11
SLIDE 11

Example SPIMbot commands

What ¡ How ¡ get ¡SPIMbot’s ¡current ¡x/y-­‑ coordinate ¡ lw ¡from ¡0xffff0020 (x) ¡ ¡ lw ¡from ¡0xffff0024 (y) set ¡SPIMbot’s ¡angle ¡ (absolute) ¡ sw the ¡angle ¡to ¡0xffff0014 sw 1 to ¡0xffff0018 set ¡SPIMbot’s ¡angle ¡ (relaPve) ¡ sw ¡the ¡angle ¡to ¡0xffff0014 sw 0 to ¡0xffff0018 set ¡SPIMbot’s ¡velocity ¡ sw ¡a ¡number ¡between ¡-10 and ¡10 ¡to ¡0xffff0010 read ¡the ¡current ¡Pme ¡ lw from ¡0xffff001c request ¡a ¡Pmer ¡interrupt ¡ sw ¡the ¡desired ¡(future) ¡Pme ¡to ¡0xffff001c acknowledge ¡a ¡bonk ¡ interrupt ¡ sw any ¡value ¡to ¡0xffff0060 acknowledge ¡a ¡Pmer ¡ interrupt ¡ sw any ¡value ¡to ¡0xffff006c

slide-12
SLIDE 12

SPIMbot coordinate system

X=0 ¡ X=300 ¡ Y=0 ¡ Y=300 ¡ 0◦ ¡ 270◦ ¡ 180◦ ¡ 90◦ ¡

slide-13
SLIDE 13

What will SPIMbot do?

Suppose ¡we ¡want ¡SPIMbot ¡to ¡travel ¡north. ¡Which ¡of ¡the ¡following ¡ sequences ¡of ¡instrucPons ¡will ¡always ¡cause ¡SPIMbot ¡to ¡travel ¡north? ¡ ¡

a) ¡ li $a0, 270 sw $a0, 0xffff0014 ($zero) sw $zero, 0xffff0018 ($zero) b) ¡ li $a0, 270 sw $a0, 0xffff0014 ($zero) li $t0, 1 sw $t0, 0xffff0018 ($zero) c) ¡ li $a0, 270 sw $a0, 0xffff0018 ($zero) sw $zero, 0xffff0014 ($zero) d) ¡ li $a0, 270 sw $a0, 0xffff0018 ($zero) li $t0, 1 sw $t0, 0xffff0014 ($zero)

slide-14
SLIDE 14

In programmed I/O, the program or OS is responsible for transmitting data

CPU ¡makes ¡a ¡request ¡and ¡then ¡waits ¡ (loops) ¡unPl ¡device ¡is ¡ready ¡(loop ¡1) ¡ Buses ¡are ¡typically ¡32-­‑64 ¡bits ¡wide, ¡so ¡loop ¡ 2 ¡is ¡repeated ¡for ¡large ¡transfers ¡ Also ¡called ¡polling ¡

CPU sends read request to device CPU waits for device CPU reads word from device CPU writes word to main memory Done? Ready Not ready No Yes

slide-15
SLIDE 15

Programmed I/O is generally bad

A ¡lot ¡of ¡CPU ¡Pme ¡is ¡needed ¡for ¡this! ¡

most ¡devices ¡are ¡slow ¡compared ¡to ¡CPUs ¡ CPU ¡also ¡“wastes ¡Pme” ¡doing ¡actual ¡data ¡transfer ¡

CPU ¡must ¡ask ¡repeatedly ¡ CPU ¡must ¡ask ¡oMen ¡enough ¡to ¡ensure ¡that ¡it ¡doesn’t ¡miss ¡anything, ¡ which ¡means ¡it ¡can’t ¡do ¡much ¡else ¡while ¡waiPng ¡

slide-16
SLIDE 16

Interrupt-driven I/O transfers data when devices interrupt the processor

Interrupt-­‑driven ¡I/O ¡solves ¡the ¡inefficiencies ¡of ¡ Programmed ¡I/O ¡

Instead ¡of ¡waiPng, ¡the ¡CPU ¡conPnues ¡with ¡other ¡ calculaPons ¡ The ¡device ¡interrupts ¡the ¡processor ¡when ¡the ¡data ¡is ¡ ready ¡

CPU ¡sPll ¡does ¡the ¡data ¡transfer ¡

CPU sends read request to device CPU reads word from device CPU writes word to main memory Done? CPU receives interrupt No Yes CPU does other stuff . . .

slide-17
SLIDE 17

Direct memory access (DMA) parallelizes data transfer with a separate controller

The ¡DMA ¡controller ¡is ¡a ¡simple ¡processor ¡which ¡ manages ¡I/O ¡and ¡memory ¡data ¡transfers ¡ ¡

The ¡CPU ¡asks ¡the ¡DMA ¡controller ¡to ¡transfer ¡data ¡between ¡ a ¡device ¡and ¡main ¡memory. ¡AMer ¡that, ¡the ¡CPU ¡can ¡ conPnue ¡with ¡other ¡tasks ¡ The ¡DMA ¡controller ¡issues ¡requests ¡to ¡the ¡right ¡I/O ¡device, ¡ waits, ¡and ¡manages ¡the ¡transfers ¡between ¡the ¡device ¡and ¡ main ¡memory ¡ Once ¡finished, ¡the ¡DMA ¡controller ¡interrupts ¡the ¡CPU ¡

CPU sends read request to DMA unit CPU receives DMA interrupt CPU does other stuff . . .

slide-18
SLIDE 18

Example of data transfer using DMA

Since ¡both ¡the ¡processor ¡and ¡the ¡DMA ¡controller ¡may ¡need ¡to ¡access ¡ main ¡memory, ¡some ¡form ¡of ¡arbitraPon ¡is ¡required ¡

System bus DMA unit Hard disks Network CPU Memory CD-ROM

slide-19
SLIDE 19

Side Note:

MIPS ¡uses ¡a ¡co-­‑processor ¡(a ¡separate ¡datapath ¡with ¡a ¡ separate ¡set ¡of ¡registers) ¡to ¡help ¡handle ¡interrupts ¡

slide-20
SLIDE 20

More details on interrupts

Examples: ¡I/O ¡device ¡needs ¡ahenPon, ¡Pmer ¡interrupts ¡to ¡mark ¡cycle ¡ All ¡interrupts ¡are ¡recoverable: ¡interrupted ¡program ¡should ¡resume ¡ aMer ¡the ¡interrupt ¡is ¡handled ¡ OS ¡responsible ¡to ¡do ¡the ¡right ¡thing, ¡such ¡as: ¡

Save ¡the ¡current ¡state ¡and ¡shut ¡down ¡the ¡hardware ¡devices ¡ Find ¡and ¡load ¡the ¡correct ¡data ¡from ¡the ¡hard ¡disk ¡ Transfer ¡data ¡to/from ¡the ¡I/O ¡device, ¡or ¡install ¡drivers ¡

slide-21
SLIDE 21

More details on exceptions

Examples: ¡illegal ¡instrucPon ¡opcode, ¡arithmePc ¡overflow, ¡or ¡ahempts ¡ to ¡divide ¡by ¡0 ¡ There ¡are ¡two ¡possible ¡ways ¡of ¡resolving ¡these ¡errors: ¡

If ¡the ¡error ¡is ¡un-­‑recoverable, ¡the ¡operaPng ¡system ¡kills ¡the ¡program ¡ Less ¡serious ¡problems ¡can ¡oMen ¡be ¡fixed ¡by ¡OS ¡or ¡the ¡program ¡itself ¡

slide-22
SLIDE 22

Interrupts vs. Exceptions

External ¡events ¡that ¡require ¡the ¡ processor’s ¡ahenPon ¡ Not ¡an ¡error, ¡should ¡be ¡ recoverable ¡ OS ¡manages ¡and ¡resolves ¡the ¡ interrupt ¡ Typically ¡errors ¡that ¡are ¡ detected ¡within ¡the ¡processor ¡ Always ¡an ¡error, ¡may ¡or ¡may ¡not ¡ be ¡recoverable ¡ OS ¡must ¡resolve ¡the ¡excepPon ¡

  • r ¡ask ¡the ¡program ¡to ¡resolve ¡
slide-23
SLIDE 23

i>clicker

Consider ¡the ¡following ¡scenario. ¡ ¡ A ¡program ¡running ¡on ¡MIPS ¡tries ¡to ¡perform ¡a ¡load word from ¡memory ¡at ¡address ¡0x60000003. ¡The ¡OS ¡immediately ¡ stops ¡the ¡program ¡from ¡running ¡and ¡takes ¡control. ¡Is ¡it ¡more ¡ likely ¡that ¡an ¡interrupt ¡or ¡excepPon ¡just ¡happened? ¡ a) An ¡interrupt ¡ b) An ¡excepPon ¡

slide-24
SLIDE 24

i>clicker

Consider ¡the ¡following ¡scenario. ¡ ¡ A ¡program ¡sets ¡a ¡1 ¡second ¡Pmer. ¡One ¡second ¡later, ¡the ¡OS ¡ stops ¡the ¡program ¡from ¡running ¡and ¡takes ¡control. ¡Is ¡it ¡more ¡ likely ¡that ¡an ¡interrupt ¡or ¡excepPon ¡just ¡happened? ¡ a) An ¡interrupt ¡ b) An ¡excepPon ¡

slide-25
SLIDE 25

Sometimes users want to handle their own exceptions:

Example: ¡numerical ¡applicaPons ¡can ¡scale ¡values ¡to ¡avoid ¡floaPng ¡ point ¡overflow/underflow ¡ Many ¡operaPng ¡systems ¡provide ¡a ¡mechanism ¡for ¡applicaPons ¡for ¡ handling ¡their ¡excepPons ¡

Unix ¡lets ¡you ¡register ¡“signal ¡handler” ¡funcPons ¡

Modern ¡languages ¡like ¡Java ¡provide ¡programmers ¡with ¡language ¡ features ¡to ¡“catch” ¡excepPons ¡ ¡(this ¡is ¡much ¡cleaner) ¡

slide-26
SLIDE 26

ISA’s are periodically extended creating backwards compatibility problems.

Examples: ¡MMX, ¡SSE, ¡SSE2, ¡etc. ¡ Create ¡illegal ¡opcode ¡excepPons ¡ Programs ¡compiled ¡with ¡these ¡new ¡instrucPons ¡will ¡not ¡run ¡on ¡older ¡ implementaPons ¡(e.g., ¡a ¡486) ¡

“Forward ¡compaPbility” ¡problem ¡

slide-27
SLIDE 27

Instruction Emulation makes these illegal

  • pcode exceptions recoverable

Can’t ¡change ¡exisPng ¡hardware, ¡so ¡we ¡add ¡soMware ¡to ¡“emulate” ¡ these ¡instrucPons ¡

Execute Application Execute Application

Decode inst in software; Perform it’s function User Kernel

Illegal opcode exception Return from exception

Can software emulate any hardware instruction? a) Yes b) No

slide-28
SLIDE 28

Hardware Decoder raises the Reserved Instruction Exception

alu_op[2:0] write_enable rd_src except

  • pcode[5:0]

funct[5:0] MIPS decoder wr_enable rd_src alu_op[2:0] inst[5:0] inst[31:26] except 6 6 3

  • ut[31:0]
  • ffset

control_type control_type zero lui lui slt slt byte_load byte_load word_we word_we byte_we byte_we mem_read mem_read alu_src2 alu_src2

slide-29
SLIDE 29

Different types of exceptions in MIPS32 are encoded with different numbers

slide-30
SLIDE 30

In hardware, devices send interrupts and the processor acknowledges when those interrupts have been processed or “handled”

¡ ¡Processor ¡ Keyboard ¡ Timer ¡ Mouse ¡

Cause ¡Register ¡

slide-31
SLIDE 31

In software, exceptions and interrupts are processed by an “interrupt handler”

  • 1. An ¡excepPon/interrupt ¡occurs ¡
  • 2. The ¡program ¡is ¡stopped ¡
  • 3. Control ¡of ¡the ¡processor ¡is ¡given ¡to ¡the ¡operaPng ¡system ¡by ¡

changing ¡PC ¡to ¡the ¡address ¡of ¡the ¡interrupt ¡handler ¡

In ¡MIPS32, ¡the ¡interrupt ¡handler ¡starts ¡at ¡address ¡0x80000180 ¡

  • 4. The ¡interrupt ¡handler ¡code ¡processes ¡the ¡excepPon/interrupt ¡

If ¡an ¡interrupt, ¡the ¡handler ¡will ¡acknowledge ¡the ¡interrupt ¡

  • 5. If ¡the ¡excepPon/interrupt ¡is ¡recoverable, ¡control ¡of ¡the ¡processor ¡is ¡

returned ¡to ¡the ¡program ¡

slide-32
SLIDE 32

The interrupt handler must know which instruction was executing when the interrupt/ exception occurred

The ¡program ¡counter ¡will ¡be ¡set ¡to ¡0x80000180 ¡ The ¡program’s ¡current ¡PC ¡must ¡be ¡saved ¡ Saving ¡the ¡PC ¡also ¡helps ¡with ¡error ¡reporPng ¡

slide-33
SLIDE 33

The interrupt handler must know the cause of the interrupt/exception

Interrupt ¡or ¡ excepPon? ¡ Which ¡ device? ¡ Which ¡ excepPon? ¡

Interrupt ¡ ExcepPon ¡ … ¡ Mouse ¡ Keyboard ¡ … ¡ Illegal ¡

  • pcode ¡

Overflow ¡

InformaPon ¡found ¡in ¡ the ¡“cause ¡register” ¡

slide-34
SLIDE 34

To receive interrupts, the software has to enable them

MIPS: ¡permissions ¡set ¡with ¡the ¡Status ¡register ¡(on ¡the ¡co-­‑processor) ¡ Enable ¡interrupts ¡by ¡serng ¡bit ¡zero ¡ Select ¡which ¡interrupts ¡to ¡receive ¡by ¡serng ¡one ¡or ¡more ¡of ¡bits ¡8-­‑15 ¡ User ¡mode ¡is ¡0 ¡for ¡user, ¡1 ¡for ¡kernel ¡

Co-­‑processor ¡ Register ¡12 ¡

slide-35
SLIDE 35

Control the status register by moving data to the co-processor

li $t0, 0x1001 # enable interrupts and interrupt 12 mtc0 $t0, $12 # set Status register = $12 # move to coprocessor 0

Co-­‑processor ¡ Register ¡12 ¡

slide-36
SLIDE 36

When an interrupt/exception occurs, the Cause Register indicates which one

For ¡an ¡excepPon, ¡the ¡excepPon ¡code ¡field ¡holds ¡the ¡ excepPon ¡type ¡ For ¡an ¡interrupt, ¡the ¡excepPon ¡code ¡field ¡is ¡00000 ¡ ¡

External ¡devices ¡set ¡the ¡bits ¡for ¡pending ¡interrupts ¡

Co-­‑processor ¡ Register ¡13 ¡

slide-37
SLIDE 37

Handle interrupts/exceptions by moving data from the co-processor

mfc0 $t0, $13 # Get Cause register srl $t1, $t0, 2 andi $t1, $t1, 0x1F bne $t1, $0, non_interrupt

Co-­‑processor ¡ Register ¡13 ¡

slide-38
SLIDE 38

The status register and cause registers must both have a 1 in the same bit position to process an interrupt (interrupts need to be enabled)

Cause ¡Register ¡ Status ¡Register ¡

slide-39
SLIDE 39

iClicker

li $t0, 0x3100 mtc0 $t0, $12 # set Status register

1 0 0 0 0

1 0 0 1 0 0 1 0 0 0 0 0 0 Cause Register

What ¡happens ¡next? ¡ a) Processes ¡an ¡interrupt ¡ b) Processes ¡an ¡excepPon ¡ c) Neither ¡

slide-40
SLIDE 40

iClicker

li $t0, 0xA201 mtc0 $t0, $12 # set Status register What ¡happens ¡next? ¡ a) Processes ¡an ¡interrupt ¡ b) Processes ¡an ¡excepPon ¡ c) Neither ¡

1 0 0 0 0

0 0 1 0 0 0 1 0 0 0 1 0 0 Cause Register

slide-41
SLIDE 41 2 (Add) 32 alu_op[2:0] write_enable rd_src except
  • pcode[5:0]
funct[5:0] MIPS decoder A[31:0] alu_op[2:0]
  • ut
[31:0] B[31:0] ALU

rsData rsNum reset rdNum rtData rtNum rdWriteEnable rdData

Register File reset clk wr_enable Rdest Rt Rs zero negative
  • verflow
1 wr_enable rd_src alu_src2 alu_op[2:0]

reset enable Q[31:0] D[31:0]

PC Register Sign Extender
  • ut[31:0]

in[15:0] data[31:0] addr[29:0]

Instruction Memory 4 inst[31:0] PC[31:0] ALU 1 nextPC[31:0] 1 rd_src inst[25:21] inst[20:16] inst[15:11] inst[20:16] inst[5:0] inst[15:0] inst[31:26] except PC[31:2] Rt Rd imm16 imm32 32 30 32 3 5 5 5 16 32 6 6 32 32 32 32 32 3 3
  • ut[1:0]
1 2 3 control_type 1 2 3 2 (Add) ALU 3 Shift Left 2
  • ut[31:0]

in[29:0]

30 32 inst[25:0] 00 (for LSBs) PC[31:28] (for MSBs) branch
  • ffset
branch
  • ffset
32 control_type control_type 1 slt 1 lui 16 16'b0

data_out[31:0] addr[31:0]

Data Memory 31'b0 zero 1 mem_read data_out[31:24] data_out[23:16] data_out[15:8] data_out[7:0] 24'b0 1 byte_load 8 lui lui slt slt byte_load byte_load 32 26 word_we word_we byte_we byte_we word_we byte_we

data_in[31:0] word_we byte_we reset

32 32 mem_read mem_read alu_src2 alu_src2

0x80000180 ¡

Co-processor 0 Status($12) ExceptionPC Cause($13)