I/O系统:I/O设备,I/O接口,I/O端口的编址,I/O指令、通道指令,I/O控制方式 ,补充:中断

I/O:Input / Output,即输入/输出。

I/O系统一般由I/O硬件(I/O设备,I/O接口,I/O总线等)和I/O软件(驱动程序,用户程序,管理程序,升级补丁等)构成。通常计算机系统中把CPU和主存之外的部分称为输入输出系统。

 I/O总线

I/O总线:主机和I/O设备之间的总线连接。

总线相关的内容,可参考:总线

I/O设备

I/O设备:可以将数据输入到计算机,也可以接收计算机输出数据的外部设备(简称外设)。

常见I/O设备:输入设备(鼠标,键盘),输出设备(显示器,打印机等),外存储器(简称外存,硬盘,光盘等)。

其中:显示器(阴极射线管CRT显示器、液晶LCD显示器、LED显示器)

显示器的性能指标:

  • 屏幕大小:以对角线长度表示。
  • 分辨率:像素个数。屏幕上一个光点就是一个像素。宽的像素 * 高的像素。
  • 灰度级:黑白显示器(例如:kindle)所显示的像素点的亮暗差别;彩色显示器所表现的颜色的不同。灰度级越高,图像层次越清楚逼真。灰度级位数n,则亮度或颜色eq?2%5E%7Bn%7D种。
  • 刷新频率:单位时间内扫描整个屏幕内容的次数。通常显示器刷新频率在60~120Hz。刷新频率超过30Hz才不会感到闪烁。(因光点很快消失,需在消失前重新扫描显示,即刷新)
  • 显示存储器(VRAM):刷新存储器。存储容量由图像分辨率和灰度级决定。至少存储一帧图像信息。

        VRAM容量 =  分辨率 * 灰度级位数。

        VRAM带宽 =  分辨率 * 灰度级位数 * 帧频。

I/O设备由机械部件和电子部件组成。

I/O设备的机械部件主要用于执行具体的I/O操作。CPU不能直接控制I/O设备的机械部件。

I/O设备的电子部件是I/O接口,介于主机和I/O设备的机械部件之间,用于实现CPU对设备的控制(CPU控制I/O接口,I/O接口控制I/O设备的机械部件)。

I/O接口(又称I/O控制器、设备控制器)

主机和I/O设备的数据传送,通过I/O接口实现。

I/O接口种类很多,也会制定相应的标准。大部分I/O接口是可编程的。

I/O接口可能是串行接口(一位一位数据传送,例如USB),也可能是并行接口(多位数据同时传送)。

I/O接口是块芯片,常集成在主板上,通过总线(地址总线、数据总线、控制总线)与主机连接。也有的I/O接口集成在南桥芯片(桥接器)中。

I/O接口中包含一系列寄存器(数据缓冲寄存器、控制寄存器、状态寄存器等)。

I/O接口的功能:

  • 缓冲数据:CPU速度快,I/O设备速度慢,为了缓解两者速度的矛盾,因此需I/O接口中的数据缓冲寄存器暂存需传送的数据。
  • 数据格式转换:因为CPU到I/O接口大多为并行,也可能串行;外部设备到I/O接口可能串行也可能并行,因此需I/O接口中的串-并转换机构负责数据格式转换(串行-并行转换)。
  • 检测状态和错误:检测设备的状态和错误信息,以便CPU查询。
  • 接收并识别CPU发出的命令。
  • 地址译码和设备选择功能。
  • 控制逻辑,如中断、DMA控制逻辑(允许产生DMA请求信号并在响应后完成DMA传输)、设备操作等。

CPU --> I/O接口:

  • CPU通过控制总线向I/O接口发送命令、时钟信号等。
  • CPU通过地址总线向I/O接口指明I/O端口。
  • CPU通过查询I/O接口的状态寄存器来获取外部设备的状态或错误。
  • (向I/O设备写数据)CPU通过数据总线向I/O接口的数据缓冲寄存器传送数据;(从I/O设备读数据)CPU通过数据总线从I/O接口的数据缓冲寄存器接收数据存入主存。

