现在的位置: 首页 > 综合 > 正文

输入/输出系统

2014年09月05日 ⁄ 综合 ⁄ 共 8987字 ⁄ 字号 评论关闭
 输入/输出系统
1、主机与外设的连接
1.1、输入输出接口
I/O接口是主存和外设之间的交接界面,通过接口可以实现主机和外设之间的信息交换
主机和外设之间需要交换的信息:
数据信息:这些信息可以是通过输入设备送到计算机的输入数据,也可以是经过计算机运算处理和加工后,送到输出设备的结果数据
控制信息:这是CPU对外设的控制信息或管理命令,如外设的启动和停止指控,输入和输出操作的制定、工作方式的选择、中断功能的允许和禁止等
状态信息:这类信息用来标志外设的工作状态,比如,输入设备数据准备好标志,输出设备忙、闲标志等
联络信息:主机与外设间的时间配合信息
外设识别信息:I/O寻址信息,使CPU能从众多的外设中寻找出与自己进行信息交换的唯一的设备
2、接口的功能和基本组成
(1)接口的功能
实现主机和外部设备的通信联络控制
进行地址译码和设备选择:当CPU送来选择外设的地址码后,接口必须对地址进行译码以产生设备选择信息,使主机能和指定外设交换信息
实现数据缓冲:在接口电路中,一般设置一个或几个数据缓冲寄存器,用于数据的暂存,以避免因速度不一致而丢失数据。在传送过程中,先将数据送入数据缓冲寄存器中,然后再送到外部设备或主机中去
数据格式的变换:在输入或输出操作过程中,为了满足主机或外设的各自要求,接口电路中必须具有实现各类数据相互转换的功能,如:并-串转换、串-并转换、模-数转换、数-模转换以及二进制数和ASCII码的相互转换等
传递控制命令和状态信息:当CPU要启动某一外设时,通过接口中的命令寄存器向外设发出启动命令;当外设准备就绪时,则有“准备好”状态信息送回接口中的状态寄存器,为CPU提供反馈信息,告诉CPU,外设已经具备与主机交换数据的条件
(2)接口的基本组成
接口中要分别传送数据信息、控制信息、和状态信息,数据信息、控制信息和状态信息都通过数据总线来传送。大多数计算机都把外部设备的状态信息视为输入数据,而把控制信息看成是输出数据,并在接口中分设各自相应的寄存器,赋以不同的端口地址,各种信息分时地使用数据总线传送到各自的寄存器中
接口与端口是两个不同的概念,端口是指接口电路中可以被CPU直接访问的寄存器,若干个端口加上相应的控制逻辑电路才组成接口
通常,一个接口中包含有数据端口、命令端口和状态端口。存放数据信息的寄存器称为数据端口,存放控制命令的寄存器称为命令端口,存放状态信息的寄存器称为状态端口。CPU通过输入指令可以从有关端口中读取信息,通过输出指令可以把信息写入有关端口。CPU对不同端口的操作有所不同,有的端口只能读或只能写,有的端口可读可写。例如,对状态端口只能读,可将外设的标志送到CPU中去;对命令端口只能写,可将CPU的各种控制命令发送给外设
1.3、外设的识别与端口寻址
外设识别是通过地址总线和接口电路中的外设识别电路来实现的,I/O端口地址就是主机与外设直接通信的地址,CPU可以通过端口发送命令、读取状态和传送数据。
(1)端口地址的编址方式
I/O端口的编址方式有两种:
独立编址:主存地址空间和I/O端口地址空间是相对独立的,分别单独编址。CPU访问主存时,由主存读/写控制线控制,访问外设时,由I/O读/写控制线控制,在指令系统中,必须设置专门的I/O指令。当CPU使用I/O指令时,其指令的地址字段直接或间接的指出端口地址。这些端口地址被接口电路中的地址译码器接受并进行译码,符合者就是CPU所指定的外设寄存器,该寄存器将被CPU访问
统一编址:在这种编址方式中,I/O端口地址和主存单元的地址是统一编址的,把I/O接口中的端口作为主存单元一样进行访问,不设置专门的I/O指令。当CPU访问外设时,把分配给该外设的地址码送到地址总线上,然后各外设接口中的地址译码器对地址码进行译码,如果符合就是CPU指定的外设寄存器
(2)独立编址方式的端口访问
Intel 80X86的I/O地址空间由64K个独立编址的8位端口组成。两个连续的8位端口可作为16位端口处理;4个连续的8位端口可作为32位端口处理。因此,I/O地址空间最多可提供64K个8位端口、32K个16位端口、16K个32位端口
80X86的专用I/O指令IN和OUT有直接寻址和间接寻址两种类型。直接寻址I/O端口的寻址范围为00~FFH,最多为256个端口地址
间接寻址由DX寄存器间接给出I/O端口地址,DX寄存器长16位,寻址范围为0000~FFFFH,最多可寻址64K个端口地址。
CPU一次可实现字节(8位)、字(16位)或双字(32位)的数据传送。32位的端口地址应对准可被4整除的地址;16位端口应对准偶地址;8位端口可定位在偶地址,也可定位在奇地址
1.4、输入/输出信息传送控制方式
外设与主机之间的信息传送控制方式,经历了由低级到高级、由简单到复杂、由集中管理到各部件分散管理的发展过程,按其发展的先后顺序和主机与外设并行工作的程度,可以分为四种:
程序查询方式:程序直接查询控制方式,这是主机与外设间进行信息交换的最简单的方式,输入和输出完全是通过CPU执行程序来完成的。一旦某一外设被选中并启动之后,主机将查询这个外设的某些状态位,看其是否准备就绪。若外设未准备就绪,主机将再次查询;若外设已准备就绪,则执行一次I/O操作
程序中断方式:在主机启动外设后,无需等待查询,而是继续执行原来的程序,外设在做好输入/输出准备时,向主机发中断请求,主机接到请求后就暂时中止原来执行的程序,转去执行中断服务程序对外部请求进行处理,在中断处理完毕后返回原来的程序继续执行。程序中断不仅适用于外部设备的输入输出操作,也适用于对外界发生的随机事件的处理
直接存储器存取(DMA)方式:DMA方式是在主存和外设之间开辟直接的数据通路,可以进行基本上不需要CPU介入的在主存和CPU之间的信息传送,这样不仅保证CPU的高效率,而且能满足高速外设的需要。DMA方式只能进行简单的数据传送操作,在数据块的传送的开始和结束时还需要CPU和中断系统进行预处理和后处理
I/O通道控制方式:在系统中设有通道控制部件,每个通道挂若干外设,主机在执行I/O操作时,只需启动有关通道,通道将执行通道程序,从而完成I/O操作。通道是一个具有特殊功能的处理器,它能独立地执行通道程序,产生相应的控制信号,实现对外设的统一管理和外设与主存之间的数据传送。但它不是一个完全独立的处理器,它要在CPU的I/O指令指挥下才能启动、停止或改变工作状态,是从属于CPU的一个专用处理器
2、程序查询方式
基本思想:由CPU执行一段输入/输出程序来实现主机与外设之间的数据传送
工作流程:
预置传送参数:在传送数据之前,由CPU执行一段初始化程序,预置传送参数。传送参数包括存储数据的主存缓冲区首地址和传送数据的个数
向外设接口发出命令字:当CPU选中某台外设时,执行输出指令向外设接口发出命令字启动外设,为接受数据或发送数据做应有的准备
从外设接口取回状态字:CPU执行输入命令,从外设接口中取回状态字并进行测试,判断数据传送是否可以进行
查询外设标志:CPU不断查询状态标志。如果外设没有准备就绪,CPU就踏步进行等待,一直到外设准备就绪,并发出外设准备就绪信号为止
传送数据:输入时,CPU执行输入指令,从外设接口的数据缓冲寄存器中接受数据;输出时,CPU执行输出指令,将数据写入外设接口的数据缓冲寄存器
修改传送参数:每进行一次数据传送之后必须要修改传送参数,其中包括主存缓冲区地址加1,传送个数计数器减1
判断传送是否结束:如果传送个数计数器不为0,则转第3步,继续传送,直到传送个数计数器为0,表示传送结束
3、中断系统和程序中断方式
3.1、中断的基本概念
    (1)中断的提出
