Bootstrap

计算机组成结构—IO接口(IO控制器)

目录

一、I/O 接口的功能

二、I/O 接口的基本结构

1. 总线连接的数据通路

2. I/O 接口的基本组成

三、I/O 端口及其编址

1. 统一编址

2. 不统一编址

四、I/O 接口的类型


        两个系统或两个部件之间的交接部分,一般就称为 接口。接口可以是硬件上两种设备间的连接电路;也可以是两个软件之间交互的逻辑边界。

        主机与 I/O 设备之间,专门设置一套硬件电路、配合相应的软件控制,实现两者间的信息交互,这就是 I/O 接口。不同的 I/O 设备都有其相应的设备控制器,而它们往往都是通过 I/O 接口与主机取得联系的。

一、I/O 接口的功能

        I/O 接口主要的功能如下:

  • 选址功能:根据 I/O 指令中的设备码进行设备选择;

  • 数据缓冲:I/O 设备速度不一,与 CPU 相差比较大,需要进行数据的缓冲达到速度匹配、防止丢失数据;

  • 串并转换:有些 I/O 设备采用串行传输方式,而 CPU 一般为并行传输,需要进行数据格式转换;

  • 电平转换:I/O 设备的输入输出电平可能与 CPU 不同,需要进行电平转换;

  • 传送控制命令:CPU 会向 I/O 设备发出各种控制信号,需要相应的传输通路;

  • 反馈状态信息:I/O 设备需要将工作状态(比如 “忙” “准备就绪” “错误” “中断请求” 等)报告给 CPU,并且可能需要将状态信息进行保存,供 CPU 查询。

二、I/O 接口的基本结构

        总线结构的计算机中,每一台 I/O 设备都是通过 I/O 接口挂到 I/O 总线上的。

1. 总线连接的数据通路

        由于需要实现设备选择、数据缓冲、传送命令和状态等功能,总线中必须有相应的数据通路:

        上图中的 I/O 总线,就包含了 数据线设备选择线命令线状态线

  • 数据线

        数据线是 I/O 设备与主机之间传送数据的线路。

        数据线的根数一般等于存储字长的位数,通常是 双向的。若采用单向数据总线,则必须用两组才能实现数据的输入和输出功能,而双向数据总线只需一组即可。

  • 设备选择线

        设备选择线用来传送设备码,如果把设备码看做是地址号,那么设备选择线又可称为 地址线

        设备选择线的根数取决于 I/O 指令中设备码的位数,决定了能够连接设备的数量。设备选择线一般是一组,也可以有两组,其中一组用于主机向 I/O 设备发送设备码,另一组用于 I/O 设备向主机回送设备码。

  • 命令线

        命令线主要用来传输 CPU 向设备发出的各种命令信号,比如启动、清除、屏蔽、读、写等。

        命令线是一组单向总线,根数与命令信号的数量有关。

  • 状态线

        状态线主要用来向主机报告 I/O 设备的状态信号,比如设备是否准备就绪、是否向 CPU 发出中断请求等。

        状态线也是一组单向总线。

2. I/O 接口的基本组成

        根据 I/O 接口的功能,以及总线结构中整体的数据通路,就可以推出接口应该具有的硬件配置。

(1)选址功能

        设备码通过设备选择线(地址线)送至所有设备的接口,因此需要每个接口都必须具有选址功能。

        当设备选择线上的设备码与本设备码相符时,发出一个 设备选中信号 SEL,这种功能可通过接口内的设备选择电路来实现。

(2)传送命令的功能

        当 CPU 向 I/O 设备发出命令时,要求 I/O 设备能做出响应,因此通常在 I/O 接口中设有存放命令的 命令寄存器 以及 命令译码器

        命令寄存器用来存放 I/O 指令中的命令码,它受设备选中信号 SEL 控制。命令线和所有接口电路的命令寄存器相连,只有被选中设备的 SEL 信号有效,才会将命令线上的命令码存入命令寄存器。

