中断

中断的基本流程

Q: 中断的基本流程是什么?
A: 1. 中断源向 CPU 发送中断请求信号。
2. CPU 判断自身状态,若为开中断则响应中断。
3. 若有多条中断信号,则进行中断判优。
4. 通过中断隐指令将 CPU 的指令转移到指定的中断服务程序
202408121640040.webp

Q: CPU 如何判断自身是否处于开中断状态?
A: 通过 PSW 状态寄存器中的 IF 字段判断,IF=1 表示开中断,IF=0 表示关中断。
例如,在 8086 芯片中,PSW 寄存器的 IF 位用于控制中断。
202408121640041.webp

中断的分类

Q: 中断如何分类?
A: 中断可以分为外中断(由 CPU 外部的事件引起)和内中断(由 CPU 内部事件引起)。

Q: 外中断和内中断分别有哪些例子?
A: 外中断例如 I/O 设备请求、定时器溢出、键盘输入等;
内中断例如除法溢出、非法指令、内存访问越界等。

Q: 外中断如何分类?
A: 外中断分为可屏蔽中断非屏蔽中断

Q: 可屏蔽中断和非屏蔽中断的区别是什么?
A: 可屏蔽中断是指 CPU 可以通过关中断来阻止其响应的中断,例如 I/O 设备发来的请求;
非屏蔽中断是指即使在关中断状态下 CPU 也必须响应的中断,例如掉电中断、强行关机等紧急事件。

关中断的作用

Q: 关中断有什么作用?
A: 关中断可以辅助实现原子操作,保证一段程序的原子性,即要么全部执行,要么都不执行。

Q: 如何利用关中断实现原子操作?
A: 在需要保证原子性的程序段前后分别插入关中断指令和开中断指令,使得该程序段在执行过程中不会被中断。
例如,在数据库中,一些原子性操作就与关中断有关,可以保证事务的 ACID 特性。

中断请求标记

Q: CPU 如何判断中断请求来自哪个 I/O 设备?
A: 通过中断请求标记寄存器判断。
该寄存器中每个 I/O 设备对应一位,若该位为 1 则表示该设备发起了中断请求。
202408121640042.webp

Q: CPU 响应中断需要满足哪些条件?
A: 1. 中断源发出中断请求。
2. CPU 允许中断(开中断)。
3. 一条指令执行完毕。
202408121640044.webp

中断判优

Q: 中断判优的目的是什么?
A: 当有多个中断源同时发出中断请求时,选择优先级最高的中断源进行处理。

Q: 中断判优的实现方式有哪些?
A: 硬件判优和软件判优。
202408121640047.webp
202408121640048.webp

Q: 硬件判优是如何实现的?
A: 通过硬件电路,例如优先编码器,将多个中断源的请求信号进行编码,输出优先级最高的中断源。
例如,将多个中断源的请求信号连接到优先编码器的输入端,优先编码器的输出端表示优先级最高的中断源。
202408121640047.webp
例如下面分别输入 1111、那么最终输出的则是 1000,因为左边的优先级更高。

Q: 软件判优是如何实现的?
A: 通过软件程序查询中断请求标记寄存器,按照预定的优先级顺序依次判断每个中断源是否有中断请求。
例如,可以编写一个程序,依次查询中断请求标记寄存器中的每一位,判断是否有中断请求,并根据优先级顺序进行处理。
202408121640048.webp

中断优先级设置

Q: 中断优先级设置有哪些原则?
A: 1. 硬件中断优先于软件中断。
2. 非屏蔽中断优先于可屏蔽中断。
3. DMA 请求优先于 I/O 设备传输的中断请求。
4. 高速设备优先于低速设备。
5. 输入设备优先于输出设备。
6. 实时设备优先于普通设备。
例如,高速设备优先于低速设备,因为高速设备的处理速度快,如果延迟处理可能会导致数据丢失或效率降低。

中断隐指令

Q:如何找到对应中断程序的入口地址
A:可以交给中断隐指令。

Q: 中断隐指令在中断处理过程中执行哪些操作?
A: 1. 关中断。
2. 保存断点,即将当前程序计数器 PC 的值保存起来。
3. 引出中断服务程序
202408121640050.webp

