IO 系统基本概念

IO 接口 (IO 控制器)

image.png

IO 控制方式

程序查询方式

程序中断方式

image.png
数据流必须经过 CPU 才能到主存
程序中断方式中,对于快速 IO 设备,比如磁盘,每准备好一个字就给 CPU 发送一次中断请求,会导致 CPU 需要花大量时间处理中断服务程序,CPU 利用率严重下降。

DMA 控制方式

image.png
DMA 控制方式,直接让高速外设和磁盘传输数据,数据流不用经过 CPU。当把一整块数据读到内存后才告诉 CPU,看 CPU 后续如何操作、利用调入主存的这些数据。
对于大型机上接很多个 IO 设备的情况,CPU 难以独自管理,可以用通道控制方式,利用通道对 IO 设备进行统一管理。

通道控制方式

image.png

IO 系统基本组成

image.png

小结

image.png

输入输出设备

image.png
分辨率:像素个数
灰度级位数:每个像素点需要多少个比特位表示
显示存储器:也叫刷新存储器
VRAM 容量 = 分辨率 × 灰度级位数,一帧图像的大小,是显存容量理论最小值
VRAM 带宽 = 分辨率 × 灰度级位数 × 帧频,每秒刷新多少帧,也就是 VRAM 每秒可以写入多少数据
显示字符的方法以点阵为基础。点阵是指由 m×n 个点组成的阵列。将点阵存入由 ROM 构成的字符发生器中,需要显示时按照点阵中 0 和 1 代码不同控制扫描电子束的开或关,从而在屏幕上显示出字符。对应于每个字符,所显示字符的 ASCII 代码被存放在显示存储器 VRAM 中,以备刷新。

外存储器

磁盘存储器

磁记录原理

image.png

磁盘设备的组成

image.png
image.png

磁盘的性能指标⭐

image.png

磁盘地址

image.png

磁盘阵列 RAID

image.png

光盘存储器

image.png

固态硬盘

image.png

小结

image.png

IO 接口

IO 接口的作用

image.png

结构和工作原理

image.png
CPU 与 IO 接口之间的 IO 总线包括三条信号线:数据线、地址线、控制线;
数据线用于读写数据、状态字、控制字、中断类型号;
地址线用于指明 IO 端口
控制线用于读 / 写 IO 端口的信号、中断请求信号
控制寄存器、状态寄存器在使用时间上是错开的,因此有的 I/O 接口中可将二者合二为一
IO 控制器中的各种寄存器称为 IO 端口

IO 端口

image.png
image.png
image.png

分类

image.png

小结

image.png

程序查询方式

例题

image.png
image.png

中断系统

image.png

单重中断

image.png

多重中断

image.png
image.png

例题

image.png

程序中断方式⭐

image.png
例题
image.png
中断小结
image.png

DMA 方式⭐

用于高速外设 (磁盘),以块为单位(多个字) 进行读写

DMA 控制器

主要功能
image.png
组成
image.png

传送过程

image.png

传送方式

image.png

特点

image.png

与中断方式区别

image.png

小结

image.png

例题

image.png
image.png
注:最后一句话中 “故” 字多余

习题

  1. 磁盘组有 6 片磁盘,每片有两个记录面,最上最下两个面不用。存储区域内径 22cm ,外径 33cm ,道密度为 40 道 / cm ,内层位密度 400 位 / cm, 转速 2400 转 / 分。问:

