第七章:输入/输出系统(408笔记|王道笔记|计算机组成原理笔记)
| 第一节:I/O系统基本概念 |
|---|
| I/O 接口 | 又称I/O控制器(I/O Controller)、设备控制器,负责协调主机与外部设备之间的数据传输【I/O控制器多种多样,也会制定相应的标准,如:用于控制USB设备的IO接口、用于控制SATA 3.0硬盘的IO接口等(I/O控制器就是一块芯片,常被集成在主板上)】 | ||||
|---|---|---|---|---|---|
| I/O控制方式 | 数据流 | 键盘→IO接口的数据寄存器→数据总线→CPU某寄存器→主存(键盘输入文档) | |||
| --- | --- | ||||
| CPU如何控制I/O完成 | 程序查询方式 | 概念 | CPU不断轮询检查I/O控制器中的“状态寄存器”,检测到状态为“已完成”之后,再从数据寄存器取出输入数据 | ||
| --- | --- | ||||
| 图示 |

|||||
| --- | --- | ||
| 图示 |

对于高速I/O设备来说,在‘磁盘’上每次准备完成一个字符时都会触发中断请求。
CPU需要耗时较多来执行中断服务程序的处理任务,在这种情况下会导致CPU利用率明显降低
源地址,目的地址,数据量
读取/写入指令
| 注 | DMA接口,即DMA控制器,也是一种特殊的I/O控制器 |
| 图示 |


DMA控制器负责处理每个周期发送单字量的数据。在完成整个数据块传输后触发CPU发送中断请求
| --- | --- | ||
| 结构图 |

|通道|相当于一种“普通版的CPU”。该模块能够识别并执行多种基础操作(如算术运算、逻辑运算等),这些操作的基本功能较为单一

|||
||
||
| --- | --- | ||||
| I/O软件 | 包括驱动程序、用户程序、管理程序、升级补丁等。通常采用I/O****指令 和通道指令 实现主机和I/O设备 的信息交换 。 | I/O指令 | CPU指令的一部分 | 结构 |

