实现中断I/O操作会出现两个设计问题。第一,因为几乎总是有多个I/O模块,所以处理器如何确定是哪个设备发生了中断?第二,如果有多个中断出现,处理器如何确定优先处理哪个中断?
1 “中断诊断”
首先我们考虑设备识别,设备识别通常有多条中断线、软件轮询、菊花链(硬件轮询,向量)、总线总裁(向量)四种技术。
解决问题最直接的方法是在处理器和IO模块之间提供多条中断线,然而,将较多的总线或处理器引脚做成中断线是不实际的,因此,即使有多条中断线可用,每条线也必须连接多个模块。在每根线上还要采用其他3种技术中的一种。
另一种技术是软件轮询,当处理器检测到一个中断时,进入中断服务程序,这个程序的任务是轮询每一个IO模块来确定是哪个模块产生的中断。
软件轮询的缺点是费时。相比之下,更为有效的方法是使用菊花链电路,实际上,它提供一种硬件轮询。
另一种使用向量式中断的技术式总线仲裁。使用总线仲裁技术,IO模块在发送中断请求前必须首先获得总线控制权,因此,一次只有一个模块能占用总线。当处理器检测到有中断请求时,它发中断应答信号相应中断。然后,请求中断的模块将其向量放在数据线上。
2 中断处理顺序
如何确定优先处理,当一个以上的设备请求中断服务时,这些技术还提供了一种分配优先级的方法。优先级高的中断先执行。
网友评论