408 知识点笔记——计组(总线、输入/输出系统)

6 总线

【总线的基本概念】

分时共享是总线的两个特点,分时是指同一时刻只允许有一个部件向总线发送信息,共享可以允许多个部件同时从总线上接收信息

【总线特性】

  • 物理特性:如插头与插座的几何尺寸、形状、引脚个数及排列顺序等
  • 功能特性:每根传输线的功能(如传送地址,还是传送数据,传送控制信号)
  • 电气特性:传输方向和有效的电平范围
  • 时间特性:信号的时序关系(哪根线在什么时间内有效)

△☼▽(模拟题一)

在这里插入图片描述

分析:B,理论如上描述

【总线的性能指标】

1)总线宽度

总线宽度指总线上能够同时传输的数据位数,通常指数据总线的根数

△☼▽

在这里插入图片描述

分析:A,总线宽度即数据线的根数,故总线宽度为 32bit,传输速率为 4×66 MB/s

△☼▽ (区分机器字长和总线宽度)

在这里插入图片描述

分析:C,千万注意,这里的 32 位指的是微处理器一次能处理的数据长度,只机器字长,机器字长等于通过寄存器的长度。而总线宽度和 CPU 的内存相关,即 n n n 位的地址总线决定 2 n 2^n 2n 的寻址空间(按字节寻址),故 Ⅱ 错误;系统一般是向下兼容,故 Ⅲ 错误

2)总线带宽

△☼▽

在这里插入图片描述

分析:每秒有 36M 个时钟周期,每 4 个时钟周期传输 4B 数据,于是,一秒内共传输 36M/4×4B = 36MB 数据,故总线的带宽为 36MB/s

△☼▽

在这里插入图片描述

分析:B,每秒有 10M 个时钟周期,每 2 个时钟周期传输 4B,故一秒内传输 10M/2×4B = 20MB 数据

△☼▽

在这里插入图片描述

分析:D,根据题目给出的公式,总线数据传输率 Q = 16bit×8M/2 = 64Mbit/s = 8MB/s

△☼▽

在这里插入图片描述

分析:
(1)最大数据传输率为 (16/8)×(50M/4) = 25MB/s
(2)若想数据传输率提高一倍可采取的措施有两种:将外部数据总线扩大为 32 位,时钟频率不变;或者,将时钟频率扩大为 100MHz,外部数据总线位数不变

△☼▽

在这里插入图片描述

分析:这里题目应该是默认了 64 位机,故一字 8B
(1)总线的数据传输率为 (25×64/8)×(100M/10) = 2000MB/s
(2)时钟频率减半后的传输速率为 (25×64/8)×(50M/10) = 1000MB/s

涉及有效数据

△☼▽

在这里插入图片描述

分析:B,一个字符仅有 8 位(即 1B)有效数据

△☼▽

在这里插入图片描述

分析:B,每个字符由 1+7+1+1 = 10 位组成,且每秒传送 480 个字符,故数据传输率为 480×10bit/s

【总线的分类】

1)按连接部件分类

总线按连接部件不同被分为片内总线系统总线(包括数据总线、控制总线、地址总线)和通信总线

  • 片内总线是指芯片内部的总线,如在 CPU 内部,寄存器与寄存器之间,寄存器与 ALU 之间都是由片内总线连接的

2)按数据传输格式分类

根据数据传送格式,总线通常分为并行总线串行总线

  • 并行总线传输通常比串行总线传输速度快,但不是绝对的。在实际时钟频率比较低的情况下,并行总线因为可以同时传输若干比特,速率确实比串行总线快。但是随着技术的发展,时钟频率越来越高,并行导线之间的相互干扰越来越严重,当时钟频率高到一定程度时,传输的数据已经无法恢复。而串行总线因为导线少,线间干扰容易控制,反而可以通过不断提高的时钟频率来提高传输速率

△☼▽(2016 年真题)

在这里插入图片描述

分析:A,理论如上述

【总线复用】

总线复用是指一种信号线在不同时间传输不同的信息,可以使用较少的线路传输更多的信息,从而节省了空间和成本

  • 分离事务通信即总线复用的一种,相比单一的传输线路可以提高总线的的利用率

【不同的总线】

系统总线又可以分为

  • 数据总线用来传送各功能部件之间的数据信息,它是双向传输总线
  • 地址总线是单向传输总线
  • 控制总线用来发出各种控制信号

通信总线用于计算机系统之间或计算机系统与其他系统之间的通信

△☼▽(2011 年真题)

在这里插入图片描述

