组成原理---输入输出系统 中断

概述

  • 输入输出系统又简称为 I/O 系统,它包括外部设备及其与主机的接口、I/O 控制软件。输入输出系统的主要功能是完成计算机与外部世界的联系,它是人与计算机联系的桥梁。输入输出系统与整机的速度、处理能力、实用性、兼容性等各种性能都有非常密切的关系。

输入输出系统的构成

  • 输入输出系统主要包括硬件和软件两部分,硬件由外部设备和它与主机的接口构成,而I/O 软件则用于协调、控制主机与接口之间进行数据交换。外部设备又简称外设,

  • 外设的地位和作用
    外部设备是计算机系统较重要的组成部分。随着超大规模集成电路技术的发展,主机的造价越来越低,而外部设备的价格在计算机系统中所占的比例越来越高。外部设备在计算机系统中的地位越来越重要了。

    外部设备是人机对话的重要设备:要把数据、程序送入计算机,或要把计算机的计算结果及各种信息送出来,都要通过外部设备来实现。

    外部设备是完成数据媒体变换的设备:在人机对话交换信息时,首先需要将各种信息变成计算机能识别的二进制代码形式,然后再输入计算机;计算机处理的结果也必须变换成人们所熟悉的表示方式,这两种变换只能通过外部设备来实现。

    外部设备是计算机系统软件和信息的驻在地:随着计算机技术的发展,信息量越来越大,不可能全部存放在主存中。以磁盘存储器或光盘存储器为代表的辅助存储器已成为各种信息的驻在地。

    外部设备是计算机在各领域应用的重要工具:随着计算机应用范围的扩大,从早期的数值计算已扩展到文字、表格、图形、图像和语音等非数值信息的处理。

  • 外设的特点
    I/O 设备是计算机系统的重要组成部分,计算机通过它与外部交换信息,完成实际工作任务。 外设的种类繁多,结构、原理各异,有机械式、电子式、电磁式等。同时,各种外设的数据传输速率相差甚大,外设的输入输出信号形式也可能不同,外设的信息传送方式又分为并行和串行传送两种。另外,外设的工作具有一定的独立性,一般它具有自己独立的时序控制逻辑,CPU 不能像访问主存和寄存器那样直接存取。CPU 与外设的数据交换一般采用异步方式。但当外设的速度与 CPU 相当时,则也需要采用同步方式。 因此,与其他计算机部件相比,外设具有工作速度差异大、结构原理差异大、时序独立、异步性明显等特点,处理的信息从数据格式到逻辑时序一般不可能直接与 CPU 兼容。鉴于此,计算机与 I/O 设备间的连接与信息交换不能直接进行,而必须设计一个“接口电路”作为两者之间的桥梁,使 CPU 和外设协调工作,这种 I/O 接口电路又叫“I/O 适配器”(I/O Adapter)。

  • 外设的分类
    按照功能:输入设备用于将各种形式的外部信息转换为计算机所能识别的二进制信息。输出设备用于将计算机中的二进制信息转换为人或其他机器所能识别的信息形式。

    按照外设的工作速度:低速设备、中速设备、高速设备。

    根据外设在计算机系统中所起的作用:人—机交互设备、外存储器设备、通信设备(调制解调器)。

  • 外设的编址方式
    外设的地址实际上是指接口电路中能被 CPU 直接访问的寄存器的地址,又称为端口地址。每个外设可以根据需要占用多个端口地址。

    统一编址(存储器映射方式):这种编址方式,存储器单元与 I/O 端口统一编址,它们共用一个线性地址空间。指令系统中不设置专用的 I/O 指令,用功能很强的访存指令来访问 I/O 端口,通过地址来区分访问的是存储器单元还是 I/O 端口。访存指令功能丰富,便于编程;外设数目或 I/O 寄存器数几乎不受限制;微机的读写控制逻辑较为简单。缺点是I/O 端口占用了有限的存储器空间。

    独立编址(I/O 映射方式):存储器与 I/O 端口分开编址,它们有各自独立的地址空间。指令系统中设置专用的 I/O 指令,用 I/O 指令来访问 I/O 端口,用访存指令来访问存储器,因此,虽然 I/O 端口地址与存储器地址有部分重叠,但可以通过指令区分。 I/O 端口不占用存储器空间;I/O 端口数量不多,占用地址线少,地址译码简单、速度快;专用的 I/O 指令短,执行速度快;程序的可读性强。

外设与 CPU 的连接