Q: 如何引出中断服务程序
A: 通过硬件向量法软件查询法确定中断向量地址,再根据中断向量地址跳转到中断服务程序的入口地址。
202408121640051.webp

Q: 什么是硬件向量法?
A: 通过中断向量地址形成部件,根据中断请求标记寄存器中的值,确定中断向量地址。
中断向量地址形成部件是一个硬件电路,它可以将中断请求信号转换为中断向量地址。
202408121640052.webp

Q: 什么是软件查询法?
A: 通过查询中断向量表,根据中断请求标记寄存器中的值,确定中断向量地址
中断向量表是一个存储着中断向量地址的表格,每个中断源对应一个中断向量地址。

Q: 什么是中断向量?
A: 中断向量是指向中断服务程序的指针

Q: 什么是向量地址?
A: 向量地址是指向中断向量的指针,实际存储的是中断服务程序入口地址。
202408121640052.webp

Q: 为什么不直接将中断服务程序的入口地址存储在中断向量地址形成部件中?
A: 为了方便修改中断服务程序的入口地址,避免修改硬件电路。
如果将中断服务程序的入口地址直接存储在硬件电路中,那么修改中断服务程序的入口地址就需要修改硬件电路,这很不方便。
202408121640052.webp

中断服务程序

Q: 中断服务程序的主要任务是什么?
A: 1. 保护现场,即将当前程序运行环境,例如寄存器中的值,保存到内存中。
2. 中断服务。
3. 恢复现场。
4. 中断返回,即将 PC 指向原有的程序位置,返回到中断处理前的程序。

单重中断与多重中断

Q: 什么是单重中断?
A: 在执行中断服务程序时,不响应新的中断请求。

Q: 什么是多重中断?
A: 在执行中断服务程序时,又发生了新的中断请求,并且 CPU 允许中断,则会再次进行中断处理,形成中断嵌套。

Q: 多重中断的处理流程是什么?
A: 1. 响应第一个中断请求,进入第一个中断服务程序。
2. 在执行第一个中断服务程序时,若发生新的中断请求,则保存当前中断服务程序的现场,进入新的中断服务程序。
3. 执行完新的中断服务程序后,恢复第一个中断服务程序的现场,继续执行第一个中断服务程序。
4. 执行完第一个中断服务程序后,恢复原程序的现场,返回到中断处理前的程序。

Q: 如何实现多重中断?
A: 多重中断的实现需要使用堆栈来保存和恢复中断处理过程中的现场信息。
202408121640057.webp

中断屏蔽技术

Q: 什么是中断屏蔽字?
A: 中断屏蔽字是一个二进制字,用来控制哪些中断请求可以被响应,本质上是解决中断优先级的问题。
中断屏蔽字在多重中断处理中起着重要的作用,它可以保证高优先级的中断请求能够及时得到响应,从而提高系统的实时性和可靠性。

Q: 中断屏蔽字的作用是什么?
A: 在保护现场后,使用中断屏蔽字来控制哪些中断可以被响应,防止低优先级的中断干扰高优先级的中断处理。
202408121640057.webp

Q: 中断屏蔽字是如何设置的?
A: 设置 1 表示屏蔽,设置 0 表示不屏蔽。每一个屏蔽字中至少有一个 1,表示至少要屏蔽自身的中断。
屏蔽掉的意思是指,把这个放在后面处理,自己先处理,也就是优先级更高。

Q: 中断屏蔽技术是什么?
A: 中断屏蔽技术是在硬件排队器的基础上增加中断屏蔽功能,通过屏蔽字来控制中断请求的优先级,从而实现多重中断的嵌套处理。

Q: 中断屏蔽技术如何实现?
A: 在硬件排队器的基础上,为每个中断源增加一个屏蔽字寄存器,并通过与门将中断请求信号和对应的屏蔽字进行逻辑与运算,只有当屏蔽字为 0 时,中断请求才能被响应。

多重中断例题分析

Q:多重中断例题中,中断处理的具体过程是什么