I/O接口:

  • I/O接口通过控制总线向CPU反馈中断请求信号。
  • I/O接口通过数据总线向CPU传送中断类型号。
  • I/O接口通过地址译码逻辑电路将地址信号映射到指定端口。
  • I/O接口通过I/O控制逻辑电路根据控制字(命令字,即CPU对设备发出的具体命令)向设备发出控制信号。
  • (向I/O设备写数据)将I/O接口中的数据缓冲寄存器的数据写入外部设备;(从I/O设备读数据)外部设备向I/O接口的数据缓冲寄存器传送数据。

注:控制寄存器和状态寄存器因时间错开,有些I/O接口中控制寄存器和状态寄存器为同一个寄存器。

一个IO接口可以对应一个或者多个设备,每个设备可以有自己的一组寄存器(数据寄存器、控制寄存器、状态寄存器)。CPU通过控制不同组的寄存器,来控制不同的设备。

I/O接口中能被CPU直接访问的寄存器称为I/O端口(PORT)。 

I/O端口主要有数据端口、控制端口和状态端口,若干端口加上相应的控制逻辑电路组成接口。

一般CPU能对数据端口执行读写操作,对控制端口只能执行写操作,对状态端口只能执行读操作。

4f9fa0e6ea15491292e28592830c4f4f.png

I/O端口的编址

一个I/O端口对应一个或一组寄存器,都有各自的编号(即地址)。

I/O端口的编址方式:统一编址,独立编址。

(1)统一编址:将I/O端口当做主存单元进行地址分配。将主存划分出一部分作为I/O端口的地址空间。也称为存储器映射方式。一般用于单总线结构的计算机系统中。

        统一的访存指令。访问主存的指令都可以访问I/O端口。使用不同的地址码区分主存和I/O端口。

        控制电路简单,程序设计较灵活,端口有较大编址空间,但占用主存地址空间,地址位数多,译码速度慢。

(2)独立编址:I/O端口的地址和主存地址是相互独立的。也称为I/O映射方式。

        专门的I/O指令访问I/O端口。使用不同的指令区分内存和I/O端口。在X86中,I/O指令有IN、OUT、INS、OUTS。

        有专门的I/O指令,程序清晰,不占用主存地址空间,地址位数少,译码速度快,但控制电路复杂,I/O指令少,程序设计灵活性差。

I/O指令,通道指令

通常,CPU通过I/O指令,访问I/O端口,从而实现主机和外部设备之间的数据传送。

有通道的系统中,CPU通过I/O指令启动/停止设备、控制通道等,通道通过通道指令完成主机和设备之间的数据传送。

I/O指令:CPU指令的一部分。I/O指令是只能在操作系统内核使用的特权指令。

格式:操作码、命令码、设备码。

  • 操作码:识别是否是I/O指令。
  • 命令码:执行什么操作。
  • 设备码:对哪个设备执行操作。

通道指令:通道能识别的指令。

通道指令序列组成通道程序,通道程序提前编制好存放在内存中。

CPU通过I/O指令向通道发出命令(通道程序在内存中的位置、哪个设备等),通道识别并执行一系列通道指令,代替CPU对I/O设备进行统一管理。

I/O控制方式 

外部设备(外设)和主机之间的输入/输出控制方式:程序查询方式,程序中断方式,DMA方式,通道控制方式等。

(1)程序查询方式:也称为程序直接控制方式。

  • CPU启动I/O设备后,不断循环查询I/O设备的状态,等到I/O设备数据准备好,进行数据传送(一般每次传送一个字)。

CPU和I/O设备只能串行工作。CPU不断轮询检查设备状态,长时间处于忙等状态,CPU利用率低。

注:从外部设备读数据时,CPU从I/O接口中的数据缓冲寄存器将数据读入CPU寄存器,再将CPU寄存器中的内容写入主存。