组成原理---输入输出系统 中断
外设接口通过总线与 CPU 连接。CPU 访问外设的实质是访问外设接口中的寄存器(端
口)。相比存储器的访问,CPU 访问外设的过程是完全等同的,不同的是所发送的读写信号有区别。CPU 首先将要访问的外设端口地址送上地址总线 AB,然后通过控制总线发送 I/O(而非存储器)的读写信号,外设接口将对端口地址进行译码,若属于自己的端口地址范围,则可以启动外设的读写操作,否则不动作。在外设中,通常包含有外设控制器,它接收接口对外设发送的操作命令,从而控制外设的机械、机电或者电磁装置动作。

I/O 指令格式

  • 在 I/O 设备统一编址时,I/O 指令经指令译码器译码后,由控制器发送出 I/O 读写控制信号到外设;但是在 I/O 设备统一编址的情况下,则只有当访存指令中的地址译码结果为 I/O地址范围时,由控制器发送 I/O 读写控制信号。通常,专用 I/O 指令格式较为固定和单一。 组成原理---输入输出系统 中断

  • 操作码用于区分其他指令和 I/O 指令;命令码用于区分 I/O 操作的种类,地址码则指明要访问的外设端口地址以及 CPU 寄存器号。

  • 80X86 系列 CPU 的 I/O 指令只有两条:IN 和OUT,IN 指令将外设端口中的数据读入累加寄存器AL(AX),OUT 指令将累加寄存器AL(AX)的数据写入外设端口。它们的汇编助记符及格式如下:

    端口地址为 8 位
    IN AL/AX,port;输入指令
    OUT port,AL/AX;输出指令
    Port 为 8 位的端口地址(0~255);

    端口地址为 16 位
    MOV DX,port
    IN AL/AX,DX;输入指令
    OUT DX,AL/AX;输出指令
    DX 内为 16 位的端口地址 port。

    80286 以上的 CPU 支持 I/O 端口与内存直接交换数据:
    输入操作:
    MOV DX,Port
    LES DI,Buffer_in
    INSB;(将 DX 所指向的端口地址内的数据输入到由ES:DI 所指向的内存单元,传送一个 8 位的数据)
    INSW;同上,传送一个 16 位的数据
    输出操作:
    MOV DX,Port
    LDS SI,Buffer_out
    OUTSB;(将由DS: SI所指向的内存单元内的数据输出到DX所指向的端口地址,传送一个 8 位的数据)
    OUTSW;同上,传送一个 16 位的数据

输入输出接口

I/O 接口的功能

  • 所谓接口是指不同部件之间的连接部分,软件的接口又叫协议。而 I/O 接口则是指*处理器与 I/O 设备及存储器之间的用于交换信息的连接电路。 在 CPU 与外设之间设置接口的原因主要在于外部设备工作的异步性、CPU 与外设速度上的差异、CPU 与外设信号线及数据格式不同。有利于提高 CPU 的工作效率,也便于便于外设自身的多样化发展。

  • 功能:

    实现数据缓冲:接口中设置数据缓冲寄存器或锁存器,以弥补主机高速与外设低速的差异,避免因速度不一致而造成的数据丢失。

    执行 CPU 的命令:CPU对外设的各种命令通常是以控制代码形式发送到接口电路,暂存于命令寄存器,再经过接口电路进行译码后,形成一系列控制信号去控制外设。

    返回外设的状态:为了便于联络,接口电路还要提供数据寄存器“空”、“满”、“准备好”、“忙”、“闲”等状态信号,并在 CPU 查询时,反馈这些状态。

    设备选择:当 CPU 访问外设时,在地址总线上给出外设端口地址,外设接口必须具有识别自我的能力,只有当 CPU 给出的端口地址处于自己的地址范围内(即被选中)时,接口才能与 CPU交换信息,否则不允许有任何操作。

    实现数据格式的转换:CPU 与外设接口交换数据时,传送的是并行数据,但有的外设只能收发串行数据,因此,作为 CPU 与外设的桥梁,接口就应该具有数据并串和串并的变换功能。为此,在接口中设置移位寄存器。

    实现信号的转换:由于外设所提供的状态信号和它所需要的控制信号往往同计算机的总线信号不兼容,主要表现在功能定义、逻辑关系、电平高低、工作时序等方面。

    中断管理功能:当外设迫切需要 CPU 的服务时,特别在出现故障需要 CPU 即刻处理时,就会要求在接口中设置中断控制器,实现 CPU 与外设的中断传送,这样既增加了计算机系统对外界的响应速度,又使 CPU 与外设并行工作,大大提高了 CPU 的工作效率。

  • 接口芯片绝大多数是可编程的,这样可以在不改动硬件的情况下,只修改驱动程序即可改变和选择接口的工作方式和功能,大大增加了接口的灵活性和可扩充性,使接口向智能化发展。

  • 上述各种功能并非每种接口都具备,不同配置和不同用途的输入输出系统,其接口功能不尽相同,接口电路的复杂程度也大不一样。

