:参考王道课件
目录
一、I/O系统的基本概念
1.什么是“I/O”?
2.主机如何和I/O设备进行交互?
3.I/O控制方式
(1)程序查询方式
(2)程序中断方式
(3)DMA控制方式
(4)通道控制方式
4.I/O系统的基本组成
(1)I/O硬件
(2)I/O软件
二、I/O接口
1.什么是I/O接口
2. I/O接口的作用
3.I/O接口
(1)内部接口
(2)外部接口
4.I/O接口的工作原理
(1)I/O总线
(2)工作流程
5.I/O端口
(1)统一编址
(2)独立编址
“I/O”就是“输入/输出”。
I/O设备就是可以将数据输入到计算机或者可以接收计算机输出数据的外部设备。
常见的外部设备:
主机如何和I/O设备 通过I/O接口 进行交互。
“I/O接口”,又称 I/O控制器、设备控制器,负责协调主机与外部设备之间的数据传输。
I/O控制器多种多样,也会制定相应的标准。
比如:用于控制USB设备的I/O接口,用于控制SATA3.0硬盘的I/O接口。
其实I/O控制器就是一块芯片,常被集成在主板上。
CPU控制I/O的完成有三种方式,分别为 程序查询方式 、 程序中断方式 、DMA控制方式、通道控制方式。
以 CPU控制键盘I/O的完成为例:
CPU不断轮询检查I/O控制器中“状态寄存器”,检测到状态为“已完成”之后,再从数据寄存器取出输入数据。
等待键盘I/O时,CPU可以先去执行其他程序。
键盘I/O完成后,I/O控制器向CPU发出中断请求,CPU响应中断请求,并取走输入数据。
以上这两种,是每准备好一个字就给CPU发送一次中断请求 ,这样CPU需要花大量的时间来处理中断服务程序,导致CPU的利用率严重下降。
所以有了下面这一种 DMA控制方式,它适用于高速外设。
DMA控制方式:主存与高速I/O设备之间有一条 直接数据通路(DMA总线)。
CPU向DMA接口发出“读/写”命令,并指明主存地址、磁盘地址、读写数据量等参数。
DMA控制器自动控制磁盘与主存的数据读写,每完成一整块数据读写,才向CPU发出一次中断请求。
一整块数据,比如,1KB为一整块。
通道可以识别并执行一系列通道指令 。通道指令种类、功能通常比较单一。
通道指令执行过程如上图所示。
第一步:CPU向通道发出I/O指令。
指明通道程序在内存中的位置,并指明要操作的是哪个I/O设备,然后CPU就可以去做其他事情了。
第二步:通道执行内存中的通道程序。
通道执行内存中的通道程序,控制I/O设备完成一系列任务。
第三步:发送中断请求
通道执行完规定的任务后,向CPU发出中断请求,之后CPU对中断进行处理。
I/O系统,一般由 I/O软件 和I/O硬件 两部分组成。
I/O硬件,包括外部设备、I/O接口、I/O总线等。
I/O软件,包括驱动程序、用户程序、管理程序、升级补丁等。
通常采用 I/O指令 和 通道指令实现主机和I/O设备的信息交换。
①I/O指令
I/O指令是CPU指令的一部分,分为操作码、命令码、设备码三部分。
操作码:识别 I/O指令
命令码:识别做什么操作
设备码:识别对哪个设备进行操作
⭐ I/O指令属于CPU指令,但又与普通指令格式略有不同。
②通道指令
通道指令,是通道能识别的指令。
通道程序是提前编制好放在主存中的。
在含有通道的计算机中,CPU执行I/O指令对通道发出命令,然后由通道执行一系列通道指令代替CPU对I/O设备进行管理。
⭐注意,通道指令与CPU机器指令不是一套东西。
主机如何和 I/O设备通过I/O接口进行交互。
“I/O接口”,又称 I/O控制器、设备控制器,负责协调主机与外部设备之间的数据传输。
I/O控制器多种多样,也会制定相应的标准。
比如:用于控制USB设备的I/O接口,用于控制SATA3.0硬盘的I/O接口。
其实I/O控制器就是一块芯片,常被集成在主板上。
【以上内容同第一部分】
(1)数据缓冲:通过数据缓冲寄存器达到主机和外设工作速度的匹配。
(2)错误或状态检测:通过状态寄存器反馈设备的各种错误、状态信息,供CPU查用。
(3)控制和定时:接收从控制总线发来的控制信号、时钟信号
(4)数据格式转换:串-并、并-串 等格式转换
(5)与主机和设备通信:实现主机-I/O接口-I/O设备之间的通信
内部接口与系统总线相连,实质上是与内存、CPU相连。
数据的传输方式之前只能是并行传输,但是随着科技的发展也可以串行传输了。
外部接口通过接口电缆与外设相连,外部接口的数据传输可能是串行方式。
因此,I/O接口需要具有串/并转换功能。
数据线:指明 读写数据、状态字、控制字、中断类型号
地址线:指明 I/O端口
控制线:读/写 IO端口的信号、中断请求信号
比如说进行打印任务
第一步:CPU输入命令
CPU把打印机对应的命令(一串二进制码)输入到控制寄存器当中,输入一个字的信息
由于这个字是用来发出命令的,因此称为命令字。
命令字有时候是千差万别的,所以这个时候需要驱动程序的协助!
然后地址译码和I/O控制逻辑会发出一系列信号。
第二步:读状态
接下来,CPU从状态寄存器读取状态字,用来确定打印机是否已经就绪,工作是否已经完成
第三步:读/写数据
对于打印机这种设备来说呢,接下来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设备,I/O地址要求相对固定在地址的某部分。
I/O端口地址与存储器地址无关,独立编址。
CPU需要设置专门的输入/输出指令访问端口,又称I/O映射方式。
靠不同的指令区分内存和I/O设备。