(1) 共有多少柱面?
(2) 盘组总存储容量是多少?
(3) 数据传输率多少?
(4) 若有四组磁盘,每组有 16 个记录面,每面有 256 个磁道,每道有 16 个扇区。采用定长数据块记录格式,直接寻址的最小单位是什么? 寻址命令中如何表示磁盘地址?
(5) 如果某文件长度超过一个磁道的容量,应将它记录在同一个存储面上,还是记录在同一个柱面上?
(6) 若找道时间 10ms ,则平均寻址时间是什么?
解析:
(1) 内径外径指的是直径
(33/2-22/2)×40=220 道,220 个柱面
(2)400×2×Π×11×220×(6×2)-2=7598800B
(3)2400/60=40 转 / s;40×400×2×Π×11=13816B/s
(4) 采用定长数据块记录格式,直接寻址的最小单位是一个记录块 ( 一个扇区)
驱动器号 2bit、柱面 (磁道号)8bit、盘面号 4bit、扇区号 4bit
(5) 如果某文件长度超过一个磁道的容量,应将它记录在同一个柱面上,因为不需要重新找道,数据读 / 写速度快
(6) 寻道时间:定位磁道;平均旋转时间:定位扇区
平均寻址时间 = 寻道时间 + 平均旋转时间 (旋转半圈时间)=10ms+{[1/(2400/60)]×103}/2=22.5ms


  1. 设某磁盘由 8 片盘组成,其中最上面和最下面两面不记录信息,已知该片每个记录面有 1024 个磁道,每个磁道有 64 个扇区, 每个扇区 512 字节。盘片转速为 6000 转 / 分,平均寻道时间为 12ms ,启动延迟 1ms。假设磁盘最内圈直径为 5cm ,最外圈直径为 10cm 。

计算:
(1) 磁盘的容量;
(2) 磁盘地址需要多少位;
(3) 磁盘的数据传输率;
(4) 读写一个扇区的数据需要的平均访问时间;
(5) 该盘的道密度;
(6) 最小位密度和最大位密度。
解析:
(1)512×64×1024×(8×2-2)=44.8MB
(2) 驱动器号 0bit,柱面 (磁道号)10bit,盘面号 4bit,扇区号 6bit;磁盘地址需要 20bit
(3)6000/60=100 转 / s,64×512×100=3,276,800B/s
(4) 读写一个扇区的平均访问时间 = 启动延迟 + 寻道时间 + 平均旋转时间 (旋转半圈时间)+ 数据传输时间 +=1ms+12ms+{[1/(6000/60)]/2}×103ms+512/3276800×103ms≈18.16ms
(5)(10-5)/2=2.5cm,1024/2.5=409.6 道 / cm
(6)R1=10/2=5cm,2ΠR1=31.4cm,(512×64×8/1024)/31.4≈8bit/cm
R2=5/2=2.5cm,2ΠR2=15.7cm,(512×64×8/1024)/15.7≈16bit/cm


  1. 某磁盘的转速为 10 000 转 / 分,平均寻道时间是 6ms ,磁盘传输效率是 20MB/s ,磁盘控制器延迟为 0.2ms ,读取一个 4KB 的扇区所需的平均时间约为()
    A. 9ms
    B. 9.4ms
    C. 12ms
    D. 12.4ms
    解析:
    同上题,寻道时间 6ms,延迟时间 0.2ms,平均旋转时间 3ms,数据传输时间 0.2ms
    所以答案为 B

4.(2015-20) 若磁盘转速为 7200 转 / 分,平均寻道时间为 8ms, 每个磁道包含 1000 个扇区,则访问一个扇区的平均存取时间大约是 ( )
A .8.1ms
B .12.2ms
C .16.3ms
D .20.5ms
解析:
同上题,寻道时间 8ms,平均旋转时间 4.17ms;
所以答案为 B


  1. 某 CRT 显示器可显示 64 种 ASCII 字符,每帧可显示 64 字 ×25 排;每个字符字形采用 7×8 点阵,即横向 7 点,字间间隔 1 点,纵向 8 点,排间间隔 6 点,采取逐行扫描方式 。水平回归消隐期 12 ,垂直回归消隐 10.