I/O 接口的组成

组成原理---输入输出系统 中断

  • 基本电路:基本电路主要包括寄存器及其控制逻辑。接口寄存器又称为端口,包括命令寄存器(控制寄存器,控制口)及其译码器、数据缓冲寄存器(数据口)、状态寄存器(状态口),分别用以保存 CPU 的命令、数据信息和外设的状态。 接口的控制逻辑则用以执行 CPU 命令、返回状态、传送数据,是接口中的控制核心。它根据 CPU 送来的 I/O 读写控制信号和端口地址译码电路的译码结果,来决定 CPU 访问的是哪一个寄存器,并控制外设。 端口视功能的不同,可以只读、只写或可读可写。一个端口可以写入或读出多种信息。端口地址是对接口中端口(寄存器)的编码,但是与存储器地址不同,端口的个数与接口中寄存器的个数不一定相等。可以一个寄存器拥有一个端口地址,也可以若干个寄存器拥有一个端口地址。
  • 端口地址译码电路:对地址总线上的外设端口地址进行译码,用以决定是否选中设备自身。若没有被选中,各个寄存器不会进行数据的传送,而接口与外设之间的各种信号(数据、状态、控制信息)也不会有效。
  • 供选电路:由于接口的功能和结构有很大的区别,因此各接口电路中可能选择使用中断控制逻辑、定时器、计数器、移位器等器件。

主机与外设交换信息的方式

  • 计算机系统的基本功能之一是能够与其它的外部设备交换信息。但是由于这些设备具有各自不同的组成的结构和工作原理,因此,与*处理机的连接方式也各不相同。也

程序查询方式

组成原理---输入输出系统 中断

  • 在程序查询方式中,CPU 和外设(接口)之间的数据传送完全靠 CPU 执行计算机查询程序来实现。
  • 服务单个设备的程序查询方式的控制流程。在程序中,CPU 首先查询外设是否准备好数据交换(发送或者接收),若准备好,则在 CPU和外设之间传送一个数据,否则,CPU 循环测试与等待,直至外设准备好。 读程序查询方式是一种天然的同步控制机构,由于总是 CPU 主动,对于单个设备,所有I/O 传送都与程序的执行严格同步,因此能很好地协调 CPU 与外设之间的工作,数据传送可靠。程序查询方式的接口比较简单,往往不需要增加额外的硬件电路,易于实现。
  • 当系统中有多个外部设备时,CPU 可以使用轮询方式依次为各个外部设备服务,此时,轮询的顺序规定了 CPU 响应外设传送请求的优先级。如果 I/O处理的的实时性要求很高,或者 CPU 的任务很繁忙,则不宜采用轮询方式。
  • 查询方式的优点是 CPU 的操作和外围设备的操作能够同步,而且硬件电路比较简单,易于实现。但外部设备动作很慢,大量的时间浪费在查询状态和等待外设准备数据上,降低了 CPU 效率;并且对于多个外设要按一定的查询顺序执行外设的传送操作,会造成实时性差等问题。因此,一般应用于简单控制场合以及单片机中。

程序中断方式

  • 采用程序中断方式来控制 CPU 与外设交换数据时,无需反复测试外设的状态。CPU 首先在程序中启动外设工作,然后继续执行自身程序(与交换数据无关)。当外设准备好数据时,再以中断请求的方式主动通知 CPU。当 CPU 执行完当前指令后,响应外设的中断请求:CPU 中断了现行程序,继而转去执行特定的处理程序(中断服务程序)。在中断服务程序中,CPU 与外设交换一个数据。当中断中断服务程序执行完毕后,CPU 又返回到它原来的任务,并从它停止的地方开始执行程序。
  • 虽然外部设备工作速度比较低,但是 CPU在外设准备数据时,仍然可以运行其他程序,不仅使 CPU 与外设并行工作,而且节省了设备状态查询的时间,提高了 CPU 的效率。适合计算机工作量十分饱满,而 I/O 处理的实时性要求又很高的系统。但是,这种控制方式需要一系列中断逻辑电路支持,所以它的硬件比较复杂。另外,中断方式是一种异步控制机构,中断请求信号的出现是完全随机的,在主程序的任意两条指令之间,中断请求都可能插入执行一段完全不同的、甚至与它们相冲突的中断子程序,使整个程序执行流程无法预料,因此其软件开发调试比查询传送方式复杂和困难。
  • 可以看出,程序中断方式在外设准备数据时,CPU 与外设并行工作,并且 CPU 可以同时被多个外设占用,是管理 I/O 操作的一个比较有效的方法。它的硬件结构相对复杂一些,时间开销也较大。

