组成原理(七):输入输出系统(下)

系列文章目录



前言

哈工大计组网课笔记,教材《计算机组成原理》(唐朔飞)


(四)程序查询方式

1.程序查询方式的流程

1.1.查询流程

单个设备:如果在传输过程中,只有一个设备参与内存与I/O之间数据传输,在执行程序的过程当中,CPU会执行一个输入/输出指令,由这个指令发出启动设备的命令,相应得设备接受到命令以后就开始进行数据准备,数据准备好以后再传输给CPU,CPU在发出设备启动命令后,就开始循环检查状态标记,看I/O接口中的数据是否已经准备好,设备是否已经准备好输入/输出,如果准备就绪,就进行数据交换,如果没有准备就绪,CPU就一直处于原地踏步状态,直到设备准备好开始交换数据为止。
在这个过程,有三条指令:

  • 第一条指令即检查状态标记,是一条测试指令。
  • 第二条指令即检查设备是否准备就绪后的跳转,是一条转移指令
  • 第三条指令即交换数据,使用的是数据传送指令/输入输出指令/访存指令

在这里插入图片描述
多个设备:根据这些参与数据交换的外设的优先级进行排序,优先级从大到小,CPU在这个序列中循坏查询。
在这里插入图片描述

1.2.程序流程

进行I/O通信时可能需要使用到CPU中的某个寄存器,如果这个寄存器中存储的数据是有用的,则需要先将这数据暂存,将它保存到内存中或者压入到堆栈中或者保存到CPU其他空闲的寄存器中)

在这里插入图片描述
设置计数器是用来控制通信数据的大小,每传输完一个数据,计数值迭代一次。

2.程序查询方式的接口电路(简化)

在这里插入图片描述
I/O处理过程

  • CPU通过地址线给出外设地址,设备选择电路将自己的端口号/设备地址与给出的外设地址作比较,如果相同,说明这次启动的外设就连在此接口上的设备,SEL信号有效,启动命令和SEL命令都有效的前提下,对D、B两个状态标记进行置位,到目前为止,是CPU发出读命令,外设还没开始工作,因此标记D(完成触发器)为0,表示数据未准备好,标记B(工作触发器)要置为1,表示设备开始工作。(图中没有体现:对CPU的命令进行译码,在时序电路控制下,产生一序列的控制信号,控制接口和I/O进行工作)
  • B标记将会去启动设备,设备收到启动信号(B的信号)之后就会开始工作。
  • 设备将数据准备好并通过输入的数据线保存到DBR当中。
  • 此时设备工作完成,设备通过设备状态线向接口设备送入工作结束信号,在个信号会修改接口电路中的两个标记信号,D修改为1,表示工作完成,B修改为0,表示外设为空闲中。
  • 准备就绪信号(D的信号)被送出。
  • CPU收到后,通过数据线将DBR的数据进行读入。

(五)程序中断方式

1.中断的概念

CPU在执行程序的过程中,如果发生意外事件或者特殊事件,CPU要中断当前程序的执行,(通过中断服务或程序的方式)转而处理特殊事件或者异常事件,处理结束后,要返回到被中断的程序断点,继续执行之前程序。
在这里插入图片描述

2.I/O中断的产生

在这里插入图片描述
大部分时间,打印机和CPU是并行运行的。

3.程序中断方式的接口电路

3.1.配置中断请求触发器和中断屏蔽触发器

在这里插入图片描述

中断请求标志能否变成中断请求信号向CPU发送中断请求,还要看这个中断请求标志是否会被屏蔽掉,因为有的时候CPU正在执行的任务比这个中断请求重要性要高。

3.2.排队器

在同一时刻向CPU发送中断请求的可能有多个,这些设备的优先级是不一样的,(比如说高速设备优先级就要高一些)所以需要排队器来确定提出中断请求的设备当中优先级最高的是哪个设备,让CPU最先响应中断。

在这里插入图片描述
由排队器将不同设备按优先级从高到地排列,如果某一个设备想要相响应,其前面的设备 I N T P ′ INTP' INTP必须全为1,即前面的 I N T R INTR INTR都得为0,后面的INTR则没有要求,但它自己 I N T R INTR INTR置为1时,其后面的设备 I N T P ′ INTP' INTP全部被置为0。此时 I N T P ′ INTP' INTP置为1的最后一个就是发出中断请求的设备优先级最高的。
在这里插入图片描述
还要通过电路,将这个优先级最高的筛选出来,图中给出的操作即将 I N T P i ′ INTP'_i INTPi I N T P i INTP_i INTPi进行操作,经过一个与非门和非门即可筛选出来。

