2020/3/11第6章I/O接口与中断2020/3/12本章主要内容6.1I/O接口概念6.2I/O端口编址方式6.3CPU与I/O接口之间数据传送方式6.4中断6.58086中断系统2020/3/136.1I/O接口概念2020/3/146.1.1I/O接口的基本功能•为了协调CPU与外设之间的数据读写矛盾,实现CPU和外设之间高效可靠的信息交换,I/O接口应具备以下功能。•1.数据缓冲功能•2.信号转换功能•3.端口选择功能•4.接收和执行CPU命令的功能•5.中断管理功能•6.可编程功能2020/3/156.1.2I/O接口的基本组成•I/O接口的基本结构如下图所示。2020/3/16•1.CPU和I/O设备之间交换的信息有数据信息、状态信息和控制信息•1)数据信息•CPU与外设交换的基本信息是数据信息(data),大致可以分为下面三种类型。•(1)数字量•(2)模拟量•(3)开关量2020/3/17•2)状态信息•状态信息(status)反映的是当前外设所处的工作状态,外设通过I/O接口将状态信息送往CPU,CPU接收到这些信息就可以了解到外设的工作情况,从而准确适时地进行数据的传送。•3)控制信息•控制信息(control)是CPU通过接口传送给外设的,CPU通过发送控制信息来控制外设的暂停,启动等。2020/3/18•2.端口地址译码•地址译码是I/O接口的基本功能之一,微处理器在执行输入/输出指令时需要向地址总线发送外部设备的端口地址,译码电路收到与本接口有关的地址后产生相应的选通信号,对相关端口进行数据、命令或状态的传输,完成一次I/O操作。•3.数据缓冲/锁存器•在CPU与I/O设备之间进行输入/输出操作时,输入需要缓冲,输出需要锁存。2020/3/196.2I/O端口编址方式2020/3/1106.2.1统一编址•这种编址方式又称为存储器映射编址方式,是从存储器空间划出一部分地址给I/O端口,即把每个I/O端口当作一个存储单元,I/O端口与内存单元被安排在同一个地址空间中,CPU与外设的数据交换,相当于对存储器的读/写操作,不设置专门的I/O指令。2020/3/111•使用这种编址方式的优点如下。–(1)可以用访问内存的方式来访问I/O端口。–(2)外设数目或I/O寄存器数目几乎不受限制。–(3)微机系统读写控制逻辑较简单。•使用这种编址方式的缺点如下。–(1)I/O端口占用部分内存空间,减少了内存可用的地址范围,因此对内存容量有影响。–(2)访问I/O端口和访问内存一样,由于访问内存时地址较长,指令的机器码也长,执行时间显然会增加。–(3)从指令上不易区分当前是对内存进行操作还是对外设进行操作。2020/3/1126.2.2独立编址•这种编址方式称为I/O映射编址方式,内存和I/O端口有各自独立的地址空间。•使用这种编址方式的优点如下。•(1)内存地址空间不受I/O端口地址空间影响。•(2)地址译码简单,速度较快。•(3)I/O指令简短,执行速度快。•(4)使用专用I/O命令,与内存访问命令有明显区别,便于理解和检查。2020/3/1136.3CPU与I/O接口之间数据传送方式2020/3/1146.3.1程序控制方式•1.无条件传送方式•在该方式中,外设总被认为已处于准备就绪或准备接收状态,程序不必查询外设的状态,当需要与之交换数据时,直接执行输入、输出指令,就开始发送或接收数据。•2.条件传送方式•条件传送方式也称为程序查询方式,在传送数据之前,CPU要执行查询程序去查询外设的当前状态,只有当外设处于准备就绪(输入设备)或空闲状态(输出设备)时,才执行输入或输出指令进行数据传送,否则,CPU循环等待,直到外设准备就绪为止。2020/3/1156.3.2中断控制方式•中断传送方式的特点是,改CPU的主动查询为被动响应,当输入设备准备好数据或输出设备处于空闲时向CPU发出中断申请信号,请求CPU为它们服务(输出数据或从接口读取数据)。这时,CPU暂时中断当前正在执行的程序(即主程序)转去执行为输入/输出设备服务的中断处理程序,服务完毕,又返回到被中断的程序处继续执行。这样,CPU就不用花大量时间查询外设状态,而使CPU和外设并行工作,只是当外设状态就绪或准备好时,用很短时间去处理一下,处理完毕又继续回到主程序执行,大大提高了CPU的工作效率。2020/3/1166.3.3DMA方式•该方法的基本思路是:外设与内存间的数据传送不经过CPU,传送过程也不需要CPU干预,在外设和内存间开设直接通道,由一个专门的硬件控制电路来直接控制外设与内存间的数据交换,从而提高传送速度和CPU的效率。2020/3/117•1.DMA控制器的基本功能及组成–DMA控制器应具有以下基本功能。•(1)能接收外设的DMA请求,并向CPU发出总线请求,以便取得总线使用权。•(2)能接收CPU的总线允许信号,控制总线。•(3)在获得总线控制权后,能提供访问存储器和I/O端口的地址,并在数据传送过程中能自动修改地址指针,以指向下一个要传送的数据。•(4)在DMA传送期间向存储器和I/O设备发出所需要的控制信号(主要是读/写控制信号)。•(5)能控制数据传送过程的进行和结束,有一个字节计数器以控制传送何时结束。•(6)当DMA传送结束时,能向CPU发DMA结束信号,以便CPU恢复对总线的控制。2020/3/118•根据DMA控制器应具有的基本功能,确定DMA控制器在硬件结构上应该具有以下基本部件。•(1)地址寄存器:接收CPU预置的存储器起始地址,以及在传送过程中自动修改地址,以指出下一个要访问的存储单元。•(2)字节计数器:接收CPU预置的数据传送的总字节数,以及在传送过程中控制传送过程何时结束,该字节计数器应具有自动减1功能。•(3)控制寄存器:接收CPU的命令,决定DMA传送方向及传送方式,是输出(从内存到外设备)还是输入(从外设到内存),是传送一个数据还是一批数据。•(4)状态寄存器:用来反映DMA控制器及外设当前的工作状态。•(5)内部定时与控制逻辑:用来产生一些接口电路内部的控制信号。2020/3/119•2.DMA控制器的工作模式•DMA传送通常用于高速外设与存储器间的大批量数据传送,DMA控制器可以有以下几种工作模式。•1)单字节传送模式•2)成批传送模式•3)请求传送模式•4)级联传送模式2020/3/120•3.DMA操作过程•一个完整的DMA操作过程大致可分三个阶段:准备阶段(初始化)、数据传送阶段和传送结束阶段。准备阶段是DMA控制器接受CPU对其进行初始化,初始化的内容包括设置存储器的地址、传送的数据字节数,决定DMA控制器工作模式和传送方向等的控制字,以及对相关接口电路的初始化设置。传送结束阶段是DMA控制器在传送完成后向CPU发出结束信号,以便CPU撤销总线允许信号,收回总线控制权。2020/3/1216.4中断2020/3/1226.4.1中断的概念与特点•所谓中断,是指对现行程序的“中断”,即指CPU暂时停止现行程序的执行,转去处理突然发生的随机事件,处理完毕后又自动恢复原来程序的执行。•中断方式带有随机性,这是中断区别于其他程序切换过程(如转子与返回)的主要特点。什么时候转子,在程序中是事先安排好了的,而什么时候转去执行中断处理程序则不是由程序预先安排。2020/3/1236.4.2中断源的概念•能够引起中断的事件称为中断源,亦即能够向CPU发出中断请求的中断来源。常见的中断源如下。•(1)I/O设备,例如键盘、打印机等。•(2)故障信号,例如硬件损坏、电源掉电等。•(3)实时时钟,例如外部硬件时钟电路定时到等。•(4)软件中断,如软中断指令、调试指令等。2020/3/124•在微型计算机系统中,中断源有两类,即内部中断和外部中断。•1)内部中断•由处理器内部产生的中断事件。•2)外部中断•由处理器以外的设备产生的中断事件。按照中断请求信号接入引脚的不同,外部中断又可分为可屏蔽中断和非屏蔽中断。2020/3/1256.4.3中断处理过程•一个完整的中断处理过程主要包括三个方面:中断请求、中断承认、中断响应。中断和中断过程如下图所示。2020/3/1266.4.4中断优先级及中断嵌套•1.中断优先级•按照中断源的重要性和实时性要求来安排中断响应的次序,这个中断响应次序就称为中断优先级。•中断优先级的控制原则如下:–(1)同时有多个中断请求时,先响应高优先级中断,再响应低优先级中断。–(2)当CPU执行某个中断服务子程序时,出现新的高优先级中断源请求中断,则暂停正在执行的低优先级中断服务子程序,先去执行高优先级中断服务子程序,高优先级中断服务结束后,再返回到低优先级中断服务程序继续执行。–一般情况下,我们采用软件查询或者专业芯片管理两种方式实现中断优先级控制。2020/3/127•2.中断嵌套•在中断优先级确定的条件下,CPU总是先响应优先级最高的中断请求。当CPU正在执行优先级相对较低的中断服务子程序时,又有优先级更高的中断请求,CPU会将正在处理的低优先级中断暂停,转去处理优先级更高的中断,即去执行高级中断的服务子程序,这就是中断嵌套。2020/3/1286.58086中断系统2020/3/1296.5.1中断源类型•1.内部中断•内部中断是CPU在执行指令过程中产生的中断,如执行软中断指令INT,调试程序时设置的中断,以及CPU在执行常规指令时产生的异常状态。主要包括除法错中断、单步中断、断点中断、溢出中断以及软中断,这些中断源都来自CPU内部。2020/3/130•2.外部中断•外部中断是指外部设备通过CPU引脚接入的中断,8006CPU有两条专门的中断请求信号接入引脚INTR和NMI,所以外部中断包括可屏蔽中断(INTR)和非屏蔽中断(NMI)。2020/3/1316.5.2中断优先级•在8086系统中,内部中断的优先级最高(除单步中断),接下来就是NMI,其次是INTR,优先级最低的是单步中断。8086系统各类中断的优先级如下表所示。中断源优先级除法错、INTn、INTO最高NMI次之INTR较低单步中断最低2020/3/1326.5.3中断向量法•1.中断向量表•CPU响应中断,最终目的是执行中断服务子程序,完成对中断事件的服务。由于中断源和中断类型码一一对应,所以6.5.1节CPU获取中断类型码后,也就确定了中断源。剩下的关键问题就是怎样找到该中断源中断服务子程序的入口地址,从而转向中断服务程序。8086系统采用的方法是为256个中断源的中断服务程序的入口地址建立一张表格——中断向量表。2020/3/133•2.中断向量表初始化•一般8086系统已将专用中断和系统保留中断的中断向量存入中断向量表,但用户定义的中断尚未存入,所以用户在实际使用时如果自定义并使用了其他中断,必须事先将自定义的中断源的中断向量自行存入中断向量表,这就是中断向量表初始化。•中断向量表初始化采用编程方法实现,用户应在主程序的初始化部分编写程序段,将中断向量依次写入中断向量表。2020/3/1346.5.4中断响应过程•8086系统对一个中断的处理过程主要包括中断请求、中断承认、中断响应三个环节。在这个中断处理过程中,不同中断有一些区别。•1.可屏蔽中断(INTR)•这一中断响应过程中,CPU主要完成以下工作。–(1)执行两个中断响应周期。–(2)执行一个总线写周期,将标志寄存器的内容压入堆栈。–(3)执行两个写总线周期。–(4)执行两个读总线周期。–(5)由CS寄存器和IP寄存器得到中断服务子程序的物理地址,CPU自动转向中断服务子程序。–(6)中断服务子程序执行完毕,返回原程序断点处继续执行。2020/3/135•2.非屏蔽中断(NMI)•与可屏蔽中断相比,非屏蔽中断的处理过程主要有以下区别。–(1)在中断请求环节,非屏蔽中断请求信号为上升沿有效。–(2)在中断承认环节,它不受中断允许标志位IF的控制,并且优先级高于INTR。–(3)在中断响应环节,由于非屏蔽中断请求的中断类型码是固定的,