直接存储器访问(DMA)方式

  • 中断传送是由 CPU 通过程序来实现的,每处理一次 I/O 操作,都要执行中断服务程序,经过保护现场、断点保存、数据传送和现场恢复、中断返回等一系列操作,这样一次中断至少需要执行十几条指令,时间开销很大。对于一些高速的外设或者块设备(如磁盘),中断次数过于频繁,不仅影响传送速度,而且耗费大量 CPU 的时间。
  • 直接存储器访问(DMA ,Direct Memory Access)方式是一种完全由硬件执行 I/O 交换的工作方式,可使数据的传送不经过 CPU,由 DMA 控制器来实现内存与外设或外设与外设之间的直接快速传送。DMA 方式将输入输出过程中,与内存交换数据的操作交由DMA 控制器来控制,进一步提高了 CPU 的效率。 在查询和中断方式下,数据传送过程中的一些操作是由软件控制相应的的指令实现的。在 DMA 方式下,这些操作都由 DMA 控制器的硬件实现,因此传送速率很高。它要求设置 DMA 控制器,硬件开销大,结构复杂,适合高速大批量的数据传送。
  • DMA 方式的工作过程分三个阶段:首先是初始化阶段,由 CPU 根据 I/O 传送要求,初始化 DMA 控制器,设置传送的方向、主存的起始地址和传送的数据字节数。第二阶段是数据传送阶段,当外设准备好数据后,向 DMA 控制器发 DMA 请求信号,DMA 控制器再向CPU 申请占用总线,若 CPU 响应了总线请求,则释放总线控制权,此时,可以在主存和外设之间直接通过总线进行数据交换,无需经过 CPU 控制。每传送一个数据,DMA 控制器的字节计数器减 1,如此重复传送,直至为 0。第三阶段是传送结束阶段,当 CPU 规定字节数的数据传送完毕后,DMA 控制器通知 CPU,CPU 进行收尾,若出错,则需重传。

通道与输入输出处理机方式

  • DMA 控制器只能实现对数据输入/输出传送的控制,而对输入/输出设备的管理和其他操作,仍需由 CPU 来完成。
  • CPU 将部分权力下放给通道。通道是一个具有特殊功能的处理器,它可以实现对外围设备的统一管理和外围设备与内存之间的数据传送。通道能独立地执行用通道指令编写的输入输出控制程序,产生相应的控制信号送给由它管辖的设备控制器,继而完成复杂的输入输出过程。具有通道的输入输出系统,大大提高了 CPU 的工作效率,但其硬件更为复杂。
  • 输入输出处理机(IOP)通常称作外围处理机(PPU),它是通道方式的进一步发展。这种 PPU 基本上独立于主机工作,它的结构更接近一般处理机,甚至就是微小型计算机。 在 I/O 处理机方式中,I/O 处理机几乎接管了原来由 CPU 承担的控制输入/输出操作及输入/输出信息的全部功能。有自己的指令系统,能够直接存取系统主存储器,也能独立地执行程序,能对外设进行控制、对输入/输出过程进行管理,并能完成字与字之间的装配和拆卸、码制的转换、数据块的错误检测和纠错,以及格式变换等操作。
  • I/O 处理机完成 I/O 操作和预处理后,再以查询或中断方式与 CPU 交换数据,向 CPU 报告外设和外设控制器的状态,对状态进行分析,并对输入/输出系统出现的各种情况进行处理。为了使 CPU 的操作与输入/输出操作并行进行,必须使外设在任何时刻都能独立地工作,并且要让外设工作所需要的各种控制命令和定时信号与 CPU无关,由外设控制器自动地独立形成。
  • 输入输出处理机通常应用于中、大型计算机中。在一些系统中,设置了多台 IOP,分别承担 I/O 控制、通信、维护诊断等任务。从某种意义上说,这种系统已变成分布式的多机系统。 实际中也不一定将全部 I/O 设备都交由专用 I/O 处理器去控制,而可以将高速 I/O 设备和低速 I/O 设备分开来。专用处理器专门负责高速 I/O 设备,完成实时 I/O。

