I/O 的一些心得
为什么说是心得呢?因为一点点说是不可能说的,我也不是来copy做教学的,所以只能面向有基础的人咯
这些心得可能包含的主题:
首先,为什么人要研究IO的原因是,IO的性能逐渐开始成为计算机效率的瓶颈.
IO系统
系统是由软件和硬件组成的
这里要注意:
软件的主要任务不仅起到信息的交流还需要做好输入输出系统与主机工作的协调,做“好”是关键.此外IO指令和通道指令之间似乎还有一层关系在于:存在通道的IO系统会将接收的IO指令转换成通道指令(可能更加复杂同时具有更多的位数,更大的信息量)
硬件的主要任务则是完成数据、控制信号的传送,和相应逻辑的实现.一定程度来说,硬件显然限制了系统整体的上限.
整体的IO的发展
大致的目标就是减少对CPU性能的损耗直至互不影响.在这一基础上从早期的串行工作到后来的DMA(Direct Memory Access),最后采用从属于CPU的特殊处理器通道来统一多个设备接口对总线的请求.最后甚至直接用IO处理机进行IO的管理与控制,其与CPU的并行性更高,这里是不涉及的.
IO接口
接口的定义是有趣的
两个系统或者两个部件之间的交接部分,即既可以是两种硬设备之间的连接电路,也可以是两个软件之间的共同逻辑边界.因此,核心在于像消防栓的水管一样咬在一起.
出于IO设备与CPU之间的物理以及软件指令上的巨大差异,需要一个逻辑简单且强大的接口.它能统一多个设备进行设备的选择(选择电路),转换控制命令(),更能对多种设备进行不同的物理信息的转换,缓冲CPU和IO设备之间数据处理的巨大速度差,以及监视设备的工作状态.因此接口是一个大的整体.
而类似的端口只是接口上的寄存器的统称而已,CPU对接口的信息读写很显然只能对这些寄存器端口进行操作.
因此,CPU和接口之间的信号通路和接口的寄存器以及电路功能对应起来就是:
CPU:
数据缓冲寄存器(data buffer register) --> 数据线
设备状态标记/寄存器 --> 状态线
命令寄存器和命令译码器 --> 命令线
设备选择电路 --> 地址线;
其中数据线,状态线,命令线都与地址线决定的设备相连
接口类型(分类依据)
数据传送方式:串行接口,并行接口
功能选择的灵活性:可编程接口,不可编程接口(高下立判吧)
通用性:通用和专用(能够使用的IO设备种类不同)
数据传送的控制方式:程序型(中断)和DMA(高速IO)
IO信息交换方式
跳过查询和中断
DMA(direct memory access):
目的:高速交换批量数据
首先很显然,根据它的名字就可以猜测:主存储器与IO设备直接进行数据交换,别碍着CPU的事.需要部分连续地址主存作为专用的缓冲器.但在其进行数据的传输前需要CPU对缓冲器和DMA控制器进行预处理和后处理.通过地址和数据量计数保证数据传送的完整性或者是这个过程的结束.
过程大概:外设发出DMA请求->CPU响应请求,DMA接管总线控制->DMA对内存寻址,计数传输数据 ->向CPU报告DMA操作结束
此过程中并未提及上文的预处理和后处理,由CPU上的管理程序负责,DMA只负责找到内存单元并正确写入.
DMA与主存交换方式
- 在DMA控制使用主存的时候使CPU不执行或者保持状态 : 浪费但控制简单
- 周期挪用:当DMA需要控制总线时占用一个或者多个CPU的周期,即让CPU暂停访存一个周期,然后继续执行程序:IO读写大于主存周期,即不存在连续占用的情况(DMA请求时,除了CPU正在使用主存以外,DMA的优先级高于CPU)
- DMA和CPU约定交替访存:不需要申请和归还使用权,控制权的转移速度快,DMA效率高,控制复杂
DMA方式
控制器基本组成:
- AR(address register):计算字存储地址,自动加一
- WC(word counter):记录长度
- BR(buffer register):用于暂存每次传送的数据
- DAR(device address register):害,没什么好说的吧
- DMA控制状态逻辑(FSM?):管理DMA传送过程,修改相关信息和状态
- 中断机构:字计数器溢出时触发中断
预处理和后处理
预处理:CPU通过IO指令给DMA控制器预置初值,取状态以及设置参数(与DMA控制状态联系):传送方向,设备地址与主存地址,字计数器.
后处理:校验送入主存的数据是否正确,是否继续使用DMA.
DMA接口与系统的连接方式
公用和独立:区别公用的请求汇聚成一条线,响应时依次查询,损失时间;独立的请求与响应都是一对一的关系,但是对CPU的占用更多,更复杂
DMA控制器的类型
选择型和多路型:一个是逻辑上只允许一个设备连接工作,一个是逻辑上可以多个设备同时工作.也即是由于
注意!!:上面两者一个是系统与接口的关系,一个是接口与设备的关系,都存在是否有“小总线”的两种方式,但是两组的“小总线”都是请求并,响应串的形式
DMA方式与中断方式的比较
中断方式 | DMA方式 | |
---|---|---|
数据传送 | 程序 | 硬件 |
响应时间 | 指令执行结束 | 存取周期结束 |
处理异常情况 | 能 | 不能 |
中断请求用途 | 传送数据 | 溢出、后处理 |
优先级 | 低 | 高 |
之所以存在两者如此大的区别,本质上是其数据传输软件与硬件的区别.
通道
代替CPU管理控制外设的独立部件,能执行有限IO指令集合——通道命令的IO处理部件
一个主机可以连接多个通道,每个通道可以连接多台设备(不限速度,种类):提高了主机与通道操作的并行能力以及同层级之间的并行操作能力;同时提供了增减外围设备的灵活性;
采用通道方式组织输入输出的系统,通常是主机->通道->设备管理器->IO设备:CPU启动通道后,通道自动去内存取出通道指令并执行,知道结束后发出中断请求,进行通道结束处理工作
具体任务:
- 接受CPU的IO指令
- 从内存中选取属于该通道程序的通道指令,译码后向设备控制器和设备发送各种命令
- 组织数据传送,根据需要提供缓存,提供数据存入内存的地址和数据量
- 从外围设备得到设备的状态信息,并以此形成自身的状态信息(集合),根据要求将状态送至指定的内存单元供CPU使用
- 将外围设备的中断请求和通道本身的中断请求,按次序及时报告CPU
通道的发展:
IOP(processor):
不是一台独立的计算机而是一个部件:和CPU并行工作,提供高速的DMA处理能力,实现数据的高速传送;
有些IOP提供数据的变换、搜索、字装配分拆能力.
感想
我再看看,很复杂,我觉得还有一些各种IO之间的区别还有待好好斟酌一下