|
|---|---|||||
|操作码|根据操作码判断该指令是否为I/O指令,与加减乘除指令进行区分|||||
|命令码|做什么操作【I/O接口对设备做什么,普通指令无命令码】|||||
|设备码|对哪个设备进行操作|||||
|注意|I/O指令与普通指令格式略有不同,操作码 指明了CPU 要对IO接口 做什么,命令码 指明了IO接口 要对设备 做什么|||||
- 能够被通道识别的指令
- 将预先编写的通道程序放置于主存内存区域
- 当计算机系统包含有功能性的**通道时,
- CPU接收并发送相关控制信号至该通道
- 由该通道处理并执行相应的操作序列
- 完成后将结果返回至CPU
||
||
| 第二节:外部设备——输入设备,输出设备(大纲已删) |
|---|
| 第三节:外部设备——外存储器 |
| 磁表面存储器 | 磁表面存储 | 是指把某些磁性材料薄薄地涂在金属铝或塑料表面上作为载磁体来存储信息,每次只能读写1bit的信息 | |
|---|---|---|---|
| 优点 | ①存储容量大,位价格低; ②记录介质可以重复使用; ③记录信息可以长期保存而不丢失,甚至可以脱机存档; ④非破坏性读出,读出时不需要再生。 | ||
| 缺点 | ①存取速度慢; ②机械结构复杂; ③对工作环境要求较高。 | ||
| 原理 | 当磁头和磁性记录介质有相对运动时,通过电磁转换完成读**/**写操作 | ||
| 编码 方法 | 按某种方案(规律),把一连串的二进制信息变换成存储介质磁层中一个磁化翻转状态的序列,并使读/写控制电路容易、可靠地实现转换 | ||
| 磁记录方式 | 通常采用调频制(FM)和改进型调频制(MFM)的记录方式 |
| --- | --- | ||||
| 磁头数 | 即记录面数,表示硬盘总共有多少个磁头,磁头用于读取/写入盘片上记录面的信息,一个记录面对应一个磁头 | ||||
| 柱面数 | 表示硬盘每一面盘片上有多少条磁道。在一个盘组中,不同记录面的相同编号(位置)的诸磁道构成一个圆柱面 | ||||
| 扇区数 | 表示每一条磁道上有多少个扇区 |
| --- | --- | ||
| 磁盘控制器 | 是硬盘存储器和主机的接口,主流的标准有IDE、SCSI、SATA等 |
||
| --- | --- | ||||
| 格式化容量 | 按照某种特定的记录格式所能存储信息的总量【某些扇区可能会损坏,为了防止因某些扇区的损坏而无法正常工作,厂商生产的磁盘就进行格式化,留下一些备用的扇区作为备份扇区使用,顶替损坏的扇区】 |
| --- | --- | ||

|

|||
| --- |
| 硬盘的工作过程 |

这里的控制字 就是I/O指令格式当中的命令码,指明磁盘需要做出什么操作||
|---|||
- 硬盘的核心功能是实现寻址、读取和写入操作。每个操作均与一个特定的控制码相关联;由主机根据这些编码向磁头发送相应的指令,在硬盘运行时首先执行的是获取相应编码的过程(即取码),随后进行相应的数据处理(即执行码)
- 硬盘属于机械式部件,在其运行过程中进行的读写操作是串行化的;具体而言,在同一时间段内无法同时完成对多个数据的读取或书写任务
SSD使用的是闪存芯片,相比于U盘,固态硬盘的存储芯片更多,容量更大,同时为了保证数据的安全性,在固态硬盘内部有数据的冗余备份,《固态硬盘比U盘更可靠》
EEPROM带电可擦可编程只读存储器
EEPROM带电可擦可编程只读存储器
EEPROM带电可擦可编程只读存储器
其中, SSD使用的是 flash memory (即 flash storage integrated circuit), 相比于USB接口连接的U盘, SSD集成了更多的 flash memory 单元, 具备更大的容量, 同时为了确保数据的安全性, SSD内部设置了冗余备份机制 { { { { { { { { {《{ 固态硬盘比USB接口连接的U盘更加可靠 }} }} }} }} } }
||
| 第四节:I/O接口 |
|---|
| I/O 接口 | 又称I/O****控制器 (I/O Controller)、设备控制器,负责协调主机与外部设备之间的数据传输 | ||||
|---|---|---|---|---|---|
| I/O 接口的****作用 | 数据缓冲 :通过数据缓冲寄存器(DBR)达到主机和外设工作速度的匹配 错误或状态监测 :通过状态寄存器反馈设备的各种错误、状态信息,供CPU查用 控制和定时 :接收从控制总线发来的控制信号、时钟信号 数据格式转换 :串-并、并-串等格式转换 与主机和设备通信 :实现主机—I/O接口—I/O设备之间的通信 | ||||
| 结构和工作原理 | 结构 | 图示 |

|||
|---|---|||||
|内部 接口|内部接口与系统总线相连 ,实质上是与内存 、CPU****相连 。数据的传输方式只能是**并行传输** 【即正确又不正确,划一横的原因是2000年以前一直都是并行传输,2000年后都换成了串行】|||||
|外部 接口|外部接口通过接口电缆与外设相连,外部接口的数据传输可能是串行方式,因此I/O接口需具有串/并转换功能|||||
||
| 工作 原理 |

I/O 控制器中的各种** 寄存器** 称为** I/O**** 端口**
CPU对端口的数据进行读和写时,就需要指明读/写哪个端口的信息,这就是地址线的作用,CPU通过地址线指明往哪个寄存器中读/写数据 ,给每个寄存器/端口编址(I/O端口也有其他编址方式) | 注意 | 控制寄存器 、**状态寄存器**在使用时间上是错开的 ,因此有的I/O接口中可将二者合二为一 【CPU先向设备发送命令,把命令放入状态/控制寄存器,I/O控制逻辑取出命令后,状态/命令控制器空闲,I/O控制逻辑启动设备后,设备随时给CPU反馈工作状态,重复利用状态/命令寄存器】 |
| --- | --- |
|---|
| 如何确定要操作的设备? ①让地址线处理指明要读/**写的寄存器 ,也被用于指明具体的设备编号** ,分两次进行 ②**每个设备对应一组寄存器,操作不同的寄存器就是在操作不同的设备** |
|---|
||
| --- | --- | ||
| 图示 |

统一编址与独立编址

||
|---|---|||
|统一 编址|优点|||
- 无需专门的输入/输出指令即可使所有访存指令能够直接访问端口;程序设计具有较高的灵活性。
- 端口具有较大的编址容量。
- 读写控制逻辑电路结构简单明了。
| 缺点 | 端口占用了主存地址空间,使主存地址空间变小外设寻址时间长(地址位数多,地址译码速度慢) |
- 采用将I/O端口视为存储器单元的方式进行地址分配策略,则能够访问的存储单元数量即等于统一访问指令的数量
- 通过独特的地址编码机制区分内存空间与外设需求,在总线上固定指定部分作为外设寻址区域
- 如系统总线中共有十根地址线,则在该系统中可支持访问的有效存储单元数量共计二的一十次方即一百零二十四条
- 假设需要对十个外设进行编码:
- 其中主存单元占用范围是第十位至一○二三位
- IO设备占用范围是一○一四至一○二三位
- IO设备占用范围是十分之一至十九位
- 采用专用I/O指令,并使程序设计布局更加清晰。
- I/O端口的地址位数较为有限,在译码效率上表现更为高效。
- 该端口的地址不在主存空间范围内。
| 缺点 |
X86架构下,只有4条I/O指令:IN、OUT、INS、OUTS这四条
在X86架构中仅提供IN、OUT、INS和OUTS四种基本的I/O指令
在X86架构中仅提供IN、OUT、INS和OUTS四种基本的I/O指令
||
- 独立编址CPU无需关心存储器地址即可配置专用的输入输出指令用于访问外围设备,并采用外围设备映射机制实现资源管理。
- 通过不同类型的指令区分内存与外围设备(其中访问外围设备需使用特定的I/O指令)。
||
||
| --- | --- | ||||
| 串行接口 | 一位一位地传送 |
注:所指的数据传输模式特指设备端与接口端的一侧传输情况,在主机及接口端,则始终采用并行传输的方式进行操作。在此过程中,该接口的主要任务便是负责处理 incoming data format conversion.
【2000年后,主机和接口一侧,开始出现串行】
- 程序查询接口
- 中断接口
- DMA****接口
- 可编程接口:可编程接口的功能及操作方式可通过程序实现动态调整。
- 不可编程接口:不可编程接口不能通过程序改变其功能特性,但可以通过硬件连接机制实现功能多样化
||
||
|唐朔飞版I/O接口结构

|
|---|
|

|
|

|
|---|
|第五节:CPU访问I/O的控制方式——程序查询方式|
|程序查询方式例子|示例|

||
|---|---|---|---|
|流程图|

|||
|例题|题目|在程序查询方式的输入/输出系统中,假设不考虑处理时间,每一个查询操作需要100个时钟周期,CPU的时钟频率为50MHz。现有鼠标和硬盘两个设备,而且CPU必须每秒对鼠标进行30次查询,硬盘以32位字长为单位传输数据,即每32位被CPU查询一次,传输率为2×220B/s。求CPU对这两个设备查询所花费的时间比率,由此可得出什么结论?||
|---|---|||
|答案|

|||
||
||
| 程序查询方式
——
知识点汇总 | | 概念 | 当CPU启动I/O操作时, 必须暂停当前程序的操作, 并在此期间插入一段程序. |
| --- | --- | ||
|---|---|---|---|
| 优点 | 接口设计简单, 设备数量少 | ||
| 缺点 | CPU在数据传输过程中需消耗大量时间用于状态查询与等待; 如果采用独占查询方式, 则每次只能与一台外设交换信息, 导致工作效率显著下降 | ||
| 分类 | 独占查询 | CPU占用100%的时间处于I/O状态, 完全串行模式 | |
| --- | --- | ||
| 定时查询 在保证数据完整性的情况下, CPU每隔固定间隔的时间检查一次I/O状态. 每个检查周期内,CPU可执行其他任务【例如, 如果CPU每隔1毫秒检查一次鼠标点击事件, 那么在一秒内若用户连续点击多次,CPU将在第一个点击事件被处理前未及时捕获后续事件的信息, 导致数据丢失 |
||
||
| 第六节:CPU访问I/O的控制方式——程序中断方式 |
|---|
| 中断的基本概念 | 程序中断是指在计算机执行现行程序的过程中,出现某些急需处理的异常情况或特殊请求,CPU暂时中止现行程序,而转去对这些异常情况或特殊请求进行处理,在处理完毕后CPU又自动返回到现行程序的断点处,继续执行原程序 | ||
|---|---|---|---|
| 工作 流程 | 中断请求 | 中断源 向CPU发送中断请求信号 【CPU在每个指令的执行末尾都会例行检查是否有中断请求信号是否需要处理】 | |
| --- | --- |
中断响应
优先级高的外部事件会最先被处理
中断处理
| --- | --- |
| 关中断作用 | 实现原子操作 。CPU执行关中断指令之后,任何的中断请求信号暂时都不会被响应,但是也有一些很特别的,优先级非常高的中断信号必须被响应 ——非屏蔽中断 【如此时CPU正处于关中断,但是强行按关机按钮,关机这种很特别,很紧急的事件必须被响应被处理,在电脑完全断电之前,CPU需要做一些强制关机相关的紧急处理,如记录系统状态】 |
|---|
||
中断标志位
——
确定来自哪个设备的中断信号 | | 问题 | 每个中断源向CPU发送中断请求的时间是不确定的。那么如何确定来自哪个设备的中断信号 |
| --- | --- |
|---|---|
| CPU响应中断的条件 | CPU响应中断必须满足以下三个条件: ① 中断源必须发出中断请求; ② CPU允许执行中断操作; ③ 正在执行的任务没有被其他更高优先级的任务抢占。 |
| --- | --- | ||
| 硬件实现 | 通过硬件排队器 实现,它既可以设置在CPU中,也可以分散在各个中断源中 | ||
| 软件实现 | 通过查询程序 实现的 | ||
| 图示 |

硬:掉电/关机;软:系统调用
通过软件实现的方式,在处理任务时会按照优先级递减排列,并依次检查每个中断事件的发生情况。
其中:
硬件中断事件具有最高的优先权,并且被划分为两种类型:
【硬:掉电/关机;软:系统服务中断请求
||
| 中断处理过程 | | 图示 |

①PC值如何存储以及其具体存储位置?
②确定入口地址的方法有哪些?软件查询法与硬件向量法
|---|---|||||
|---|---|||||
|保存断点|为了确保在中断服务程序完成之后能够正确返回到原程序运行的地方,请将原始程序中的断点信息(即PC寄存器的内容)记录下来。这些信息可以通过堆栈或特定单元来存储。|||||
|引出中断服务程序|引出中断服务程序的过程主要包括确定其入口地址,并通过这种方式将地址传递给当前主程中的PC寄存器——软件查询法与硬件向量法|||||
| --- | --- |
||
| --- | --- | ||
| 中断服务**(设备服务)** | 主体部分,如通过程序控制需打印的字符代码送入打印机的缓冲存储器中(eg:中断服务的过程中有可能修改ACC寄存器的值,但是以前的数据已经被备份保护起来了)【根据请求中断服务的设备不同而大不相同】 | ||
| 恢复现场 | 通过出栈指令或取数指令把之前保存的信息送回寄存器中(eg:把原程序送到ACC等寄存器中,使值恢复原样) | ||
| 中断返回 | 通过中断返回指令回到原程序断点处 |
||
||
| 总结 |

单重不可还原性:在执行不可还原性服务程序时不响应新的不可还原性请求
多重不可还原性:又称不可还原性嵌套,在执行不可还原性服务程序时可响应新的不可还原性请求
| 第七节:多重中断 |
|---|
|单重与多重中断对比|

|||
|---|---|---|---|
|中断屏蔽技术|概念|中断屏蔽技术主要用于多重中断,CPU要具备多重中断的功能,须满足下列条件。 ① 在中断服务程序中提前设置开中断指令 ② 优先级别高的中断源有权中断优先级别低的中断源 每个中断源都有一个屏蔽触发器,1表示屏蔽该中断源的请求,0表示可以正常申请,所有屏蔽触发器组合在一起,便构成一个屏蔽字寄存器 ,屏蔽字寄存器的内容称为屏蔽字。||
|---|---|||
|图示|

|||
|屏蔽字设置的规律||||
通常采用‘1’作为屏蔽标记符号,“0”则代表正常的申请。
每个中断源都会被分配一个对应的阴影码(即在处理其相关的中断服务程序时,在此时刻段内(即当该中断源被检测到时),系统会将此时刻段的影码设置为此处所分配的阴影码)。
每个阴影码中必须包含至少一个"1"(这确保了自身不会立即被检测到)。
例如:对于键盘输入这一类自身响应速度较快的情况(如快速键入),必须保证自身不会在此时刻段内立即被检测到。
| --- | --- | ||
| 答案 |

|||
||
| 第八节:程序中断方式 |
|---|
|过程图|

|||
|---|---|---|---|
|例题|题目|

||
|---|---|||
|答案|


|||
| 第九节:CPU访问I/O的控制方式——DMA方式 |
|---|
| 背景 | 由于中断方式,每一次I/O设备准备好一个字的数据,CPU就要运行一次中断处理程序,把这个字的数据转存到主存当中,对于速度快的I/O设备来说,频繁中断,就会有很大的时间开销,效率低 | ||
|---|---|---|---|
| 图示 |

DMA控制器也是一种I/O接口,功能比普通I/O接口厉害|||
|过程|

CPU向DMA控制器指明要输入还是输出;要传送多少个数据;数据在主存、外设中的地址 每次向主存写入一个字,当传送完整个块后,向CPU报告DMA操作的结束|传送前|1)接受外设发出的DMA请求(外设传送一个字的请求),并向CPU发出总线请求。 2)CPU响应此总线请求,发出总线响应信号,接管总线控制权,进入DMA操作周期。|
|---|---|||
|传送时|3)确定传送数据的主存单元地址及长度,并能自动修改主存地址计数和传送长度计数。 4)规定数据在主存和外设间的传送方向,发出读写等控制信号,执行数据传送操作。|||
|传送后|5)向CPU报告DMA操作的结束,CPU执行中断服务程序做DMA结束处理|||
| DMA传送过程 |

|||
|DMA传送方式|问题|如果采用三总线的方式,如果主存是双端口主存,那么CPU和DMA能同时访问主存,否则会有冲突,** 先满足**** CPU**** 还是先满足控制器。为了有效地使用主存,DMA控制器与CPU通常采用以下3****种方法使用主存** 。||
|---|---|||
|停止CPU访问主存|图示|

||
|---|---|---|---|
|特点|控制简单 CPU 处于不工作状态或保持状态,未充分发挥CPU对主存的利用率|||
| --- | --- | ||
| 特点 | 不需要总线使用权的申请、建立和归还过程 硬件逻辑更为复杂,且由于CPU使用主存频繁,而DMA需要等待外部设备,给它分配的时间,DMA也许用不到,** 让费好几个访存的时间,才传输下一个字** |
| --- | --- | ||
| 三种 可能 | DMA 访问主存有三种可能: CPU 此时不访存(不冲突) CPU 正在访存**(存取周期结束让出总线)** CPU与DMA****同时请求访存 (I/O****访存优先 )【如果DMA中数据缓冲器的数据不及时写入主存,那么外部设备继续往里冲入数据,导致数据丢失】 |
||
||
| DMA方式的特点 | 主存和DMA接口之间有一条直接数据通路。 由于DMA方式传送数据不需要经过CPU,因此不必中断现在正在执行的程序 I/O与主机并行工作,程序和传送并行工作
每次机器周期结束时,总线是空闲的,然后DMA就能趁机传送一个字**,当整块数据传送完毕,才向CPU发送中断请求命令** | DMA方式具有下列特点: ①它使主存与CPU的固定联系脱钩,主存既可被CPU访问,又可被外设访问。 ②在数据块传送时,主存地址的确定、传送数据的计数等都由硬件电路直接实现。 ③主存中要开辟专用缓冲区,及时供给和接收外设的数据。 ④ DMA传送速度快,CPU和外设并行工作,提高了系统效率。 ⑤ DMA在传送开始前要通过程序进行预处理 ,结束后要通过中断方式进行后处理 。 |
|---|
| 总结 |

|