分析:C,指令、操作数、中断信号都是可以在数据线上传输,而握手(应答)信号必须在通信总线中传输

△☼▽(2012 年真题)

在这里插入图片描述

分析:D,在程序查询方式中,向 I/O 接口发出的命令字和从 I/O 接口取回的状态字,以及中断方式中的中断类型号(确定相应的中断向量)都是通过 I/O 总线的数据线传输的

△☼▽
在这里插入图片描述

分析:D,存储器和 I/O 设备的地址码应该由地址线传送,存储器和 I/O 设备的时序信号、控制信号和响应信号由控制线传送

【单总线结构】

单总线的特点:由于 I/O 设备与主存共用一组地址线,因此主存和 I/O 设备是统一编址的,CPU 可以像访问内存一样访问外部设备

同时,显然,单总线结构肯定不能解决 CPU、主存、I/O 设备之间传输速率不匹配的问题

在这里插入图片描述
【双总线结构】

将 I/O 设备剥离出来,形成主存总线与 I/O 总线分开的结构,这种结构主存和 I/O 设备交换信息都要经过 CPU,那 CPU 的工作效率自然会降低

在这里插入图片描述

【三总线结构】

增加了 DMA 总线,用于 I/O 高速设备和主存之间交换信息

在这里插入图片描述

任意时刻,只能使用一种总线。主存总线与 DMA 总线不能同时对主存进行存取,I/O 总线只有在 CPU 执行 I/O 指令时才是使用

【多总线结构】

多总线结构用速率高的总线连接高速设备,用速率低的总线连接低速设备。一般来讲, CPU 是计算机的核心,是计算机中速度最快的设备之一,所以靠近 CPU 的总线速度较快。现实中一般用支持突发传送方式的总线提高存储器的读写效率,在多总线结构中存储器总线可以支持突发传送方式。各总线通过桥接器相连,桥接器起流量交换的作用

△☼▽(2017 年真题)
在这里插入图片描述

分析:D,PCI-Express 总线都是采用串行数据报传输数据

【使用总线结构的好处】

使用总线结构减少了传输线的条数,但是不能减少信息的传输量和提高信息的传输速度。另外,总线上也不能在同一时刻传输数据信息和地址信息,不然就全部混乱了,因为在总线传送中数据和地址都是二进制

【总线周期】

通常将完成一次总线操作的时间成为总线周期,其可分为以下 4 个阶段:申请阶段、寻址阶段、传输阶段和结束阶段。因此不管是同步通信还是异步通信,都是先传地址后传数据

【总线通信方式】

1)同步定时方式

在同步通信方式中,采用一个统一的时钟信号,通常由 CPU 的总线控制器部件发出,而不是由各设备提供,不采用握手信号

△☼▽(2015 年真题)
在这里插入图片描述

分析:C, 显然是错误的

总线传输周期如下图所示(数据输入),包含 4 个时钟周期 T 1 T_1 T1 T 2 T_2 T2 T 3 T_3 T3 T 4 T_4 T4,记住一句话:不管输入还是输出,地址信号线一定是全程陪伴的

在这里插入图片描述
对于读命令,

T 1 T_1 T1,主模块发出地址信息
T 2 T_2 T2,主模块发出读命令
T 3 T_3 T3,从模块提供数据
T 4 T_4 T4,主模块撤销读命令,从模块撤销数据

上面的一个传输周期分为 T 1 T_1 T1 T 2 T_2 T2 T 3 T_3 T3 T 4 T_4 T4,却不包括总线申请阶段,原因是总线传输周期开始计时的前提是主设备已得到总线控制

在这里插入图片描述
对于写命令,

T 1 T_1 T1,主模块发出地址信息
T 1.5 T_{1.5} T1.5,主模块提供数据
T 3 T_3 T3,主模块发出写命令,从模块接收到命令后,必须在规定时间内将数据总线上的数据写到地址总线所指明的单元中
T 4 T_4 T4,主模块撤销写命令和数据等信号

为什么读写命令总是使用低电平有限,而很少使用高电平有效?

答: 使用低电平时,电路往往要比使用高电平时拥有更低的阻抗,而较低的阻抗其抗干扰能力也较强,所以一般要控制一种操作的时候尽量使用低电平有效,而不会去使用高电平有限,除非有两种操作,才会去选用高电平有效

同步通信的优点: 传送速度快,具有较高的传输速率

同步通信的缺点: 同步通信必须按最慢的模块来设计公共时钟。一般不允许连接速度差别较大的设备,这样会降低整个通信的效率

