输入输出系统是现代计算机系统中种类最多,功能最多,结构最复杂,构成最多样的系统
现代计算机系统中,外设的成本可以占到总的计算机成本的80%以上
可以说,没有丰富多彩的外设,就没有现在计算机的大规模应用
早期的计算机用于计算,直到上世纪60年代,计算机被应用到文本当中,就产生了字符发生器和字符型显示器
随着计算机发展,计算机在嵌入式和大数据方面得到应用
比如将计算机嵌入到自动设备、武器装备当中,控制他们自主工作
物联网,云计算,物理信息系统,互联网+等都是
所以说,外设是计算机系统中非常重要的一部分
特点:
缺点:
工作方式(主机与IO的信息传输方式):
由于外部设备种类较少,这种方式还是适用的
工作方式:
IO进行信息传输,其独立性更强,可以有专用的处理机
在大型计算机中,可以用微处理机或者和主机相同的处理器作为IO处理机
这种处理机的功能特别强大,甚至没有IO设备也可以作为主机的处理器完成应用
总结:
随着IO设备的发展,数据控制系统会逐渐从主机中独立出来,IO设备的独立性越强
主处理器或者CPU的指令集里面的IO指令,CPU执行这些指令控制外部设备
格式如下
通道自身的指令
使用方式:
因此通道指令的参数需要指出数组的首地址、传送字数、操作命令等,这种通道指令一般比较长
如IBM/370通道指令为64位
通道下面还有多个子通道,每个子通道下面有多个设备控制器,每个控制器可以连接多个IO设备
两种连接方式
CPU要启动IO设备如何连接IO设备
有了地址就要进行选址
用设备选择电路识别是否被选中
这个设备中内部保存有预先设定号的地址
设备选中之后就可以进行信息传输
比如LED灯,直接就亮了
CPU和接口之间一般都是并行传输,所以此处索书号的异步工作指的是IO接口与IO设备之间的传输
异步分为并行传输和串行传输
串行工作,外设进行信息传输的时候,CPU必须进行对应的控制
我们以数据输入为例
流程分析
效率低下分析:
CPU被一定程度地从数据的输入输出中解放出来
IO工作分为两步
图分析:
效率分析:
工作流程图
DMA进一步使得CPU从输入输出中解放出来
种类非常多,涉及到物理,机械,计算机多个领域,IO设备不是计组原理这一门课能讲清楚的,因此这里主要是对外设进行了分类
外部设备如何和主机相连的
外部设备大致分为三类
显示器
打印机
A/D、D/A
终端
汉字处理或者其他的文字处理
接口可以用在软件-软件,硬件-硬件,硬件-软件《计算机组织与设计硬软件接口》就是将硬软件的接口的
这节主要讲主机与IO的接口,既包括接口硬件,也包括控制软件
上述6点就是接口的功能,这些功能决定了接口的硬件结构
从主机引出一条IO总线与设备和接口连接
IO总线分成四种线
可以看到,设备不会直接与总线相连,都是与接口相连的
图中没有显示电平转换和数据格式转换,但实际上有
同样的,组成也没有给出电平转换和数据格式转换
设备状态标记由一系类触发器完成
控制逻辑电路控制IO接口各个组件的协调工作
CPU与IO接口的数据线是并行的
这节课更加深入的讲解程序查询方式
程序员要编写程序就是按着这个程序写的
根据程序员编写的流程和接口的内容进行设计接口电路
结构分析:
这都与前面的接口的组成相对应
执行流程分析(以输入为例):
这个电路非常简单,实际上更麻烦
以打印机为例
图上显示的是打印机打印了两次的图
CPU与打印机部分并行工作
除了程序查询流程中的接口组件,程序中断电路还有其他组件
发出中断请求的流程:
在多设备情况下,要对发出中断请求的设备的中断响应进行优先级排队
排队的是中断响应而不是请求
分为硬件和软件
我们这里讲解硬件方式:在每个设备的INTR的信号发出之后,前面一个非门,后面一个与非门,生成新的信号INTR',多个设备的元件组合起来形成一个链式结构
图中,设备1、2、3、4优先级按降序排列
分析:
INTR为1表示有中断请求,此时INTR非=0表示有中断请求
结论看起来很好做,但是如何让计算机容易识别呢?
这个思路要学习,很巧妙,使用与非门是与非门的实现逻辑简单?
入口地址同样有两种方法
这个部件输入只有1个1,输出是01编码,这种形式的部件叫做设备编码器
设备编码器
生成的向量地址通过数据线传给CPU
事实上,程序中断方式,CPU也会在每条指令结束之后发出中断查询信号,也是在反复查询的,只是不会一直守着IO接口查询
中断请求是需要CPU查询中断请求后才会发出的
简单流程:
学习这个电路的思路
保护两个
中断软指令,并不是指令集的指令,而是硬件会自动执行的操作
对不同的I/O设备具有不同内容的设备服务
出栈指令,如果采用进栈指令保存的话
执行中断返回指令
程序查询和程序中断方式都要经过CPU作为缓冲并且进行转存操作
优点:
DMA访问主存的时候有三种可能
实用性并不强
CPU的工作周期分成两部分
根据DMA接口的功能,看接口
这个图假设采用单总线结构,并且将主存和CPU给显示出来了
DMA内部结构:
假设数据是从低位到高位进行存取,每存取完一个字之后AR+1
数据长度是-n的补码(n为实际长度),没存取完一个字之后+1
DMA数据传送过程可以分为预处理,数据传送,后处理三部分
通过几条输入输出指令预置如下信息
可以看到,CPU仍然需要执行一些操作:预处理,后处理
在此之前,已经完成了预处理,也就是寄存器中已经有数值了