-
1 教学内容
-
2 教学视频
-
3 翻转课堂教学任务单
本节教学内容:
1、程序中断方式
2、DMA方式
教学目的和要求:
1、理解I/O中断处理过程;
2、掌握I/O中断服务程序的流程;
3、了解DMA接口的功能和组成;
4、理解DMA的工作过程。
重点:1、程序中断方式;
2、DMA方式。
难点:程序中断方式
第1讲I/O中断处理过程、中断服务程序流程
一、知识要点
1、CPU响应中断的条件和时间
2、I/O中断处理过程
3、中断服务程序的流程
二、教学安排
首先详细介绍I/O中断的处理过程,包括了CPU响应中断的条件和时间,处理过程结合硬件图来讲解,因为中断处理过程由中断接口的硬件决定,然后讲解中断服务程序的流程,不同的设备虽然服务程序不同,但是程序流程都是类似的。
三、教学内容
1、CPU响应中断的条件和时间
CPU响应I/O设备提出中断请求的条件是必须满足CPU中的允许中断触发器EINT为“1”。该触发器可用开中断指令置位(称为开中断);也可用关中断指令或硬件自动使其复位(称为关中断)。

由上图分析可知,I/O设备准备就绪的时间(即D=1)是随机的,而CPU是在统一的时刻(每条指令执行阶段结束前)向接口发中断查询信号,以获取I/O的中断请求。因此,CPU响应中断的时间一定是在每条指令执行阶段的结束时刻。
2、I/O中断处理过程
下面以输入设备为例,结合下图,说明I/O中断处理的全过程。当CPU通过I/O指令的地址码选中某设备后,则

①由CPU发启动I/O设备命令,将接口中的B置“1”,D置“0”。
②接口启动输入设备开始工作。
③输入设备将数据送人数据缓冲寄存器。
④输入设备向接口发出“设备工作结束”信号,将D置“1”,B置“0”,标志设备准备就绪。
⑤当设备准备就绪(D=l),且本设备未被屏蔽(MASK=0)时,在指令执行阶段的结束时刻,由CPU发出中断查询信号。
⑥设备中断请求触发器INTR被置“1”,标志设备向CPU提出中断请求。与此同时,INTR送至排队器,进行中断判优。
⑦若CPU允许中断(EINT=1),设备又被排队选中,即进入中断响应阶段,由中断响应信号INTA将排队器输出送至编码器形成向量地址。
⑧向量地址送至PC,作为下一条指令的地址。
⑨由于向量地址中存放的是一条无条件转移指令,故这条指令执行结束后,即无条件转至该设备的服务程序入口地址,开始执行中断服务程序,进入中断服务阶段,通过输入指令将数据缓冲寄存器的输入数据送至CPU的通用寄存器,再存入主存相关单元。
⑩中断服务程序的最后一条指令是中断返回指令,当其执行结束时,即中断返回至原程序的断点处。至此,一个完整的程序中断处理过程即告结束。
综上所述,可将一次中断处理过程简单地归纳为中断请求、中断判优、中断响应、中断服务和中断返回5个阶段。至于为什么能准确返回至原程序断点,CPU在中断响应阶段除了将向量地址送至PC外,还做了什么其他操作等问题,将在8.4节详细介绍。
3、中断服务程序的流程
不同设备的服务程序是不相同的,可它们的程序流程又是类似的,一般中断服务程序的流程分四大部分:保护现场、中断服务、恢复现场和中断返回。
1)保护现场
保护现场由两个含义,其一是保存程序的断电;其二是保存通用寄存器和状态寄存器的内容。前者由中断隐指令完成,后者由中断服务程序完成。具体而言,可在中断服务程序的起始部分安排若干条存数指令,将寄存器的内容存至存储器中保存,或用进栈指令(PUSH)将各寄存器的内容推入堆栈保存,即将程序中断时的“现场”保存起来。
2)中断服务(设备服务)
这是中断服务程序的主体部分,对于不同的中断请求源,其中断服务操作内容是不同的,例如,打印机要求CPU将需打印的一行字符代码,通过接口送人打印机的缓冲寄存器中以供打印机打印。又如,显示设备要求CPU将需显示的一屏字符代码通过接口送人显示器的显示存储器中。
3)恢复现场
这是中断服务程序的结尾部分,要求在退出服务程序前,将原程序中断时的“现场”恢复到原来的寄存器中。通常可用取数指令或出栈指令(POP),将保存在存储器(或堆栈)中的信息送回到原来的寄存器中。
4)中断返回
中断服务程序的最后一条指令通常时一条中断返回指令,使其返回到原程序的断电处,以便继续执行原程序。
计算机在处理中断的过程中,有可能出现新的中断请求,此时如果CPU暂停现行的中断服务程序,转去处理新的中断请求,这种现象称为中断嵌套,或多重中断。倘若CPU在执行中断服务程序时,对新的中断请求不予理睬,这种中断称为单重中断。这两种处理方式的中断服务程序略有区别。下图中两个流程分别为单重中断和多重中断服务程序流程。比较两图可以发泄,其区别在于“开中断”的设置时间不同。