(1) 缓存容量有多大?
(2) 字符发生器 (ROM) 容量有多大?
(3) 缓存中存放的是 ASCII 代码还是点阵信息?
(4) 缓存地址与屏幕显示位置如何对应?
(5) 设置哪些计数器以控制缓存访问屏幕扫描之间的同步? 它们的分频关系如何?
解析:
(1) 缓存容量为 64×25×8=1600 字节
(2)ROM 容量为 64 种 ×8 行 ×8 列 = 512 字节
(3) 缓存就是显存、刷新存储器、视频存储器,其中存放的是代显示字符的 ASCII 代码
(4) 显示位置自左至右,从上到下,相应地缓存地址由低到高每个地址码对应一个字符显示位置
(5)水平地址计数器 (字计数器)对一行的显示进行控制;光栅地址计数器制 (行计数器) 对字符窗口的高度进行控制;垂直地址计数器 (排计数器)控制行的显示
字计数器 (64+12):1 分频;排计数器 (25+10):1 分频;点计数器 (7+1):1 分频;行计数器 (8+6):1 分频;


  1. 刷存的重要性能指标是它的带宽。实际工作时显示适配器的几个功能部分要争用刷存的带宽。假定总带宽的 50% 用于刷新屏幕,保留 50% 带宽用于其他非刷新功能。
    (1) 若显示工作方式采用分辨率为 1024 ×768 ,颜色深度为 3B ,帧频 ( 刷新速率) 为 72Hz,计算刷存总带宽应为多少?
    (2) 为达到这样高的刷存带宽,应采取何种技术措施?
    解析:
    (1) 刷新带宽 = 分辨率 × 每个像素点颜色深度 × 刷新速率
    刷存用于刷新屏幕的带宽 = 1024×768×72=162MB/s
    刷存总带宽 = 162×2=324MB/s
    (2)①使用高速的 DRAM 芯片组成刷存;② 刷存采用多体交叉结构;③刷存至显 示控制器的内部总线宽度由 32 位提高到 64 位,甚至 128 位 ;④刷存采用双端 口存储器结构,将刷新端口与更新端口分开。

  1. 假定一台计算机的显示存储器用 DRAM 芯片实现,若要求显示分辨率为 1600*1200 ,颜色深度为 24 位,帧频为 85HZ ,现实总带宽的 50% 用来刷新屏幕,则需要的显存总带宽至少约为()
    A 、245Mbps
    B 、979Mbps
    C 、1958Mbps
    D 、7834Mbps
    解析:
    同上题,1600×1200×24×85×2/106=7833.6Mbps
    所以答案为 D

8.image.png
解析:
系统总线 - 三总线结构 - IO 总线连接 IO 接口和 CPU;命令字、状态字、中断类型号都通过数据线传输。
所以答案为 D


9.(2014-21) 下列关于 I/O 接口的叙述中,错误的是 ()
A. 状态端口和控制端口可以合用同一个寄存器
B. I/O 接口中 CPU 可以访问的寄存器称为 I/O 端口
C. 采用独立编址方式时,I/O 端口地址和主存地址可能相同
D. 采用统一编址方式时,CPU 不能用访存指令访问 I/O 端口
解析:
控制寄存器、状态寄存器在使用时间上是错开的,因此有的 I/O 接口中可将二者合二为一,A 对;
IO 控制器 (IO 接口) 中的各种 CPU 可以访问的寄存器称为 IO 端口,B 对;
统一的话,就是一致的去编码,肯定不会出现重名的情况,而独立的话可能会出现相同的情况,C 对;
采用统一编址方式时,CPU 可以用访存指令访问 I/O 端口,D 错。
所以答案为 D


  1. (2011 年统考) 某计算机处理器主频为 50 MHz ,采用定时查询方式控制设备 A 的 I/O ,查询程序运行一次所用的时钟周期数至少为 500 。在设备 A 工作期间,为保证数据不丢失,每秒需对其查询至少 200 次,则 CPU 用于设备 A 的 I/O 的时间占整个 CPU 时间的百分比至少是A. 0.02%B. 0.05%C. 0.20%D. 0.50%

解析:
CPU 时钟周期:1/(50M)s;每秒查询所需时钟周期数:200×500=100000;每秒查询 A 所需时间:1/(50M)×100000=1/500s
1/500=0.2%
所以答案为 C


