第一节:I/O系统概述(简要补充

常见外设均为I/O设备,外存也归属为I/O设备,I/O接口即为常见插口的全电路芯片

通道属于一类硬件,其通道程序存储在内存中,可以根据程序实现I/O操作

类似于DMA方式,不过统考中该内容出现频率极低,考察预计也是以DMA方式为主

I/O指令一般均为特权指令,在核心态下才能被使用


第二节:I/O接口

I/O系统结构

状态/控制寄存器之所以能够被统一使用,是因为其使用时间完全错开

且控制命令、状态反馈结束后该数据就不再有用,因而后续可以直接覆盖不保存

I/O接口具体与CPU的连接模式建议结合总线结构进行复习,一般分为三类

I/O接口数据线上传输的内容包含了一部分控制信号的内容,例如命令即在数据线传输

与主存数据总线的功能基本一致,需要刻意留意这样一个考点,被多次考察到

字、数据、信息结尾的内容放在数据线传输,信号结尾的内容访问控制线上传输

相对来说只需要背诵控制总线传输的内容即可,因为传输内容单一,其余均是数据线

例如指令字,其就是在数据线上传输而非在控制线上传输

对I/O端口(三类寄存器)的访问均采用特权指令,需要陷入核心态才可运行

包括后续独立编址情况下的I/O设备访问,也是特权指令,I/O端口只在独立编址需要用

I/O接口数据类型

注,主机侧、外设接口侧均可以是串行、并行传输,没有绝对化的理论

端口(寄存器)编址方式

重点在于统一编址情况下需要区分地址码,因而地址码不可随意分布,需要有规律

RISC指令集下,只有Load指令和Store指令可能访存

I/O接口运行流程

本内容书上并未提及,统考中也未考察过,可以作为补充辅助理解


习题简析:

2:建议参考教材,I/O接口知识点历年真题考察覆盖较广,应需要配合教材学习

6:I/O指令格式和一般指令格式不同,其需要分别指定CPU和外设各自需要进行的操作

7:作为一个绝对类型的选项,需要引起重视,没有I/O指令是不能用独立编址

此外,需要提及的即为I/O指令其操作目的为I/O端口,即三个寄存器

9:统一编址必须有规律,否则CPU无法识别I/O端口地址(记住是对寄存器进行编址

编址的对象是I/O接口中的寄存器,而不是外设,磁盘不能统一编址(虚存体系下除外

11:程序员或者用户对地址空间的使用均是虚拟地址,因而必然是逻辑地址

12:中断请求由I/O接口向CPU发出,而不会是外设向I/O接口发出

外设只可能发出例如DMA请求,DMA控制器发出DMA传送请求

15:背诵重点,记住控制线上传输的信号,其他均为数据线上传输的

17:I/O指令包含操作码、命令字两个控制字段,其指明CPU、I/O接口各自的任务

准确而言,任何控制命令均于I/O指令中给出,包括指定外设、指定读取等

由其实现的数据传送,必然发生在CPU、I/O端口之间,不是端口和外设之间的

其实现的操作均是基于CPU和I/O端口之间的信息交互(包含控制、数据两类

18:磁盘驱动器是一类外设,不属于I/O接口内容,挺刁钻的考法


第二节:I/O方式(重点)

程序查询方式

一般仅有DMA方式支持突发传输,其他两种方式不支持

由CPU直接进行I/O操作查询的控制,独占式没必要计算占比时间

一般情况均是非独占式,其涉及到统考、选择中经常考察的选择题类型

程序中断、中断补充

基本思想:当外设需要传输数据的时候主动提出中断,并被处理

每一次中断均是需要耗一定时钟周期的,传输数据本身也需要一定时间

计算题的设计上和程序查询中的定时查询比较类似,但这里并不需要“定时查询”

只需要在中断来临之时进行一次查询即可,若每秒中断次数过多依旧会导致数据丢失

可以按数据寄存器每次提出中断并完成处理、数据传输与寄存器装满时间对比

若寄存器装满时间小于处理时间,那么不能采用中断方式

程序中断请求并跳转执行过程

中断请求可采用两种方式,软件识别或硬件识别,异常一般用软件识别方式

硬件识别时,中断请求或者异常一般存储在中断请求寄存器、屏蔽字等硬件寄存器中

软件识别情况下,一般可以由操作系统将中断或异常存储在队列中

在高级硬件情况下可以保存在硬件排队器中(相当硬件层面实现软件的中断队列

软件识别方式方式下,操作系统将会用统一的异常/中断查询程序按响应优先进行查询

并相应陷入核心态进行中断程序的调用和处理,其中陷入指令是用户级指令

而硬件识别方式,由硬件根据寄存器中的中断请求,根据响应优先级由数据线传递

从中获取到当前应该响应的中断类型号,并访问主存中的中断向量表得到对应中断向量

然后跳转到中断向量(中断执行程序的入口地址)进行中断程序的调用和处理过程

上述过程中的断点保存、中断处理程序的跳转基于硬件,中断隐指令

中断响应判优、处理判优

中断响应判优是指同时到来多个中断请求时,优先处理的顺序,一般不改变

一般由硬件排队器、中断查询程序所直接固定响应顺序,不可改变

书上列举的便是其响应的基本顺序,需要注意的是,处理优先级普遍和响应顺序类似

因为其基本逻辑是一致的,均基于事件的紧急性进行响应、处理优先级的判定

INTR、NMI,两条线发出的中断请求,一般既可以视作响应也可以视作处理优先级

在多重中断的情况下,可以通过改变屏蔽字的方式改变处理优先级,但无法改响应优先

在不设置屏蔽字的情况下,其处理优先级和响应优先级是一致的,和上述叙述一致

同时也意味着,单重中断本身就意味着是没有处理优先级的,执行中不响应任何中断

但具体而言,这里不响应是针对可屏蔽中断而言,对NMI、异常依旧需要响应

以处理器角度看中断流程

注意,上下文切换一般都需要进行压栈操作,是否陷入核心态取决于使用条件

一条指令被分为多个机器周期,每条指令的执行周期后一般有一个中断周期

处理器会在这个周期内去查询是否有中断操作,如果有那么就会进入中断周期并执行

这里声明的中断仅指I/O中断,DMA中断、NMI中断、异常等均不依据此规定响应

执行中断执行程序前需要进行当前断点的保存,此时保存的一般是用户不可见寄存

因为此类寄存无法被用户程序访问,所以必须要由硬件实现保存,一般保存于主存栈中

整个中断流程需要多次访问主存,因为每次保存断点、保存现场均需访存

中断服务程序若采用中断向量法,也需要访存得到地址,还需要访存得到中断程序

软件查询方式获取中断类型只需要访问寄存器,但具体获得执行程序也需访存

中断服务程序需要主动保存现场,此过程同样需要压栈访存

最终的恢复现场信息、恢复断点是软硬件共同完成的,也同样需要访存

现场信息的保存、恢复一般由中断执行程序即可完成任务,断点需要硬件实现

具体不太可能考察访存的次数,因需恢复多个寄存器的内容,每个均需一次

其余便是处理器的执行细节,处理器响应控制线的中断请求,数据线的中断类型号

一般断点均保存在主存中,而很少单纯保存在寄存中,因为往往需要嵌套中断

中断屏蔽字是必然屏蔽自身的,屏蔽字越多意味着优先级越高

需要留意的即是何种电平模式表示优先级,一个屏蔽字即为一个屏蔽对象,按位屏蔽

此类中断查询模式依旧是外设和处理器串行,处理器时常会被高速外设打断

DMA方式相关概念和特点

DMA方式尤其适用补充中断查询模式不适应的:高速外设与主机的调节

DMA模式不需要保护现场,但除交替访存外均需有对总线的申请、建立、释放阶段

虽然DMA控制器有一条和主存直接相连的DMA总线,但一般情况而言

一般而言DMA总线可能仅仅是以传送数据为主的,可能缺乏控制线和地址线

更重要的是为遏制处理器对主存的访问,避免对主存的访问冲突(主存是独占设备)

所以也可以说明为何此类模式下其实效率不高,处理器执行几乎步步相关主存

处理器没有了主存相当于失去了灵魂,所谓的并行可能大多数时间都在闲逛之中

至于:DMA方式的特点、DMA控制器的组成,可以直接以书上内容为主

DMA控制器的执行过程可以不用太过于关心,统考从未以此方式考察,但会考察组成

清楚各个组成部件的功能应该足够,后续做模拟、真题若发现考察类型回补即可

DMA请求与后处理

预处理过程需DMA外设提DMA请求,再由DMA控制器提DMA传送请求

DMA请求是外设向DMA控制器提出,DMA传送请求是DMA控制器向处理器提出

预处理需处理器完成寄存器内容输入、设备测试、传送命令等任务

DMA请求可以视作是一种特殊的中断信号,其既不需保存现场、亦不被限制时间响应

但处理器确实需要单独花费一定的时间来响应该请求,从处理流程上看类似于中断

后处理过程明确说明是中断信号,需要处理器单独执行中断执行程序处理

至于DMA和中断的区别,书上有明确解释,这里不做过多展开

DMA三类执行方式

DMA只有执行结束或开始的预处理、后处理阶段需要处理器参与,其他时间不需要

前面两类传送模式均需包含申请总线、建立连接、释放总线等总线事务的

停止处理器访存,刻意留意下此传送的数据是以块为单位,直接打断处理器的访存

周期挪用,每次传送是以字为单位的,即书上所重点谈到的单字传送方式类

这类问题在于每个字都需要进行一次总线事务,效率很明显较低,较处理器优先

交替访存类型,其不需包含总线事务,处理器工作周期往往长于存取周期

其类型即为均衡划分访存时间,但相应优缺点,和上述类似,均需要刻意记忆

不论何种方式,需要占用处理器的时间均只有开始和结束两段时间,其余均为并行

补:DMA,交替访存的核心在不影响处理器,一般在处理器工作时间大于主存时使用

例如主存工作:0.6us,处理器访存:0.6us,工作0.6us,其工作时就可以分给DMA访存

两者也就不会互相影响,还不需要进行总线的申请,效率较高


真题简析(综合题):

当涉及到该I/O方式的考察时,其传输速率中的单位极度不清晰,仿佛有意构造混乱

在大部分题目,MB/S含义为10^6B/S,但小部分题目内依旧以二进制为单位

最佳的方式是一般性理解为十作为基数进行运算,特殊情况不能断定时直接带单位运算

带单位运算是绝对不可能产生问题的,如果错了就是出题人自相矛盾的行为

下面谈下三种传输方式,这里谈到的传输方式需要和DMA的三类传输方式区分开

中断模式、周期挪移模式、块传输模式,分别对应三类不同的传输策略,但本质一样

周期挪移模式特点即为查询方式,每次数据寄存器充满必须进行一次查询取走

中断模式特点为每次得到足够数据后产生一次中断进行数据传输,一般用寄存器的

块传输模式说的就是DMA方式,每次以块作为传输单位

一般性的计算步骤:

计算每秒内会产生多少次查询、中断、块传输,然后计算每次传输的时间

最终依旧计算出的总时间除处理器的时钟数或者时间,即可得到对应的传输占比

需要明确的无非就是外设到端口和端口到处理器可能会分为两段时间、两种不同的策略

真题二:

此处的平均访存次数又被作为是访问Cache的次数,我只能说统考是这破样子的

之前某题反而是在说Cache不命中的情况下的平均访存次数,含糊不清、闪烁其词,呵

DMA周期挪移方式几乎等同于查询方式,每次寄存器满就必须取走结果,一次请求

关于优先级,这个被连续考察两次,记住结论:外设数据不及时取走就会丢失

真题三:

统考比较喜欢综合性考察一些带有坑的知识点,类似于这里的异步串行通信,计网内容

如果统考里面见到了这种比较怪的概念,一定要多想一步,统考没有无意义的条件

本题就将外设工作时间和处理器处理时间区分开,要格外注意这种地方的理解

中断响应周期内,其实就是中断的处理流程,关中断、保护断点和现场、引出中断程序

真题四:

第一小题就明确区分了外设运行和处理器处理的时间区分

外设查询次数和寄存器、传输速度有关,而内部处理器处理时间和查询所需时间有关

判定能否使用中断、查询等方式,就是判定每次处理所需时间和充满时间

如果充满时间小于每次处理时间那么就会导致数据丢失和无法正常进行运行

上述是一个略微隐蔽的考点,在没有明确指明的情况下容易忽略,个人认为需要注意

真题四:

统考中设置的坑是比较多的,类似于本题,磁盘驱动器中的是双面磁盘

也就是一个磁盘两个面均可以记录,直接就变成八面磁盘存储体,考察点就到了

DMA的周期挪移方式可以等同于一般的查询方式,历次统考均出现,包括最后一小问

本题几乎是真题二的复刻版,意味着该类型题目难度一般不高,且一般固定


习题简析在第二章、第五章、第七章分别有一定缺失,后续可以补充

未来真正做模拟、真题的情况下,遇到对应知识点不熟悉或者做错的情况即可全篇补充

这里基本已经实现了知识点的笔记分类索引,方便未来查询、巩固、补充、勘误