基本思想:CPU在程序中安排好在某一时刻启动某一台外设,然后CPU继续执行原来程序,一旦外设完成数据传送的准备工作时,便主动向CPU发出一个中断请求,请求CPU为自己服务。在可以响应中断的条件下,CPU暂时中止正在执行的程序,转去执行中断服务程序为中断请求者服务,在中断服务程序中完成一次主机与外设之间的数据传送,传送完成后,CPU仍然返回原来的程序,从断点处继续执行
中断的处理过程实际是程序的切换过程,即从现行程序切换到中断服务程序,再从中断服务程序返回到现行程序。CPU每次执行中断服务程序前总要保护断点、保存现场,执行完中断服务程序返回现行程之前又要恢复现场、恢复断点
中断系统是计算机实现中断功能的软、硬件总称。一般在CPU中配置中断机构,在外设接口中配置中断控制器,在软件上设置上相应的中断服务程序
(2)程序中断与调用子程序的区别
子程序的执行是由程序员事先安排好的,而中断服务程序的执行则是由随机的中断事件引起的
子程序的执行受到主程序或上层子程序的控制,而中断服务程序一般与被中断的现行程序毫无关系
不存在同时调用多个子程序的情况,而有可能发生多个外设同时请求CPU为自己服务的情况
3.2、中断请求
中断源是指中断请求的来源,即引起计算机中断的事件。通常,一个计算机允许有多个中断源。由于每个中断源向CPU发出中断请求的时间是随机的,为了记录中断事件并区分不同的中断源,可采用具有存储功能的触发器来记录中断源,这个触发器称为中断请求触发器(INTR)。当一个中断源有中断请求时,其相应的中断请求触发器被置1状态,表示该中断源向CPU发出中断请求
3.3、中断响应
(1)CPU响应中断的条件
CPU接收到中断请求信号
CPU允许中断:CPU内部有一个中断允许触发器(EINT),只有当EINT=1时,CPU才可以响应中断源的请求。通常,中断允许触发器由开中断指令来置位,由关中断指令使其复位
一条指令执行完毕:这是CPU响应中断请求的时间限制条件。一般情况下,CPU在一条指令执行完毕且没有更紧迫的任务时才能响应中断请求
(2)中断隐指令
CPU响应中断之后,经过某些操作,转去执行中断服务程序。这些操作是由硬件直接实现的,我们把它称为中断隐指令。中断隐指令并不是指令系统中的一条真正的指令,它没有操作码,所以中断隐指令是一种不允许、也不可能为用户使用的特殊指令。其所完成的操作主要有:
保存断点:为了保证在中断服务程序执行完毕能正确返回原来的程序,必须将原来程序的断点(即程序计数器PC的内容)保存起来。断点可以压入栈,也可以存入主存的特定单元中
暂不允许中断:在中断服务程序中,为了保护中断现场(即CPU的主要寄存器)期间不被新的中断所打断,必须要关中断,从而保证被中断的程序在中断服务程序执行完毕之后能接着正确地执行下去
引出中断服务程序:引出中断服务的实质是取出中断服务程序的入口地址送程序计数器(PC)
(3)中断周期
以上几个基本操作在不同的计算机系统中的处理方法是各异的。通常,在组合逻辑控制的计算机中,专门设置了一个中断周期来完成中断隐指令的任务。在微程序控制的计算机中,则专门安排有一段微程序来完成中断隐指令的这些操作
假设将断点存至主存的0号单元,且采用硬件向量中断法寻找中断服务程序的入口地址,则在中断周期需完成如下操作:
将特定地址0送至存储器地址寄存器,记作0——>MAR
将PC的内容送至MDR,记作(PC)——>MDR
向主存发写命令,启动存储器做写操作,记作Write
将MDR的内容通过数据总线写入到MAR所指示的主存单元(0号)中,记作MDR——>M(MAR)
向量地址形成部件的输出送至PC,为进入中断服务程序做准备,记作向量地址——>PC
关中断,将中断允许触发器清0,记作0——>EINT
3.4、硬件向量中断法
当CPU响应某一中断请求时,硬件能自动形成并找出与该中断源对应的中断服务程序的入口地址
向量中断过程:当中断源向CPU发出中断请求信号之后,CPU进行一定的判优处理,若决定响应这个中断请求,则向中断源发出中断响应信号INTA,中断源接到INTA信号后就通过自己的向量地址形成部件向CPU发送向量地址,CPU接收向量地址之后就可转入相应的中断服务程序
向量地址通常有两种情况:向量地址是中断服务程序的入口地址,向量地址是中断向量表的指针
3.5、中断现场的保护和恢复
中断现场指的是发生中断时CPU的主要状态,其中最重要的是断点,另外还有一些通用寄存器的状态。之所以需要保护和恢复现场的原因是因为CPU要先后执行两个完全不同程序(现行程序),必须进行两种程序运行状态的转换。一般来说,在中断隐指令中,CPU硬件将自动保存断点,有些计算机还自动保存程序状态寄存器的内容。但是,在许多应用中,要保证中断返回后原来的程序能正确地继续运行,仅保存这一二个寄存器的内容是不够的。为此,在中断服务程序开始时,应由软件去保存那些硬件没有保存,而在中断服务程序中又可能用到的寄存器的内容,在中断返回之前,这些内容还应该被恢复
现场的保护和恢复方法不外乎有纯软件和软、硬件相结合两种。纯软件方法是在CPU响应中断后,用一系列传送指令把要保存的现场参数传送到主存某些单元中去,当中断服务程序结束后,再采用传送指令进行相反方向的传送。软硬件保护现场往往是和向量中断在一起使用的。先把断点和程序状态字自动压入堆栈,这就是保护旧现场;接着根据中断源送来的向量地址自动取出中断服务程序入口地址和新的程序状态字,这就是建立新现场;最后由一些指令实现对必要的通用寄存器的保护。恢复现场是保护现场的逆处理
3.6、多重中断与中断屏蔽
    (1)中断嵌套