CPU一旦响应了某中断源的中断请求后,便由硬件线路自动关中断,即中断允许触发器EINT被置“0”,以确保该中断服务程序的顺利执行。因此如果不用“开中断”指令将EINT置“1”,则意味着CPU不能再响应其他任何一个中断源的中断请求。对于单重中断,开中断指令设置在最后“中断返回”之前,意味着在整个中断服务处理过程中,不能再响应其他中断源的请求。对于多重中断,开中断指令提前至“保护现场”之后,意味着着保护现场后,若有级别更高的中断源提出请求(这是实现多重中断的必要条件),CPU也可以响应,即再次中断现行的服务程序,转至新的中断服务程序,这是单重中断与多重中断的主要区别。有关多重中断的详细内容参见8.4.6节。
综上所述,从宏观上分析,程序中断方式客服了程序查询方式中的CPU“踏步”现象,实现了CPU与I/O的并行工作,提高了CPU的资源利用率。但从微观操作分析,发现CPU在处理中断服务程序时仍需暂停原程序的正常运行,尤其是当高速I/O设备或辅助存储器频繁地、成批地与主存交换信息时,需不断地打断CPU执行主程序而执行中断服务程序。下图是主程序和服务程序抢占CPU的示意图。为此,人们探索出使CPU效率更高的DMA控制方式。

四、互动及练习
本次课采用提问的互动方式:
1、执行中断服务程序的流程。
请同学们先讨论谈自己的看法,然后由讨论出来的内容来分析,引出执行中断服务程序的流程。
2、程序中断方式是否与CPU的工作完全并行?
请同学们谈谈自己的看法,分析程序中断方式中中断服务程序的流程,看在执行中断服务程序时,CPU是否可以继续工作,由此得出中断方式实现了CPU与I/O宏观上并行工作和微观上串行工作的特点。
第2讲DMA方式
一、知识要点
1、DMA方式的特点
2、DMA接口的功能和组成
3、DMA的工作过程
二、教学安排
首先,介绍DMA方式与主存交换数据时采用的三种方法,然后介绍DMA接口的功能及基本组成电路,通过接口电路再分析DMA方式的工作流程,让学生把工作流程跟硬件结构联系起来,要注意区分DMA方式与中断方式、程序查询方式的区别。
三、教学内容
1、DMA方式的特点
下图示意了DMA方式与程序中断方式的数据通路。

由图中可见,由于主存和DMA接口之间有一条数据通路,因此主存和设备交换信息时,不通过CPU,也不需要CPU暂停现行程序为设备服务,省去了保护现场和恢复现场,因此工作速度比程序中断方式的工作速度高。这一特点特别适合于高速I/O或辅存与主存之间的信息交换。因为高速I/O设备若每次申请与主机交换信息时,都要等待CPU作出中断响应后再进行,很可能因此使数据丢失。
值得注意的是,若出现高速I/O(通过DMA接口)和CPU同时访问主存,CPU必须将总线(如地址线、数据线)占有权让给DMA接口使用,即DMA采用周期窃取的方式占用一个存取周期。
在DMA方式中,由于DMA接口与CPU共享主存,这就有可能出现两者争用主存的冲突。为了有效地分时使用主存,通常DMA与主存交换数据时采用如下三种方法。
1)停止CPU访问内存
当外围设备要求传送一批数据时,由DMA控制器发一个停止信号给CPU,要求CPU放弃对地址总线、数据总线和有关控制总线的使用权。DMA控制器获得总线控制权以后,开始进行数据传送。在一批数据传送完毕后,DMA控制器通知CPU可以使用内存,并把总线控制权交还给CPU。在这种DMA传送过程中,CPU基本处于不工作状态或者说保持状态。
优点:控制简单,它适用于数据传输率很高的设备进行成组传送。
缺点:在DMA控制器访内阶段,内存的效能没有充分发挥,相当一部分内存工作周期是空闲的。这是因为,外围设备传送两个数据之间的间隔一般总是大于内存存储周期,即使高速I/O设备也是如此。
该方式的时间示意图如下图所示。

