程序查询方式
Q: 程序查询方式的控制由谁实现?
A: 由 CPU 执行程序实现
Q: 程序查询方式的接口中设置了哪些寄存器?
A: 数据缓冲寄存器(数据端口)和一个设备状态寄存器(状态端口)
Q: 主机进行 I/O 操作时,首先要读取什么?并根据什么来决定下一步操作?
A: 首先要读取设备的状态,并根据设备状态来决定下一步操作。主机通过读取状态寄存器中的状态位来判断外设是否准备好进行数据传输。
Q: 程序查询方式的工作流程是什么?
A: ① CPU 执行初始化程序,并预置传送参数。
② 向 I/O 接口发出命令字,启动 I/O 设备。
③ 从外设接口读取其状态信息。
④ CPU 周期性或持续地查询设备状态,直到外设准备就绪。
⑤ 传送一次数据。
⑥ 修改地址和计数器参数。
⑦ 判断传送是否结束,若未结束转第 ③ 步,直到计数器为 0。
Q: 程序查询方式可以分为哪两类?
A: 独占查询和定时查询
Q: 独占查询方式的特点是什么?
A: 一旦设备被启动,CPU 就一直持续查询接口状态,CPU 花费 100% 的时间用于 I/O 操作,此时外设和 CPU 完全串行工作。
Q: 定时查询方式的特点是什么?
A: CPU 周期性地查询接口状态,每次总是等到条件满足才进行一个数据的传送,传送完成后返回到用户程序。
定时查询的时间间隔与设备的数据传输速率有关。
Q: 程序查询方式有哪些优点?
A: 设计简单、硬件量少。程序查询方式的硬件开销最小,因为它不需要额外的中断控制器或 DMA 控制器。
Q: 程序查询方式有哪些缺点?
A: CPU 要花费很多时间来查询和等待,且在一段时间内只能和一台外设交换信息,CPU 与设备串行工作,效率很低。例如,如果外设的速度很慢,CPU 会浪费大量的时间在等待外设准备好数据上。
程序中断方式
程序中断的基本概念
Q: 程序中断是什么?
A: 程序中断是指在计算机执行程序的过程中,出现某些急需处理的异常情况或特殊请求,CPU 暂时中止现行程序,而转去对这些异常情况或特殊请求进行处理,处理完毕后再返回到原程序的断点处,继续执行原程序。
Q: 程序中断有哪些主要功能?
A: ① 实现 CPU 与 I/O 设备的并行工作。
② 处理硬件故障和软件错误。
③ 实现人机交互,用户干预机器需要用到中断系统。
④ 实现多道程序、分时操作,多道程序的切换需借助于中断系统。
⑤ 实时处理需要借助中断系统来实现快速响应。
⑥ 实现应用程序和操作系统(管态程序)的切换,称为软中断。
⑦ 多处理器系统中各处理器之间的信息交流和任务切换。
Q: 程序中断方式的基本思想是什么?
A: CPU 在程序中安排好在某个时机启动某台外设,然后 CPU 继续执行当前的程序,不需要像查询方式那样一直等待外设准备就绪。
一旦外设完成数据传送的准备工作,就主动向 CPU 发出中断请求。
在可以响应中断的条件下,CPU 暂时中止正在执行的程序,转去执行中断服务程序为外设服务,在中断服务程序中完成一次主机与外设之间的数据传送,传送完成后,CPU 返回原来的程序。
此时,外设和 CPU 又开始并行工作。
程序中断的工作流程
中断请求
Q: 中断系统如何记录中断事件并区分不同的中断请求源?
A: 中断系统为每个中断源设置一个中断请求标记触发器,当某个中断源发出中断请求时,对应的触发器会被置位,表示该中断源有中断请求。
中断控制器会根据这些触发器的状态来判断有哪些中断源发出了请求,并根据优先级选择其中一个进行响应。
Q: 可屏蔽中断和不可屏蔽中断分别有哪些特点?
A: 可屏蔽中断可以通过软件设置中断屏蔽字来屏蔽,即禁止 CPU 响应该类中断。
不可屏蔽中断不能被屏蔽,CPU 必须响应。例如,电源故障、系统错误等通常使用不可屏蔽中断。
中断响应的优先级
Q: 什么是中断响应的优先级?
A: 中断响应的优先级是指当多个中断请求同时发生时,CPU 响应它们的先后顺序。
Q: 中断响应的优先级通常是如何确定的?
A: 中断响应的优先级通常由硬件电路(中断控制器)决定,也可以通过软件设置中断优先级寄存器来调整。
Q: 中断响应优先级的排序规则有哪些?
A: ① 不可屏蔽中断 > 内部异常 > 可屏蔽中断;
② 在内部异常中,硬件故障 > 软件中断;
③ DMA 中断请求 > I/O 设备的中断请求;
④ 在 I/O 传送类中断请求中,高速设备 > 低速设备;输入设备 > 输出设备;实时设备 > 普通设备。
Q: 中断的优先级包括哪些?
A: 中断的优先级包括响应优先级和处理优先级。
Q: 中断响应的优先级和中断处理的优先级分别是如何确定的?
A: 中断响应的优先级由硬件电路或查询程序的查询顺序决定,不可动态改变。
中断处理的优先级可以通过软件设置中断屏蔽字来动态调整,以实现多重中断。
CPU 响应中断的条件
Q: CPU 在什么条件下响应中断请求?
A: ① 中断源有中断请求;
② CPU 允许中断(开中断)(异常和不可屏蔽中断不受此限制);
③ 一条指令执行完毕(异常不受此限制),且没有更紧迫的任务。
Q: CPU 响应中断的时间通常是在什么时候?
A: CPU 响应中断的时间通常是在每条指令执行完毕的时刻。
中断响应过程
Q: 中断隐指令在响应中断时会完成哪些操作?
A: 1)关中断;2)保存断点;3)引出中断服务程序。
Q: CPU 响应中断后为什么要关中断?
A: CPU 响应中断后关闭中断是为了保护程序的断点和现场信息。
在保护断点和现场信息的过程中,如果 CPU 响应了其他中断请求,可能会导致断点或现场信息被破坏,从而无法正确返回到原程序继续执行。
Q: 中断发生时,如何保存程序的断点?
A: 中断发生时,CPU 会将程序计数器(PC)的值保存到堆栈或特定寄存器中,以便中断服务程序执行完毕后能够返回到原程序的断点处继续执行。
Q: 异常和中断在保存断点方面有什么区别?
A: 异常通常发生在指令执行过程中,因此断点是当前指令的地址。中断通常发生在指令执行完毕后,因此断点是下一条指令的地址。
Q: CPU 响应中断后,如何确定要执行的中断服务程序?
A: CPU 可以通过两种方式确定要执行的中断服务程序:
1)软件查询法:CPU 逐个查询中断请求标记触发器,找到发出中断请求的中断源,然后根据中断源的类型号找到对应的中断服务程序入口地址。
2)硬件向量法:每个中断源都有一个唯一的类型号,每个类型号对应一个中断向量,中断向量存储中断服务程序的入口地址。
CPU 响应中断后,直接根据中断类型号找到对应的中断向量,从而获得中断服务程序的入口地址。
中断向量
Q: 中断的识别方式可以分为哪两种?
A: 中断的识别方式可以分为向量中断和非向量中断。
Q: 什么是中断向量表?它有什么作用?
A: 中断向量表是一个存储中断向量的数据结构,通常是一个数组。中断向量表的作用是存储中断向量,以便 CPU 在响应中断时能够快速找到对应中断服务程序的入口地址。
Q: 什么是中断向量法?它有什么特点?
A: 中断向量法是指 CPU 响应中断后,通过中断向量表来查找中断服务程序入口地址的方法。
中断向量法的特点是速度快,因为 CPU 可以直接通过中断类型号来查找中断向量表,从而快速找到中断服务程序的入口地址。
Q: CPU 响应中断后,如何确定中断类型?
A: CPU 响应中断后,中断控制器会将中断类型号传递给 CPU。
中断处理过程
Q: 中断处理的过程一般包含哪些步骤?
A: ① 关中断;
② 保存断点;
③ 中断服务程序寻址;
④ 保存现场和屏蔽字;
⑤ 开中断;
⑥ 执行中断服务程序;
⑦ 关中断;
⑧ 恢复现场和屏蔽字;
⑨ 开中断、中断返回。
①③ 由中断隐指令(硬件自动)完成;④⑨ 由中断服务程序完成。
Q: 单级中断的处理流程与多级中断的处理流程有什么区别?
A: 单级中断不允许中断嵌套,即在处理一个中断的过程中,CPU 不会响应其他中断请求。
多级中断允许多级嵌套,即在处理一个中断的过程中,CPU 可以响应优先级更高的中断请求。
多重中断和中断屏蔽技术
Q: 什么是单级中断?
A: 单级中断是指在 CPU 执行中断服务程序的过程中,如果出现新的中断请求,CPU 不会响应,而是继续执行当前的中断服务程序,直到该中断服务程序执行完毕后才会响应新的中断请求。
Q: 什么是多级中断?
A: 多级中断是指在 CPU 执行中断服务程序的过程中,如果出现优先级更高的中断请求,CPU 会暂停当前的中断服务程序,转去处理新的中断请求,处理完毕后再返回到原来的中断服务程序继续执行。
Q: 要实现多级中断,CPU 需要满足哪些条件?
A: ① 在中断服务程序中提前设置开中断指令;
② 优先级别高的中断源有权中断优先级别低的中断源。
Q: 什么是中断处理的优先级?
A: 中断处理的优先级是指当多个中断请求同时发生时,CPU 处理它们的先后顺序。
Q: 什么是中断屏蔽技术?它有什么作用?
A: 中断屏蔽技术是指通过设置中断屏蔽字来控制 CPU 对不同中断源的响应。
中断屏蔽技术的作用是可以灵活地调整中断处理的优先级,以实现多级中断。
Q: 什么是中断屏蔽字?它有什么作用?
A: 中断屏蔽字是一个二进制位串,每一位对应一个中断源。
如果某一位为 1,则表示屏蔽相应的中断源,CPU 不会响应该中断源的请求;
如果某一位为 0,则表示允许 CPU 响应相应的中断源的请求。中断屏蔽字的作用是控制 CPU 对不同中断源的响应,以实现多级中断。
DMA 方式
DMA 方式的基本概念
Q: DMA 方式是什么?
A: DMA 方式是一种完全由硬件进行成组信息传送的控制方式,它允许外设直接与主存进行数据交换,而无需 CPU 的干预。
Q: DMA 方式有哪些特点?
A: DMA 方式的主要特点包括:
- 高速数据传输:DMA 方式允许外设直接与主存进行数据交换,无需 CPU 干预,因此数据传输速度很快。
- CPU 解放:DMA 方式可以将 CPU 从繁琐的数据传输任务中解放出来,使 CPU 可以专注于其他任务,从而提高系统的整体效率。
- 适用于大批量数据传输:DMA 方式特别适用于大批量数据的传输,例如磁盘读写、网络数据传输等。
- 它使主存与 CPU 的固定联系脱钩,主存既可被 CPU 访问,又可被外设访问。
DMA 控制器的组成
Q: 什么是 DMA 控制器?它有什么作用?
A: DMA 控制器是 DMA 方式的核心部件,它负责控制外设与主存之间的数据传输。DMA 控制器的作用包括:
- 接收外设发出的 DMA 请求,并向 CPU 发出总线请求。
- 当 CPU 响应总线请求后,接管总线控制权,进入 DMA 操作周期。
- 确定传送数据的主存起始地址及长度,并自动修改主存地址计数器和传送长度计数器。
- 规定数据在主存和外设间的传送方向,发出读/写等控制信号,执行数据传送操作。
- 向 CPU 报告 DMA 操作结束。
Q: 简单 DMA 控制器主要包含哪些部分?
A: 简单 DMA 控制器主要包含以下几个部分:
- 主存地址计数器:用于存放要交换数据的主存地址。
- 传送长度计数器:用于记录传送数据的总长度。
- 数据缓冲寄存器:用于暂存每次传送的数据。
- DMA 请求触发器:用于接收外设发出的 DMA 请求信号。
- 控制/状态逻辑:用于控制 DMA 传输的方向、方式等。
- 中断机构:用于在 DMA 传输结束后向 CPU 发出中断请求。
Q: 主存地址计数器的作用是什么?
A: 主存地址计数器用于存放要交换数据的主存地址。
在 DMA 传输开始前,CPU 会将要传输的数据块的起始地址写入主存地址计数器。
在每次传输一个数据单元后,主存地址计数器会自动递增,指向下一个要传输的数据单元的地址。
Q: 传送长度计数器的作用是什么?
A: 传送长度计数器用于记录要传输的数据块的总长度。
在 DMA 传输开始前,CPU 会将要传输的数据块的长度写入传送长度计数器。
在每次传输一个数据单元后,传送长度计数器会自动递减。当传送长度计数器减为 0 时,表示数据块传输完毕。
Q: 数据缓冲寄存器的作用是什么?
A: 数据缓冲寄存器用于暂存每次要传输的数据单元。
由于外设和主存之间的数据传输速度可能不匹配,因此需要数据缓冲寄存器来进行缓冲,以保证数据传输的顺利进行。
Q: DMA 请求触发器的作用是什么?
A: DMA 请求触发器用于接收外设发出的 DMA 请求信号。当外设准备好要进行数据传输时,会向 DMA 控制器发送 DMA 请求信号。DMA 控制器接收到 DMA 请求信号后,会向 CPU 发出总线请求。
Q: 控制/状态逻辑的作用是什么?
A: 控制/状态逻辑用于控制 DMA 传输的方向、方式等。例如,控制/状态逻辑可以控制 DMA 传输是读操作还是写操作,是单字节传输还是突发传输等。
Q: 中断机构的作用是什么?
A: 中断机构用于在 DMA 传输结束后向 CPU 发出中断请求。当 DMA 传输结束后,DMA 控制器会通过中断机构向 CPU 发送中断请求,通知 CPU DMA 传输已经完成。
DMA 的传送方式
Q: DMA 与 CPU 通常采用哪些方式来使用主存?
A: DMA 与 CPU 通常采用以下三种方式来使用主存:
- 停止 CPU 访存:当外设需要进行 DMA 传输时,DMA 控制器会向 CPU 发送一个停止信号,使 CPU 停止访问主存,直到 DMA 传输完成。
- 周期挪用:DMA 控制器在 CPU 不访问主存的周期内,挪用一个或多个主存周期来进行 DMA 传输。
- DMA 与 CPU 交替访存:将 CPU 的工作周期分成两个时间片,一个给 CPU 访存,另一个给 DMA 访存,这样 CPU 和 DMA 就可以轮流访问主存。
停止 CPU 访存
Q: 停止 CPU 访存方式是什么?
A: 停止 CPU 访存方式是指当外设需要进行 DMA 传输时,DMA 控制器会向 CPU 发送一个停止信号,使 CPU 停止访问主存,直到 DMA 传输完成。
Q: 停止 CPU 访存方式有哪些优缺点?
A: 优点:控制简单,易于实现。
缺点:CPU 在 DMA 传输期间无法访问主存,会降低 CPU 的利用率。
周期挪用
Q: 周期挪用方式是什么?
A: 周期挪用方式是指 DMA 控制器在 CPU 不访问主存的周期内,挪用一个或多个主存周期来进行 DMA 传输。
Q: 当 I/O 设备发出 DMA 请求时,可能会遇到哪些情况?
A: 当 I/O 设备发出 DMA 请求时,可能会遇到以下三种情况:
- CPU 此时没有访问主存,DMA 控制器可以直接挪用主存周期进行 DMA 传输。
- CPU 正在访问主存,DMA 控制器需要等待 CPU 完成当前的访存操作后才能挪用主存周期。
- CPU 和 DMA 控制器同时请求访问主存,此时 DMA 控制器具有更高的优先级,可以优先获得主存访问权。
Q: 周期挪用方式有哪些优缺点?
A: 优点:CPU 和 DMA 可以同时工作,提高了系统的效率。
缺点:DMA 传输可能会延迟 CPU 的访存操作。
DMA 与 CPU 交替访存
Q: DMA 与 CPU 交替访存方式是什么?
A: DMA 与 CPU 交替访存方式是指将 CPU 的工作周期分成两个时间片,一个给 CPU 访存,另一个给 DMA 访存,这样 CPU 和 DMA 就可以轮流访问主存。
Q: DMA 与 CPU 交替访存方式有哪些优缺点?
A: 优点:CPU 和 DMA 都可以获得较高的带宽,提高了系统的效率。
缺点:实现比较复杂,需要额外的硬件支持。
DMA 的传送过程
Q: DMA 的数据传送过程一般分为哪三个阶段?
A: DMA 的数据传送过程一般分为以下三个阶段:
- 预处理阶段:CPU 对 DMA 控制器进行初始化,设置 DMA 传输的参数,例如传输方向、主存地址、传输长度等。
- 数据传送阶段:DMA 控制器接管总线控制权,直接与主存进行数据交换。
- 后处理阶段:DMA 传输结束后,DMA 控制器向 CPU 发送中断请求,CPU 对 DMA 传输的结果进行处理。
预处理
Q: DMA 传送过程的预处理阶段由谁完成?主要完成哪些工作?
A: DMA 传送过程的预处理阶段由 CPU 完成。主要完成以下工作:
- 初始化 DMA 控制器:设置 DMA 控制器的各个寄存器,例如主存地址计数器、传送长度计数器、控制/状态寄存器等。
- 设置 DMA 传输的参数:设置 DMA 传输的方向、主存地址、传输长度等。
- 启动外设:向外设发送启动命令,使其准备好进行数据传输。
数据传送
Q: DMA 传送过程中的数据传送阶段由谁控制?
A: DMA 传送过程中的数据传送阶段由 DMA 控制器控制。
后处理
Q: DMA 传送过程的后处理阶段由谁完成?主要完成哪些工作?
A: DMA 传送过程的后处理阶段由 CPU 完成。主要完成以下工作:
- 响应 DMA 控制器发出的中断请求。
- 检查 DMA 传输的结果,例如检查是否有错误发生。
- 进行必要的清理工作,例如释放 DMA 控制器占用的资源。
DMA 方式和中断方式的区别
Q: DMA 方式和中断方式有哪些重要的区别?
A: DMA 方式和中断方式都是常用的 I/O 控制方式,它们的主要区别如下:
- 数据传输方式:中断方式下,CPU 需要参与数据的搬移,每次只能传输一个数据单元;DMA 方式下,外设直接与主存进行数据交换,无需 CPU 干预,可以成块地传输数据。
- CPU 占用情况:中断方式下,CPU 需要响应中断请求并执行中断服务程序,会占用 CPU 的时间;DMA 方式下,CPU 只需要在 DMA 传输开始和结束时进行少量的干预,大部分时间 CPU 可以执行其他任务。
- 效率:DMA 方式的效率比中断方式高,尤其是在大批量数据传输的情况下。
- 适用场景:中断方式适用于数据传输量较小、实时性要求较高的场合;DMA 方式适用于数据传输量较大、实时性要求不高的场合。
对考点分析的补充说明
程序中断方式
中断向量
Q: 中断向量表中每个元素存储什么?
A: 中断向量表中每个元素存储一个中断向量,中断向量包含中断服务程序的入口地址。
Q: 中断向量是什么?
A: 中断向量是一个指向中断服务程序入口地址的指针。
DMA 方式
DMA 控制器的详细结构
Q: DMA 控制器中有哪些主要的寄存器?
A: DMA 控制器中主要的寄存器包括:
- 主存地址寄存器:用于存放要传输数据的主存地址。
- 外设地址寄存器:用于存放外设的地址。
- 传送长度计数器:用于记录要传输的数据长度。
- 控制/状态寄存器:用于控制 DMA 传输的方向、模式等。
DMA 传送过程中的总线仲裁
Q: DMA 控制器如何与 CPU 竞争总线使用权?
A: 当 DMA 控制器需要访问总线时,会向 CPU 发出总线请求信号。
CPU 接收到总线请求信号后,会暂停当前的操作,将总线控制权交给 DMA 控制器。
DMA 控制器完成数据传输后,会将总线控制权交还给 CPU。