七、输入输出系统(二)I/O方式

目录

2.1程序查询方式

2.2程序中断方式 

2.2.1程序中断相关概念

2.2.2中断隐指令及中断服务程序

2.2.3单重中断和多重中断 

 2.3DMA方式

2.3.1DMA基本概念

2.3.2DMA传送过程与传送方式

2.4通道方式

2.4 补充


输入/输出系统实现主机与外设之间的数据传送,可以采用不同的I/O方式,各自方式在代价性能解决问题的出发点等方面各不相同。常用的I/O方式有程序查询程序中断DMA、和通道

2.1程序查询方式

又称程序轮询方式,程序直接控制方式。

程序查询方式的独占查询的主要特点是CPU有“踏步”等待现象,CPU启动I/O后需要花全部时间轮询I/O设备状态,在一段时间内只能和一台外设交换信息,效率大大降低。

此外,在定时查询时不满足CPU不断轮询状态寄存器,I/O设备准备阶段时CPU可以进行其他工作。但两者本质都是一种低效的“查询”方式

故程序查询方式可以分为

  • 独占查询:CPU所有时钟周期都在查询I/O状态。CPU和I/O串行工作。
  • 定时查询:在保证数据不丢失的情况下,每隔一段时间CPU就查询一次I/O状态。查询的间隔内CPU可以执行其他程序。

无论哪种直接程序传送(程序查询方式),都不能胜任快速外部设备(如磁盘),因为即便CPU所有的时间都用来查询I/O状态也会丢失数据。

2.2程序中断方式 

又称中断驱动方式。

2.2.1程序中断相关概念

程序中断是指在计算机执行现行程序的过程中,出现某些急需处理的异常情况或特殊请求,CPU暂时中止现行程序,而转去对这些异常情况或特殊请求进行处理,在处理完毕后CPU又自动返回到现行程序的断点处,继续执行原程序。 

中断源是指请求CPU中断的设备或事件,不同中断源向CPU发出中断请求的时间是随机的。 

中断请求是指中断源向CPU发送中断请求信号。

CPU响应中断的条件

  1. 中断源有中断请求。
  2. CPU允许中断及开中断(异常和不可屏蔽中断不受此限制)
  3. 一条指令执行周期结束(异常不受此限制),且没有更紧迫的任务。

关中断(不允许中断,用于实现原子操作) 开中断(允许中断) 。

非屏蔽中断:关中断时也会被响应(如掉电)可屏蔽中断:关中断时不会被响应。

 

中断响应判优多个中断源同时提出请求时通过中断判优(排队优先)逻辑响应一个中断源。

  1. 硬件实现:硬件排队器,响应优先级在硬件线路上是固定的,不便改动。
  2. 软件实现:查询程序。

 2.2.2中断隐指令及中断服务程序

 中断隐指令硬件一系列的自动操作。

  1. 关中断。保存断点操作和中断服务程序中保护现场操作(CPU主要寄存器内容)的必要步骤。
  2. 保存断点。即保存PC中的内容到内核堆栈或指定单元。
  3. 引出中断服务程序。有两种方法:软件查询法硬件向量法

硬件向量法 

中断服务程序: 

  1. 保护现场。
  2. 中断服务(设备服务):主体部分,如通过程序控制需打印的字符代码送入连接打印机的I/O接口中。
  3. 恢复现场:通过出栈指令或取数指令把之前保存的信息送回寄存器中。
  4. 中断返回:通过中断返回指令回到原程序断点处。

下图为单重中断流程: 

 

2.2.3单重中断和多重中断 

若CPU暂停现行的中断服务程序,转去处理新的中断请求,则这种中断为多重中断,又称中断嵌套。

 

 中断屏蔽技术

 中断屏蔽技术主要用于多重中断,CPU要具备多重中断的功能,需满足下列条件:

  1. 在中断服务程序中提前设置开中断指令。
  2. 优先级别高的中断源有权中断优先级别低的中断源。