11.image.png
解析:
采用中断 IO 方式,不可能交换主存地址,因为数据 (要打印的字符) 是 CPU 用主存地址从主存中去取出来的,与 IO 端口无关
所以答案为 B


  1. 单级中断系统中,中断服务程序执行顺序是()
    I. 保护现场
    II. 开中断
    III. 关中断
    IV. 保存断点
    V. 中断事件处理
    VI. 恢复现场
    VII. 中断返回
    A 、I->V->VI->II->VII
    B 、III->I->V->VII
    C 、III->IV->V->VI->VII
    D 、IV->I->V->VI->VII
    解析:
    中断隐指令:关中断→保存断点→调用中断服务程序
    中断服务程序:保存现场→中断服务程序控制数据传送→恢复现场
    所以答案为 A

  1. 异常是指指令执行过程中在处理器内部发生的特殊事件,中断是指来自处理器外部的请求事件。下列关于中断或异常情况的叙述中,错误的是( )
    A.“访存时缺页” 属于中断
    B.“整数除以 0” 属于异常
    C.“DMA 传送结束” 属于中断
    D.“存储保护错” 属于异常
    解析:
    虚存系统的缺页是由 CPU 内部异常引起的意外事件,属于异常,A 错
    所以答案为 A

14.(2009) 下列选项中,能引起外部中断的事件是()。
A 、键盘输入
B 、除数为 0
C 、浮点运算下溢
D、访存缺页
解析:
键盘输入是来自处理器外部的请求事件
所以答案为 A


15.(2011) 某计算机有五级中断 L4 ~ L0 ,中断屏蔽字为 M4M3M2M1M0 ,Mi=1(0≤i≤4) 表示对 Li 级中断进行屏蔽, 且要求中断处理优先级从高到低的顺序为 L4→L0→L2→L1→L3 ,则 L1 的中断处理程序中设置的中断屏蔽字是
A. 11110
B. 01101
C. 00011
D. 01010
解析:
Mi=1(0≤i≤4) 表示对 Li 级中断进行屏蔽,L1 只能屏蔽本身和优先级比它低的 L3,所以 L1 的中断屏蔽字为 00011(我第一次写错了顺序😢),M4M3M2M1M0=01010
所以答案为 D


image.png
16. 下图所示的二维中断系统。
(1) 在中断情况下,CPU 和设备的优先级如何考虑? 请按降序排列各设备的中断优先级。
(2) 若 CPU 现执行设备 B 的中断服务程序,IM2 ,IM1 ,IM0 的状态是什么? 如果 CPU 执行设备 D 的中断服务程序,IM2 ,IM1 ,IM0 的状态又是什么?
(3) 每一级的 IM 能否对某个优先级的个别设备单独进行屏蔽? 如果不能,采取什么办法可达到目的?
(4) 假如设备 C 一提出中断请求,CPU 立即进行响应,如何调整才能满足此要求?
解析:
(1)A B C D E F G H I CPU
(2) 不屏蔽比它优先级高的,屏蔽为 1。CPU 现执行设备 B 的中断服务程序,IM2IM1IM0=111;CPU 现执行设备 D 的中断服务程序,IM2IM1IM0=011。、
(3) 不能 。可将接口中的 EI(中断允许) 标志清 “0”,它禁止设备发出中断请求。
(4) 将设备 C 从第 2 级取出来,单独放在第 3 级上,使第 3 级的优先级最高,即令 IM3=0 即可