中断系统

  • 中断系统是计算机中实现中断功能的软、硬件总称。一般在 CPU 中配置中断机构,在外设接口中配置中断控制器,在软件上设计相应的中断初始化程序和中断服务程序。

中断的基本概念

  • 在 CPU 执行程序的过程中,由于某种事件发生,CPU 暂时停止正在执行的程序而转向对所发生的事件进行处理,当对事件的处理结束后又能回到原来中止的地方,接着中止前的状态继续执行原来的程序,这一过程称为中断。

  • 中断源的分类
    所谓中断源,是指由于某种原因引起 CPU 中断的事件或设备。硬中断是指由外部设备和其他 CPU 外部事件引起的中断,因此又叫外中断。外中断一般通过 CPU 的中断请求引脚引入。软中断是由指 CPU 内部的指令或程序执行中的突发事件所引起的中断,又叫内中断。

  • 在很多中断系统中,对所有的中断源编码,为其分配一个惟一的代号,称为中断类型号。中断类型号用于寻找中断服务程序的入口地址(中断向量),以实现程序转移。

  • 中断过程
    组成原理---输入输出系统 中断
    中断申请:对于外中断,外设或其他中断源通过CPU的中断请求引脚向CPU发中断请求信号,CPU在每条指令执行完后,监测是否有中断请求,有效则转入中断响应阶段。对于内中断,则无需中断请求,直接可以根据中断类型号转入相应的中断服务程序。 在从中断源产生中断信号,到 CPU 接收到中断请求并准备响应的过程中,中断系统需解决的主要问题是: 中断屏蔽:对那些 CPU 目前不准备响应的中断源,CPU 如何禁止它们产生中断请求? 中断请求信号的传递:当系统中有多个中断源时,各中断源如何向 CPU 提出中断
    请求? CPU 对中断请求信号的监测:CPU 如何监测到有中断请求?

    中断响应:CPU 首先通过硬件保存程序断点(PC)及标志寄存器,以便中断返回,由于该过程对软件设计者是透明的,因此又称为 CPU 执行了中断隐指令。然后进入中断响应周期,或者通过向量方式或者通过软件查询方式得到中断服务程序入口,并置入 PC。 在中断响应过程中,中断系统需解决的主要问题是: 中断优先级的判别,中断源的识别:CPU 如何知道当前响应的是哪个中断源?即转入哪个中断源的中断服务程序入口?

    中断服务:CPU 转入中断服务程序并执行,进行外设所需的数据交换。中断服务程序中,首先保护现场,将有关寄存器的内容压栈,然后进行 I/O 操作,实现数据传送。最后,恢复现场,并执行中断返回指令。 在中断服务过程中,中断系统需解决的主要问题是: 中断嵌套。

    中断返回:即恢复断点及标志。中断返回指令的功能,就是将中断隐指令保存的程序断点和标志读出并送入 PC 和标志寄存器,从而回到 CPU 原来的程序断点处继续执行。

  • 中断的作用
    实现 CPU 和多台 I/O 设备并行工作。

    具有处理应急事件的能力。

    进行实时处理:指在某个事件出现的规定时间内及时处理,而不是集中起来批处理。

    实现人机通信。

    实现多道程序运行和分时操作。

    实现应用程序和操作系统(管态程序)的联系:可以在用户程序中安排一条“Trap”指令(陷阱指令)进入操作系统,以方便调试或使用系统功能,其中断处理过程与其他中断类似。

    实现多机系统中各处理机间的联系:在多机系统中,各处理机之间的信息交流和任务切换都是通过中断系统来实现的。

  • 只要在响应时间比事件发生之间的平均时间短得多的情况下,采用中断技术可以大大提高主机的工作效率。