屏蔽字 

每个中断源都有一个屏蔽触发器,1表示屏蔽该中断源的请求,0表示可以正常申请,所有屏蔽触发器组合在一起,便构成一个屏蔽字寄存器,屏蔽字寄存器的内容称为屏蔽字。 

 

 

 中断处理优先级是指多重中断的实际优先级处理次序,可以利用中断屏蔽技术调整。

 回归主题:第二种I/O方式为:程序中断方式

红色部分是中断响应耗时,进行中断隐指令。

部分是中断服务程序耗时,蓝色部分是不包括恢复现场和中断返回,CPU写/读出数据缓冲寄存器的数据后就可以让外设继续工作。紫色部分是恢复现场和中断返回耗时。

CPU读或写一次数据缓冲寄存器需要的时间是+

CPU完成一次该中断任务耗时是++

 2.3DMA方式

直接存储器存取(Direct Memory Access) 

2.3.1DMA基本概念

DMA方式基本思想: 

DMA(Direct Memory Access:直接内存存取)是一种可以大大减轻CPU工作量的数据转移方式。

CPU有转移数据、计算、控制程序转移等很多功能,但其实转移数据(尤其是转移大量数据)是可以不需要CPU参与。比如希望外设A的数据拷贝到外设B,只要给两种外设提供一条数据通路,再加上一些控制转移的部件就可以完成数据的拷贝。

DMA就是基于以上设想设计的,它的作用就是解决大量数据转移过度消耗CPU资源的问题。有了DMA使CPU更专注于更加实用的操作--计算、控制等。

特点:I/O与主机并行工作,程序和传送并行工作。

基于以上思想,DMA控制器(特殊I/O接口)应该是如下DMA接口与主存有直接通路的结构:

但是一些题中会有以下描述:

在X86架构系统中,当DMA运作时(假设我们从磁盘拷贝一个文件到U盘),DMA实际上会占用系统总线周期中的一部分时间。也就是说,在DMA未开启前,系统总线可能完全被CPU使用;当DMA开启后,系统总线要为DMA分配一定的时间,以保证DMA和CPU同时运作。那么显然,DMA会降低CPU的运行速度。

在STM32控制器中,芯片采用Cortex-M3架构,总线结构有了很大的优化,DMA占用另外的总线,并不会与CPU的系统总线发生冲突。也就是说,DMA的使用不会影响CPU的运行速度。

 DMA控制器的组成: 

2.3.2DMA传送过程与传送方式

 DMA的传送过程: 

  1. 预处理 CPU完成必要准备工作,CPU首先执行几条I/O指令测试I/O设备状态,向DMA控制器的有关寄存器置初值,设置传送方向,启动该设备等。然后CPU可以继续执行原来的程序。当外存准备好时,I/O设备先DMA控制器发送DMA请求,再由DMA控制器向CPU发送总线请求(有时将这两个过程统称为DMA请求),用于传输数据。
  2. 数据传送完全由DMA控制,即完全是硬件实现。
  3. 后处理。DMA控制器向CPU发送中断请求,CPU执行中断服务程序做DMA结束处理,包括校验送入主存的数据是否正确、测试传送过程中是否出错(错误则转诊断程序)及决定是否继续使用DMA传送其他数据等。

注:DMA请求表示要使用总线传送一个字的数据到主存,DMA中断请求表示一个块已经传送完毕了。 

以下为个人理解,书上对此描述很模糊。

上述DMA传送过程可以描述DMAC使用系统总线或DMA总线两种情况。

不同的是DMAC使用系统总线时CPU将不能用系统总线,很多程序受到影响; 使用DMA总线时CPU只是不能访存主存,可以利用系统总线做其他事情。

 当主存和DMA中有DMA总线时引出DMA传送方式

注:因为如果没有DMA总线DMA请求后占用系统总线连接主存,不存在冲突。

