博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
I/O系统(二)
阅读量:5091 次
发布时间:2019-06-13

本文共 3131 字,大约阅读时间需要 10 分钟。

程序查询流程

1测试指令,查询IO设备是否就绪。
2传送指令,当已经就绪时,执行传送功能。
3转移指令,未就绪时,转移至继续测试IO设备的状态。
当需要启动某一IO设备时,必须将该程序插入到现行程序中。
1,由于这种传送数据时要占用CPU寄存器,先将寄存器内容保护起来。
2,传送的是一批数据,先设置IO设备与主机交换数据的计数值
3,设置欲传送数据在主存缓冲区的首地址
4,CPU启动IO设备
5,将IO接口中的设备状态标志取至CPU并测试IO设备是否准备就绪。如果就绪就传输,如果没就绪等待。
6,CPU执行IO指令,或从IO接口的数据缓冲寄存器读一个数据,或把一个数据写入IO接口中的数据缓冲寄存器内,同时将接口中的状态标志复位。
7,修改主存地址。
8,修改计数值。
9,判断计数值
10,结束IO传送,继续执行现行程序。
程序中断方式
中断接口:
1,中断请求触发器和中断屏蔽触发器
每台设备必须配置一个请求触发器INTR,当为1时,表示该设备向CPU提出中断请求。提出中断请求时,本身必须准备就绪。多个中断源向CPU提出中断请求时,CPU必须坚持一个原则,即在任何瞬间,只能接受一个中断请求。其他的进行排队,接受级别高的。在IO接口中设置一个屏蔽触发器MASK,当为1时,表示屏蔽,即封锁其中中断源的请求。请求触发器和屏蔽触发器在IO接口中是成对出现的。
CPU总是在统一的时间,每条指令执行阶段的最后时刻,查询所有的设备是否有中断请求。
仅当设备准备就绪D=1,设备未屏蔽MASK=0,CPU中断查询信号可将中断请求触发器设置为1,INTR=1
2排队器
多个中断源同时向CPU提出请求时,根据性质不同,给予不同等级的优先权。速度越高的IO,优先级越高,因为若CPU不及时响应高速IO请求,其信息可能立即丢失。
3中断向量地址形成部件
一旦响应了IO中断,就要暂停现行程序,转去执行改设备中的中断服务程序。每个服务程序都有一个入口地址。
硬件方法寻找地址:通过向量地址来寻找设备的中断服务程序入口地址。中断向量地址形成部件的输入时来自排队器的输出INTP1,INTP2...INTPN。它的输出是中断向量,位数与计算机可以处理中断源的个数有关。一个中断源对应一个向量地址。其中12H,13H是向量地址,200,300是打印机服务程序和显示器服务程序入口地址。

 

 

