中断
中断是指计算机运行过程中,出现某些意外情况需主机干预时,机器能自动停止正在运行的程序并转入处理新情况的程序,处理完毕后又返回原被暂停的程序继续运行。
现代计算机使用中断的目的:
①提高计算机系统效率。计算机系统中处理机的工作速度远高于外围设备的工作速度。通过中断可以协调它们之间的工作。当外围设备需要与处理机交换信息时,由外围设备向处理机发出中断请求,处理机及时响应并作相应处理。不交换信息时,处理机和外围设备处于各自独立的并行工作状态。(操作系统由批处理发展为时分系统的产物!)
②维持系统可靠正常工作。现代计算机中,程序员不能直接干预和操纵机器,必须通过中断系统向操作系统发出请求,由操作系统来实现人为干预。主存储器中往往有多道程序和各自的存储空间。在程序运行过程中,如出现越界访问,有可能引起程序混乱或相互破坏信息。为避免这类事件的发生,由存储管理部件进行监测,一旦发生越界访问,向处理机发出中断请求,处理机立即采取保护措施。
③满足实时处理要求。在实时系统中,各种监测和控制装置随机地向处理机发出中断请求,处理机随时响应并进行处理。
④提供故障现场处理手段。处理机中设有各种故障检测和错误诊断的部件,一旦发现故障或错误,立即发出中断请求,进行故障现场记录和隔离,为进一步处理提供必要的依据。
中断的处理主要分为以下几步:中断请求、中断判优、中断响应、中断处理和中断返回。
对于外部中断,中断请求信号是由外部设备产生,并施加到CPU的NMI或INTR引脚上,CPU通过不断地检测NMI和INTR引脚信号来识 别是否有中断请求发生。
对于内部中断,中断请求方式不需要外部施加信号激发,而是通过内部中断控制逻辑去调用。无论是外部中断还是内部中断,中断处理过程 都要经历以下步骤:请求中断→响应中断→关闭中断→保留断点→中断源识别→保护现场→中断服务子程序→恢复现场→中断返回。
当系统中有多个中断源时,一旦有中断请求,CPU必须确定是哪一个中断源提出的中断请求,并由中断控制器给出中断服务子程序的入口地址,装入CS与IP/EIP两个寄存器,CPU转入相应的中断服务子程序开始执行。
主程序和中断服务子程序都要使用CPU内部寄存器等资源,为使中断处理程序不破坏主程序中寄存器的内容,应先将断点处各寄存器的内容压入堆栈保护起来,再进入的中断处理。现场保护是由用户使用PUSH指令来实现的。当中断处理完毕后,用户通过POP指令将保存在堆栈中的各个寄存器的内容弹出,即恢复主程序断点处寄存器的原值。
寻找中断服务程序的入口地址.由于中断周期结束后进入下条指令(即中断服务程序的第一条指令)的取指周期,因此在中断周期内必须设法找到中断服务程序的入口地址.由于入口地址有两种方法获得,因此在中断周期内也有两种方法寻找入口地址: 其一,在中断周期内,将向量地址送至PC(对应硬件向量法),使CPU下一条执行无条件转移指令,转至中断服务程序的入口地址. 其二,在中断周期内,将软件查询入口地址的程序(又叫中断识别程序)其首地址送至PC,使CPU执行中断识别程序,找到入口地址(对应软件查询法)。
CPU管脚上有两个管脚叫做 NMI、
INTR
对应不可屏蔽和可屏蔽中断。CPU在执行完一条指令之后就会检测这个管脚的状态,如果满足某个条件就不再执行下一条指令,而是做另外一件事情,这件事情就是中断处理那一套过程。这就是外部中断。当CPU执行完一条指令,比如指令执行出错了,CPU也会进行另外的处理,这就是内部的中断。这是CPU内部电路的设计,Intel的设计就是这样的,但是其他的处理器可能就不是这样设计的。我们只需要理解中断机制的作用,至于实现方式不同的处理器会有不同的实现。计算机系统是人造系统,没有绝对的对错,只有特定场景下的优劣。很多时候只要我们对机制的出发点和用途理解正确,至于实现了解几个相应的例子即可。
I/O通道
I/O通道(I/O Channel)设备的引入实际上,I/O通道是一种特殊的处理机。它具有执行I/O指令的能力,并通过执行通道(I/O)程序来控制I/O操作。但I/O通道又与一般的处理机不同,主要表现在以下两个方面:一是其指令类型单一,这是由于通道硬件比较简单,其所能执行的命令,主要局限于与I/O操作有关的指令;再就是通道没有自己的内存,通道所执行的通道程序是放在主机的内存中的,换言之,是通道与CPU共享内存。通道处理机能够负担外围设备的大部分I/O工作,是能够执行有限I/O指令,并且能够被多台外围设备共享的小型DMA专用处理机。
通道的功能:
(1) 接受CPU发来的I/O指令,根据指令要求选择一台指定的外围设备与通道相连接。
(2) 执行CPU为通道组织的通道程序,从主存中取出通道指令,对通道指令进行译码,并根据需要向被选中的设备控制器发出各种操作命令。
(3) 给出外围设备的有关地址,即进行读/写操作的数据所在的位置。如磁盘存储器的柱面号、磁头号、扇区号等。
(4) 给出主存缓冲区的首地址,这个缓冲区用来暂时存放从外围设备上输入的数据,或者暂时存放将要输出到外围设备中去的数据。
(5) 控制外围设备与主存缓冲区之间数据交换的个数,对交换的数据个数进行计数,并判断数据传送工作是否结束。
(6) 指定传送工作结束时要进行的操作。
(7) 检查外围设备的工作状态,是正常或故障。根据需要将设备的状态信息送往主存指定单元保存。
(8) 在数据传输过程中完成必要的格式变换。例如:把字拆卸为字节,或者把字节装配成字
通道的类型(按工作方式分类)
(1)选择通道:这种通道可以连接多台快速I/O设备,但每次只能从中选择一台设备执行通道程序,进行主存与该设备之间的数据传送。当数据传送完后,才能选择另一台设备。在这种工作方式中,数据传送以成组方式进行,传送速率很高,多用于连接快速I/O设备。但因连接在选择通道上的多台设备,只能依次使用通道与主存传送数据,故设备之间不能并行工作,且整个通道的利用率不高。
(2)字节多路通道:这种通道可以连接多台慢速I/O设备,以交叉方式传送数据,即各设备轮流使用通道与主存进行数据传送,且每次只传送一个字节。因为每次数据传送仅占用了不同的设备各自分得的很短的时间片,所以大大提高了通道的利用率。(以时分复用的方式使多个设备共用通道,通道利用率高)
(3)数组多路通道:数组多路通道综合了选择通道和字节多路通道的优点,它有多个子通道。即可以像字节多路通道那样,执行多路通道程序,使所有子通道分时共享总通道;又可以像选择通道那样进行成组数据的传送。子通道是指实现每个通道程序所对应的硬设备。选择通道在物理上可以连接多台设备,但在一段时间内只能执行一台设备的通道程序,即在逻辑上只能连接一台设备,所以它只包含一个子通道。字节多路通道和数组多路通道在物理上可以连接多台设备,而且在一段时间内可轮流执行多台设备的通道程序,即在逻辑上也可以连接多台设备,所以它们包含若干子通道。需要注意的是,一个子通道可以连接多台设备,但子通道数并不等于物理上可连接的设备数,而是该通道中能够同时工作的设备数。
I/O指令与通道指令
(1)I/O指令:I/O指令是计算机系统的一部分,由CPU执行。在采用通道的计算机系统中,I/O指令不直接控制I/O数据的传送,它只负责启动、停止I/O的过程、查询通道和I/O设备的状态、控制通道进行某些操作。
(2)通道指令及其格式:通道指令也称通道控制字CCW,它是通道用于执行I/O操作的指令,由通道从主存中取出并执行之。
通道的执行过程
(1)初始化:
编制通道程序;
根据需要在主存中开辟I/O缓冲区;
将缓冲区首址及传送字节数送到通道程序中,并将通道程序首地址写入某固定单元;
执行启动命令SIO,该指令中给出通道号及设备号。
(2)通道和设备的启动:
指定的通道接到启动信号后,从某固定单元中读出通道地址字CAW;
CAW送入通道地址寄存器CAWR;
通道将SIO指令送来的设备号送入设备地址寄存器,然后向I/O总线送出所要启动的设备号;
指定设备向通道送出回答信号,并回送本设备地址;
若回送的设备地址与通道送出的设备地址一致,则启动成功;
通道根据VAWR中的内容从主存取出第一条通道指令CCW1,并存于通道指令寄存器CCWR中,然后根据CCW1中的命令码去启动设备;
设备在接到第一条通道发出的命令后,向通道送出状态码,若状态码全为0,则通道向CPU送出条件码,并告之启动成功。反之,则表示不能正常执行通道命令,并说明失败的原因。
(3)数据传送:
执行完第一条通道指令后,CAWR增值,以便读出第二条通道指令。若执行的是数据传送指令,当其传送字节数减到0时,表明该通道指令执行完毕,本次数据传送结束。依次类推,直到执行的某条通道指令中SD和CD均为0,则该通道指令是本通道程序中的最后一条。
(4)通道程序的结束:当执行完通道程序的最后一条通道指令,则结束通道程序:一方面通道向设备发出结束命令,一方面向CPU发出中断请求信号,并将通道状态写入主存专用单元。
设备接到结束命令后立即进行某些必要的动作,例如磁带继续运行一段,使磁头停止在两个数据之间的空白处。在设备必要的动作结束后,反馈给通道一个信号,以断开与通道的连接。
CPU接到中断请求信号后,响应中断,执行I/O中断管理程序,对通道作结束处理。
通道的组成
不同的通道,其组成也不同,下面以选择通道为例介绍通道的组成。
(1)通道地址字寄存器CAWR:它存放从主存某固定单元中读出的通道地址字CAW,再从CAW中取出通道程序首地址。通道中的CAWR类似于CPU中的程序计数器PC。
(2)通道指令寄存器CCWR:它存放从主存中读出的通道指令,根据该通道指令向设备控制器发出控制命令。
(3)数据缓冲寄存器:当发生访存冲突时,它用于暂时保存数据,等待一段时间后再传送。另外,通道与设备之间按字节传送,而通道与主存之间按字传送,故它具有组装与拆分功能。
(4)设备地址寄存器:它接受启动I/O指令(SIO)中所包含的设备号,并依次向I/O总线送出设备地址,经译码产生选中设备信号。
(5)通道状态字寄存器CSWR:它存放通道与设备的状态信息。
(6)通道控制器:它产生控制通道操作的各种信号,类似于CPU中的微程序信号发生器。
计算机中信息传送方式
(1)串行传送:串行传送就是一根数据线从低到高的顺序逐位传送数据。一般外总线采用串行传送方式。
(2)并行传送:并行传送是用多根数据线同时传送一个字或一个字节的所有位,将同时传送的数据位数称为该总线的数据通路宽度。系统总线通常采用并行传送方式,以提高速度和效率。
(3)并串行传送:它是并行和串行传送的结合。例如要传送的数据有多个字节组成,那么传送一个字节时采用并行传送,而字节之间采用串行传送。
(4)分时传送:分时传送有两层含义,一层含义是在总线上分时传送不同类型的信息;另一层含义是共享总线的各部件分时使用总线。
一个I/O中断处理过程
(1)CPU发送启动I/O设备的命令,将I/O接口中的B触发器置1,D触发器置0。
(2)设备开始工作,需要向CPU传送数据时,将数据送入数据缓冲器中。
(3)输入设备向I/O接口发出“设备工作结束”的信号,将D触发器置1,B触发器置0。标志着I/O设备已就绪。
(4)CPU在每条指令执行即将结束时,发出中断查询信号。中断查询信号可以让那些接口中D触发器置1且中断屏蔽触发器(MASK)置0的设备的I/O接口中的中断请求触发器(INTR)置1。若该设备的I/O接口中的中断请求触发器(INTR)置1,则代表该设备正式向CPU提出中断请求。
(5)一般来说,在同一个时间点存在多个设备同时提出中断请求,存在一个INTRi序列。而CPU每次只能处理一个中断请求,因此将INTRi序列送至排队器进行中断判优,速度越快的I/O设备优先级越高。
(6)在中断允许触发器(EINT)置1的情况下,CPU对优先级最高的设备进行中断响应,首先将INTR发送到编码器形成向量地址。将向量地址至PC作为下一条指令的地址。