ab6a4687748145b6ab080393ba04e7b1.png​ 

3fe2ba5084044b1e82e0fc6099a3204e.pngc6e86fa8c6eb41c391c896454f6dac86.png

(2)程序中断方式:也称中断驱动方式。

  1. CPU启动I/O设备后,CPU继续执行当前程序;
  2. I/O设备准备好数据后,向CPU发出中断请求,CPU响应请求则暂停当前程序,开始处理中断服务程序(I/O设备与主机之间的数据传送);
  3. CPU处理完中断,CPU再继续执行被暂停的程序。

CPU和I/O设备可并行工作,提高CPU的工作效率,但要每个设备分配相应的中断请求号和中断服务程序,以及增加中断控制器,且每准备好一个字就发出一次中断请求,降低系统性能。

字符设备常采用中断方式。字符设备:以字符或字节为单位进行数据传送的设备,传输速率慢,不可寻址,例如:鼠标,键盘。

da07dac0c85542eaa9922e4fe2d6c5fd.png

7ecd4c432d444407a80530ed0e0fc1f2.png

(3)DMA方式:需要DMA控制器(又称DMA接口,一种I/O接口,连接高速设备、块设备)。

DMA,Direct Memory Access,直接主存访问。

块设备:以“块”为单位进行数据传送的设备,传输速率较快,可寻址,例如:磁盘。

DMA方式,数据传送时是由DMA控制器控制不需要CPU干预,CPU只涉及开始时向DMA控制器发出命令、数据传送完处理中断请求。

进一步提高CPU和I/O设备的并行性。但对于多个离散的数据块,CPU需发出多次I/O指令、处理多次中断请求。

a6b6908274194a8a8845a507588b38d9.png

【单总线结构】以从I/O设备读数据为例:

  1. CPU启动I/O指令将主机地址、外部设备地址、数据长度等传送到DMA控制器,CPU仍执行当前程序;
  2. I/O设备将数据暂存在DMA控制器的数据缓冲寄存器,每准备好一个字,向DMA控制器发出一次DMA请求;
  3. DMA控制器向CPU申请总线,CPU将总线控制权交给DMA控制器;
  4. DMA控制器控制I/O设备与主机之间数据传送(每次传送一个字,此时CPU不能使用总线不能访问主存);
  5. 一整块或多个连续块的数据传送完,DMA控制器才向CPU发出一次中断请求表明数据已传送完;
  6. CPU响应并处理中断请求。

【三总线结构】以从I/O设备读数据为例:

  1. CPU启动I/O指令将主机地址、外部设备地址、数据长度等传送到DMA控制器,CPU仍执行当前程序;
  2. I/O设备将数据暂存在DMA控制器的数据缓冲寄存器,每准备好一个字,向DMA控制器发出一次DMA请求;
  3. DMA控制器花费一个存取周期通过专门的DMA总线控制I/O设备和主存之间的数据传送(每次传送一个字,此时CPU不能访问主存);
  4. 一整块或多个连续块的数据传送完,DMA控制器才向CPU发出中断请求表明数据已传送完;
  5. CPU响应并处理中断请求。

【三总线结构】CPU和DMA控制器都有专门的总线访问主存,在访存时可能产生冲突。

CPU和DMA控制器访问主存的方式:

  1. DMA控制器传送一整块数据时CPU都不能访问主存,CPU利用率不高;
  2. DMA控制器和CPU交替访问主存,硬件逻辑复杂;
  3. 存取周期挪用:CPU访问主存时DMA控制器等待,CPU不访问主存(或存取周期结束后)DMA控制器访问主存,若同时访问则DMA控制器先访问主存(I/O访存优先)。

​(4)通道控制方式:需要硬件设备通道,通道程序提前编制好存放在主存中。

  1. CPU向通道发送I/O指令(通道程序在内存中的位置、哪个设备等),CPU仍执行当前程序;
  2. 通道执行内存中通道程序的一系列通道指令,控制I/O设备完成数据传送;
  3. 通道执行完规定的任务后(即传送完一组数据块),向CPU发出中断请求;
  4. CPU响应并处理中断请求。