中断请求与判优

  • 中断请求信号的产生与监测:一般情况下,计算机都有多个中断源。由于每个中断源向 CPU 发出中断请求是随机的,为了记录中断事件的发生,一般是为每个中断源设置一个触发器,称为中断请求触发器INTR。当某个中断源有中断请求时,其相应的中断请求触发器置成“1”状态(INTRi=1), 以表明中断源向 CPU 发出中断请求信号。中断请求信号锁存在中断请求触发器中,必须保持到 CPU 响应这个中断请求后,才可以将其清除。 由多个中断请求触发器构成一个中断请求寄存器 IRR,该寄存器的每一位对应一种中断源。中断寄存器的内容称为中断字,中断字中为“1”的位表示对应的中断源存在中断请求。

  • 由于中断的发生是随机的,必须提供一种手段使 CPU 监测随时可能发生的中断。一般,CPU 在每条指令执行完毕后,通过检测 CPU 的中断请求引脚是否有效来达到监测目的。 大多数 CPU 具有若干个中断请求引脚(可屏蔽中断和不可屏蔽中断),用以监测是否有中断发生。

  • 中断屏蔽:中断屏蔽技术能够使得CPU禁止或允许某些中断源的中断请求。通常,在中断系统中设置了一个可以被 CPU 指令访问的中断使能触发器 IE。可以通过开中断指令控制开放中断(IE=1),即 CPU 可以响应中断;通过关中断指令关闭中断(IE=0),即 CPU 禁止响应任何中断。

    实际上在大部分中断系统中,对应每一个中断源都设置一个中断屏蔽触发器 INTMi, 以实现对单个中断源的屏蔽控制。将中断系统中的所有中断源的屏蔽触发器放在一起,形成一个寄存器,用一个地址对其寻址,称为屏蔽寄存器 IMR。外部中断产生后,首先经过屏蔽寄存器屏蔽,然后送入硬件优先级排队电路判优,最后送到 CPU 的中断引脚。CPU 可以通过指令向该屏蔽寄存器写入屏蔽字,以开放或者屏蔽某一个或者某一些中断源。在多重中断中,还可以使用屏蔽技术实现动态改变中断优先级。
    组成原理---输入输出系统 中断

  • 中断请求信号的传递
    组成原理---输入输出系统 中断
    公共请求线:各中断源共用一根公共请求线,当 CPU 接到中断请求后,必须通过软件或硬件的方法来查询是哪个设备提出的中断请求,然后再找出中断服务程序的入口地址。这种方式的特点是在负载允许的情况下,中断源的数目可随意扩充。

    独立请求线 独立请求线方式中,各个中断源单独设置中断请求线,将中断请求直接送往 CPU。这种方式的特点是 CPU 接到中断请求的同时,也就知道了中断源和中断服务程序的入口地址,便于实现向量中断,而且提高了中断的响应速度。但其硬件代价较大,且 CPU 所能连接的中断请求线数目有限,中断源难以扩充。

    二维结构:通常,中断源的数目都大于中断输入线的数目。为此,将中断请求线连成二维结构。这种方式中,同一优先级别的若干中断源共享一条中断输入线。当 CPU接到中断请求信号时,仍然需要进行查询,以识别中断源,但只需对共享一条中断请求线上的几个设备进行查询,不同请求线上的中断源优先级别不同。适合于管理数目较多的中断源且具有较快的响应速度。

  • 中断请求的排队判优
    当某个时刻有多个中断源同时提出中断请求时,通常,需要把全部中断源按中断性质和处理的轻重缓急分配优先级并进行排队。确定中断优先级的原则是:对那些—旦提出请求需要立刻响应处理,否则就会造成严重后果的中断源,规定最高的优先级,而对那些可以延迟响应和处理的中断源,规定较低的优先级。一般,把硬件故障引起的中断优先级定为最高,其次是软件故障中断和 I/O 中断。 每个中断源均有一个为其服务的中断服务程序。每个中断服务程序都有与之对应的优先级别。另外,CPU 正在执行的程序也有优先级;只有当某个中断源的优先级高于 CPU 中正在执行的程序的优先级时,才能中止 CPU 正在执行的程序。在一些计算机的程序状态字寄存器中就设置有优先级字段。

    软件查询
    所谓软件查询法就是用程序来判断优先级,这是最简单的中断判优方法。软件查询法用于一根公共请求线的情况,当存在中断请求时,通过程序查询连接在该中断请求线上的每一个设备,根据其查询的先后次序确定其优先级,查询程序逐次检测中断请求寄存器的各位状态,最先检测的中断源具有最高的优先级。显然,软件查询是与中断源的识别结合在一起的.当检测到申请中断的设备时,也就找到了中断源,便转到相应的中断服务程序。 必须指出,软件查询中断与程序传送方式的等待循环“查询”是不同的。对于后者,CPU 要花费很多时间不断地要查询设备是否“准备好”信号进行数据交换,查询所需要的时间,取决于设备的工作速度。而中断查询是一种中断处理方式,在设备未提出中断请求时,CPU 照常执行主程序;只有在接收到中断请求后,CPU 才去“查询”它们,以寻找申请中断的设备。 可以灵活地修改中断源的优先级别,并且除了中断请求寄存器外,无需额外的硬件电路,实现简单。查询、判优完全靠程序实现,需要占用 CPU时间,同时中断响应较慢,优先级较低的设备被响应的等待时间也较长。
    组成原理---输入输出系统 中断

    硬件排队电路
    同特点是优先级别高的中断请求将自动*优先级别低的中断请求的处理。硬件排队电路一旦设计连接好之后,将无法改变其优先级别。
    串行排队链(菊花链硬件查询线路)与向量中断:串行排队链判优电路,适用于公共请求线传送方式。当接在一条公共中断请求线上的一个或几个设备提出中断请求时,通过这根请求线 INTR送到 CPU。CPU 一旦条件允许响应,将发出中断响应信号INTA,它串行地依次连接所有中断源。若某个设备没有中断请求,它就将中断响应信号INTA传给下一设备;若某设备有中断请求情号,它就*INTA,不再往下传送,同时产生该设备的中断请求响应信号 INTAi,用它选通该设备的中断向量编码器,将中断向量或者中断向量地址送上 CPU 数据总线,供CPU 读取。CPU 依据中断向量地址从相应的中断向量单元取出中断服务程序的入口地址,从而转入执行相应的中断服务程序。 适用于向量中断方式,中断响应信号INTA逐级传送,电路中距离 CPU 最近的(电气上的信号传递顺序)中断源优先级最高。这种方法实现时电路较简单,但优先级固定,取决于固定的硬件连接,不够灵活,不易于改变或调整优先级。
    组成原理---输入输出系统 中断

    独立请求优先级排队电路:在独立请求的多线方式下,对各个中断源的中断请求信号 INTRi进行串行排队,只把目前申请中断的中断源中优先级最高的 INTRi 信号送至 CPU,即级别高的中断源*级别低的中断源的 INTR 信号,从而构成了独立请求优先级排队电路,中断源 1 的优先级最高,它一旦有中断请求(INTR1’=1),则将屏蔽其他 所有的中断源的中断请求信号;当中断源 1 没有中断请求(INTR1’=0)时,中断源 2 的中 断请求信号 INTR2’才能送到 CPU。在这种判优电路中,任何时刻下 CPU 至多只有一个中断请求线有效,此时,该请求线上所接的中断源优先级最高。链路上离 CPU 最近的中断源,其优先级最高。
    组成原理---输入输出系统 中断
    二维结构优先排队判优电路:对于二维结构的情况,可以用多线请求与菊花链响应相结合来实现。在这种结构中,把全部外中断源按优先级分成几类,每一类用一条中断请求线,各类之间的优先级可采用多线请求的串行排队判优电路实现;同一条中断请求线上的各中断源可采用单线请求的串行排队判优电路实现,按它们距离 CPU 的远近判定它的优先级。各请求线的优先级别,被称为主优先级,同一条请求线上各中断源的优先级别,被称为次优先级。CPU 在处理中断时,首先比较有中断请求的中断线和正在运行的程序的优先级,如果中断线优先级高于正在运行的程序,则 CPU 响应该中断线,发送相应的INTA信号给这条中断线的菊花链判优电路,进行次优先级比较,响应这根中断线上最高优先级的中断源。
    组成原理---输入输出系统 中断

