I/O系统基本组成
一般来说,I/O系统由I/O软件和I/O硬件两部分构成。
1、I/O硬件:包括外部设备、I/O接口、I/O总线等。
2、I/O软件:包括驱动程序、用户程序、管理程序、升级补丁等。
通常采用I/O指令和通道指令实现主机对I/O设备的信息交换。
(1)I/O指令
是CPU指令的一部分。包括操作码、命令码和设备码三个字段。
注:I/O指令与普通指令格式不同,操作码指明了CPU要对I/O接口做什么,命令码指明了I/O接口要对设备做什么。
IO指令是用来实现CPU与IO端口之间的数据传输。
(2)通道指令
通道能识别的指令,通道程序提前编制好放在主存中。在含有通道的计算机中,CPU执行I/O指令对通道发出命令,由通道执行一系列通道指令,代替CPU对I/O设备进行管理。
程序员进行系统调用访问设备使用的是逻辑地址!!
I/O接口(I/O控制器)的功能
I/O接口:又称I/O控制器、设备控制器,负责协调主机与外部设备之间的数据传输。
I/O控制器就是一块芯片,常被集成在主板上。
数据缓冲:通过数据缓冲寄存器DBR达到主机和外设工作速度的匹配。
监测错误和状态信息:通过状态寄存器反馈设备的各种错误、状态信息,供CPU查用。
控制和定时:接收从控制总线发来的控制信号、时钟信号
数据格式转换:串行和并行等格式的转换
与主机和设备通信:实现“主机--I/O接口--I/O设备”之间的通信。
I/O接口的基本结构及工作过程
①发命令:发送命令字到I/O控制寄存器,向设备发送命令(需要驱动程序的协助)
②读状态:从状态寄存器读取状态字,获得设备或I/O控制器的状态信息。
设备完成工作后,就将状态反馈给状态寄存器,CPU就可以通过状态寄存器得知设备工作已经完成(轮询方式),或I/O控制器通过控制线向CPU发出一次中断请求。
③读/写数据:CPU通过数据总线,向数据缓冲器写入数据或从数据缓冲寄存器读取数据,然后在I/O控制逻辑的操控下,将数据输出到对应设备中。
为何状态寄存器和控制寄存器公用?
当IO控制器从控制寄存器中取出CPU发来的命令字后,控制寄存器就处于空闲状态,没有必要让命令字一直存放在控制寄存器中
而IO控制逻辑启动设备工作后,要实时将设备的状态信息反馈给CPU,这时就可以重复利用控制寄存器,将其作为状态寄存器存放设备的状态信息
控制寄存器和状态寄存器在使用时间上是错开的,因此可以将二者合并,只用一个寄存器来完成两个功能
通常将IO控制器中的各种寄存器称为IO端口。
IO总线的功能
数据总线:读写数据、状态字、控制字(命令字)、中断类信号。
注:中断类型信号是由于设备的状态不同,比如工作完成或出现故障,对应不同的中断类型
数据缓冲寄存器、状态/控制寄存器都是通过数据总线连接的,所以数据总线可以传送控制字!!
地址总线:指明IO端口。
由于IO接口内部会有多个端口,CPU会通过地址线来指明往哪个端口写数据。
控制总线:读写IO端口的信号、发送中断请求信号。
如果确定要操作的设备?
方法一:通过地址线来指明具体的设备编号,但这样设备编号和寄存器编号就要分两次传输。
方法二:给每个设备都配备一套寄存器。
对端口的编址
统一编址
又称存储器映射方式,指把IO端口当作存储器的单元进行地址分配,这种方式CPU不需要设置专门的IO指令,用统一的访存指令就 可以访问IO端口。
优点:不需要专门的IO指令,CPU访问IO控制器更灵活方便。端口的编址空间也较大。
缺点:端口占用存储器地址,使内存容量变小,执行速度慢。
PS:RSIC常用统一编址
注:统一编址时要求IO地址固定在地址的某部分,不论地址高端还是低端。
独立编址
又称IO映射方式,IO端口的地址空间是独立的,需要设置专门的IO指令来访问IO端口。
优点:IO指令与存储器指令有明显区别,编程清晰,便于理解。
缺点:IO指令较少,一般只能对端口进行传送操作,需要CPU提供额外的IO控制信号,增加了控制的复杂性。