同步通信的使用范围: 同步通信的总线长度较短。通常 CPU内部总线、处理器总线都采用同步通信总线

2)异步定时方式

在异步通信方式中,不要求所有部件严格地统一操作时间,而是采用应答的方式(或称握手方式),即当主模块发出请求信号,一直等待从模块反馈响应信号后才开始通信。这就要求主、从模块之间增加两条应答线

  • 不互锁方式:主模块的请求信号和从模块的应答信号没有互相的制约关系。主模块发出请求信号后,不必等待接到从模块的回答信号,而是经过一段时间,默认从模块已经收到请求信号后,便撤销其请求信号
  • 半互锁方式:主模块发出请求信号后,必须接到从模块的回答信号后才撤销请求信号;而从模块接到请求信号后,发出回答信号,默认一段时间后自动撤销
  • 全互锁:都要等对方应答后才撤销

在这里插入图片描述

在异步通信的应答方式中,全互锁协议最慢,非互锁协议的可靠性最差

注意:异步通信可用于并行传送或串行传送

异步定时方式能保证两个工作速度相差很大的部件或设备之间可靠地交换信息(考虑下面一题)

△☼▽
在这里插入图片描述

分析:A,理论如上所述

3)半同步通信方式

在半同步通信方式中,握手信号的采样由同步时钟控制

【总线标准】

总线标准包括:系统总线标准设备总线标准

  • 系统总线标准包括 ISA、EISA、VESA、PCI、PCI-Express
  • 设备总线标准包括 IDE(用于处理器和磁盘驱动器之间)、AGP(用于主存和图形处理器之间)、USB 接口(用于设备和设备控制器之间)、SATA

注意,17 年真题中出现过这个小的知识点:PCI-Express 总线都采用串行数据包传输数据

【USB 总线】

  • USB 总线可实现外设的即插即用和热插拔。即插即用:在计算机上加上一个新的外部设备时,能自动检测与配置系统的资源,而不需要重新手动安装驱动。热插拔:不用关闭计算机就可以直接将硬件拔除,并且可以随时再插入,而不必重启计算机就又能被计算机识别
  • USB 接口最多可以通过级联方式连接 127 台设备
  • 通信总线是用于计算机系统之间或计算机系统与其他系统之间的通信,很明显 USB 接口属于此种用途
  • USB 总线属于串行总线,即一位一位地传输

△☼▽(2012 年真题)
在这里插入图片描述

分析:D,理论如上所述

【PCI 总线】

  • PCI 局部总线是高性能的 32 位或 64 位总线,是为高度集成的外围部件、扩充查办和处理器/存储器系统而设计的互联机制,支持即插即用并且可对数据和地址进行奇偶校验
  • 系统中允许多条 PCI 总线,以此来提升计算机的效率
  • 另外,PCI 设备指插在 PCI 插槽上的设备(如声卡、网卡、MODEM等),所以 PCI 设备不一定都是主设备

【突发(猝发)传输方式与常规传输方式的区别】

一次传输一个地址和一个总线宽度的数据的方式称为常规传输。一次传输一个地址和一批数据的方式称为突发(猝发)传输

△☼▽(2012 年真题)

在这里插入图片描述

分析:C,传输 128 位数据需要 128/32 = 4 个时钟周期,再加上传送地址的 1 个时钟周期,故一共需要 5 个时钟周期,即 5×(1/100MHz) = 50ns

△☼▽

在这里插入图片描述

分析:C,传输 8×4B 的数据共需要 1+3+8 = 12 个时钟周期,故数据传输速率为 8×4B×(50M/12) = 133.3MB/s

【仲裁方式】 (2021大纲删除)

独立请求方式响应最快,是以增加处理器开销和增加控制线数为代价的, n n n 个设备需要 2 n 2n 2n 根控制线

计数器定时查询方式下,有一根总线请求(BR)和一组设备地址线( l o g 2 n log_2n log2n)。计数器有两种技术方式:每次判优都从 0 开始,此时一旦设备的优先顺序被固定后,永远就不可以改变;从上次的终点开始计数,即是一种循环方法,此时所有设备的优先级相等。计数器的初值当然也可以由程序设置,故优先级顺序可以改变

链式查询方式对电路故障最敏感,一共有 3 条控制线:总线请求线、总线忙线和总线同意线。故不管有多少设备,只有一条总线请求线。

分布式仲裁方式不需要中央仲裁器,每个主模块都有自己的仲裁号和仲裁器,多个仲裁器竞争使用总线

【总线控制】