中断响应

  • CPU 响应中断的条件
    如果不考虑更高级的请求(如 DMA 请求),CPU 响应中断的条件是: CPU 的中断使能触发器开放(IE=1,允许中断); 在规定的时间内,CPU 的中断请求引脚有效; 该中断未被屏蔽; 本条指令执行完; 对于某个中断源来说,若要使得它的中断请求得到 CPU 的响应,则在满足以上条件的基础上,还必须保证:该中断源的中断请求没有被 CPU 屏蔽,且优先级最高,且高于 CPU现行程序。

  • CPU 中断响应的过程
    CPU 在执行现行指令的最后一个机器周期的最后一个时钟周期时,采样中断输入引脚,若发现中断请求有效,在下一个机器周期进入中断响应周期,以响应中断。 在中断响应周期,CPU 执行中断隐指令。

    关中断:当 CPU 响应中断后,立即自动关中断(把内部的中断使能触发器 IE 清零),禁止接收新的中断,以保证接下来中断隐指令操作不被打断。

    保存断点:为了在中断服务程序执行完毕后,能够正确地返回到原来主程序被中断的断点处继续执行,必须把断点保存起来。一是 PC 的值,指向下条指令的地址,即中断返回后要执行的指令;二是程序状态字 PSW,记录中断发生时的程序“现场”,譬如进位、溢出、符号等运算标志位。断点通常保存在堆栈中,有些计算机中将断点保存在特殊的中断返回寄存器中。

    识别中断源,转入服务程序入口地址:中断源识别的目的是形成该中断源的中断服务程序的入口地址,以便 CPU 将此地址置入 PC 中,实现程序转移。向量中断:在向量中断中,中断服务程序入口地址被称为中断向量。通常将各中断源的中断向量存放在内存一片连续的单元中,形成一张中断向量表,表的内容是相应的中断服务程序入口地址,存放中断向量的单元地址称为中断向量地址,简称为向量地址。 当 CPU 响应中断时,由硬件(外设接口或者中断控制器)自动产生一个指定的地址(向量地址)或者代码(中断类型号),它们与该中断源的中断向量有一一对应关系。由向量地址或中断类型号指出每个中断源设备的中断向量(中断服务程序入口地址),这种使用向量识别中断源的中断系统称为向量中断。 CPU 在中断响应周期通过中断响应信号INTA去读取向量地址,之后能根据该地址从中断向量表读出中断服务程序的入口地址。 向量中断的好处是中断服务程序可放在内存任何位置。中断服务程序可随意修改,只要将中断服务程序首地址写入(更新)向量表就可以了,而不必担心存储空间的冲突问题。 软件查询:由 CPU 执行一个公共的中断处理程序,逐个询问外设接口有否发出中断请求(测试中断请求触发器),若有中断请求,则转入其中断服务程序的入口开始执行。