(3)传送数据的功能

        接口处于主机与I/O设备之间,因此主机与 I/O 设备之间进行数据传输必须经过接口。这就要求接口中具有数据通路,完成数据传送。这种数据通路还应具有 缓冲 能力,也就是能将数据暂存在接口内。

        接口中通常设有 数据缓冲寄存器(Data Buffer Register,DBR),它用来暂存 I/O 设备与主机准备交换的信息,与 I/O 总线中的数据线是相连的。

(4)反映 I/O 设备工作状态的功能

        为了使 CPU 能及时了解 I/O 设备的工作状态,接口内必须设置一些反映设备工作状态的触发器。

        比如,可以用 完成触发器 D工作触发器 B 来标志设备所处的状态。

  • 当 D = 1,B = 0 时,表示 I/O 设备已经准备就绪;

  • 当 D = 0,B = 1 时,表示 I/O 设备正处于工作状态;

  • 当 D = 0,B = 0 时,表示 I/O 设备处于暂停状态。

        由于现代计算机系统中大多采用中断技术,因此接口电路中一般还设有 中断请求触发器 INTR,当为 “1” 时,表示该设备向 CPU 发出中断请求;

        接口内还有 中断屏蔽触发器 MASK,它与中断请求触发器配合使用,完成设备的屏蔽功能。

        所有的状态标志触发器都与I/O总线中的状态线相连。此外,不同的 I/O 设备的接口电路中还可根据需要增设一些其他状态标志触发器。

        这样就可以得到 I/O 接口的基本组成:

        目前大多数 I/O 设备所共用的电路都制作在一个芯片内,作为 通用接口芯片。另一些 I/O 设备专用的电路,制作在 I/O 设备的 设备控制器 中。

三、I/O 端口及其编址

        需要注意区分 “接口” (Interface)和 “端口” (Port)的概念:

        端口 指的是接口电路中的一些寄存器,这些寄存器用来存放数据信息、控制信息和状态信息,相应的端口就称为 数据端口控制端口状态端口

        CPU 执行 I/O 指令中的输入操作时,从端口读入信息;执行输出操作时,将寄存器(比如 ACC)的信息写入到端口中。这样,CPU 对 I/O 设备的操作,就可以转换为对 I/O 端口的操作。一些端口,再加上对应的控制逻辑,就组成了接口。

        CPU 要想访问某个 I/O 端口,就需要对 I/O 端口进行统一编号,每个端口对应一个 端口地址。对 I/O 端口的编址,可以选择跟内存统一,也可以完全独立。

1. 统一编址

        统一编址就是把 I/O 地址看作存储器地址的一部分,也就是把 I/O 端口当做存储器单元统一进行地址分配。也称为 存储器映射方式

        这样,CPU 访问 I/O 端口时就可以直接用访存指令,而不需要专门的 I/O 指令,CPU 控制 I/O 设备更加方便;而缺点是端口会占用内存地址空间,减少了主存容量。

2. 不统一编址

        不统一编址就是 I/O 地址和存储器地址完全分开,两者都有自己独立的地址空间,所以又叫 独立编址。也称为 I/O 映射方式

        不统一编址时,CPU 访问一个地址时,就无法从地址码上进行区分;所以必须通过设置专门的 I/O 指令 来访问 I/O 端口。这样就不会占用主存地址空间,用专门的 I/O 指令编写程序也会更加清晰;缺点是让指令系统更加复杂,CPU 需要提供对内存和 I/O 设备的两套读/写控制信号,硬件成本也更高。

四、I/O 接口的类型

        I/O 接口按不同的方式,可以有以下几种分类。

  • 按数据传送方式:分为 并行接口串行接口

  • 按功能选择的灵活性:分为 可编程接口不可编程接口

  • 按通用性:分为 通用接口专用接口

  • 按数据传送的控制方式:分为 程序型接口DMA 型接口

        程序型接口用于连接速度较慢的 I/O 设备,如显示终端、键盘、打印机等;具体的控制方式包括 程序查询方式程序中断方式。DMA 型接口用于连接高速 I/O 设备,如磁盘、磁带等;控制方式采用 DMA 方式

;