2)周期挪用
当I/O设备没有DMA请求时,CPU按程序要求访问内存;一旦I/O设备有DMA请求,则由I/O设备挪用一个或几个内存周期。
I/O设备要求DMA传送时可能遇到两种情况:
(1)此时CPU不需要访内,如CPU正在执行乘法指令。由于乘法指令执行时间较长,此时I/O访内与CPU访内没有冲突,即I/O设备挪用一二个内存周期对CPU执行程序没有任何影响。
(2)I/O设备要求访内时CPU也要求访内,这就产生了访内冲突,在这种情况下I/O设备访内优先,因为I/O访内有时间要求,前一个I/O数据必须在下一个访内请求到来之前存取完毕。显然,在这种情况下I/O设备挪用一二个内存周期,意味着CPU延缓了对指令的执行,或者更明确地说,在CPU执行访内指令的过程中插入DMA请求,挪用了一二个内存周期。
与停止CPU访内的DMA方法比较,周期挪用的方法既实现了I/O传送,又较好地发挥了内存和CPU的效率,是一种广泛采用的方法。但是I/O设备每一次周期挪用都有申请总线控制权、建立总线控制权和归还总线控制权的过程,所以传送一个字对内存来说要占用一个周期,但对DMA控制器来说一般要2—5个内存周期(视逻辑线路的延迟而定)。因此,周期挪用的方法适用于I/O设备读写周期大于内存存储周期的情况。
方式的时间示意图如下图所示。

3)DMA与CPU交替访内
如果CPU的工作周期比内存存取周期长很多,此时采用交替访内的方法可以使DMA传送和CPU同时发挥最高的效率。假设CPU工作周期为1.2μs,内存存取周期小于0.6μs,那么一个CPU周期可分为C1和C2两个分周期,其中C1供DMA控制器访内,C2专供CPU访内。
这种方式不需要总线使用权的申请、建立和归还过程,总线使用权是通过C1和C2分时进行的。CPU和DMA控制器各自有自己的访内地址寄存器、数据寄存器和读/写信号等控制寄存器。在C1周期中,如果DMA控制器有访内请求,可将地址、数据等信号送到总线上。在C2周期中,如CPU有访内请求,同样传送地址、数据等信号。事实上,对于总线,这是用C1,C2控制的一个多路转换器,这种总线控制权的转移几乎不需要什么时间,所以对DMA传送来讲效率是很高的。
这种传送方式又称为“透明的DMA”方式,其来由是这种DMA传送对CPU来说,如同透明的玻璃一般,没有任何感觉或影响。在透明的DMA方式下工作,CPU既不停止主程序的运行,也不进入等待状态,是一种高效率的工作方式。当然,相应的硬件逻辑也就更加复杂。
方式的时间示意图如下图所示。

2、DMA接口的功能
利用DMA方式传送数据时,数据的传输过程完全由DMA接口电路控制,故DMA接口又有DMA控制器之称。DMA接口应具有如下几个功能。
向CPU申请DMA传送。
在CPU允许DMA工作时,处理总线控制权的转交,避免因进入DMA工作而影响CPU正常活动或引起总线竞争。
在DMA期间管理系统总线,控制数据传送。
确定数据传送的起始地址和数据长度,修正数据传送过程中的数据地址和数据长度。
在数据块传送结束时,给出DMA操作完成的信号。
3、DMA接口基本组成
最简单的DMA接口组成原理如下图所示,它由以下几个逻辑部件组成。