总线控制包括两个方面:判优控制和通信控制

  • 通信控制主要解决通信双方如何获知传输开始和传输结束,以及通信双方如何协调和如何配合
  • 判优控制即总线仲裁,以某种方式选择一个主设备优先获得总线控制权

【时钟发生器】

为协调计算机系统各部件的工作,需要一种器件来提供统一的时钟标准,这个器件就是时钟发生器

7 输入/输出系统

【I/O 指令和通道指令】

1)I/O 指令

操作码作为 I/O 指令与其他指令的判别代码,命令码给出具体操作,设备码给出具体对哪个设备操作

在这里插入图片描述
2)通道指令

  • 通道指令存放在主存
  • 通道指令是通道自身的指令(不属于 CPU 指令系统);而 I/O 指令属于 CPU 指令系统的一部分
  • 在具有通道结构的计算机中,I/O 指令不实现 I/O 数据传送,主要完成启动、停止 I/O 设备,查询通道和 I/O 设备的状态即控制通道所做的其他操作,具体由通道指令来执行 I/O 操作;换句话说,具有通道指令的计算机,一旦 CPU 执行了启动 I/O 设备的指令,就由通道来代替 CPU 对 I/O 设备的管理

【外部设备】

外部设备的定义:除主机以外的硬件装置统称为外部设备,包括 I/O 设备和外存储器

1)输入设备

对键盘的每个键进行编号,将每个编号和一个 ASCII 码进行对应,并存放在 ROM 中

2)输出设备

显示器

对于字符显示器,主机送给显示器的应是显示字符的 ACSII 码

为了不断提供刷新图像的信号,必须把图像信息存储在刷新存储器(也称为视频存储器)。其存储容量由图像分辨率和灰度级决定,分辨率越高,灰度级越高,刷新存储器的容量越大

(具体可参照下面习题理解)

△☼▽

在这里插入图片描述

分析:C,表示 256 的颜色数需要 8bit,即 1B,刷新存储器的容量为 1024×512×1B= 512KB

△☼▽ (2010 年真题)
在这里插入图片描述

分析:D,给出理论公式, 刷 新 所 需 带 宽 = 分 辨 率 × 色 深 × 帧 频 刷新所需带宽 = 分辨率×色深×帧频 =×× 即 1600×1200×24bit×85Hz = 3916.8Mbit/s,显存带宽为 3916.8Mbit/s×2 ≈ 7834Mbit/s

△☼▽

在这里插入图片描述

分析:B,每个汉字需要 16×16×256bit = 32B,故字库容量为 7500×32B = 240000B

【I/O 接口】

1)I/O 接口的概念不同于 I/O 端口

  • I/O 接口是指 I/O 控制器,而 I/O 端口是指 I/O 接口中用于存放命令、数据和状态信息的寄存器
  • 一个 I/O 接口可能有多个地址,因为端口中有多个用户可以访问的寄存器,也就是多个 I/O 端口,一个 I/O 端口有一个地址

△☼▽(2017 年真题)

在这里插入图片描述

分析:D,I/O 端口是 CPU 与设备之间的交界面。由于主机和 I/O 设备的工作方式和速度有很大差异,I/O 端口就应运而生。在执行一条指令时,CPU 使用地址总线选择所请求的 I/O 端口,使用数据总线在 CPU 寄存器和端口之间传输数据。所以,I/O 指令实现的数据传送通常发生在通用寄存器和 I/O 端口之间

总结起来说就是,I/O 设备把数据给 I/O 接口里面的寄存器(即 I/O 端口),I/O 接口再把数据给 CPU

2)I/O 接口的功能

  • 选择设备功能,CPU 具体选择哪台设备,通过设备选择线上的设备选择码来确定,设备码送至所有设备的接口,当设备选择线上的设备码与本设备码相符合时,发出设备选择信号 SEL
  • 传送命令功能,通常在 I/O 接口中设有存放命令的命令寄存器和命令译码器,在此接口的设备选择电路输出了 SEL 信号后,命令寄存器才会接受命令
  • 数据传输功能,接口中通常设有数据缓冲器,用来暂存 I/O 设备与主机准备交换的信息
  • 反映 I/O 设备的工作状态

接口工作过程如下:(在程序中断方式下)

在这里插入图片描述
D 是完成触发器,B 是工作触发器,(D,B)=(0,1)表示开始 I/O 设备传输数据;(D,B)=(1,0)表示数据寄存器被传满了,CPU 可以取数据了

3)I/O 接口的基本结构

