接口通常是一块印刷电路板,使用时插在总线插槽中。例如,微机的主板上都附有若干个总线插槽,连接显示器的显示适配器(俗称显卡),连接网络设备的网络适配器(俗称网卡)都插在这些插槽上。接口在CPU和I/O设备两个部件中起着“转换器”的作用,以便实现彼此间的信息传送。接口通常有如下功能。
①控制。接口接收CPU通过总线发来的指令(I/O指令),启动I/O设备,完成与CPU的数据传送。
②缓冲。接口作为一个缓冲器,用来匹配CPU和I/O设备之间的速度差异。
③其他。接口要完成数据传送过程中的诸如串/并、并/串转换,以及电平转换等工作。接口要监视I/O设备的工作状态,把状态信息(如是否出错,设备的忙、闲,数据准备情况等)保存下来供CPU分析之用。接口还要完成一些其他特殊的功能,例如,数据传送过程中,接口可能需要修改一些寄存器的值。
重要概念:I/O接口和I/O端口。
I/O接口是插在总线插槽中的一块印刷电路板,I/O端口是I/O接口中的一些寄存器,常用的是数据寄存器(称为数据端口或数据口)、状态寄存器(称为状态端口或状态口)和命令寄存器(称为命令端口或命令口)。数据端口存放数据,状态端口存放状态信息。命令端口存放控制命令信息。每个端口有一个端口编号,即端口地址(或称为口地址)。一般地,一个I/O设备有一个I/O接口,一个I/O接口有几个I/O端口,对应着几个端口地址。CPU进行I/O设备寻址时,就是寻找相应的I/O端口地址。
1.I/O端口的编址(寻址)方式
(1)端口和内存统一编址
端口看作是内存单元,统一编址。例如,系统的寻址空间为1MB,编号为0~220-1,其中0~255是端口号,256~220-1是内存地址。CPU访问I/O设备和访问内存一样,不需要专门的I/O指令。
(2)端口和内存独立编址
端口和内存分开,独立编址。例如,内存的寻址空间为1MB,编号为0~220-1,都是内存单元;端口的寻址空间为256B,编号为0~255。CPU访问I/O设备时需要专门的I/O指令。
2.I/O指令
I/O指令即CPU和I/O设备之间传送数据的指令。若系统采用端口和内存统一编址方式,则不需要I/O指令,用普通的CPU访问内存的指令即可。若系统采用端口和内存独立编址方式,则需要I/O指令。例如(www.xing528.com)
IN AL,DATA-PORT
OUT DATA-PORT,AL
其中,AL和DATA-PORT是两个操作数,AL是CPU内部的8位累加器,DATAPORT是接口中的数据端口地址;IN和OUT是操作码,IN表示输入,即把DATA-PORT数据口中的数据传送到AL中,OUT表示输出,即把AL中的数据传送到DATA-PORT数据口中。
3.CPU与I/O设备之间的数据传送
下面以输入过程为例加以说明。I/O设备向I/O接口中的数据端口存储数据,设数据端口是8位,I/O设备是串行设备,要一位一位地向数据端口中存储数据,直到存储了8次,即当数据端口中的数据准备好时,I/O接口发一个中断请求信号给CPU,要求CPU来取走数据;此时CPU可能正在运行一个与此无关的程序(为了叙述方便,我们称其为主程序),接收到中断请求信号后,就要做出决策,响应还是不响应?若条件允许响应,则CPU进行中断处理,运行中断服务程序,最主要的工作就是执行一条输入指令
IN AL,DATA-PORT
完成数据输入,再返回到原来的主程序继续运行。而不是I/O设备传送一位数据,CPU取走一位,I/O设备再传下一位,CPU再取走一位。如果这样,接口倒是简单可以省掉了,但是CPU的效率太低了。
需要指出的是,很多I/O设备本身有自己的设备控制器,它控制I/O设备进行具体的I/O操作。可以说,I/O设备控制器是I/O接口和I/O设备之间的接口。CPU、I/O接口、I/O设备控制器、I/O设备的关系如图6-3所示。
通常I/O设备和I/O设备控制器在一起工作,因此我们总是把I/O设备与I/O设备控制器也画在一起,统称为I/O设备。
图6-3 CPU、I/O接口、I/O设备控制器、I/O设备 的关系
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。