3.3.中断向量地址形成部件(设备编码器)

如果要响应某个中断去执行中断服务程序,CPU必须要知道中断服务程序的入口地址,也就是中断服务程序在内存当中的起始地址,这个需要采用中断向量地址形成部件来形成入口地址。

  • 中断向量
    中断服务程序的入口地址,比如说在X86系列中,可以理解为段地址,偏移量组成的向量(段地址,偏移量)。有的时候也指程序状态字,比如说CPU发生中断的时候,一些非体系结构寄存器或者表示程序状态的一些寄存器,这些寄存器指令无法进行读取,在计算机的内部就将其集成为一个字,称为程序状态字。
    总而言之,中断向量就是指和中断服务程序相关的入口地址(段地址,偏移量),也包括中断服务程序的时候需要的一些状态信息。
  • 中断向量地址
    存储中断向量的存储单元地址,即保存中断服务程序入口地址的内存单元的地址(中断服务程序入口地址的地址),或者是我们通过一条跳转指令跳转到中断服务程序,此时的向量地址就是这条跳转指令在内存中保存的地址。

在PC/AT机中,中断向量是指中断服务程序的入口地址,每个中断向量分配4个连续的字节单元,两个高字节单元存放入口的段地址CS,两个低字节单元存放入口的段内偏移量IP。在PC/AT中,规定内存储器的最低1
KB用来存放中断向量(共256个),称这一片内存区为中断向量表。

在这里插入图片描述
根据排队器的输出(只有一个1其他全是0)作为输入进行转换生成向量地址(指出中断服务的入口地址的地址,或者是跳转到中断服务的那条跳转指令)

在这里插入图片描述
在这里插入图片描述

4.I/O中断处理过程

4.1 CPU响应中断的条件和时间

什么时候允许CPU响应外部发送的中断请求
在这里插入图片描述
什么时候响应外部设备发送的中断请求
在这里插入图片描述

4.2.I/O中断处理过程

在这里插入图片描述

  • CPU在执行主程序时会执行到一个输入指令,这条输入指令要求指定的外部设备把数据输入到主机当中,CPU通过这条指令在数据线上给出设备地址,设备地址送到接口地址之后,利用设备选择电路和接口上的设备地址进行比较,如果相同,那么这个接口以及相对应的设备就被选中了,SEL信号有效。(SEL信号是这个接口和相应设备被选择的信号,只有SEL有效,接口电路才会工作)由CPU送来启动命令,命令在接口当中进行缓冲、译码,但启动命令和SEL同时有效时,触发器D、B分别置0、1,表示设备开始工作(B为1)还没完成工作(D为0)。
  • 触发器B置为1后去启动设备进行工作。
  • 将输入数据准备好送入接口当中的DBR。
  • 设备结束工作后修改触发器D、B状态,分别置为1、0,表示设备完成工作(D为1)处于空闲(B为0)。
  • 如果此时设备的中断请求没有被屏蔽,即 M A S K MASK MASK为0,经过一个非门再和D通过一个与非门、非门,作为 I N T R INTR INTR的输入信号。
  • CPU在执行一条指令的执行阶段结束后,会发出中断查询信号,中断查询信号会把接口当中中断请求触发器 I N T R INTR INTR的值置为1,同时启动排队器进行排队。
  • 经过排队器排队以后,排队器的输出信号只有一个是1,其他是0。
  • CPU发出中断响应信号,中断向量地址形成部件形成向量地址
  • 向量地址通过数据线传给CPU(PC),PC去取出中断服务程序入口地址或者跳转指令,CPU进入中断服务程序完成操作,将数据取走。

5.中断服务程序流程

5.1.中断服务程序的流程

5.1.1.保护现场
  • 程序断点的保护:断点包含了两部分内容,一部分是当前PC当中保存的指令的地址的值(中断返回以后,去执行哪条指令),还包括了程序执行状态字,这部分内容由硬件完成,称为中断隐指令
  • 寄存器内容的保护:如果某些通用寄存器或体系结构寄存器在中断服务程序中被使用,那么这些寄存器的值也需要被保存起来,因为中断结束后,可能主程序还需要使用。一般在中断服务程序当中,利用进栈指令进行保存。
5.1.2.中断服务

不同外设具有不同内容的设备服务(中断服务程序)

5.1.3.恢复现场

主要是指体系结构寄存器的内容,如果是进栈指令保护,就用出栈的方式恢复,实际上不一定必须使用进栈来保护数据,可以放到内存单元指定位置,如果计算机有大量寄存器的话,还可以转存到这些寄存器当中,使得中断结束后,数据能恢复就可以。