17.(2014-22) 若设备中断请求的响应和处理时间为 100ns ,每 400ns 发出一次中断请求,中断响应所允许的最长延迟时间为 50ns ,则在该设备持续工作过程中,CPU 用于该设备的时间占整个 CPU 时间的百分是比至少是 ()
A.12.5%
B.25%
C.37.5%
D.50%
解析:
每 400ns 发出一次中断请求,而响应和处理时间为 100ns,其中允许的延迟为干扰信息,因为在 50ns 内,无论怎么延迟,每 400ns 还是要花费 100ns 处理中断的。题干说明两次请求间隔 400ns,意味着响应和处理时间 100ns 包括在 400ns 内,所以该设备的 I/O 时间占整个 CPU 时间的百分比为 100ns/400ns=25%
所以答案为 B


  1. 下图中假设有磁盘、磁带、打印机三个设备同时工作。磁盘以 30μs 的间隔向控制器发 DMA 请求,磁带以 45μs 的间隔发 DMA 请求,打印机以 150μs 间隔发 DMA 请求。根据传输速率,磁盘优先权最高,磁带次之,打印机最低,图中假设 DMA 控制器每完成一次 DMA 传送所需的时间是 5μs 。若采用多路型 DMA 控制器,请画出 DMA 控制器服务三个设备的工作时间图image.png

解析:
由图看出,T1 间隔中控制器首先为打印机服务,因为此时只有打印机有请求。T2 间隔前沿磁盘、磁带同时有请求,首先为优先权高的磁盘服务,然后为磁带服务,每次服务传送一个字节。在 150μs 时间阶段中,为打印机服务只有一次 (T1) ,为磁盘服务四次 (T2,T4 ,T6 ,T7) ,为磁带服务三次 (T3 ,T5 ,T8) 。
从图上看到,在这种情况下 DMA 尚有空闲时间,说明控制器还可以容纳更多设备。由于多路型 DMA 同时要为多个设备服务 ,因此对应多少个 DMA 通路 (设备) ,在控制器内部就有多少组寄存器用于存放各自的传送参数。


  1. 某计算机的 CPU 主频为 500MHz ,CPI 为 5(即执行每条指令平均需 5 个时钟周期)。假定某外设的数据传输率为 0.5MB/s,采用中断方式与主机进行数据传送,以 32 位为传输单位,对应的中断服务程序包含 18 条指令,中断服务的其他开销相当于 2 条指令的执行时间。请回答下列问题,要求给出计算过程。
    (1)在中断方式下,CPU 用于该外设 I/O 的时间占整个 CPU 时间的百分比是多少?
    (2)当该外设的数据传输率达到 5MB/s 时,改用 DMA 方式传送数据。假设每次 DMA 传送大小为 5000B ,且 DMA 预处理和后处理的总开销为 500 个时钟周期,则 CPU 用于该外设 I/O 的时间占整个 CPU 时间的百分比是多少?(假设 DMA 与 CPU 之间没有访存冲突)
    解析:
    (1)在中断方式下,CPU 每 32 位 (4B) 被中断一次,这里是数据传输率,描述速度,所以 1MB=106B 。故
    每秒中断次数为 5×105B/4B=125000;CPU 每秒处理中断所需的时钟周期数 = 125000×(18+2)×5=12.5M;
    则 CPU 用于该外设 I/O 的时间占整个 CPU 时间的百分比是 12.5M/500M=2.5%
    (2)DMA 直接访问内存,以块为传输单位,本题块大小为 5000B
    每秒 DMA 次数:5MB/5000B=1000 次;CPU 每秒处理 DMA 所需的时钟周期数 = 1000×500=0.5M;
    则 CPU 用于该外设 I/O 的时间占整个 CPU 时间的百分比是 0.5M/500M=0.1%

  1. 一个 DMA 接口采用周期挪用方式把字符 (大小 1B) 传送到存储器,它支持的最大批量为 400 字节。若存取周期 为 100ns ,每处理一次中断需 5µs ,现有字符设备的传输率为 9600bps 。假设字符之间的传输是无间隙的,若忽略预处理所占时间,试问采用 DMA 方式每秒因数据需占用 CPU 多少时间?如果完全采用中断方式,又需占 CPU 多少时间?
    解析:
    (1) 每秒 DMA 次数:9600/8/400=3;CPU 每秒处理 DMA 所需的时间:3×5μs=15μs
    数据存取所需时间:1200×100ns=120000ns
    采用 DMA 方式每秒因数据需占用 CPU 时间:15μs+120000ns=135μs
    (2) 若采用中断方式,每传送一个字符,CPU 就处理中断一次,
    采用中断方式每秒因数据需占用 CPU 时间:1200×5μs=6000μs

