公司动态
I/O方式 —— 程序中断方式
一、基本概念需要CPU中断自己的任务转而执行I/O设备与存储器之间的数据传送。二、工作流程中断请求中断源向CPU发送中断请求信号。中断判优多个中断源同时提出请求时通过中断判优逻辑响应一个中断源。中断响应及中断隐指令。中断服务程序寻址执行中断服务程序步骤一中断请求1中断请求分类程序中断方式属于I/O 中断因此属于外中断。硬件中断通过外部的硬件产生的中断。硬件中断属于外中断。软件中断通过某条指令产生的中断这种中断是可以变成实现的软件中断属于内中断。2中断请求标记每个中断源向CPU发出中断请求的时间是随机的。为了记录中断事件并区分不同的中断源中断系统需对每个中断源设置中断请求标记触发器INTR当其状态为“1”时表示中断源有请求。以方便CPU知道是哪个硬件发起中断请求这些触发器可组成中断请求标记寄存器该寄存器可集中在CPU中也可分散在各个中断源中。步骤二中断判优中断判优既可以用硬件实现也可用软件实现一般来说硬件故障中断属于最高级其次是软件中断非屏蔽中断优于可屏蔽中断DMA请求优于I/0设备传送的中断请求高速设备优于低速设备输入设备优于输出设备实时设备优于普通设备。1硬件实现硬件实现是通过硬件排队器实现的它既可以设置在CPU中也可以分散在各个中断源中2软件实现软件实现是通过查询程序实现的。步骤三中断响应中断隐指令CPU响应中断必须满足以下3个条件中断源有中断请求。CPU允许中断即开中断。一条指令执行完毕且没有更紧迫的任务。1外中断CPU是在统一的时刻即每条指令执行阶段结束前向接口发出中断查询信号以获取 I/O 的中断请求而在每条指令执行阶段结束时向接口发出CPU中断响应。2内中断内中断的发生跟指令的执行有关因此可以在任意时间段响应内中断。3工作流程关中断。在中断服务程序中为了保护中断现场即CPU主要寄存器中的内容期间不被新的中断所打断必须关中断从而保证被中断的程序在中断服务程序执行完毕之后能接着正确地执行下去。保存断点。为了保证在中断服务程序执行完毕后能正确地返回到原来的程序必须将原来程序的断点即程序计数器PC的内容保存起来。可以存入堆栈也可以存入指定单元。引出中断服务程序。引出中断服务程序的实质就是取出中断服务程序的入口地址并传送给程序计数器PC。步骤四中断服务程序寻址不同的设备有不同的中断服务程序每个中断服务程序都有一个入口地址CPU必须找到这个入口地址即中断向量。【注1】中断向量是中断服务程序的入口地址中断向量地址是指中断服务程序的入口地址的地址【注2】为什么不直接给出中断向量入口地址而是给出中断向量地址再由中断向量地址找到中断向量answer中断向量地址可以保持不变而中断向量可以灵活变动不受硬件限制。步骤五执行中断服务程序在执行中断服务程序的过程中对于单重中断和多重中断有不同的处理方法单重中断执行中断服务程序时不响应新的中断请求。多重中断又称中断嵌套执行中断服务程序时可响应新的中断请求。需要用到中断屏蔽技术中断屏蔽技术主要用于多重中断CPU要具备多重中断的功能须满足下列条件。在中断服务程序中提前设置开中断指令。优先级别高的中断源有权中断优先级别低的中断源。每个中断源都有一个屏蔽触发器所有屏蔽触发器组合在一起便构成一个屏蔽字寄存器屏蔽字寄存器的内容称为屏蔽字。屏蔽字设置有以下规则一般用‘1’表示屏蔽0’表示正常申请。每个中断源对应一个屏蔽字在处理该中断源的中断服务程序时屏蔽寄存器中的内容为该中断源对应的屏蔽字。屏蔽字中1’越多优先级越高。每个屏蔽字中至少有一个’1至少要能屏蔽自身的中断。三、程序中断和调用子程序的区别两者的根本区别主要表现在服务时间和服务对象上不一样调用子程序过程的时间是已知的程序中断的时间是随机的子程序为主程序服务两者之间是从属关系程序中断与主程序没有联系属于平行关系主程序调用子程序的过程完全属于软件处理过程中断处理程序需要软硬件的结合子程序的嵌套由堆栈大小限制中断嵌套由中断处理优先级对应中断屏蔽字限制