5.1.4.中断返回

中断返回指令

5.2.单重中断和多重中断(中断嵌套)

在这里插入图片描述

5.3.单重中断和多重中断的服务程序流程

在这里插入图片描述

多重中断再恢复现场前后需要关、开中断,为了保护恢复现场不被打断,图中没有画出。

5.4.主程序与服务程序抢占CPU示意图

在这里插入图片描述

(六)DMA方式

1.DMA方式的特点

1.1.DMA和程序中断两种方式的数据通路

在这里插入图片描述

1.2.DMA与主存交换数据的三种方式

1.2.1.停止CPU访问主存

只要外设要和内存进行数据交换,在一块数据交换的过程当中,从第一个数据开始,CPU就放弃了对总线的控制和对内存的访问,将其交给了DMA接口。
优点:控制简单,适合大量数据传输
缺点:在外设数据传输的过程当中,如果内部的指令缓冲器当中有指令,或者CPU要执行的指令已经在Cache当中,CPU可与DMA并行运行(只要运行过程中不访问存储器就可以),否则CPU处于不工作状态或保存状态。未能充分发挥CPU对主存的利用率。
即使是一块数据进行传输,数据也是一个字一个字的在外设与主存之间进行传输,传输的间隔可能会比较大,会超过一个存储周期,也就是说在传输间隔这段时间内,虽然DMA接口没有直接使用主存,但是依然占用主存访问权,CPU不能访问主存。
在这里插入图片描述

1.2.2.周期挪用(周期窃取)

这里的周期指的是访存周期,如果DMA接口准备好了数据传输,就通过申请建立总线的使用权,占用一个或者是几个内存访问周期,完成数据的传输,在数据传输的间隔或者是准备阶段,DMA放弃对总线的占用和对内存的使用权,这种方式即称为周期窃取。
DMA访问主存有三种可能:

  • CPU此时不访问主存:可直接将总线和内存的使用权就可直接分配给DMA接口。
  • CPU正在访存:CPU正处在某一个访存周期的中间阶段,DMA只能等待,不能进行抢占。
  • CPU和DMA同时请求访存:此时DMA是优先的,CPU要放弃总线的控制权,放弃对内存的使用权,让给DMA,因为DMA接口上连的是高速设备,如果不响应可能会造成数据丢失。

在这里插入图片描述

在现代计算机的结构当中,最影响机器效率(机器速率)的,就是主存储器。

1.2.3.DMA与CPU交替访问

在这里插入图片描述
由于在固定的时间点,存储器和I/O总线的使用权是固定的,就不需要DMA提出DMA申请,建立对总线的控制权和对主存的使用权,速度比较快。
在这里插入图片描述

2.DMA接口的功能和组成

2.1.DMA接口功能

  • 向CPU申请DMA传送(即申请总线和主存的使用权)
  • 处理总线控制权的转交
  • 管理系统总线、控制数据传输
  • 确定传输的方向,以及数据传输的首地址和长度,修正传输过程当中的数据地址和长度(主要是确定数据块的传输是否结束)
  • DMA传送结束时,给出操作完成信号

2.2.DMA接口的组成

由于DMA与主存和CPU都要通信,所以图中假设是使用单总线结构。
在这里插入图片描述

  • AR:首先要告诉DMA传输的地址是什么(从内存哪个地址进行数据传输/输入的数据从内存的哪个位置进行存储),需要一个地址寄存器。假设把数据传入内存,或是从内存当中进行输出,从低地址开始,假设每次传输的数据单位和编址单位是相同的,那么每完成一个数据的输入或者是数据的输出,就要对地址寄存器进行修改,即每完成一次输入或输出就对地址寄存器加1。AR通过地址线,将要访问的内存的地址送给主存,从这可以看到,DMA接管了总线和主存。另外,通过数据线给AR置值,传输的的内存单元初始地址通过数据线进行设置。
  • WC(字数计数):要知道传输的数据量,需要一个计数器,进行传输的数据量计数。假设是补码的方式(保存的是-N,N是要传输的字数),每传输一个数据,值加1,数据的数量通过数据线进行设置。
  • BR:外部设备的数据或者主存要输出的数据要暂存在接口的数据缓冲器当中。
  • DAR:还需要一个设备地址寄存器,将设备地址保存在其中,供设备选择电路使用,匹配访问设备与接口。另外对硬盘这样的设备进行访问的时候,DAR当中可以保存柱面号,磁道号,扇区号。设备的地址通过数据线设置。
  • DMA控制逻辑:控制接口内部协调工作,在给定的时序发出给定的信号。外设如果要进行DMA传输,要向DMA控制逻辑发送请求信号DREQ(设备请求),DMA控制器要向设备给出应答信号,DMA要使用总线和内存,要向CPU发送HRQ(总线使用请求),CPU向DMA发出应答信号HLDA。
  • 中断机构:用于数据传输完以后,对后续工作进行处理。当WC为0,即表示传输结束,向中断机构发信号,中断机构的中断请求触发器置1,当一条指令结束之后,由中断结构向CPU发出中断请求,由CPU做数据传输后处理。