A:首先执行 B 程序,执行了 5us 后,此时中断程序 D 请求,由于优先级比 B 高,此时优先执行 D 程序,经过 20us,D 程序首先执行完。此时经过 5us,B 程序执行了 10us,此时 A 发起了中断请求依旧比 B 高,此时优先执行 A 程序,经过 20us,A 程序执行完。以此类推,最终中断处理的顺序为 D、A、C、B。这个过程可以理解为:当一个中断程序正在执行时,如果来了一个更高优先级的中断请求,那么当前的中断程序会被暂停,转而去执行更高优先级的中断程序,等更高优先级的中断程序执行完成后,再返回来继续执行原来的中断程序。

中断响应时间

Q: 中断响应时间指的是什么?
A: 中断响应时间指的是从发出中断请求到进入中断处理程序的第一条指令执行这段时间。

Q: 影响中断响应时间的因素有哪些?
A: 1. 中断源的类型。
2. CPU 的类型。
3. 中断处理程序的复杂程度。
4. 系统的负载。

程序中断方式

Q: 程序中断方式的本质是什么?
A: I/O 设备完成后会给 CPU 发出一个中断信号,CPU 与外设可以并行工作。

Q: 程序中断方式的基本流程是什么?
A: 1. CPU 发起指令到 I/O 接口后交由 I/O 控制器来向外设发出命令,此时 CPU 与外设可以并行进行工作。
2. 外设完成之后,此时就会由 I/O 控制器来发出中断请求给 CPU,此时 CPU 肯定是在执行某个进程的指令(当执行完某条指令后,实际会进行中断检测)检测由中断异常信息时则会去执行中断隐指令,此时引出中断服务程序。
3. 在中断服务程序过程中,此时 CPU 又会向该外设发出同样的的命令循环往复。

Q: CPU 在什么时候检测中断请求?
A: CPU 在执行完某条指令后进行中断检测。

中断隐指令

Q: 什么是中断隐指令?
A: 中断隐指令是 CPU 在检测到中断请求后执行的一组指令,其作用是保存现场,并跳转到中断服务程序。

中断服务程序

Q: 什么是中断服务程序?
A: 中断服务程序是一段专门用来处理中断事件的程序,它会根据中断类型执行相应的处理操作。

程序中断例题

Q: 外设 D 每秒传输 1000 个字符,数据传输到 I/O 端口需要 0.5ms,中断响应需要 10 个时钟周期,中断服务程序共 20 条指令,其中第 15 条指令用来启动,CPU 的 CPI 为 4。完成传输 1000 个字符这一任务所需时间多少个时钟周期?
A: 25070000 个时钟周期。计算过程:
1. 外设传输时间:0.5ms / 20ns = 25000 个时钟周期
2. 中断响应时间:10 个时钟周期
3. 中断服务程序执行时间:15 条指令 * 4 个时钟周期/条指令 = 60 个时钟周期
4. 传输一个字符所需时间:25000 + 10 + 60 = 25070 个时钟周期
5. 传输 1000 个字符所需时间:25070 * 1000 = 25070000 个时钟周期

Q: 在上述条件下,CPU 用于完成这一任务的时间大约是多少时钟周期?
A: 90000 个时钟周期。计算过程:
1. 处理一个字符所需时间:10 + 20 * 4 = 90 个时钟周期
2. 处理 1000 个字符所需时间:90 * 1000 = 90000 个时钟周期

认识DMA控制器

Q: DMA控制器通常用来控制哪些类型的设备?
A: DMA控制器通常用来控制一些高速的“块”设备,例如磁盘、网络适配器等。
补充说明:块设备是指以数据块为单位进行数据传输的设备,与之相对的是字符设备,例如键盘、鼠标等。

Q: DMA控制器与普通的IO控制器相比,最大的区别是什么?
A: DMA控制器最大的区别在于它可以控制数据的传输过程,而普通的IO控制器只能控制数据的输入和输出,数据传输过程需要CPU参与。
辅助记忆:可以将DMA控制器想象成一个“搬运工”,它可以独立地将数据从一个地方搬运到另一个地方,而不需要CPU的指挥。