在这里插入图片描述
内部接口:与系统总线相连,实质上与内存、CPU 相连,数据传输方式只能是并行传输

外部接口:与外设相连,外部接口的数据传输可能是串行传输,因此 I/O 接口需具有串/并转换功能

【I/O 端口编址——统一编址和独立编址】

  • 在统一编址情况下,尽管存储单元和 I/O 设备之间共用一个存储空间,但是一般都会规定某块地址空间作为 I/O 设备的地址,凡是在这块地址范围内的访问,就是对 I/O 设备的访问
  • 独立编址指 I/O 端口地址与存储器地址无关,所有对 I/O 设备的访问必须有专用的 I/O 指令。独立编址方式下 CPU 需要设置专门的输入/输出指令来访问端口
  • 当 I/O 设备通过接口与主机相连时,CPU 可以通过接口地址来访问 I/O 设备,因为一个接口对应一个 I/O 设备

【程序查询方式】

程序查询方式是在 CPU 主动控制下进行的,当需要输入/输出时,CPU 暂停执行主程序,转去执行输入/输出的服务程序

程序查询方式下的多设备的查询是轮询的,不会回查,即如果第 N-1 个设备处理完成,即使其之前的第 N-2 准备就绪也没有用,继续往下测试第 N 个设备 ,直到所有设备查询完,在回到第 1 个设备开始往下测试

程序查询方式存在的问题是:

  1. 当 I/O 设备与主机交换信息时,都要经过 CPU,效率低下
  2. 每个 I/O 设备的逻辑控制电路与 CPU 的控制器紧密构成一个不可分割的整体,所以想要增加或者删除设备时是非常困难的

△☼▽

在这里插入图片描述

分析:

每秒钟对鼠标查询所需要的时钟周期数为 30×100 = 3000 个,对鼠标的查询占用 CPU 的时间比率为 (3000/50M)×100% = 0.006%,由此可以得出一个结论:CPU 对鼠标的查询基本不影响 CPU 的性能

对硬盘,每秒钟查询次数为 2MB/4B = 219,每秒钟查询的时钟周期数为 219×100 ≈ 512×105 个,对磁盘的查询占用 CPU 的时间比率为 (512×105/50M)×100% ≈ 102 %,得出结论:即使 CPU 将全部时间都用于对磁盘的查询也不能满足磁盘传输的要求,因此 CPU 一般不使用程序查询方式和与磁盘交换信息

△☼▽

在这里插入图片描述

分析:C,(500×200)/50M×100% = 0.2%

【中断服务程序】

中断服务程序的最后一条指令是中断返回指令

其执行顺序为: 保存现场 → \rightarrow 中断事件处理 → \rightarrow 恢复现场 → \rightarrow 开中断 → \rightarrow 中断返回

△☼▽(2010 年真题)
在这里插入图片描述

分析:A,理论如上所述

多问一句?如果是多重中断,那么开中断的这一步安排在哪里呢?安排在保护现场之后,紧跟着开中断

【中断隐指令】

中断隐指令主要完成3个操作:

  • 保护程序断点( ≠ \neq = 保存通用寄存器的内容,因为保存通用寄存器内容是在处理中断时保护现场完成的)
  • 寻找中断服务程序入口地址并送至 PC
  • 关中断

在中断周期,CPU 完成的任务是执行中断隐指令,所以问 CPU 在中断周期完成的主要工作就是问中断隐指令的3个操作

【中断允许触发器】

禁止中断的功能可以由中断允许触发器来完成,当中断允许触发器为 1 时,说明某设备可以向 CPU 发出中断请求;当中断允许触发器为 0 时,不能想 CPU 发出中断请求

【程序中断方式】

△☼▽

在这里插入图片描述

分析:A,一次中断传输 4B 数据,设备每秒传输 50kB数据,故每秒产生 12.5k 次中断,每次中断开销为 1000 个时钟周期,故时间占比为 (12.5k×1000)/1G×100% = 1.25%

△☼▽ (延迟时间做干扰)

在这里插入图片描述

分析:B,无论怎么延迟,每 400ns 的间隔中还是要要花费 100 ns处理中断,故百分比为 (100/400)×100% = 25%

在这里插入图片描述

△☼▽ (考虑中断请求间隔和数据丢失的问题)

在这里插入图片描述