通道控制方式,数据传送时是由通道控制不需要CPU干预,CPU只涉及开始时向通道发出命令、数据传送完处理中断请求。 

补充:中断

中断:多道程序中,程序执行过程中,因某些情况,CPU暂停当前程序,去处理其他程序,处理完,再继续原程序。

引起中断的事件称为中断源。即可以产生中断请求信号的部件为中断源。

中断源向CPU 发出中断请求信号称为中断请求。

发生中断时被打断程序的暂停点称为断点。

CPU暂停当前程序而转为响应中断请求的过程称为中断响应。

处理中断源的程序称为中断处理程序。

CPU执行有关的中断处理程序称为中断处理。

返回断点的过程称为中断返回。

中断分类:内中断,外中断(狭义上的中断)。

e5890d07cf1247818cbc16feee3795f0.png

CPU响应中断必须满足的条件:

(1)有中断源发出中断请求,

(2)CPU处于开中断状态(即允许中断),

(3)一条指令执行完并且没有更紧急的任务。

CPU响应中断的时间:

每条指令执行阶段的结束时刻。

(每条指令执行阶段结束前,CPU向接口发出中断查询信号以获取I/O的中断请求)

中断判优:多个中断源同时发出中断请求时,通过中断判优逻辑(优先级)响应一个中断源。可由硬件实现(硬件排队器)也可由软件实现(查询程序)。通常使用硬件排队器来实现中断判优。

3acf78ec6d5b48c292ba427163c381cb.pnge9df7c2aecfc4c42b30dfefef48a5446.png

中断处理过程(CPU执行):中断隐指令,中断服务程序。

中断隐指令:

  • 关中断(确保在中断服务程序时,保护中断现场或恢复中断现场不被新的中断打断,中断处理完可以回到原程序正确执行下去),
  • 保存断点(用堆栈或特定存储单元保存当前程序的PC值即程序计数器的内容,保证中断处理后能正确返回原程序),
  • 引出中断服务程序(硬件排队器择优后,通过中断向量地址形成部件映射到对应的向量地址即中断类型号,根据向量地址对应的无条件转移指令(JMP指令)的中断向量,获得中断服务程序的入口地址并传送给PC)。

7203f6f741454baea575dbb117e95500.png

中断服务程序:

  • 保护现场(用堆栈或特定存储单元保存通用寄存器和状态寄存器的内容,保证返回原程序时恢复中断时的CPU环境),
  • 中断服务(设备服务,即操作系统内核处理中断),
  • 恢复现场(通过出栈指令或取数指令把之前保存的信息送回到各自寄存器中),
  • 中断返回(通过中断返回指令回到原程序断点处,即把之前保存的PC值即断点送回到PC中)。

4ab5166583b441bfbafabb27a49b3a4c.png

多重中断(中断嵌套):

多重中断:执行中断服务程序时,可响应新的中断请求。但需有选择的响应中断请求。

中断屏蔽:当CPU检测到中断请求时,中断控制器通过中断屏蔽字决定是否响应中断请求。1表示屏蔽该中断源(即不响应该中断源的中断请求),0表示该中断源可正常申请中断。

每个中断源必须屏蔽自身(即不能被自身中断);优先级高的中断源可以中断优先级低的中断源(例如:A的优先级高于B,A执行时,B发出中断请求 将被屏蔽不被响应;若B执行时,A发出中断请求,暂停B执行A即A的中断请求被响应)。

每个中断源都有一个屏蔽触发器,所有屏蔽触发器组合在一起就是屏蔽字寄存器,屏蔽寄存器的内容称为屏蔽字

c80b062cbb5e44568b1c7de40fee10d6.png

47c65248de5d4c9b96da369e3a30ca12.png

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

yannan20190313

感谢您的支持。祝好心情。

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值