要使计算机具有多重中断的能力,首先要能保护多个断点,而且先发生的中断请求的断点,先保护后恢复;后发生的中断请求的断点,后保护先恢复。堆栈的后进先出特点正好满足多重中断这一先后次序的需要。同时,在CPU进入某一中断服务程序之后,系统必须处于开中断状态,否则中断嵌套是不可能实现的
(2)允许和禁止中断
允许还是禁止中断是用CPU中的中断允许触发器控制的,当中断允许触发器(EINT)被置1,则允许中断;当中断允许触发器被置0,则禁止中断
下列情况应开中断:
在中断服务程序执行完毕,恢复中断现场后
在多重中断的情况下,保护中断现场后
下列情况应该关中断:
当响应某一级中断请求,不再允许被其他中断请求打断时
在中断服务程序的保护和恢复现场之前
(3)中断屏蔽
中断源发出中断请求之后,这个中断请求不一定能真的送到CPU去,可以用程序方式有选择地封锁部分中断,这就是中断屏蔽。如果给每个中断源都相应地配备一个中断屏蔽触发器MASK,则每个中断请求信号在送往判优电路之前,还要受到屏蔽触发器的控制。在中断接口电路中,多个中断屏蔽触发器组成一个屏蔽寄存器,其内容称为屏蔽字,由程序来设置。屏蔽字的某一位的状态将成为本中断源能否真正发出中断请求信号的必要条件之一。这样就可以实现CPU对中断处理的控制,使中断能在系统中合理协调地进行。用程序设置的方法将屏蔽寄存器中的某一位置1,则对应的中断请求被封锁,无法去参加排队判优
如一个中断系统有16个中断源,每一个中断源按其优先级别赋予一个屏蔽字,屏蔽字与中断源的优先级别是一一对应的。第一级中断源的屏蔽字是16个1,它的优先级别最高,禁止本级和更低级的中断请求,第16级中断源的屏蔽字只有第16位为1,其余各位为0,它的优先级别最低,仅禁止本级的中断请求,而对其他高级的中断请求全部开放
3.7、中断全过程
中断全过程是指的是从中断源发出中断请求开始,CPU响应这个请求,现行程序被中断,转至中断服务程序,直到中断服务程序执行完毕,CPU再返回原来的程序继续执行的整个过程
大体上可以把中断全过程分为5个阶段:即中断请求、中断判优、中断响应、中断处理和中断返回
中断处理就是执行中断服务程序,这是中断系统的核心。中断处理过程基本上由三部分组成,第一部分为准备部分,其基本功能是保护现场,对于非向量中断方式则需要确定中断源,最后开放中断,允许更高级的中断请求打断低级的中断服务程序;第二部分为处理部分,即真正执行具体的为某个中断源服务的中断服务程序;第三部分为结尾部分,首先要关中断,以防止在恢复现场过程中被新的中断请求打断,接着恢复现场,然后开放中断,以便返回原来的程序后可响应其他的中断请求。中断服务程序的最后一条指令一定是中断返回指令
4、DMA方式
4.1、DMA方式的基本概念
直接存储器访问方式是在外设和主存之间开辟一条“直接数据通道”,在不需要CPU干涉也需要软件介入的情况下在两者之间进行的高速数据传送方式。在DMA传送方式中,对数据传送过程进行控制的硬件称为DMA控制器。当外设需要进行数据传送时,通过DMA控制器向CPU提出DMA传送请求,CPU响应之后将让出系统总线,由DMA控制器接管总线进行数据传送
DMA方式的特点:
它使主存与CPU的固定联系脱钩,主存即可以被CPU访问,又可被外设访问
在数据块传送时,主存地址的确定、传送数据的技术都由硬件电路直接实现
主存中要开辟专用缓冲区,及时供给和接受外设的数据
DMA传送速度快,CPU与外设并行工作,提高了系统的效率
DMA在传送开始前要通过程序进行预处理,结束后要通过中断方式进行后处理
DMA和中断的区别:
中断方式是程序切换,需要保护和恢复现场,而DMA方式除了开始和结尾时,不占用CPU的任何资源
对中断请求的响应时间只能发生在每条指令执行完毕时;而对DMA请求的响应时间可以发生在每个机器周期结束时
中断传送过程需要CPU的干涉;而DMA传送过程不需要CPU的干涉,故数据传输速率非常高,适合于高速外设的成组数据传送
DMA请求的优先级高于中断请求
中断方式具有对异常事件的处理能力,而DMA方式仅局限于完成传送数据块的I/O操作
DMA方式的应用:DMA方式一般应用于主存与高速外设间的简单数据传送。高速外设如磁盘、磁带、光盘等辅助存储器以及其他带有局部存储器的外设、通信设备等
4.2、DMA传送方法与传送过程
(1)DMA传送方法
DMA控制器与CPU通常采用以下三种方法使用主存:
CPU停止访问主存法:DMA请求信号迫使CPU让出总线控制权,CPU在现行及其周期执行完毕后,使其数据、地址总线处于三态,并输出总线批准信号。每次DMA请求获得批准,DMA控制器获得总线控制权以后,连续占用若干个存取周期进行成组连续的数据传送,直至批量传送结束,DMA控制器才把总线控制权交回CPU
存储器分时法:把原来的一个存取周期分成两个时间片,一片分给CPU,一片分给DMA,使CPU和DMA交替地访问主存
周期挪用法:当外设没有DMA请求时,CPU按程序要求访问主存;一旦外设有DMA请求并获得CPU批准后,CPU让出一个周期的总线控制权,由DMA控制器控制系统总线,挪用一个存取周期进行一次数据传送,传送一个字或一个字节;然后DMA控制器将总线控制权交回CPU,CPU继续进行自己的操作,等待下一个DMA请求的到来。重复上述过程,直至数据块传送完毕
(2)DMA传送过程
DMA的传送过程可分为三个阶段:DMA传送前的预处理、数据传送和传送后的结束处理
DMA预处理:CPU首先执行几条I/O指令,用于测试外设的状态、向DMA控制器的有关寄存器置初值、设置传送方式、启动外部设备等
在这些工作完成之后,CPU继续执行原来的程序,在外设准备好发送的数据或接受的数据以处理完毕时,外设向DMA控制器发DMA请求,再由DMA控制器向CPU发总线请求
数据传送:DMA的数据传送可以以字节为基本单位,也可以以数据块为基本单位。对于以数据块为单位的传送,DMA控制器占用总线后的数据输入和输出操作都是通过循环来实现的
DMA后处理:当传送长度计数器计到0时,DMA操作结束,DMA控制器向CPU发中断请求,CPU停止原来程序的执行,转去中断服务程序做DMA结束处理工作
5、通道工作方式
5.1、通道的基本概念
从逻辑结构上讲,通道控制方式具有四级连接:主机——>通道——>设备控制器——>外部设备
通道是一种高级的I/O控制部件,它在一定的硬件基础上利用软件手段实现对I/O的控制和传送,更多的免去了CPU的介入,从而使主机和外设的并行工作程度更高。当然,通道不能完全脱离CPU,它还要受到CPU的管理,比如启动、停止等,而且通道还应该向CPU报告自己的状态,以便CPU决定下一步的处理
通道大致具有以下几个方面的功能:
接受CPU的I/O指令,按指令要求与指定的外设进行联系
从主存取出属于该通道程序的通道指令,经译码后向设备控制器和设备发送各种命令
实施主存和外设间的数据传送,提供数据中间缓存的空间以及指示数据存放的主存地址和传送的数据量
从外设获得设备的状态信息,形成并保存通道本身的状态信息,根据要求将这些状态信息送到主存的指定单元,供CPU使用
将外设的中断请求和通道本身的中断请求按次序及时报告CPU
设备控制器的功能:通道通过执行通道程序来控制设备控制器进行数据传送操作,并以通道状态字来接受设备控制器反馈回来的外部设备状态。因此,设备控制器就是通道对外部设备实现传送控制的执行机构。设备控制器的具体任务如下:
从通道接受控制信号,控制外部设备完成所要求的操作
向通道反馈外部设备的状态
将外部设备的各种不同信号转换为通道能识别的标准信号
5.2、通道程序
在采用通道结构的计算机系统中,与输入输出有关的指令分为两级
CPU执行的I/O指令:在采用通道结构的系统中,这种I/O指令比较简单,它并不直接控制具体的I/O操作,只是负责通道的启动和停止,查询通道或设备的状态,控制通道完成I/O操作
通道执行的通道指令:通道指令也就是通道命令字,用它来编制通道程序,并由管理程序存放在主存的任何地方。在主CPU启动指定通道后,通道将执行通道程序来实现具体的I/O操作,直到组成通道指令程序的全部通道命令字执行完毕时,这次I/O传送就算完成了
5.3、通道工作过程
通道完成一次数据传输的主要过程分为如下三步:
在用户程序中使用访管指令进入管理程序,由CPU通过管理程序组织一个通道程序,并启动通道
通道执行CPU为它组织的通道程序,完成指定的数据输入输出工作
通道程序结束后向CPU发中断请求,CPU响应这个中断请求后,第二次进入操作系统,调用管理程序对中断请求进行处理

抱歉!评论已关闭.