分析:
(1)中断请求的时间间隔为 2B/20KB/s = 100us,中断服务程序的执行时间为 (1/500MHz)×500 = 1us,因为中断响应过程就是执行一个隐指令的过程,所用时间相对中断处理时间而言,几乎可以忽略不计,因而整个中断响应时间并处理的时间大约为 1us 多一点,远小于中断请求的时间间隔,因此可以采用中断方式进行该外设的输入/输出
(2)若该外设的最大数据传输速率为 2MB/s,则中断请求的时间间隔为 2B/2MB/s = 1us,中断请求的时间间隔小于中断响应及处理的时间,即中断还未结束就会有新的中断到来,因此不可以用中断方式进行该外设的输入/输出

【DMA 方式】

1)DMA 方式的特点

DMA方式是一种完全由硬件进行成组信息传送的控制方式,具有程序中断方式的优点,即在数据准备阶段,CPU 与外设并行。它还降低了 CPU 在传送数据时的开销,这是因为信息传送不再经过 CPU,而在外设与内存之间直接进行,因此称为直接存储器存取方式。这种方式适用于磁盘、磁带等高速设备大批量数据的传送。它的硬件开销比较大,DMA 方式中,中断的作用仅限于故障和正常传送结束时的处理 (考虑下面一题结合着理解)

△☼▽

在这里插入图片描述

分析:A,DMA 中的中断与中断传输方式是有区别的,前者用于向 CPU 报告数据传输结束,后者是传输数据,另外 DMA 方式中的中断不包括检查是否出错,而是报告错误

关于直接存储器存取的解释:DMA 方式下,在主存和外设之间有一条物理通路直接相连吗?

答: 没有,通常所说的 DMA 方式下数据在主存和外设之间直接进行传送,其含义并不是说在主存和外设之间存在一条物理上的直接通路,而是在主存和外设之间通过外设接口、系统总线以及总线桥接部件等连接,建立其一个信息可以互相通达的通路,直接通路一定是逻辑上的含义

2)DMA 的传送方法

① 停止 CPU 访问主存

当外设需要传送一片数据时,由 DMA 接口向 CPU 发出一个信号,要求 CPU 放弃地址线、数据线和有关控制线的使用权,DMA 接口获得总线控制权后,开始进行数据传送。在数据传送结束后,DMA 接口通知 CPU 可以使用主存,并把总线控制权交还给 CPU。在这种传送过程中,CPU 基本处于不工作状态或保持原始状态。 由此,该方法最大的缺点是:在访存阶段,主存的效能未充分发挥

在这里插入图片描述

② 周期挪用

当 I/O 设备没有 DMA 请求时,CPU 按程序的要求访问主存,一旦 I/O 设备有 DMA 请求,就会遇到三种情况:

  1. CPU 不在访存(如,CPU 正在执行加法指令),故 I/O 的访存请求与 CPU 未发生冲突;
  2. CPU正在访存,必须等待储存周期结束后,CPU 再将总线占有权让出;
  3. I/O 和 CPU 同时请求访存,出现了访存冲突,此刻 CPU 要暂时放弃总线占有权,由 I/O 设备挪用一个或几个存储周期

在这里插入图片描述
③ DMA 与 CPU 交替访问

这种方式适用于 CPU 的工作周期比主存存取周期长,例如,CPU 的工作周期是 1.2us,主存的存取周期小于 0.6us,那么可以将一个 CPU 周期分为 C1 和 C2 两个周期,其中 C1 专供 DMA 访存,C2 专供 CPU 访存

在这里插入图片描述
这种方式不需要总线使用权的申请、建立和归还过程

3)传送过程

DMA 的传送过程分为预处理、数据传送和后处理

在这里插入图片描述

做几点说明:

  • 数据传送时是以数据块为单位进行传送
  • DMA 方式中,首先由外部设备向 DMA 控制器发出 DMA 请求信号,然后由 DMA 控制器向 CPU 发出总线请求信号
  • 当字计数器溢出(全 0)时,表示一批数据交换完毕,由溢出信号通过中断机构向 CPU 提出中断请求
    怎么理解字计数器全 0 溢出呢?一般将字数取反,得到负数,再取补码,不断加 1,直到最高位有进位就会溢出,传输结束。具体考虑下面的例子:字数为 5,取反为 -5,补码为 1011,第一次末尾加一得 1100,第二次末尾加一得 1101,第三次末尾加一得 1110,第四次末尾加一得 1111,第五次末尾加一得 10000,溢出,传输结束

△☼▽

在这里插入图片描述

分析:D,Ⅰ. 参考操作系统,每类设备都配置一个设备驱动程序,设备驱动程序向上层用户程序提供一组标准接口,负责实现对设备各种具体操作指令,用户程序不能直接和 DMA 打交道;Ⅱ. Ⅲ. Ⅴ. 由上述理论可知,均正确

