900 likes | 1.07k Views
第六章 中断技术. 中断请求. 中断响应. 中断服务. 中断结束. 中断处理. 第一节 中断系统. 一、中断基本概念 定义: CPU 穿插处理随机事件的过程。. 中断过程:. 中断请求: CPU 检测到有中断请求; 中断响应: 取得 中断类型号 、保存现场 ( 含 CS:IP) 、取得 中断服务程序入口地址 ,并置为 CS:IP ; 中断服务: 从 CS:IP 处执行,用 IRET 触发中断结束; 中断结束: 恢复现场 ( 含 CS:IP) 。. 回下页. 回 4 页. 二、中断系统 1 、中断系统组成.
E N D
中断请求 中断响应 中断服务 中断结束 中断处理 第一节 中断系统 一、中断基本概念 定义:CPU穿插处理随机事件的过程。 中断过程: 中断请求:CPU检测到有中断请求; 中断响应:取得中断类型号、保存现场(含CS:IP)、取得中断服务程序入口地址,并置为CS:IP; 中断服务:从CS:IP处执行,用IRET触发中断结束; 中断结束:恢复现场(含CS:IP)。 回下页 回4页
二、中断系统 1、中断系统组成 由CPU中的中断机构、I/O系统中的中断控制器、OS中的中断服务程序管理机构组成。 (1)中断机构功能 自动检测多种中断请求(软件/硬件); 自动对产生的中断请求进行判优; 自动对中断请求进行响应; 自动实现中断屏蔽; 自动进行优先级管理,并支持中断嵌套处理。 转上页
… 全部中断 类型数*4 中断 类型号 偏移量 段地址 (2)中断控制器功能 自动检测、记录多个外部硬件中断请求; 自动对产生的中断请求进行排队、判优; 自动向CPU提出外部硬件中断请求; 根据要求自动实现中断屏蔽; 根据要求自动实现中断源的优先级管理。 (3)中断服务程序管理机构功能 管理中断向量表IVT(为中断机构取得中断服务程序入口地址提供机制)。 IVT的表项为中断服务程序入口 地址,可通过中断类型号检索。 回19页 转2页
2、中断类型—中断请求类型 回下页 回10页 回7页 回13页
外部硬件中断源1 请求 CPU INTR NMI 请求 中断 控制器 … 请求 不可屏蔽中断源 外部硬件中断源n 请求 (1)外部硬件中断 中断请求方法: CPU检测方法:检测其INTR引脚和标志REG的IF位。 (2)不可屏蔽中断 中断请求方法:请求信号送到CPU的NMI引脚上。 CPU检测方法:检测其NMI引脚(有效时间≥4TC),不检测标志REG的IF位。 转上页 回9页
(3)软件中断 中断类型: CPU专用中断—除零、溢出、单步、断点等; BIOS中断—I/O控制、实用服务、特殊中断等; DOS中断—公开/未公开的系统功能调用; 自由中断—未定义(未使用)的中断。 中断请求方法:指令间、指令中或为INTn时产生。 CPU专用中断检测方法: --不检测标志REG的IF位 出错中断—指令执行状态电路在指令中做中断源; 调试中断—标志REG状态在指令间做中断源。 其他软件中断检测方法: --不检测标志REG的IF位 指令译码时(指令中),检测是否为INTn指令。 回11页 转5页
3、中断请求优先级管理 原则:中断机构按中断源类型采用静态优先级管理, 中断控制器可采用动态优先级管理。 结果:①CPU专用>NMI>外部硬件>BIOS>DOS>自由,即基本按中断类型号大小排序; ②应可使外部硬件各中断源服务机会均等。
中断控制器 CPU 请求 请求 检测 机构 判优 机构 检测 机构 响应 机构 中断源 ①可使部分 请求无效 如:门电路 ②可使请求 得不到响应 如:IF=0 4、中断屏蔽处理 所有中断源中,只有外部硬件中断可被屏蔽。 屏蔽效果: 中断机构可屏蔽外部硬件请求,CPU不响应请求; 中断控制器可屏蔽中断源,使其不参与判优。 屏蔽种类: 屏蔽方法:通过软件控制相应电路完成。 回24页 转6页
5、中断响应处理 实现功能:取得中断类型号、保存现场、转入中断服务程序。 响应时机:检测机构检测到中断请求后立即响应,不同类型中断请求在不同时侯检测。 (1)取得中断类型号 外部硬件中断:产生总线操作,通过DataBus从中断控制器取得(触发了中断控制器的中断响应); 其它中断:检测机构检测时已得到,无额外动作。 中断控制器的中断响应:当前请求作为正在处理请求、中断源被复位,向CPU提出的请求被复位等。 转5页
(2)保存现场 硬件(非软件)实现标志REG及程序断点地址压栈。 程序断点地址--中断返回点地址 外部硬件中断:下条指令地址(当前CS:IP); 不可屏蔽中断:当前指令地址(当前CS:IP-x); CPU专用中断: 失效(如CPU出错中断)—当前指令地址; 陷阱(如CPU调试中断)—下条指令地址; 中止(如硬件故障)—不保存(需重启机器); 其他软件中断:下条指令地址。 (3)转入中断服务程序 产生总线操作,用刚取得的中断类型号查IVT或IDT,得到中断服务程序入口地址,将其置为CS:IP。 转7页
6、中断结束处理 实现:通过中断服务程序中IRET指令实现。 处理过程: IRET实现将保存现场时压栈的信息出栈,写入标志REG及CS和IP,某些CPU可进行附加的动作。 7、中断嵌套处理 中断机构/中断控制器一般允许中断响应后(中断结束前),响应/提出高优先级请求。 缺省处理:CPU在中断响应至中断结束间,将标志REG的IF位置为0,即不允许外部硬件中断嵌套,允许其它类型中断嵌套。 手工实现:中断服务程序可将标志REG的IF位在适当时候置为1,实现允许外部硬件中断嵌套。
时间到 检测 有请求 判优 新请求高 响应 说明:①不同类型中断检测时间不同; ②中断结束由中断服务程序的IRET指令触发完成,不属于中断机构硬件自动完成范围。 硬件自动完成: 检测 排队 判优 新请求高 向CPU提出请求 有响应操作 响应 优先级管理 结束 响应总线操作: 结束 优先级管理 有结束操作 8、中断系统工作原理综述 中断机构、中断控制器的3个工作段并行工作。 (1)CPU中断机构工作原理 (2)中断控制器工作原理 回下页 转5页
外设请求 请求5 请求1~3 请求4 嵌 套 中断 控制器 检→排→判→请 测 队 优 求 响 检→排→判→请 响 结→动态 结→动态 应 测 队 优 求 应 束 优先级 束 优先级 固定 检→判→响 检→判→响 结 结 优先级 测 优 应 测 优 应 束 束 嵌套 中断机构 软件请求 请求 请求 IVT/IDT 中断类型号→中断向量 中断类型号→中断向量 软件程序 屏蔽 屏蔽 中断1服务 中断2 服务 中断1 服务 时间 (3)中断系统工作原理 中断机构针对不同类型中断,检测时机不同。 转上页
IVT 0000:03FF 255#中断 … 1#中断 0000:0004 段地址 偏移量 0#中断 0000:0000 三、中断向量表(IVT) 1、中断向量表 开始位置:从内存地址0000:0000开始; 表项内容:中断服务程序入口地址,4B大小; 表长度:1KB=256×4B。 2、信息装入 系统启动时已装入所有类型中断服务程序入口地址(未使用中断指向只有1条IRET指令的程序)。 3、中断程序入口地址的获取 段地址=(0+中断类型号×4+2) 偏移量=(0+中断类型号×4)
四、中断描述符表(IDT) 1、中断描述符表 开始位置:从IDTR内容所对应的主存地址开始; 表项内容:中断描述符,8B大小; 表长度:2KB=256×8B。 2、中断描述符 类型:任务门、中断门、陷阱门, 通过特征位(b40~b44)可区分类型。 3、中断描述符指针 指向IDT中的中断描述符的指针(主存地址)。 中断描述符指针=IDT基地址+中断类型号×8
IDT GDT/LDT 代码段 中断门/陷阱门 段描述符 CS 中断类型号 7 0 … … 偏移 索引 选择符 属性 偏移 基地址 属性 边界 EIP 中断服务子程序 ×8 线性地址 IDTR 4、中断门/陷阱门入口地址的获取 中断门与陷阱门区别: 中断门处理时EFLAG的IF被自动复位,陷阱门不改变IF位状态,故中断门的优先级比陷阱门高。 中断门处理的中断源请求无嵌套。
IDT GDT 任务门 TSS描述符 中断类型号 7 0 … … 基址 选择符 属性 偏移 基地址 段限 属性 TR TSS结构 ×8 线性地址 IDTR 5、任务门TSS结构入口地址的获取 采用任务门进行任务切换的优点: 被中断任务环境的进栈和中断任务环境的出栈均自动完成; 中断任务和被中断任务完全隔开。
第二节 Intel 8259A 8259A应具有的功能: ⑴自动检测、记录多个中断源(应可扩充)的请求; ⑵自动对中断请求进行判优; 包括同时产生的请求、先后产生的请求 ⑶自动实现中断屏蔽(可用软件控制); ⑷自动向CPU提出中断请求; ⑸被动向CPU提供最高优先级的中断源类型号; ⑹自动实现中断源的优先级管理; 有多种管理方式时,可用软件选择 ⑺被动接收并执行CPU命令—任何接口均应具备 转4页 回22页
CPU侧引脚: CS; DB0~DB7、A0、RD和WR; INT、INTA; 级联引脚: SP/EN、 CAS0~CAS2。 一、8259A内部结构及其工作原理 1、8259A引脚 外设侧引脚: IR0~IR7; 回39页
IRR:用于锁存中断请求(防止遗漏); ISR:CPU响应中断时置位,中断处理完时复位; IMR:用于屏蔽中断请求,通过CPU命令置位和复位。 2、8259A内部结构及工作原理 (1)向CPU提出中断请求⑷原理 —IRi→INT过程
中断屏蔽寄存器IMR 正在服务寄存器ISR 特殊屏蔽SMM … … … 中断请求寄存器IRR 中断服务优先编码器 IR0 ≥1 … 比B0 较B1 器B2 A>B或A≥B A0 A1 A2 中断请求优先编码器 … … INT … & IBR IR7 & & (2)中断请求检测与记录⑴原理 检测到请求IRR置位,ISR置位时IRR复位 说明:①IBR为最低优先级IRi的位寄存器,为两个编码器的编码基准; ②A2A1A0、B2B1B0为优先级编码,非IR号; ③SMM为特殊屏蔽信号,允许特殊屏蔽时为1。 回下页 回26页 回27页 回28页 转19页 回24页 回29页
& IR0 IR7 IR1 IR6 IR2 S1 S0 设置IBR,可改变输出 IR5 IR3 11 并行输入 01 右移 00 保持 IR4 设置S1 S0 CP IBR I0 移位寄存器 74LS194 优先 编码器 74LS148 IR0&~IMR0 Y0 IR3 &~IMR3 I3 Y1 I4 移位寄存器 74LS194 IR4&~IMR4 Y2 IR7 &~IMR7 I7 (3)优先级编码器原理 8259A规则:为简化电路设计,从IR0→IR7→IR0的优先级为降序循环队列。 例:IR7优先级为0时,IR0为7、IR6为1; IR2优先级为0时,IR3为7、IR1为1。 优先级编码器电路示意图: 转上页
中断请求优先编码器(排队器)(IR0最高) ?? IR5 (IR7被 阻塞) IR7 IR6 IR2 (IR6、IR7 被阻塞) IR5 IR7 IR2 IR6 请求:无 IRR5复位 IRR2复位 时间 ISR2置位 ISR5置位 ISR2 复位 ISR? 复位 服务:无 比较器(判优器) INT为低 INT为低 INT为高 INT为高 INT=? INT=? (4)自动判优⑵原理 —优先级电路PR 中断请求编码器:负责尚未服务请求(含同时产生和先后产生的请求)的排队; 比较器:负责正在服务与尚未服务请求的判优。 回下页 回30页 转22页
排队与判优概念的含义: 排队—尚未服务的请求间欲获得中断服务时的优先级比较; 判优—尚未服务请求欲在正在服务请求中进行嵌套时的优先级比较,用于中断嵌套。 嵌套方式—即判优方式(比较器比较条件) 全嵌套 :比较器比较条件为A>B; 特殊全嵌套:比较器比较条件为A≥B。 (如:IR2请求改为IR5) 转上页
按自动排队规则处理 优先级:IR5>IR7 优先级:IR4>IR5和IR7 IR5 IR7 IR4 t IR4正在服务 ISR4=1,IRR4=0 IR?正在服务 (5)中断请求屏蔽⑶原理 包含正常屏蔽和特殊屏蔽两种手段。 正常屏蔽: 屏蔽中断源请求IRR,使其不参排队; 通过CPU命令,实现IMR的置位与复位。 特定屏蔽: 屏蔽正在服务请求ISR,使ISR不参与判优; 通过CPU命令,实现SMM的允许与禁止。 转22页 转9页
第一个INTA,CPU封锁总线(LOCK有效),8259A最高优先级请求的ISR相应位置位,IRR相应位复位;第一个INTA,CPU封锁总线(LOCK有效),8259A最高优先级请求的ISR相应位置位,IRR相应位复位; 第二个INTA,总线解锁,8259A将最高优先级请求的中断类型号送上DataBus总线,自动结束方式时ISR相应位复位,INT信号复位(参见自动判优原理)。 CPU取得外部硬件中断请求类型号的动作: 发送两个INTA信号。 (6)响应CPU中断原理 --含提供中断类型号⑸ CPU响应外部硬件中断请求条件: ①当前指令执行完毕;②EFLAG中IF=1; ③INTR信号有效。 8259A响应CPU中断的动作: 转22页
(7)中断结束原理 —ISR复位的时机和方法 自动结束: 时机—接收到第二个INTA时; 方法—ISR中最高优先级IR位(刚被置位)复位; 效果—按“后产生请求优先”原则判优(嵌套)。 手工结束: 时机—接收到CPU中断结束命令(EOI)时; 方法— 不指定方式—ISR中最高优先级IR位复位 指定方式—ISR中指定的IR位复位 效果—按“高优先级请求优先”原则判优(嵌套)。 转22页 回30页
(8)优先级管理⑹原理 —设置IBR 固定优先级:IR0→IR7降序; 轮转优先级:IR0→IR7→IR0循环降序 不指定轮转—ISR中被自动复位IR优先权最低; 指定轮转—ISR中被指定复位IR优先权最低。 优先级管理实现: 时机—ISR位变化时(即中断结束处理时); 方法—控制IBR变化。 固定优先级—IBR固定为80H; 轮转优先级—IBR根据ISR变化而变化。 回下页 转22页
IR2 IR7 IR6 IR4 t CPU响应 IR4服务结束 CPU响应 CPU响应 IR?服务结束 IR?服务结束 CPU响应 所有中断结束 思考:IRR、IMR、ISR、IBR、INT置位和复位时机? 例:轮转优先级(不指定)、手工结束时,相关REG的变化 IRR:10H 00H 00H 84H 04H 44H 04H 04H 04H 00H 00H ISR:00H 10H 00H 00H 80H 80H C0H 80H 00H 04H 00H IBR:80H 80H 10H 10H 10H 10H 10H 40H 80H 80H 04H INT:1 0 0 1 0 1 0 0 1 0 0 转上页 转24页 转28页
屏蔽方式 特定屏蔽 正常屏蔽 D0 D7 … 自动 手工 结束方式 不指定 指定 正在服务ISR 特殊屏蔽SMM 中断屏蔽IMR … … ≥1 ISR优先编码器 … IR0 中断请求IRR IRR优先编码器 INT 比较器 & 电平触发 边沿触发 请求方式 IBR … … & & IR7 INT 完全嵌套 特殊全嵌套 固定 轮转 缓冲 非缓冲 嵌套方式 优先级管理 不指定 指定 级联方式 3、8259A工作模式设置 含请求、屏蔽、嵌套、结束、优先级、级联方式。 转下页 转36页 转37页 转34页
(1)中断请求方式 [初始化时] 边沿触发:高电平表示有请求; 电平触发:上升沿时表示有请求。 (2)屏蔽方式 [动态操作时] 正常屏蔽:置位/复位IMR某些位; 特定屏蔽:置位/复位SMM位。 (3)嵌套方式:[初始化时] 全 嵌 套:比较器比较条件为A>B; 特殊全嵌套:比较器比较条件为A≥B。 回上页
(4)结束方式 [可动态操作时] 自动结束:中断响应时ISR中最高优先级IR位复位; 手工结束: 不指定—手工使ISR中最高优先级(当前服务)IR位复位; 指 定—手工使ISR中指定的IR位复位。 (5)优先级管理 [可动态操作时] 固定优先级:IR0→IR7降序,IBR为80H; 轮转优先级:IR0→IR7→IR0循环降序,IBR可变 不指定:ISR中被自动复位IR优先权最低; 指 定:ISR中被指定复位IR优先权最低。 回下页 回31页
结束方式与优先级管理的关联: 转上页
非缓冲:SP/EN表示级联时主/从关系 主片—SP/EN接高电平;从片—SP/EN接低电平 AB CB 缓冲:SP/EN表示数据传送方向,级联时主/从关系通过软件设定。 DB A0 INT A0 A0 INT INT INTA INTA INTA CAS0~CAS2 主8259 从8259A 从8259B CAS0~CAS2 CAS0~CAS2 SP/EN SP/EN SP/EN IR0 VCC IR7 IR0 IR0 GND GND IR7 IR7 (6)级联方式[初始化时] 回31页
(7)工作模式的设置 所有工作方式的设置均通过对8259A操作实现。 初始化操作:请求、嵌套、结束、优先级、级联 其后的操作:正常/特殊屏蔽、结束、优先级管理 回39页 回31页
4、8259A级联的请求与响应 思考1:主、从片均有请求时,谁的优先级最高? 思考2:主片或从片向DataBus送中断类型号的条件? 思考3:8259A级联时最多可支持多少个中断源?
思考4:课件33页图中主片IR3、从片A的IR3、从片B的IR3同时产生中断请求时,谁的优先级最高?思考4:课件33页图中主片IR3、从片A的IR3、从片B的IR3同时产生中断请求时,谁的优先级最高? 思考5:级联时初始化要完成哪些基本设置? 提示:中断响应时,主片如何知道优先级最高的IR连接着从片?从片如何知道自己被选中? 思考6:级联时对主、从片的嵌套方式有何要求? 提示:采用手工结束方式时,如何实现从片的先IR4、后IR3请求的嵌套处理? 思考7:级联且手工结束时应进行哪些操作? 提示:从片有多个请求时,主片应如何处理? 思考8:8259A初始化时应完成哪些设置? 请求、嵌套、结束、优先级、级联(是否有、主从片映射)方式
二、8259A编程 1、8259A的操作命令 I/O端口地址:只有二个端口(A0)。 操作命令: ICW1~ICW4—初始化(请求、嵌套、结束、优先级、级联), OCW1—正常屏蔽, OCW2—结束方式和优先权管理, OCW3—特殊屏蔽和状态查询选择, 取状态—IMR状态、其他状态(IRR、ISR、查询字)。 I/O端口与操作冲突时解决方法: 信息字(AL)中有空闲位时—特征位方法; 信息字(AL)中无空闲位时—时序方法。 回下页 转20页 转36页
8259A命令关系表: 说明:⑴ICWx只在初始化时才会出现; ⑵每个8259A芯片均要初始化。 转上页 回OCW1 回OCW2 回OCW3 回ICW1 回ICW2 回ICW3 回ICW4
(1)初始化命令ICW1 功能:设置请求、是否有级联方式 特征位:D4D3=1*;(OCW2=00,OCW3=01) ICW4功能:设定嵌套、级联、结束方式, 缺省值为全嵌套、非缓冲、自动结束方式; 优先级管理:缺省为固定优先级。 转命令表
初始化时序: A0=0 ICW1 A0=1 ICW2→[ICW3]→[ICW4] (2)初始化命令ICW2 功能:设置IRi在IVT的位置(中断类型号) 如:主片为08H~0FH,从片为70H~77H,…… IR中断类型号=高5位(ICW2设置)+低3位(IR编码) 例:IR3的中断类型号为08H+03H=0BH IR4的中断类型号为08H+04H=0CH 转命令表
N N Y Y ICW1的 D1=1 ICW1的 D0=1 ICW1 ICW2 ICW3 ICW4 (3)初始化命令ICW3 功能:设置级联时主片与从片的连接关系 主片ICW3:哪些位对应的IR有从片连接; 从片ICW3:连接到主片那个IR的编码。 初始化时序:ICW1→ICW2→[ICW3]→[ICW4]。 转命令表
说明:非缓冲方式级联时,主、从片关系由SP/EN电平决定(高电平为主片、低电平为从片)。说明:非缓冲方式级联时,主、从片关系由SP/EN电平决定(高电平为主片、低电平为从片)。 (4)初始化命令ICW4 功能:设置嵌套、级联、结束方式 转命令表 转50页
(5)操作命令OCW1 功能:正常屏蔽操作 特征位:无,时序:无。 初始化后A1=1端口操作: A1=1,写—正常屏蔽操作 A1=1,读—取正常屏蔽状态(每位表示一个IR) 转命令表
(6)操作命令OCW2 功能:结束方式和优先级管理操作 特征位:D4D3=00;(ICW1=1*,OCW3=01) OCW2使用时机: 手工结束方式(ISR复位); 变换优先级管理方式、指定轮转优先级。 回下页 转命令表
结束方式与优先级管理关系表: 例:MOV AL,20H OUT 20H,AL的含义是什么? 转上页
(7)操作命令OCW3 功能:设置状态查询类型和特定屏蔽操作 特征位:D4D3=01; (ICW1=1*,OCW2=00) 8259A规定:因端口冲突,读取IRR、ISR、状态查询字需要采用间接访问方式完成。 思考:设置ESMM、RR的目的? 防止某操作导致另外一个操作 回下页 转命令表
查询字格式: D7(I)—=1有中断请求,=0无中断请求; D2~D0(W2~W0)—所有请求中优先级最高的IR编码。 读取IRR、ISR和状态查询字: 特定屏蔽管理: 转上页
2、8259初始化编程 (1)初始化编程步骤 (2)初始化编程示例(下页) (3)初始化编程注意点 不同8259A(即主、从片)的I/O端口地址不同; 8259A级联时,每个8259A均必须有完整的初始化过程(端口地址和部分参数不同而已); 初始化刚完成时IR0的优先级最高。 转下页 回44页