1)主存地址寄存器(AR)
AR用于存放主存中需要交换数据的地址。在DMA传送数据前,必须通过程序将数据在主存中的首地址送到主存地址寄存器。在DMA传送过程中,每交换一次数据,将地址寄存器内容加1,直到一批数据传送完毕为止。
2)字计数器(WC)
WC用于记录传送数据的总字数,通常以交换字数的补码值预置。在DMA传送过程中,每传送一个字,字计数器加1,直到计数器为0,即最高位产生进位时,表示该批数据传送完毕(若交换字数以原码值预置,则每传送一个字,字计数器减1,直到计数器为0时,表示该批数据传送结束)。于是DMA接口向CPU发中断请求信号。
3)数据缓冲寄存器(BR)
BR用于暂存每次传送的数据。通常DMA接口与主存之间采用字传送,而DMA与设备之间可能是字节或位传送。因此DMA接口中还可能包括有装配或拆卸字信息的硬件逻辑,如数据移位缓冲寄存器、字节计数器等。
4)DMA控制逻辑
DMA控制逻辑负责管理DMA的传送过程,由控制电路、时序电路及命令状态控制寄存器等组成。每当设备准备好一个数据字(或一个字传送结束),就向DMA接口提出申请(DREQ),DMA控制逻辑便向CPU请求DMA服务,发出总线使用权的请求信号(HRQ)。待收到CPU发出的响应信号HLDA后,DMA控制逻辑便开始负责管理DMA传送的全过程,包括对主存地址寄存器和字计数器的修改、识别总线地址、指定传送类型(输入或输出)以及通知设备已被授予一个DMA周期(DACK)等。
5)中断机构
当字计数器溢出(全“0”)时,表示一批数据交换完毕,由“溢出信号”通过中断机构向CPU提出中断请求,请求CPU作DMA操作的后处理。必须注意,这里的中断与前面章节介绍的I/O中断的技术相同,但中断的目的不同,前面是为了数据的输入或输出,而这里是为了报告一批数据传送结束。它们是I/O系统中不同的中断事件。
6)设备地址寄存器(DAR)
DAR存放I/O设备的设备码或表示设备信息存储区的寻址信息,如磁盘数据所在的区号、盘面号和柱面号。具体内容取决于设备的数据格式和地址的编址方式。
4、DMA的工作过程
1)预处理阶段
测试设备状态;
给DMA控制逻辑指明数据传送方向时输入(写主存)还是输出(读主存);
向DMA控制器的设备地址寄存器中送入设备号,并启动设备;
向主存地址计数器中送入欲交换数据的主存起始地址;
向字计数器中送入欲交换的数据个数。
上述工作由CPU执行几条输入输出指令完成,即程序的初始化阶段。这些工作完成后,CPU继续执行原来的程序,如下图所示。

外部设备准备好发送的数据(输入)或上次接收的数据已处理完毕(输出)时,将通知DMA控制器发出DMA请求,申请主存总线。
2)数据传送
输入操作
①.首先从外部设备读入一个字(设每字16位)到DMA数据缓冲寄存器IODR中(如果设备是面向字节的,一次读入一个字节,需要将两个字节装配成一个字)。
②.外部设备发选通脉冲,使DMA控制器中的DMA请求标志触发器置“1”。
③.DMA控制器向CPU发出总线请求信号(HOLD)。
④.CPU在完成了现行机器周期后,即响应DMA请求,发出总线允许信号(HLDA),并由DMA控制器发出DMA响应信号,使DMA请求标记触发器复位。此时,由DMA控制器接管系统总线。
⑤.将DMA控制器中主存地址寄存器中的主存地址送地址总线,
⑥.将DMA数据缓冲寄存器中的内容送数据总线。
⑦.在读/写控制信号线上发出写命令。
⑧.将DMA地址寄存器的内容加1,从而得到下一个地址,字计数器减1。
⑨.判断字计数器的值是否为“0”。若不为“0”,说明数据块没有传送完毕,返回⑤,传送下一个数据;若为“0”,说明数据块已经传送完毕,则向CPU申请中断处理。
输出操作
①.当DMA数据缓冲寄存器已将输出数据送至I/O设备后,表示数据缓冲寄存器为“空”;
②.外部设备发选通脉冲,使DMA控制器中的DMA请求标志触发器置“1”;
③.DMA控制器向CPU发出总线请求信号(HOLD);
④.CPU在完成了现行机器周期后,即响应DMA请求,发出总线允许信号(HLDA),并由DMA控制器发出DMA响应信号,使DMA请求标记触发器复位。此时,由DMA控制器接管系统总线;
⑤.将DMA控制器中主存地址寄存器中的主存地址送地址总线,在读/写控制信号线上发出读命令;
⑥.主存将相应地址单元的内容通过数据总线读入到DMA数据缓冲寄存器中;
⑦.将DMA数据缓冲寄存器的内容送到输出设备;
⑧.将DMA地址寄存器的内容加1,从而得到下一个地址,字计数器减1;
⑨.判断字计数器的值是否为“0”。若不为“0”,说明数据块没有传送完毕,返回到⑤,传送下一个数据;若为“0”,说明数据块已经传送完毕,则向CPU申请中断处理。
3)传送后处理
当DMA的中断请求得到响应后,CPU停止原程序的执行,转去执行中断服务程序,做一些DMA的结束工作,如上图的后处理部分。这包括:
校验送入主存的数据是否正确。
决定是否继续用DMA传送其他数据块。
测试在传送过程中是否发生错误。
四、互动及练习
本次课采用提问的互动方式:
1、DMA方式能够取代中断方式?
让同学先讨论DMA方式和中断方式的作用和优缺点,然后自己分析谈谈DMA方式能够取代中断方式,通过这个问题让学生清楚虽然DMA方式效率高,但是这两种方式各有用处,不能相互取代。