3.DMA的工作过程(一个字一个字传输)

3.1.DMA传送给过程

3.1.1.预处理:

在这里插入图片描述

3.1.2.DMA传送过程示意

在这里插入图片描述

3.1.3.数据传送

在这里插入图片描述
输入(数据从外设送达主存)
在这里插入图片描述

注意,输入输出都是以主机和CPU为出发点的。

  1. 数据从外设送入到BR。
  2. 设备通过设备请求信号通知DMA控制逻辑,数据准备完成。
  3. DMA控制逻辑通过总线向CPU提出总线和主存的占用请求(HRQ)。
  4. CPU在允许的情况下,给出应答HLDA,此时CPU会放弃对总线的控制权和主存的使用权,将其交给DMA控制逻辑。
  5. AR给出主存地址。
  6. DMA控制器通知设备,给设备一个应答信号BACK,开始进行数据传输。
  7. 数据和控制信号由BR和DMA控制逻辑发出,DMA发出对内存的写控制指令,BR通过数据线将数据送到数据总线上传给内存。每传送一个数据,AR加1,WC加1,用WC判断是否传输完成。如果未完成,下一个数据进入BR,再次申请传输。如过传输完成,WC的值发生溢出,使中断机构的中断请求触发器置1,参加中断请求排队。

输出
在这里插入图片描述

  1. 数据从BR送入到外设,将BR排空。
  2. 设备通过设备请求信号通知DMA控制逻辑,可以接收下一个数据。
  3. DMA控制逻辑通过总线向CPU提出总线和主存的占用请求(HRQ)。
  4. CPU在允许的情况下,给出应答HLDA,此时CPU会放弃对总线的控制权和主存的使用权,将其交给DMA控制逻辑。
  5. AR给出主存地址。
  6. DMA控制器通知设备,给设备一个应答信号BACK,已经开始新的传输。
  7. 数据和控制信号由BR和DMA控制逻辑发出,DMA发出对内存的读控制指令,主存将相应的内存单元的内容通过数据总线和数据线送达BR中,BR再将数据送给外设。每传送一个数据(字),AR加1,WC加1,用WC判断是否传输完成。如果未完成,循环刚刚过程。如过传输完成,WC的值发生溢出,使中断机构的中断请求触发器置1,参加中断请求排队。

感觉书上更详细一点。
在这里插入图片描述

3.1.4.后处理

在这里插入图片描述

3.2.接口与系统连接方式(详细看总线判优)

一台计算机上可以有多个DMA接口,多个DMA接口都要连在总线。

3.2.1.具有公共请求线的DMA请求

在这里插入图片描述

3.2.2.独立的DMA请求

在这里插入图片描述

3.3.DMA与程序中断方式比较

在这里插入图片描述

4.DMA的接口类型

4.1.选择型

在物理上,一个接口连接多个设备,但是在数据准备和数据传送的整个过程中,在逻辑上一个接口只能连接一个设备。(设备对DMA是独占的)
在这里插入图片描述

4.2.多路型

**在在物理上,一个接口连接多个设备,在逻辑上,允许连接的多个设备同时工作。在真正的进行数据传送时也只能有一个设备与主存进行数据传输,但是在数据准备阶段,可以有多个设备同时进行数据准备。
在这里插入图片描述
通道是一种小型的DMA处理机
,一个通道下面包含了若干个子通道,每一个子通道都有主存地址寄存器,设备地址寄存器,字数计数器…**这些子通道可以控制多个设备,设备进行数据传输时,CPU执行到了输入输出指令,要控制某个设备进行输入输出,就控制相应的子通道的寄存器进行设置,设置完后继续执行自己的程序,碰到了下一个输入输出指令,如果两个设备使用的是不同的子通道,则会对另一根子通道的寄存器再次设置。两个外部设备在之后的时间里并行的进行数据准备。外设准备好后通过子通道对通道提出数据传输请求,此时,不同设备的数据传输就是串行执行。
在这里插入图片描述

4.3.多路型DMA接口工作原理

在这里插入图片描述
不好理解建议看看体系结构教材中有关通道处理机的内容。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值