一、知识点
整体概述
由于CPU无法直接控制I/O因此,设备的机械部件I/O设备还应以电子部件作为设备CPU和I/O实现设备机械部件之间的中介CPU控制设备,这个电子是I/O控制器,又称设备控制器。
I/O控制器是控制计算机输入输出的最基本的控制系统,可以根据指令的功能要求指挥计算机各部件的协调。它由指令寄存器组成IR(InstructionRegister)、程序计数器PC(ProgramCounter)操作控制器OC(OperationController)这三个部件的组成对于协调整个计算机的有序工作非常重要。
是将数据输入计算机或接收计算机输出的设备。
属于鼠标和键盘IO它们连接到的计算机接口称为设备(或称为IO控制器)。
IO接口需要多个寄存器作为设备和计算机之间的桥梁:
- :存储设备输出或计算机输出。
- :计算机需要控制设备进行操作,这里有必要进行操作。
- :设备完成后,需要告知计算机的当前状态。
计算机可以通过控制寄存器告诉设备该做什么;设备可以通过状态寄存器反映是否准备好;计算机决定是否通过状态寄存器访问数据寄存器。
当计算机发送命令时,您会发现在这个过程中控制寄存器是有用的IO接口收到命令后该寄存器就无用了。所以我们可以将状态寄存器与之合并,节约空间与成本。
一个IO接口可以对应多个设备,每个设备都可以有自己的一组数据、控制和状态寄存器,这样计算机就可以不同组的寄存器。
对于计算机来说,这些寄存器都是——数据端口、状态端口、控制端口。
那么计算机呢?IO接口连接呢?
一种明显的方法:拉出系统总线,CPU、主存、IO接口连接在上面。
系统总线包括数据、地址、控制信号线,cpu可通过总线直接控制IO接口也可以让主存和IO数据在接口间传输。
例如,敲键盘上的字母,CPU获取数据有两种方式:
- :CPU不断询问键盘状态寄存器输入是否完成,如果检测完成,将数据寄存器中的数据带到主存。
- :CPU不用询问,IO根据状态寄存器选择接口是否需要CPU发送中断信号,CPU收到信号会来收集数据。
会导致程序查询cpu只能等键盘输入,不能做其他事情;允许程序中断CPU先做其他事情,输入完成后再来拿主存。
有一种特殊的IO接口——,它可以用DMA只要总线直接连接到主存,CPU告诉DMA接口应该数据存储在主存中,DMA接口将数据根据地址放入主存。
对于DMA接口而言,CPU如果有多个主存地址,还需要告诉它主存地址DMA接口,CPU还是会很忙。为了进一步解放CPU,可以接替CPU做一些基本操作。
它就像低级CPU,有自己的指令系统-通道指令,可以执行一些有限的操作。当它接受时CPU发出的之后,可按要求启动IO设备或执行通道指令-就像CPU的小弟。
IO逻辑上分为三个字段:
- 操作码:可以用来区分其他指令,让CPU知道这是一个IO指令。
- 命令码:代表设备的具体操作。
- 设备代码:可指定操作某一设备,用于区分设备。
不同设备的IO不同的指令是不同的。鼠标侧键、灯光或灵敏度也不同的品牌有不同的IO指令。这就是为什么在插入鼠标键盘显卡和其他部件时,如果你想更好地使用它,你需要安装驱动程序。
键盘的每一次敲击都在向计算机发出中断信号,一般情况下计算机会暂停手上的工作,先处理键盘的输入数据,之后再回到自己之前的工作。
这里出现了许多问题:
计算机内有许多中断请求标记寄存器,当设备发出中断信号时,会修改这些寄存器的数据,CPU你会知道哪些设备些设备。
可以用硬件或软件判断哪个中断信号需要优先处理。
硬件:将设备的中断信号视为输出1,可依次将设备连接到电路中,电路优先级越高。
软件:可以写一系列指令组成,逐一检查每个寄存器。
在处理中断之前,计算机将处理当前情况PC保存指令地址,然后保存指令地址PC中的值修改成中断程序地址——这一操作由指挥。处理完成后,读取保存的指令地址PC继续工作。
- 忽略信号:在输出电路中添加一个信号,当设备的屏蔽字输出为1时,屏蔽设备的中断信号。如果您不想接收中断信号,请直接输出每个设备的屏蔽字1-此操作称为。
打开另一个中断程序:像娃娃一样,再次打开当前PC保存后修改内部值。注意顺序问题——保存前必须关闭中断,以免中断保存动作。保存成功后,接收中断信息。
接下来,介绍一个重要的介绍IO设备-机械硬盘,其工作状态如下:
https://pic1.zhimg.com/v2-6792b6cc9c914d34df2001946d591428_b.webp
磁盘上存储数据,用磁头读写磁盘。其工作原理是:
表面有一层磁性物质,通电通过磁盘的某个位置后,该位置随机方向的磁极将与通电磁头产生的磁场方向相同。当磁头需要读取数据时,磁头会通过不同方向的磁极产生不同方向的感应电流,通过这些微弱的感应电流形成二进制信息。
侵删图源网络
所以问题是,磁头如何知道它应该划向哪个区域?
首先,我们需要知道分为哪些区域:
当磁盘高速旋转,磁头固定时,磁头会在磁盘上画一个环,这个环是,通过移动磁头来改变磁道。
磁盘像切蛋糕一样分成多个部分,每个扇面有多个分割磁道,每个磁道称为——每个扇区大小不一,但存储的数据量相同。
侵删图源网络
多个磁盘垂直重叠,相同的磁道形成一个。
为了高速旋转磁盘和摆动磁头,我们需要控制磁盘和磁头。
而磁盘驱动器是听从是的,磁盘控制器接收计算机发出的指令,指挥磁盘驱动器工作。
计算机发出的指令包括但不限于以下字段:
- 驱动号:从多个设备中选择一个。
- 柱面(磁道)号:将磁头移动到相应的磁道。
- 盘面号:选择对应盘面,激活盘面磁头。
- 扇区号:旋转磁盘,使磁头穿过相应的磁盘。
延迟时间,传输时间――与磁盘转速有关
启动时间――与磁盘驱动器的物理和电气特性有关
找时间/找时间――与磁盘调度算法、磁臂移动速度有关
1.程序直接访问模式和循环检测IO方式是最古老的方式。CPU和IO串行,每读一个字节(或字),CPU状态寄存器需要不断检测busy标志,当busy=1时,表示IO还没完成;当busy=0时,表示IO完成。读一个字的过程结束了,然后读下一个字。
2.中断控制模式:循环检测先进,IO设备和CPU可以并行工作,只有在开始IO和结束IO时,才需要CPU。但。
3、DMA方式:Direct Memory Access,直接存储器访问,比中断先进的地方是每次可以读取一个块,而不是一个字。
4、通道方式:比DMA先进的地方是,每次可以处理多个块,而不只是一个块。
分散知识点
1、IO接口:向CPU提供I/O设备的状态信息和进行命令译码。对传送数据提供缓冲,以消除计算机与外设在“定时”或数据处理速度上的差异。
IO端口:是指电路中的一些,这些寄存器分别用来存放数据信息、控制信息和状态信息。
2、
3、DMA周期挪用:IO设备每挪用一个主存周期都要申请总线控制权、建立总线控制权和归还总线控制权.
4、当I/O设备通过接口与主机相连时,CPU可以通过接口地址来访问IO设备。因为一个接口对应一个IO设备。
5、
尽管第5章讲解过中断向量地址形成部件,但是这里还是需要提一点。中断向量地址形成部件的输入来自排队器的输出 INTP, NTP2,…,INTP,很显然是一串二进制代码,而此二进制代码就是中断向量,其位数与计算机可以处理中断源的个数有关,即一个中断源对应一个向量地址。可见,该部件实质上是一个编码器。在I/O接口中的编码器又称为设备编码器。
6、中断服务程序的最后指令是中断返回指令。
中断返回指令和无条件转移指令本质都是通过修改PC值改变程序执行顺序。而中断返回指令还需要将CPU中的所有寄存器都恢复到中断前的状态。
二、 例题
答案:B
可能疑问点1:为什么采用中断方式不需要加上0.2μs×1200? 解析:前面讲解过,中断方式的中断和 DMA 的中断不是一回事,中断方式的中断包含数据的传输时间,而 DMA 的中断仅仅是后处理的时间,并不包含数据传输的时间,所以此处的中断方式不需要加上0.2μsx1200。
可能疑问点2:DMA方式下,在主存和外设之间有一条物理通路直接相连吗?
解答:没有。通常所说的 DMA方式下数据在主存和外设之间直接进行传送,其含义并不是说在主存和外设之间建立一条物理上的直接通路,而是在主存和外设之间通过外设接口、系统总线以及总线桥接部件等连接,建立起一个信息可以互相通达的通路。“直接通路”是逻辑上的含义,物理上磁盘和主存不是直接相连的。
可能疑问点3:CPU对DMA请求和中断请求的响应时间是否一样?
解答:不一样。
DMA方式下,向CPU 请求的是总线控制权,要求CPU让出总线控制权给DMA控制器,由DMA 控制器来控制总线完成主存和外设之间的数据交换,所以CPU只要用完总线后就可以响应请求,释放总线,让出总线控制权。CPU总是在一次总线事务完成后响应,所以DMA响应时间应该少于一个总线周期;
而中断方式下请求的是CPU时间,要求CPU中止正在执行的程序,转到中断服务程序去执行,通过执行中断服务程序,对中断事件进行相应的处理。CPU总是要等到一条指令执行结束后,才去查询有无中断请求,所以响应时间少于一个指令周期的时间。
可能疑问点4:挪用周期方式下,DMA控制器窃取的是什么周期?
解答:周期挪用法的基本思想是,当外设准备好一个数据时,DMA 控制器就向CPU申请一次总线控制权,CPU在一个总线事务结束时一旦发现有 DMA请求,就立即释放总线,让出一个周期给DMA 控制器,由 DMA 控制器控制总线在主存和外设之间传送一个数据,传送结束后立即释放总线,下次外设准备好数据时,又重复上述过程,直到所有数据传送完毕。这种情况下,CPU的工作几乎不受影响,只是在万一出现访存冲突时,CPU挪出一个周期给DMA,由 DMA 访问主存,而CPU延迟访问主存。这里CPU挪出的是主存的存储周期。
答案:C
程序控制方式:即用软件方式实现
DMA纯纯的硬件。
直接程序传送→程序查询方式。
答案:C
Cache完全是由硬件实现的,不会涉及中断层面。
浮点数运算下溢:当做机器零,正常处理
答案:A
IO中断是由外部设备发起的。
中断响应周期:中断周期,执行中断隐指令。
答案:D
中断响应次序→硬件(硬件排队电路)所决定,无法改变
中断处理次序→通过中断屏蔽字实现,可改变
答案:B
IR、AR、DR等,暂存中间数据,辅助其他硬件工作
答案:B、D
程序查询方式,CPU与外设串行工作,传送与主程序串行工作。
中断方式,CPU与外设并行工作,当数据准备时是仍需中断主程序以执行数据传送,因此传送与主程序仍是串行的。
DMA,全并行。
答案:C
答案:B
键盘、鼠标属于低速设备。
CPU 中断处理:预处理后处理。
三、408统考真题
1、
四、Q/A
1、I/O接口就是I/O端口吗?
解答:不是。IO接口和IO端口是两个不同的概念,但相互之间有关联。I/O接口是主机和外设之间传送信息的“桥梁”,介于主机和外设之间。主机控制外设的命令信息、传送给外设的数据或从外设取来的数据、外设送给主机的状态信息等都要先存放到IO接口中。所以,接口中有一些寄存器,用于存放这些命令、数据和状态信息。把IO接口中的这些寄存器称为IO端口。
2、IO接口与设备控制器是同一个东西吗?
解答:I/O设备可以分为机械部件和电子部件,其中,电子部件就是常说的I/O控制器(也叫I/O接口),也称为设备控制器。
之所以称谓不同,是因为在计算机体系结构中,操作系统是最接近硬件的软件部分,其更侧重从软件和功能的角度出发去描述部件,所以称之为设备控制器;而在计算机组成原理中,研究的重点在于硬件组成部分,其更青睐于从硬件的角度出发去描述部件,所以称之为I/O接口。
但是,说句题外话,I/O端口和I/O接口并不等同,两者还是有区别的。简单粗略地说,I/O端口加上电路部分才等效于I/O接口。
所以,本质上,I/O接口和设备控制器是同一种东西。
3、一个IO接口只能有一个地址吗?
解析:一个I/O 接口可能有多个地址。因为一个 I/O接口中可能有多个用户可访问的寄存器,也就是多个I/O端口,而每个IO端口有一个地址,所以一个IO接口可能有多个地址。
3、禁止中断和屏蔽中断是同一个概念吗?
解答:它们是两个完全不相关的概念。
禁止中断就是关中断,即使中断允许触发器置为“0”,此时任何中断请求都得不到响应。
屏蔽中断是多重中断系统中的一个概念,是指某个中断正在被处理的时候,如果有其他新的中断请求发生,是否允许响应新发生的中断。它反映了正在处理的中断与其他各个中断之间的处理优先级顺序,所以每个中断都有一个中断屏蔽字,其中的每一位对应一个中断的屏蔽位,为“1”则对应的中断不能被响应。响应某个中断后,就会把它的中断屏蔽字送到中断屏蔽字寄存器中,在中断排队前,其中的每一位和中断请求寄存器中的对应位进行与操作。因而,只有未被屏蔽的中断源进入排队线路,才有可能得到响应。
参考于
计算机组成原理笔记-IO接口与设备 - 知乎