中断服务与返回

组成原理---输入输出系统 中断

  • 中断处理是通过执行中断服务程序完成的,中断服务程序是预先编好存放于内存固定位
    置的一段程序。

  • 中断服务程序

    预处理部分:保护现场是将在中断处理程序的过程中用到的一些通用寄存器进栈保护,待中断处理结束后再将之恢复。在中断处理过程中,断点(PC 的值,PSW 的值)是任何中断处理都必须保护的重要“现场”,所以放在“中断响应周期”中由硬件完成,以提高中断响应的速度。程序要保护的寄存器只是中断处理程序中用到的寄存器,不同的中断处理程序使用的寄存器名称不同,个数也不等,因而保护的寄存器往往放在中断处理程序中由软件完成。 因为中断隐指令中,由硬件关闭了中断使能,为了在中断处理的过程中允许中断嵌套,需要软件开启中断使能。而通过保存旧屏蔽字和设置新屏蔽字,可以更改中断的优先级。若不允许中断嵌套,则无需开中断和交换屏蔽字。

    中断服务:中断服务是中断处理程序的核心内容,随中断源的不同而不同。如

    恢复部分:恢复现场及恢复屏蔽字是在中断处理程序即将结束前要恢复通用寄存器内容及原来的屏蔽字,关中断则是为了在恢复现场的重要时间内不允许中断。

    中断返回:中断返回是由中断服务程序的最后一条指令(IRET)实现的,该指令的功能是将中断响应周期中保存在堆栈中的断点恢复,然后开中断,同时,清除了正在服务的中断的一些状态。这样就从中断服务程序转回到了原来被中断的程序继续执行。

  • 中断服务程序与子程序的区别
    子程序的执行是由程序员事先安排好的(由一条调用子程序指令转入),而中断服务程序的执行则是由随机的中断事件引起的; 子程序的执行受到主程序或其上层程序的控制,而中断服务程序一般与被中断的现行程序毫无关系; 不存在同时调用多个子程序的倩况,而有可能发生多台 I/O 设备同时请求 CPU 为自己服务的情况。

  • 中断嵌套
    中断嵌套是指 CPU 在执行某个中断服务程序的过程中允许再响应更高级别的中断请求,也称为多重中断。如果正在执行的中断服务程序中禁止再响应其他中断请求,就称为单
    重中断。引入中断嵌套之后,不但当多个中断请求同时到达时能先为优先级更高的请求服务,而且当优先级高的中断请求到达得晚,也能尽快得到优先服务。 中断嵌套技术的实现,关键是在中断处理程序中必须适时开放中断(STI 指令),并且使用堆栈的“先进后出”特性保证中断的逐级返回。
    组成原理---输入输出系统 中断

  • 利用中断屏蔽技术修改中断优先级
    优先级的确定一般由硬件排队电路决定,不便于改动。但是利用中断屏蔽技术可以巧妙地改变各中断源的优先级,使计算机适应各种场合的需要。通常把屏蔽字看成软件排队,通过程序修改屏蔽字的方法可以方便地改变中断源得到CPU 服务的先后次序,实现灵活的优先级排队。中断响应的次序与中断服务的次序可以不一致,中断响应的次序是由排队判优电路确定的固定次序,而中断处理的次序可以与之保持—致,也可靠修改屏蔽字来灵活地改变。