4)DMA 方式与程序中断方式的比较

中断处理方式: 在 I/O 设备输入每个数据的过程中,由于无需 CPU 干预,因此可使 CPU 与 I/O 设备并行工作仅当传输完一个数据时,才需 CPU 花费极短的时间去做些中断处理。因此中断申请使用的是 CPU 处理时间,发生的时间是在一条指令执行结束之后,数据是在软件控制下完成传送

DMA 方式: DMA 方式的数据传输的基本单位是数据块,即 CPU 与 I/O 设备之间,每次传送至少一个数据块;DMA 方式每次申请的是总线的使用权,所传送的数据是从设备直接送入内存的,或者相反;仅在一个或多个数据块的开始和结束时,才需要 CPU 干预,因此 DMA 的响应发生在一个总线事务完成后,整块数据的传送是在控制器(硬件)的控制下完成的

所以,中断 I/O 方式一般适用于数据传输率比较低的外部设备(不适合快速外部设备),而 DMA 方式一般适用于快速外部设备

下面再来考虑响应时间的问题:CPU 对 DMA 请求和中断请求的响应时间是否一样?

答:不一样。根据上面的描述很清楚,CPU 对 DMA 的响应发生在一个总线事务完成后,所以 DMA 响应时间应该少于一个总线周期;而对中断请求,CPU 总是要等到一条指令执行结束后,才回去查询有无中断请求,所以响应时间少于一个指令周期的时间

最后,程序中断方式有处理异常事件的能力,而 DMA 方式没有这种能力;DMA 的优先级比程序中断的优先级高

5)若干关于 DMA 的计算题

△☼▽(2016 年真题)

在这里插入图片描述

分析:

(1)每传送一个字符,在异步串行通信线上需要传输 7 + 1 + 1 + 1 = 10 7+1+1+1=10 7+1+1+1=10 位( 7 7 7 位 ASCII 码, 1 1 1 位奇校验位, 1 1 1 位停止位,还有 1 1 1 位起始位),每秒可最多向 I/O 端口送入 1000 / 0.5 = 2000 1000/0.5 = 2000 1000/0.5=2000 个字符

(2)一个字符的传送时间包括:从 D 接收启动命令到字符送入 I/O 端口时间,中断响应时间,中断服务前 15 15 15 条指令执行时间

中断响应和中断服务前 15 条指令执行需要 10 + 15 × 4 = 70 10+15\times4=70 10+15×4=70 个时钟周期。每个时钟周期为 1 50 M = 0.02   u s \frac{1}{50M}=0.02\ us 50M1=0.02 us,从 D 接收启动命令到字符送入 I/O 端口需要 0.5 × 1 0 3   u s 0.02   u s = 2.5 × 1 0 4 \frac{0.5\times10^3\ us}{0.02\ us}=2.5\times10^4 0.02 us0.5×103 us=2.5×104 个时钟周期

故完成这一任务需要 ( 2.5 × 1 0 4 + 70 ) × 1 0 3 = 25070000 (2.5\times10^4+70)\times10^3=25070000 (2.5×104+70)×103=25070000 个时钟周期

CPU 完成这一任务需要 ( 20 × 4 + 10 ) × 1 0 3 = 9 × 1 0 4 (20\times4+10)\times10^3=9\times10^4 (20×4+10)×103=9×104 个时钟周期(注意,对 CPU 来说其执行中断服务程序是执行了 20 20 20 条指令)

在中断响应阶段,CPU 完成了关中断、保护断点和程序状态、识别中断源的操作

△☼▽ (考虑数据丢失问题)

在这里插入图片描述

分析:

(1)程序定时向缓存端口查询数据,由于缓存端口大小有限,必须在传输完端口大小的数据时访问端口,以防止部分数据未被及时读出而丢失。设备 A 的数据传输率为 2MB/s,传输 32 位数据需要 4B/2MB/s = 2us,故最多间隔 2 us查询一次才能不丢失数据;1s 内需查询 2MB/4B = 5×105 次,每次查询占用 10×4 = 40 个时钟周期,一共占用 20M 个时钟周期,故 CPU 用于设备 A 输入/输出的时间占 CPU 总时间的 20M/500M×100% = 4%

(2)设备 B 的最大间隔时间为 4B/40MB/s = 0.1us,主频 500MHz,一个时钟周期为 2ns,每次中断响应和中断处理的总时间为 2ns×400 = 0.8us > 0.1us,故设备 B 不能采用中断 I/O 方式,因为会导致数据丢失

