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设备:输入设备(鼠标,键盘),输出设备(显示器,打印机等),外存储器(简称外存,硬盘,光盘等)。
其中:显示器(阴极射线管CRT显示器、液晶LCD显示器、LED显示器)
显示器的性能指标:
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接口可能是串行接口(一位一位数据传送,例如USB),也可能是并行接口(多位数据同时传送)。
I/O接口是块芯片,常集成在主板上,通过总线(地址总线、数据总线、控制总线)与主机连接。也有的I/O接口集成在南桥芯片(桥接器)中。
I/O接口中包含一系列寄存器(数据缓冲寄存器、控制寄存器、状态寄存器等)。
I/O接口的功能:
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能对数据端口执行读写操作,对控制端口只能执行写操作,对状态端口只能执行读操作。
一个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指令少,程序设计灵活性差。
通常,CPU通过I/O指令,访问I/O端口,从而实现主机和外部设备之间的数据传送。
有通道的系统中,CPU通过I/O指令启动/停止设备、控制通道等,通道通过通道指令完成主机和设备之间的数据传送。
I/O指令:CPU指令的一部分。I/O指令是只能在操作系统内核使用的特权指令。
格式:操作码、命令码、设备码。
通道指令:通道能识别的指令。
通道指令序列组成通道程序,通道程序提前编制好存放在内存中。
CPU通过I/O指令向通道发出命令(通道程序在内存中的位置、哪个设备等),通道识别并执行一系列通道指令,代替CPU对I/O设备进行统一管理。
外部设备(外设)和主机之间的输入/输出控制方式:程序查询方式,程序中断方式,DMA方式,通道控制方式等。
(1)程序查询方式:也称为程序直接控制方式。
CPU和I/O设备只能串行工作。CPU不断轮询检查设备状态,长时间处于忙等状态,CPU利用率低。
注:从外部设备读数据时,CPU从I/O接口中的数据缓冲寄存器将数据读入CPU寄存器,再将CPU寄存器中的内容写入主存。
(2)程序中断方式:也称中断驱动方式。
CPU和I/O设备可并行工作,提高CPU的工作效率,但要每个设备分配相应的中断请求号和中断服务程序,以及增加中断控制器,且每准备好一个字就发出一次中断请求,降低系统性能。
字符设备常采用中断方式。字符设备:以字符或字节为单位进行数据传送的设备,传输速率慢,不可寻址,例如:鼠标,键盘。
(3)DMA方式:需要DMA控制器(又称DMA接口,一种I/O接口,连接高速设备、块设备)。
DMA,Direct Memory Access,直接主存访问。
块设备:以“块”为单位进行数据传送的设备,传输速率较快,可寻址,例如:磁盘。
DMA方式,数据传送时是由DMA控制器控制不需要CPU干预,CPU只涉及开始时向DMA控制器发出命令、数据传送完处理中断请求。
进一步提高CPU和I/O设备的并行性。但对于多个离散的数据块,CPU需发出多次I/O指令、处理多次中断请求。
【单总线结构】以从I/O设备读数据为例:
【三总线结构】以从I/O设备读数据为例:
【三总线结构】CPU和DMA控制器都有专门的总线访问主存,在访存时可能产生冲突。
CPU和DMA控制器访问主存的方式:
(4)通道控制方式:需要硬件设备通道,通道程序提前编制好存放在主存中。
通道控制方式,数据传送时是由通道控制不需要CPU干预,CPU只涉及开始时向通道发出命令、数据传送完处理中断请求。
中断:多道程序中,程序执行过程中,因某些情况,CPU暂停当前程序,去处理其他程序,处理完,再继续原程序。
引起中断的事件称为中断源。即可以产生中断请求信号的部件为中断源。
中断源向CPU 发出中断请求信号称为中断请求。
发生中断时被打断程序的暂停点称为断点。
CPU暂停当前程序而转为响应中断请求的过程称为中断响应。
处理中断源的程序称为中断处理程序。
CPU执行有关的中断处理程序称为中断处理。
返回断点的过程称为中断返回。
中断分类:内中断,外中断(狭义上的中断)。
CPU响应中断必须满足的条件:
(1)有中断源发出中断请求,
(2)CPU处于开中断状态(即允许中断),
(3)一条指令执行完并且没有更紧急的任务。
CPU响应中断的时间:
每条指令执行阶段的结束时刻。
(每条指令执行阶段结束前,CPU向接口发出中断查询信号以获取I/O的中断请求)
中断判优:多个中断源同时发出中断请求时,通过中断判优逻辑(优先级)响应一个中断源。可由硬件实现(硬件排队器)也可由软件实现(查询程序)。通常使用硬件排队器来实现中断判优。
中断处理过程(CPU执行):中断隐指令,中断服务程序。
中断隐指令:
中断服务程序:
多重中断(中断嵌套):
多重中断:执行中断服务程序时,可响应新的中断请求。但需有选择的响应中断请求。
中断屏蔽:当CPU检测到中断请求时,中断控制器通过中断屏蔽字决定是否响应中断请求。1表示屏蔽该中断源(即不响应该中断源的中断请求),0表示该中断源可正常申请中断。
每个中断源必须屏蔽自身(即不能被自身中断);优先级高的中断源可以中断优先级低的中断源(例如:A的优先级高于B,A执行时,B发出中断请求 将被屏蔽不被响应;若B执行时,A发出中断请求,暂停B执行A即A的中断请求被响应)。
每个中断源都有一个屏蔽触发器,所有屏蔽触发器组合在一起就是屏蔽字寄存器,屏蔽寄存器的内容称为屏蔽字。