Q: DMA控制器在数据传输过程中主要完成哪些工作?
A: DMA控制器在数据传输过程中主要完成以下三件事情:

  1. 接收CPU的命令:CPU向DMA控制器发送命令,包括输入/输出、数据量、主存地址、外设读写地址等信息。
  2. 控制数据传输:DMA控制器根据CPU的命令,控制数据在主存和外设之间的传输。
  3. 向CPU发起中断:当数据传输完成后,DMA控制器向CPU发起中断请求,通知CPU数据传输已完成。
    辅助记忆:可以将DMA控制器的工作流程概括为“接收命令-搬运数据-汇报结果”。

Q: DMA控制器内部有哪些主要的组成部分?它们各自的功能是什么?
A: DMA控制器内部主要包含以下几个部分:

  1. 数据缓冲寄存器:用于暂时存储外设或主存传输的数据,类似于一个“中转站”。
  2. 主存地址计数器(AR):用于记录主存中数据传输的地址。每次传输一个字数据后,会将AR的值加1,指向下一个主存地址。
  3. 传送长度计数器(WC):用于记录要传输的数据长度,即还有多少字要传送。每次传输一个字数据后,WC的值减1。当WC的值减为0时,表示数据传输完成,DMA控制器会向CPU发出中断请求。
  4. 外设地址计数器(DAR):用于记录外设中数据传输的地址。每次传输一个字数据后,会将DAR的值加1,指向下一个外设地址。
    辅助记忆:可以将DMA控制器想象成一个“物流公司”,数据缓冲寄存器是“仓库”,主存地址计数器是“发货地址”,传送长度计数器是“货物清单”,外设地址计数器是“收货地址”。

DMA控制器结构细化

Q: 什么是DMA请求触发器?它的作用是什么?
A: DMA请求触发器是一个信号标志,当外设向数据缓冲寄存器中输出一个数据时,会将DMA请求触发器设置为1,用于告知DMA控制器可以进行数据传输。
当一个字数据传输完成后,DMA请求触发器会复位为0,同时会通知CPU可以取走数据缓冲寄存器中的数据。
类比:可以将DMA请求触发器比作“门铃”,外设将数据放入数据缓冲寄存器后,就相当于按响了门铃,通知DMA控制器可以“取货”了。

Q: 当DMA控制器占用总线向主存传输数据时,CPU能否访问主存?
A: 不能。因为CPU与主存之间的交互也需要通过系统总线来进行,而DMA控制器此时已经占用了总线,CPU无法获得总线的控制权。
类比:可以将系统总线比作一条“公路”,DMA控制器和CPU相当于两辆汽车,当DMA控制器占用公路时,CPU就无法通行。

DMA传送过程

Q: DMA传送过程可以分为哪三个阶段?
A: DMA传送过程可以分为三个阶段:预处理数据传输后处理
辅助记忆:可以将DMA传送过程比作“寄快递”,预处理阶段相当于“填写快递单”,数据传输阶段相当于“快递员运输货物”,后处理阶段相当于“签收快递”。

Q: 简述DMA控制器的工作流程,并说明每个阶段的主要工作内容。
A: 1. 预处理阶段:CPU向DMA控制器发送命令,包括输入/输出、数据量、主存地址、外设读写地址等信息,相当于“填写快递单”。
2. 数据传输阶段:DMA控制器根据CPU的命令,控制数据在主存和外设之间的传输,相当于“快递员运输货物”。
3. 后处理阶段:当数据传输完成后,DMA控制器向CPU发起中断请求,通知CPU数据传输已完成,相当于“签收快递”。
补充说明:在数据传输阶段,DMA控制器会自动完成数据传输,不需要CPU的干预。

Q: 如果采用DMA总线与主存连接的方式,当DMA控制器向主存传输数据时,CPU能否访问主存?
A: 不能。因为DMA控制器此时已经占用了DMA总线,CPU无法获得DMA总线的控制权。
补充说明:DMA总线是DMA控制器和主存之间的一条专用总线,用于DMA数据传输。

Q: 什么情况下CPU和DMA控制器可以同时访问主存?
A: 当主存是双端口的时候,CPU和DMA控制器可以同时访问主存。
因为双端口主存有两个独立的端口,一个端口可以用于CPU访问,另一个端口可以用于DMA控制器访问。
类比:可以将双端口主存比作一个有两个门的“房间”,CPU和DMA控制器可以分别从不同的门进入房间,互不干扰。