IO中断处理过程
1,CPU响应中断的条件和时间。
CPU响应中断的时间是每条指令执行阶段的结束时刻。
2,IO中断处理过程。
当CPU通过IO指令的地址码选中某设备后
1,由CPU发动启动IO设备命令,将接口中B设置1,D设置0
2,接口启动输入设备开始工作
3,输入设备将数据传送到数据缓冲寄存器。
4,输入设备向接口发送设备工作结束信号,D设置为1,B设置为0,标志设备准备就绪。
5,当设备准备就绪D=1,且本设备未被屏蔽MASK=0,在指令结束时,由CPU发送出中断查询信号。
6,设备中断请求触发器INTR设置为1,标志设备向CPU提出中断请求,同时,INTR送至排队器,进行中断判优
7,若CPU允许中断EINT=1,设备又被排队选中,进入中断响应。由中断响应信号INTA将排队器输出送至编码器形成向量地址。
8,向量地址送至PC,作为下一条指令的地址。
9,由于向量地址中存放的是一条无条件转移指令,所以指令结束后,转至程序入口地址,开始执行中断服务程序。
10,中断服务程序最后一条指令是中断返回指令,当执行结束,返回到源程序的断点。
以上可以简单的归纳为:中断请求,中断判优,中断响应,中断服务,中断返回。
中断服务程序的流程
1,保护现场
1)保存程序的断点,由中断隐指令完成。2)保存通用寄存器和状态寄存器内容,由中断服务程序完成。
2,中断服务
对于不同中断请求,服务内容是不同的。比如,打印,显示字符。
3,恢复现场
通常采用取数指令或出栈指令(POP),将保存在储存器或堆栈中的信息送回到原来的寄存器中。
4,中断返回
返回到原来程序的断点处。
DMA方式
DMA特点:
在主存和DMA之间有一条数据通路,主存和设备交换信息不需要通过CPU,也不需要CPU暂停现行程序为设备服务,省去了保护现场和恢复现场。适合高速IO或辅存与主存之间的信息交换。若高速IO和CPU同时访问主存,CPU必须将总线占有权给DMA使用,即DMA采用周期窃取的方式占用一个存取周期。
为了有效分时使用主存,通常DMA与主存交换数据时采用的方法:
1,停止CPU访问主存
特点:适用数据传输率很高的IO设备实现成组数据传输。缺点是DMA接口在访问主存时,CPU基本上处于不工作状态或保持原态。可以再DMA接口中设置一个小容量储存器,使IO设备先与小容量储存器交换数据,然后再与主存交换。减少占用时间。减少CPU暂停工作时间。
2,周期挪用
每当IO设备发出DMA请求时,IO设备便挪用或窃取总线占用权,或几个主存周期,而DMA不请求时,CPU扔继续访问主存。
UI设备请求DMA传送三个情况:
1,CPU不需要访问主存,IO设备与CPU不冲突。
2,IO请求DMA传送时,CPU访问主存。此时等存取周期结束,CPU才能将总线占有权让出。
3,IO设备访问主存时,CPU也要访问,出现冲突。IO设备优先于CPU,窃取存储周期,延缓了CPU访问主存。
IO设备每挪用一个主存周期都要申请总线控制权,建立总线控制权和归还总线控制权。周期挪用的方法比较适合IO设备的读写周期大于主存周期。
3,DMA与CPU交替访问。
此方法适合CPU工作周期比主存存取周期长的情况。这种情况下不需要总线使用权的申请,建立和归还。
DMA接口功能和组成
DMA接口功能:
1,向CPU申请DMA传送
2,在CPU允许DMA工作时,处理总线控制权的转交,避免进入DMA而影响CPU正常活动。
3,在DMA期间管理系统总线,控制数据传输。
4,确定数据传送的起始地址和数据长度,修正传输过程中的数据地址和数据长度。
5,在数据块传送结束时,给出DMA操作完成的信号。
接口基本组成:
1,主存地址寄存器AR
AR用于存放主存中需要交换数据的地址。
2,字计数器WC
WC用于记录传送数据的总字数,通常交换字数的补码值预置。
3,数据缓冲寄存器BR
BR用于暂存每次传送的数据。
4,DMA控制逻辑
5,中断机构
当字计数器全0时,表示数据交换完毕,由溢出信号通过中断向CPU发出中断请求。
6,设备地址寄存器DAR
存放IO设备的设备码
DMA工作过程
1,预处理
在DMA接口开始工作之前,CPU给他预置信息。
DMA逻辑控制指明传输方向,读主存,写主存。
DMA设备地址寄存器送入设备号,启动设备
DMA主存地址寄存器送入交换数据的主存起始地址
对字计数器赋予交换数据的个数。
2,数据传送
DMA以数据块为单位传送的。
            \\
             \\_
          .---(')
        o( )_-\_
3,后处理
包括校验送入主存数据正确性,是否继续传送等。
DMA接口和系统接连方式
与程序中断方式相比,DMA方式特点:
1,程序中断方式靠程序传输,DMA靠硬件传输。
2,中断在一条指令执行结束时响应,DMA在指令周期内任意存取周期结束时响应。
3,中断有异常处理事件能力,DMA没有。
4,中断需要保护现场,DMA不中断程序,无需保护现场。
5,DMA优先级比中断高。
DMA接口类型
1,选择型DMA接口
2,多路型DMA接口

转载于:https://www.cnblogs.com/jack-ming/p/4214400.html

你可能感兴趣的文章
bzoj 1257: [CQOI2007]余数之和 整除分块
查看>>
java学习--基础知识阶段性总结--常用api
查看>>
使用css3画饼图
查看>>
readonly和const区别
查看>>
彻底解决SysFader:iexplorer.exe 应用程序错误
查看>>
改善方案
查看>>
centos7 yum安装mysql
查看>>
<五> jQuery 效果
查看>>
Surface 入门教程 2 (适合第一次接触Surface SDK的朋友)
查看>>
转:大数据架构:flume-ng+Kafka+Storm+HDFS 实时系统组合
查看>>
如何在跟新xcode后跟新插件
查看>>
数学表达式
查看>>
Reader 与 Guava MultiReader
查看>>
html之超链接、图片
查看>>
处理器boot的简单概念及误区
查看>>
使用delphi 开发多层应用(十一)使用kbmMW 开发webserver
查看>>
x64 assembler fun-facts(转载)
查看>>
状态玻璃效果菜单(实例)
查看>>
Ruby入门教程和技巧
查看>>
C++ Operator Overloading
查看>>