21.(2013-22) 下列关于中断 I/O 方式和 DMA 方式比较的叙述中,错误的是 ()
A. 中断 I/O 方式请求的是 CPU 处理时间,DMA 方式请求总线使用权
B. 中断响应发生在一条指令执行结束后,DMA 响应发生在下一个总线事物完成后
C. 中断 I/O 方式下数据传送通过软件完成,DMA 方式下数据传送由硬件完成
D. 中断 I/O 方式适用于所有外部设备,DMA 方式仅适用于快速外部设备
解析:
中断处理方式:在 IO 设备等待输入数据时,CPU 去做别的工作。仅当输完一个数据时,才需 CPU 去中断处理数据,数据流需要经过 CPU。因此中断申请使用的是 CPU 处理时间,发生的时间是在一条指令执行结束之后,数据是在软件的控制下完成传送。
DMA 方式:数据传输的基本单位是数据块,即在 CPU 与 IO 设备之间,每次传送至少一个数据块,数据流不用经过 CPU;DMA 方式每次申请的是总线的使用权,所传送的数据是从设备直接送入内存的,仅在传送一个或多个数据块的开始和结束时,才需 CPU 干预,整块数据的传送是在 IO 控制器 (硬件) 的控制下完成的。
综上,ABC 正确;
对于高速外设若采用中断方式,效率低,所以中断 I/O 方式不适用于高速外设
在白中英的计算机组成原理 (第六版)P265 上有介绍:“选择型 DMA 控制器不适用于慢速设备。但是多路型 DMA 控制器却适合于同时为多个慢速外围设备服务。”
综上,D 错
所以答案为 D


  1. 假定计算机主频为 500MHz,CPI 为 4。现有设备 A 和 B,其数据传输率分别是 2MB/s 和 40MB/s,对应的 I/O 接口中各有一个 32 位的数据缓冲寄存器。请回答下列问题,要求给出计算过程。
    (1)若设备 A 采用定时查询 I/O 方式,每次输入 / 输出都至少执行 10 条指令。设备 A 最多间隔多长时间查询一次才能不丢失数据?CPU 用于设备 A 输入 / 输出的时间占 CPU 总时间的百分比是多少?
    (2)在中断 I/O 方式下,若每次中断响应和中断处理的总时钟周期数至少为 400,则设备 B 能否采用中断 I/O 方式?为什么?
    (3)若设备 B 采用 DMA 方式,每次 DMA 传输的数据块大小为 1000B,CPU 用于 DMA 预处理和后处理的总时钟周期数为 500,则 CPU 用于设备 B 的输入 / 输出时间占 CPU 总时间的百分比是多少?
    解析:
    (1) 最长间隔时间为 32bit 数据缓冲寄存器刚好存满就查询,查询间隔时间再长的话还没用的数据会被覆盖。
    设备 A 准备 32bit 数据所需时间:4B/2MB=2μs,所以设备 A 最多间隔 2μs 查询一次才能不丢失数据
    每秒查询次数:1s/2μs=5×105,每秒 IO 所占时钟周期数:5×105×10×4=20M
    CPU 用于设备 A 的 IO 时间占 CPU 总时间的百分比:20M/500M=4%
    (2) 每次中断响应和中断处理时间:400×1/500M=0.8μs;
    设备 B 准备 32bit 数据所需时间:4B/40MB=0.1μs
    每次中断响应和中断处理时间大于设备 B 准备 32bit 数据所需时间,会造成数据丢失,所以设备 B 不能采用中断 I/O 方式
    (3) 每秒 DMA 次数:40MB/1000B=4×104,每秒 DMA 次数所占时钟周期数:4×104×500=20M
    CPU 用于设备 B 的 IO 时间占 CPU 总时间的百分比:20M/500M=4%