注:上图右下角准确的是让出主存使用权,因为CPU和DMA不能同时访问主存, CPU通过主存总线,DMA通过DMA总线。

2.4通道方式

  • 通道程序是放在内存中的,即CPU和通道共享内存。
  • 实现复杂,需要专门的通道硬件支持。
  • 一个通道可以控制多个I/O接口,一个I/O接口可以控制多个设备。

字节多路通道是一种简单的共享通道,主要用于连接控制大量低速或中速外设。

数据选择通道又称高速通道。

数组多路通道在实际系统中得到较多的应用

字节多路通道和数组多路通道都是多路通道数组多路通道与设备之间进行数据传送的基本单位是数据块,而字节多路通道与设备之间进行数据传送的基本单位则是字节

 2.4 补充

对比:

 

 

程序查询方式程序中断方式数据的传送一次是一个字DMA方式数据的传送一次是一个块或多个块通道方式每次读/写一组块。注:这里多个块必须是连续的。

其他

  1. 总线仲裁方式一般是指I/O设备争用总线的判优方式,而中断判优方式一般是指I/O设备争用CPU处理的判优方式。
  2. 中断向量地址(又称向量地址、中断类型号)是程序入口地址的地址中断向量是程序入口的地址向量中断(又称硬件向量法)是引出中断服务程序的一种硬件方法。
  3. 浮点数运算下溢,直接当作机器零处理,不引发中断;浮点数上溢,表示超过了浮点数的表示范围,属于内中断。
  4. DMA和CPU使用主存如果是通过周期窃取(挪用)方式存取周期后让出主存使用权。假如每次DMA传送的数据块为512B,数据缓冲寄存器大小为32bit,DMA每传送一个数据字后就让出主存使用权给CPU;当通过停止CPU访存方式传送完一个数据块后才会让出主存使用权。
  5. CPU会在每个存储周期结束后检查是否有DMA请求,来源王道312_06;
  6. CPU在每个机器周期结束后就可以响应DMA请求,来源王道314_24;
  7. DMA响应发生在一个总线事务完成后,来自408真题。

5.6.7不理解,虽然结合下面的已知信息来看这三条确实能同时做到,反正还有其他选项,并不影响实际做题。以后想通了再来补充。

百度百科

  • 存储器进行一次“读”或“写”操作所需的时间称为存储器的访问时间(或读写时间),而连续启动两次独立的“读”或“写”操作(如连续的两次“读”操作)所需的最短时间,称为存取周期(或存储周期。内存的存取周期一般为60ns-120ns。
  • 机器周期也称为CPU周期。在计算机中,为了便于管理,常把一条指令的执行过程划分为若干个阶段(如取指、译码、执行等),每一阶段完成一个基本操作。完成一个基本操作所需要的时间称为机器周期。一般情况下,一个机器周期由若干个时钟周期组成 。
  • 时钟周期是同步电路中时钟基础频率的倒数。它以时间动作重复的最小周期来度量,度量单位采用时间单位。在单个时钟周期内(现代非嵌入式微处理器的这个时间一般都短于1纳秒)

之前的个人总结

  • 机器周期(CPU周期):常把一条指令的执行过程划分为若干个阶段(如取指、译码、执行等),每一阶段完成一个基本操作。 完成一个基本操作(如取指、存储器读、存储器写)所需要的时间称为机器周期每个机器周期内的节拍数可以不等。注意这里取指时间不等于取指周期,一个指令的取指周期可能包括两次取指(当指令字长等于存储字长的2倍时),只有当指令字长等于存储字长时,取指周期等于机器周期。
  • 总线周期:指一次总线操作所需的时间,包括申请、寻址、传输、结束阶段。通常由若干时钟周期构成。但也可能由一个时钟周期构成或者一个时钟周期包含多个总线周期(上升沿和下降沿)。

  • 5
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

晴落

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值