IO 设备和设备控制器
目录
参考资料:
I/O 设备一般是由执行 I/O 操作的机械部分和执行控制 I/O 的电子部件组成。通常将这两部分分开,执行 I/O 操作的机械部分就是一般的 I/O 设备,而执行控制 I/O 的电子部件则称为设备控制器或适配器(adapter)。
在微型机和小型机中的控制器常做成印刷电路卡形式,因而也常称为控制卡、接口卡或网卡,可将它插入计算机的扩展槽中。在有的大、中型计算机系统中,还配置了 I/O 通道或 I/O 处理机。
1 I/O 设备
1.1 I/O 设备类型
- emm
- 块设备
- 字符设备
- 独占设备
- 共享设备
- 按设备使用特性分类
- 存储设备
- I/O 设备
- 按设备的传输速率分类
- 低速设备
- 中速设备
- 高速设备
more...
1.2 设备与控制器之间的接口
通常,设备并不是直接与 CPU 进行通信,而是与设备控制器通信,因此,在 I/O 设备中应含有与设备控制器间的接口,在该接口中有三种类型的信号,各对应一条信号线。
- 数据信号线
这类信号线用于在设备和设备控制器之间传送数据信号。对输入设备而言,由外界输入的信号经转换器转换后,所形成的数据通常先送入缓冲器中,当数据量达到一定的比特(字符)数后,再从缓冲器通过一组数据信号线传送给设备控制器。对输出设备而言,则是将从设备控制器经过数据信号线传送来的一批数据先暂存于缓冲器中,经转换器作适当转换后,再逐个字符地输出。
- 控制信号线
这是作为由设备控制器向 I/O 设备发送控制信号时的通路。该信号规定了设备将要执行的操作,如读操作(指由设备向控制器传送数据)或写操作(从控制器接收数据),或执行磁头移动等操作。
比如指定操作类型,读或者写
- 状态信号线
该信号线用于传送指示设备当前状态的信号。设备的当前状态有正在读(或写);设备已读(写)完成,并准备好新的数据传送。
2 设备控制器
设备控制器的主要功能是,控制一个或多个 I/O 设备,以实现 I/O 设备和计算机之间的数据交换。它是 CPU 与 I/O 设备之间的接口,接收从 CPU 发来的命令,去控制 I/O 设备工作,使处理机能够从繁杂的设备控制事务中解脱出来。
设备控制器是一个可编址的设备当它仅控制一个设备时,它只有一个唯一的设备地址;若控制器可连接多个设备,则应含有多个设备地址,每一个设备地址对应一个设备。
可把设备控制器分成两类:
- 用于控制字符设备的控制器
- 用于控制块设备的控制器
2.1 设备控制器的基本功能
- 接收和识别命令
设备控制器能接收并识别处理机发来的多种命令。在控制器中具有相应的控制寄存器,用来存放接收的命令和参数,并对所接收的命令进行译码。
命令译码器
- 数据交换
设备控制器可实现 CPU 与控制器之间、控制器与设备之间的数据交换。
数据寄存器
- 标识和报告设备的状态
控制器应记下设备的状态供 CPU 了解。
状态寄存器
- 地址识别
设备控制器必须能够识别其所控制的每个设备的地址。
配置地址译码器
- 数据缓冲区
由于 I/O 设备的速率较低,而 CPU 和内存的速率却很高,故在控制器中必须设置一缓冲区。
设置缓冲区
- 差错控制
对于由 I/O 设备传送来的数据,设备控制器还兼管进行差错检测。若发现传送中出现了错误,通常是将差错检测码置位,并向 CPU 报告,于是 CPU 将本次传送来的数据作废,并重新进行一次传送。这样便可保证数据输入的正确性。
2.2 设备控制器的组成
- 设备控制器与处理机的接口。该接口用于实现 CPU 与设备控制器之间的通信,在该接口中共有三类信号线:数据线、地址线和控制线。
- 设备控制器与设备的接口。
- I/O 逻辑。逻辑用于实现对设备的控制。它通过一组控制线与处理机交互,处理机利用该逻辑向控制器发送 I/O 命令。
3 内存映像 I/O
驱动程序将抽象 I/O 命令转换出的一系列具体的命令、参数等数据装入设备控制器的相应寄存器,由控制器来执行这些命令,具体实施对 I/O 设备的控制。这一工作可用如下两种方法完成:
- 利用特定的 I/O 指令,该方法的主要缺点是,访问内存和访问设备需要两种不同的指令。
- 内存映像 I/O,在这种方式中,在编址上不再区分内存单元地址和设备控制器中的寄存器地址。内存映像 I/O 方式统一了对内存和对控制器的访问方法,有利于简化 I/O 的编程。
4 I/O 通道
虽然在 CPU 与 I/O 设备之间增加了设备控制器后,已能大大减少 CPU 对 I/O 的干预,但当主机所配置的外设很多时,CPU 的负担仍然很重。为此,在 CPU 和设备控制器之间又增设了 I/O 通道(I/O Channel)。
其主要目的是为了建立独立的 I/O 操作,不仅使数据的传送能独立于 CPU,而且也希望有关对 I/O 操作的组织、管理及其结束处理尽量独立,以保证 CPU 有更多的时间去进行数据处理;或者说,其目的是使一些原来由 CPU 处理的 I/O 任务转由通道来承担,从而把 CPU 从繁杂的 I/O 任务中解脱出来。
在设置了通道后,CPU 只需向通道发送一条 I/O 指令。通道在收到该指令后,便从内存中取出本次要执行的通道程序然后执行该通道程序,仅当通道完成了规定的 I/O 任务后,才向 CPU 发中断信号。
实际上,I/O 通道是一种特殊的处理机。它具有执行 I/O 指令的能力,并通过执行通道(I/O)程序来控制 I/O 操作。但 I/O 通道又与一般的处理机不同,主要表现在以下两个方面:
- 一是其指令类型单一,这是由于通道硬件比较简单,其所能执行的命令,主要局限于与 I/O 操作有关的指令
- 二是通道没有自己的内存,通道所执行的通道程序是放在主机的内存中的,换言之,是通道与 CPU 共享内存。