(3)为达到设备 B 的传输速率,1s 内会发生 40MB/1000B = 4×104 次DMA,每次 DMA 预处理和后处理需要 500 个时钟周期,一共需要 4×104×500 = 20M 个时钟周期,故 CPU 用于设备 B 输入/输出的时间占比为 20M/500M×100% = 4%

△☼▽ (考虑存储周期来讨论 DMA 的数据传输时间)

在这里插入图片描述

分析:
每秒传输 9600bit = 1200B 数据,若采用 DMA 方式,则传输1200B 数据需要 1200 个存取周期,考虑到每 400B 数据发生一次中断,故 DMA 每秒因数据传输占用处理器的时间为 1200×0.2us+(1200/400)×5us = 255us;采用中断方式,每秒因数据传输占用处理器的时间为 1200×5us = 6000us

解释一点:中断方式下为什么不加上 1200×0.2us?中断方式的中断和 DMA 的中断不是一回事,中断方式的中断包含数据的传输时间,而 DMA 的中断仅仅是后处理的时间,并不包含数据传输的时间

△☼▽(2009 年真题)

在这里插入图片描述

分析:
(1)在中断方式下,CPU 每次用于数据传输的时钟周期数为 5×(18+2) = 100 个,外设每秒申请中断次数为 0.5MB/4B ≈ 125000 次,一秒内用于中断的开销为 125000×100 = 1.25×107 个时钟周期,故 CPU 用于外设 I/O 的时间占整个 CPU 时间的百分比为 (12.5M/500M)×100% = 2.5%

(2)一秒内产生的 DMA 中断次数为 5MB/5000B ≈ 1000 次,CPU 用于 DMA 处理的总开销为 1000×500 = 0.5M 个时钟周期,故 CPU 用于外设 I/O 的时间占整个 CPU 时间的百分比为 (0.5M/500M)×100% = 0.1%

(注意这里给出来的 DMA 的 500 个时钟周期是预处理和后处理的总开销,和上题中的情况是不同)

△☼▽

在这里插入图片描述

分析:

(1)每秒钟需要 1MB/4B = 250K 次查询操作,故总共需要 25000K 个时钟周期,CPU 为 I/O 查询所花费的时间比率为 25M/50M×100% = 50%

(2)CPU 为传输硬盘数据花费的时间比率为 50%(同(1))

(3)每秒钟需要 1MB/4KB = 250 次 DMA 传输,处理器用于输出/输出操作的时间比率为 (250×(1000+500))/50M×100% = 0.75%

△☼▽

在这里插入图片描述

分析:题目中假设一条指令最长执行时间为 25s 改为 25us

数据传输率为 50r/s×8×1KB = 400KB/s,16 位数据的传输时间为 2B/400KB/s = 5 us,由于 5us 远小于 25us,因此不能采用一条指令执行结束时响应 DMA 请求的方案,应采用每个 CPU 机器周期末查询及响应 DMA 的请求方案

【内中断(内部异常)】

  • 内中断是指来自 CPU 和内存内部产生的中断,包括程序运算引起的各种错误,如 地址非法、校验错、页面缺失、非法指令、用户程序执行特权指令自行中断(INT)和除数为 0 等,以上都是在指令的执行过程中产生
  • 这种检验异常的工具肯定是由 CPU(包括控制器和运算器)实现的
  • 内中断不能被屏蔽,一旦出现应立即处理
  • 考虑一些特殊情况,如除数为 0 和自行中断(INT)都会自动跳过中断指令,所以不会返回到发生异常的指令继续执行

【中断与异常】

  • 中断是指来自 CPU 执行命令意外事件的发生,如设备发出 I/O 结束中断,表示设备输入/输出处理已经完成,希望处理器能够向设备发出下一个输入/输出请求,同时让完成输入/输出后的程序继续运行。这一类中断通常是与当前程序运行无关的事件,即它们与当前处理器运行的程序无关
  • 异常也称为内部异常、内中断,其内容如上所述

【多重中断】

多重中断系统在保护被中断进程现场时关中断,执行中断处理程序时开中断

△☼▽(2017 年真题)
在这里插入图片描述

分析:B,理论如上所述

△☼▽

在这里插入图片描述

分析:该中断系统可以实现 5 重中断(看优先级),中断优先级的顺序是:优先权 1 最高,而现行程序优先权最低(不妨设为优先权 6),图中出现了 4 重中断(优先权为 5 的中断没有体现)

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值