解决CPU与DMA的访存冲突(三种方式,针对于三总线结构)

Q: 详细解释解决CPU与DMA访存冲突的三种方式,并结合实际例子进行说明。
A: 当CPU和DMA控制器同时想要访问主存时,可能产生访存冲突,解决这种冲突的常用方法有三种:

  1. 停止CPU访问主存:DMA控制器独占总线,CPU完全停止访问主存。
    这种方式实现简单,但CPU处于不工作状态,无法充分利用CPU,效率低。
    例如,当DMA控制器需要传输大量数据时,CPU可能会被完全阻塞,无法执行其他任务,就像“单行道”上,一辆车行驶时,其他车辆必须等待。
  2. CPU与主存交替访存:将一个CPU周期分成两个时间片,一个时间片用于CPU访问主存,另一个时间片用于DMA控制器访问主存。
    这种方式可以提高CPU和DMA控制器的利用率,但硬件逻辑复杂,实现难度大。
    例如,CPU和DMA控制器需要协调时间片分配,避免冲突,就像“潮汐车道”一样,不同时间段允许不同方向的车辆通行。
  3. 周期挪用(周期窃取):DMA控制器利用CPU的一个或多个主存存取周期来访问主存。
    当DMA控制器需要访问主存时,会发出一个请求,如果CPU此时正在访问主存,DMA控制器会等待CPU完成访问后,再利用CPU空闲的周期进行访问。
    这种方式可以最大程度地利用CPU和DMA控制器的性能,但需要CPU和DMA控制器之间的协调机制。
    例如,CPU需要在执行指令时,判断是否需要暂停执行,让DMA控制器访问主存,就像“拼车”一样,DMA控制器“蹭”CPU的空闲时间来访问主存。

DMA方式的特点

Q: DMA方式有哪些特点?请详细说明DMA方式的优缺点、应用场景、实现方式等内容。
A: DMA方式具有以下特点:

  1. 主存与CPU的固定联系被解除,主存既可被CPU访问,也可被外设访问。
  2. 数据块传输时,主存地址的确定、传送数据的计数等由硬件电路直接实现,不需要CPU的干预,提高了数据传输效率。
  3. 主存中要开辟专门缓冲区,及时给和接收外设的数据,避免数据丢失。
  4. DMA传送速度快,CPU和外设并行工作,提高了系统效率
  5. DMA在传送开始前要通过速度程序进行预处理,结束后要通过中断方式进行后处理,确保数据传输的正确性和完整性。
    DMA方式的优缺点:
  • 优点:
    • 数据传输速度快,提高了系统效率。
    • CPU可以进行其他任务,提高了系统利用率。
    • 硬件实现比较简单,成本较低。
  • 缺点:
    • 编程复杂度较高,需要进行预处理和后处理。
    • 可能会造成CPU和DMA控制器之间的冲突,需要进行协调。
      DMA方式的应用场景:
  • 磁盘读写:DMA方式可以快速将数据从磁盘读入主存或将数据从主存写入磁盘。
  • 网络数据传输:DMA方式可以快速将数据从网卡读入主存或将数据从主存写入网卡。
  • 图像处理:DMA方式可以快速将图像数据从显卡读入主存或将图像数据从主存写入显卡。

DMA与中断方式对比

Q: DMA方式和中断方式分别在什么情况下发出中断请求?请详细说明DMA方式和中断方式的适用场景、优缺点等内容。
A: - DMA方式:在完整块数据传输完成后才发出中断请求。

  • 中断方式:在每次传送数据时发出中断请求。

    适用场景:
  • DMA方式:适用于数据块传输,例如磁盘读写、网络数据传输等。
  • 中断方式:适用于数据量较小、传输频率较高的场合,例如键盘输入、鼠标操作等。
    优缺点:
  • DMA方式:效率更高,CPU开销小,但编程复杂度较高。
  • 中断方式:效率较低,CPU开销大,但编程复杂度较低。
    辅助记忆:可以将DMA方式比作“批处理”,将中断方式比作“实时处理”。