《计算机组成原理》唐朔飞 第5章 输入输出系统 - 学习笔记

写在前面的话:此系列文章为笔者学习计算机组成原理时的个人笔记,分享出来与大家学习交流。使用教材为唐朔飞第3版,笔记目录大体与教材相同。


网课

计算机组成原理(哈工大刘宏伟)135讲(全)高清_哔哩哔哩_bilibili


笔记

《计算机组成原理》唐朔飞 第5章 输入输出系统 - 学习笔记_友人帐_的博客-CSDN博客

《计算机组成原理》唐朔飞 第7章 指令系统 - 学习笔记_友人帐_的博客-CSDN博客

《计算机组成原理》唐朔飞 第8章 CPU的结构和功能 - 学习笔记_友人帐_的博客-CSDN博客

《计算机组成原理》唐朔飞 第9章 控制单元的功能 - 学习笔记_友人帐_的博客-CSDN博客

《计算机组成原理》唐朔飞 第10章 控制单元的设计 - 学习笔记_友人帐_的博客-CSDN博客


课后习题答案

计算机组成原理(第三版)唐朔飞-课后习题(完整版)_计算机组成原理唐朔飞第三版答案_蓝净云的博客-CSDN博客


哈尔滨工业大学计组实验

计算机组成原理实验一 运算器 预习报告_基本运算器实验_旅僧的博客-CSDN博客

计算机组成原理实验二 存储系统 预习报告_旅僧的博客-CSDN博客

计算机组成原理实验三 系统总线和具有基本输入输出功能的总线接口 预习报告_旅僧的博客-CSDN博客

计算机组成原理实验四 微程序控制器 实验报告_旅僧的博客-CSDN博客


第五章 输入输出系统

5.1 概述

5.1.1 发展概况

1. 早期阶段
  • 分散连接:I/O设备与主存交换信息必须经过CPU,每个I/O设备都必须配有一套独立的逻辑电路与CPU相连。
  • 串行工作:当I/O设备与主机交换信息时,CPU需要停止运算。
2. 接口模块和DMA阶段
  • 接口模块:接口中设有数据通路和控制通路。

    • 数据通路:数据经过接口既起到缓冲作用,又可完成串-并变换。
    • 控制通路:用以传送CPU向I/O设备发出的各种控制指令,或使CPU接受来自I/O设备的反馈信号。
  • 总线连接:计算机系统采用总线结构。

  • 并行工作:

    • 中断方式:主机与I/O设备交换信息时,需要中断现行程序(还不能绝对并行)。
    • DMA方式:直接存储器存取技术,I/O设备与主存之间有一条直接数据通路,可以直接交换信息,使得CPU在I/O设备与主存交换信息时能继续工作。
3. 具有通道结构的阶段

​ 通道是用来负责管理I/O设备以及实现主存与I/O设备之间交换信息的部件,是从属于CPU的一个专用处理器。有专用的通道指令,能独立执行用通道指令所编写的输入输出程序,可实现外设的统一管理和DMA操作,大大提高CPU效率,可以管理更多的硬件,用在大中型计算机系统中。

​ 当通道执行完通道程序后,就发出中断请求表示I/O结束,CPU响应中断请求,执行相应的中断处理程序实现与通道之间的数据传输。依赖通道管理的I/O设备在与主机交换信息时,CPU不直接参与管理。

4. 具有I/O处理机的阶段(了解)

​ 基本独立于主机工作,可以完成I/O控制、码制变换、格式处理、数据块检错纠错等操作。

5.1.2 输入输出系统组成

由I/O软件和I/O硬件两部分组成。

1. I/O软件

主要任务为:将用户编制的程序或数据输入主机;将运算结果输出给用户;实现输入输出系统与主机工作的协调。

(1)I/O指令

是机器指令的一类,可以和其他机器指令的字长相等。

一般格式:

在这里插入图片描述

  • 操作码:区别I/O指令与其他指令的代码。
  • 命令码:I/O设备的具体操作。
  • 设备码:多台I/O设备的选择码,相当于设备的地址。

(2)通道指令

是通道自身的专用指令,位数一般较长。

作用:

  • 指明参与读写的数据组在主存中的首地址。
  • 指明需要传送的字节数或者数据的末地址。
  • 指明所选设备的设备码。
  • 指明完成某种操作的命令码。

通道指令和I/O指令的区别:

通道指令是通道自身的指令,用来执行I/O操作,例如读、写、磁盘找道。指令可以存放在主存的任何地方,由通道从主存中取出并执行;而I/O指令是CPU指令系统的一部分,是CPU用来控制输入输出操作的指令,由CPU译码后执行。

具有通道指令的计算机,一旦CPU执行了启动I/O设备的指令,就由通道来代替CPU对I/O设备的管理。

2. I/O硬件

在带有接口的I/O系统中,一般包括接口模块及I/O设备两大部分。

层次性的I/O系统:

1.一个主机可以连接多个通道

2.一个通道可以管理多个设备控制器

3.一个设备控制器又可以控制多台设备

在这里插入图片描述

5.1.3 I/O设备与主机的联系方式

1. I/O设备编址方式

将I/O设备码看作地址码。

(1)统一编址方式

与主存空间统一编址,将主存空间分出一部分地址给I/O端口进行编号。该方法是将I/O端口映射到某主存区域,故也称为“存储器映射方式”。无需设置专门I/O指令,只要用一般访存指令就可存取I/O端口。

(2)独立编址方式

不和主存单元一起编号,而是单独编号,使成为一个独立的I/O地址空间。因需专门I/O指令,故也称为“特殊I/O指令方式”。

2. 设备寻址

由I/O指令的设备码字段指出设备号,通过接口电路中的设备选择电路来选中设备。

3. 传送方式

(1)并行传送

n n n位信息同时在CPU与I/O设备间传输。

  • 优点:速度快
  • 缺点:要求数据线多
  • 适合近距离数据传输

(2)串行传送

同一瞬间只传送一位信息,不同时刻连续逐位传送一串信息。

  • 优点:只需要一根数据线和地线
  • 缺点:速度慢
  • 适合远距离数据通信
4. 联络方式

I/O设备与主机之间必须互相了解彼此所处状态,是否可以传送、传送是否已经结束等。

(1)立即响应

对一些速度很慢的I/O设备(指示灯的亮灭、开关的通断),与CPU发生联系时,通常都已使其处于某种等待状态。只要CPU指令一到,便立即响应。

(2)异步工作采用应答信号联络

I/O设备与主机工作速度不匹配时使用。是一应一答的联络方式。

在交换信息前,I/O设备与CPU各自完成自身任务,一旦出现联络信号,彼此才准备交换信息。

在这里插入图片描述

(串行传送中,I/O设备与CPU双方设定一组特殊标记,用9.09ms时的低电平表示"起始",用2x9.09ms的高电平表示"终止")

(3)同步工作采用同步时标联络

要求I/O设备与CPU的工作速度完全同步,互相之间需要配有专用电路,用以产生同步时标来控制同步工作。

5. I/O设备与主机的连接方式

(1)辐射式

每台设备都有一套控制线路和一组信号线,不便于增删设备。

在这里插入图片描述

(2)总线式

通过一组总线(包括地址线、数据线、控制线等),将所有的I/O设备与主机连接。

5.1.4 I/O设备与主机信息传送的控制方式

1. 程序查询方式

由CPU通过程序不断查询I/O设备是否已经做好准备,从而控制I/O设备与主机交换信息。(要求I/O接口内设置一个能反映是否准备就绪的状态标记,用于CPU的检测)

在这里插入图片描述

只要一启动I/O设备,CPU便不断查询I/O设备的准备情况,从而终止了原程序的执行。CPU在反复查询过程中,犹如就地“踏步”。另一方面,I/О设备准备就绪后,CPU要一个字一个字地从I/O设备取出,经CPU送至主存,此刻CPU也不能执行原程序。

这种方式使CPU和I/О设备处于串行工作状态,CPU的工作效率不高。

2. 程序中断方式

CPU在启动I/O设备后,不查询设备是否已准备就绪,继续执行自身程序,只是当I/O设备准备就绪并向CPU发出中断请求后才予以响应。

在这里插入图片描述

CPU启动I/O设备后仍继续执行原程序,在第K条指令执行结束后,CPU响应了I/O设备的请求,中断了现行程序,转至中断服务程序,待处理完后又返回到原程序断点处,继续从第K+1条指令往下执行。

实现了CPU和I/O并行工作。

在这里插入图片描述

3. DMA(直接存储器存取)方式

在DMA方式中,主存与I/O设备之间有一条数据通路。

若出现DMA和CPU同时访问主存,CPU总是将总线占有权让给DMA,通常把DMA的这种占有称为窃取或挪用。窃取的时间一般为一个存取周期,故又把DMA占用的存取周期窃取周期或挪用周期。而且,在DMA窃取存取周期时,CPU尚能继续做内部操作(如乘法运算)。

优点:

  • 不需要保存、恢复现场
  • 不需要执行中断服务程序
  • 不需要用软件来完成数据输入、输出操作的控制

三种方式的比较

在这里插入图片描述

5.2 I/O设备

外部设备大致分三类

  1. 人机交互设备

    键盘、鼠标、打印机、显示器

  2. 计算机信息存储设备

    磁盘、光盘、磁带

  3. 机-机通信设备

    调制解调器等

5.3 接口

5.3.1 概述

接口可以看作两个系统或两个部件之间的交接部分,它既可以是两种硬设备之间的连接电路,也可以是两个软件之间的共同逻辑边界。I/O接口通常是指主机与I/O设备之间设置的一个硬件电路及其相应的软件控制。不同的I/О设备都有其相应的设备控制器,而它们往往都是通过I/O接口与主机取得联系的。

  • 实现设备的选择
  • 实现数据缓冲达到速度匹配
  • 实现数据串-并格式转换
  • 实现电平转换
  • 传送控制命令
  • 反映设备的状态(“忙” 、“就绪” 、“中断请求”)

5.3.2 接口的功能和组成

1. 总线连接方式的I/O接口电路

每一台I/O设备都是通过接口挂载到系统总线上的。I/O总线包括数据线、设备选择线、命令线、状态线。

在这里插入图片描述

  • 数据线:是I/О设备与主机之间数据代码的传送线,其根数一般等于存储字长的位数或字符的位数,通常是双向的。若采用单向数据总线,则必须用两组才能实现数据的输入和输出功能。
  • 设备选择线:用来传送设备码,它的根数取决于I/O指令中设备码的位数。如果把设备码看作地址号,那么设备选择线又可称为地址线。设备选择线可以有一组,也可以有两组,其中一组用于主机向I/O设备发送设备码,另一组用于I/O设备向主机回送设备码。也可采用一组双向总线代替两组单向总线。
  • 命令线:用以传输CPU向设备发出的各种命令信号,如启动、清除﹑屏蔽、读、写等。它是一组单向总线,其根数与命令信号多少有关。
  • 状态线:将IO设备的状态向主机报告,例如,设备是否准备就绪,是否向CPU发出中断请求等。它也是一组单向总线。
2. 接口的功能和组成
功能组成描述
选址功能设备选择电路该设备码将送至所有设备的接口,当设备选择线上的设备码与本设备码相符时,应发出设备选中信号SEL,这种功能可通过接口内的设备选择电路来实现。
传送命令的功能命令寄存器、命令译码器命令寄存器用来存放I/O指令中的命令码,它受设备选中信号控制。命令线和所有接口电路的命令寄存器相连,只有被选中设备的SEL信号有效,命令寄存器才可接受命令线上的命令码。
传送数据的功能数据缓冲寄存器接口中通常设有数据缓冲寄存器DBR,用来暂存I/O设备与主机准备交换的信息,与I/O总线中的数据线相连。
反映设备状态的功能设备状态标记所有的状态标志触发器都与I/O总线中的状态线相连。用完成触发器D和工作触发器B来标志设备所处的状态(暂停、准备就绪、正处于准备);中断请求触发器INTR,当其为“1”时,表示该I/O设备向CPU发出中断请求;屏蔽触发器MASK,它与中断请求触发器配合使用,完成设备的屏蔽功能。

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

5.3.3 接口类型

  • 按数据传送方式分类
    • 并行接口
    • 串行接口
  • 按功能选择的灵活性分类
    • 可编程接口
    • 不可编程接口
  • 按通用性分类
    • 通用接口
    • 专用接口
  • 按数据传送的控制方式分类
    • 中断接口
    • DMA接口

5.4 程序查询方式

5.4.1 程序查询流程

程序查询方式的核心问题在于每时每刻需不断查询I/О设备是否准备就绪。

对于单个I/O设备查询:

在这里插入图片描述

对于多个I/O设备查询:

CPU需按各个I/O设备在系统中的优先级别进行逐级查询。

在这里插入图片描述

对于每个设备而言,程序查询方式的整体流程如下:

程序查询方式的程序流程:

在这里插入图片描述

①由将CPU寄存器原内容保护起来。

②先设置I/О设备与主机交换数据的计数值(交换多少数据)。

③设置欲传送数据在主存缓冲区的首地址。

④CPU启动I/O设备。

⑤将I/O接口中的设备状态标志取至CPU并测试I/O设备是否准备就绪。如果未准备就绪,则等待,直到准备就绪为止。当准备就绪时,接着可实现传送。对输入而言,准备就绪意味着接口电路中的数据缓冲寄存器已装满欲传送的数据,称为输入缓冲满,CPU即可取走数据;对输出而言,准备就绪意味着接口电路中的数据已被设备取走,故称为输出缓冲空,这样CPU可再次将数据送到接口,设备可再次从接口接收数据。

⑥CPU执行I/О指令,从I/O接口的数据缓冲寄存器中读出或写入一个数据,同时将接口中的状态标志复位。

⑦修改主存地址。

⑧修改计数值,若原设置计数值为原码,则依次减1;若原设置计数值为负数的补码,则依次加1(两种不同的计数方式)。

⑨判断计数值。若计数值不为0,表示一批数据尚未传送完,重新启动外设继续传送;若计数值为0,则表示一批数据已传送完毕。

⑩结束I/O传送,恢复寄存器,继续执行现行程序。

5.4.2 程序查询方式的接口电路

在这里插入图片描述

工作流程:

①当CPU通过I/О指令启动输入设备时,指令的设备码字段通过地址线送至设备选择电路。

②若该接口的设备码与地址线上的代码吻合,其输出SEL有效。

③I/O指令的启动命令经过与非门将工作触发器B置1,将完成触发器D置0。

④由B触发器启动设备工作。

⑤输入设备将数据送至数据缓冲寄存器。

⑥由设备发设备工作结束信号,将D置1,B置0,表示外设准备就绪。

⑦D触发器以“准备就绪”状态通知CPU,表示“数据缓冲满”。

⑧CPU执行输入指令,将数据缓冲寄存器中的数据送至CPU的通用寄存器,再存入主存相关单元。

5.5 程序中断方式

5.5.1 中断的概念

计算机在执行程序的过程中,当出现异常情况或特殊请求时,计算机停止现行程序的运行,转向对这些异常情况或特殊请求的处理,处理结束后再返回到现行程序的间断处,继续执行原程序。

5.5.2 I/O中断的产生

在I/O设备与主机交换信息时,其工作速度较低,与CPU无法匹配。因此,CPU启动设备后,往往需要等待一段时间才能实现主机与I/О设备之间的信息交换。

如果在设备准备的同时,CPU不做无谓的等待,而继续执行现行程序,只有当I/O设备准备就绪向CPU提出请求后,再暂时中断CPU现行程序转入I/O服务程序,这便产生了I/О中断。

5.5.3 程序中断方式的接口电路

1. 中断请求触发器INTR和中断屏蔽触发器MASK

CPU总是在每条指令执行阶段的最后时刻,查询所有的设备是否有中断请求。

把能向CPU提出中断请求的各种因素(包括I/O设备、突发性事件等)统称为中断源

当多个中断源向CPU提出中断请求时, CPU必须坚持一个原则,即在任何瞬间只能接受一个中断源的请求。所以,当多个中断源同时提出请求时,CPU必须对各请求源的请求进行排队,只接受级别最高的中断源的请求,不允许级别低的中断源中断正在运行的中断服务程序。

每台外部设备都必须配置一个中断请求触发器INTR,

  • 当其为1时,表示该设备向CPU提出中断请求。
  • 设备欲提出中断请求时,其设备本身必须准备就绪,即接口内的完成触发器D的状态必须为“1”。

在I/О接口中需设置一个屏蔽触发器MASK,

  • 当其为“1”时,表示被屏蔽,即封锁其中断源的请求。
  • 中断请求触发器和中断屏蔽触发器在I/O接口中是成对出现的。

在这里插入图片描述

可见,仅当设备准备就绪(D=1),且该设备未被屏蔽(MASK=0)时, CPU的中断查询信号可将中断请求触发器置“1”(INTR=1)。

2. 排队器

就I/О中断而言,速度越高的I/O设备,优先级越高,因为若CPU不及时响应高速I/O的请求,其信息可能会立即丢失。

设备优先权的处理可以采用硬件方法,也可采用软件方法。硬件排队器的实现方法很多,既可在CPU内部设置一个统一的排队器,对所有中断源进行排队,也可在接口电路内分别设置各个设备的排队器。

链式排队器:

是设在各个接口电路中的排队器电路。
在这里插入图片描述

每个接口有一个反相器和一个与非门。该电路中级别最高的中断源是1号,最低是4号。

一旦某个中断源提出中断请求时,就迫使比其优先级低的中断源 I N T P i ′ INTP_i' INTPi变为低电平,封锁其中断请求。不论是哪个中断源(一个或多个)提出中断请求,排队器输出端 I N T P i INTP_i INTPi,只有一个高电平。

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

CPU一旦响应了I/O中断,就要暂停现行程序,转去执行该设备的中断服务程序。不同的设备有不同的中断服务程序,每个服务程序都有一个入口地址,CPU必须找到这个入口地址。入口地址的寻找也可用硬件或软件的方法来完成。

硬件向量法:

由硬件电路产生向量地址是,通过向量地址来寻找设备的中断服务程序入口地址,

中断向量地址形成部件的输入是来自排队器的输出 I N T P i INTP_i INTPi,它的输出是中断向量(二进制代码表示),其位数与计算机可以处理中断源的个数有关,即一个中断源对应一个向量地址。可见,该部件实质上是一个编码器。在I/O接口中的编码器又称为设备编码器。

如下图所示:根据排队器输出的01串,中断向量地址形成部件会产生一个中断向量,表示内存中的某一个地址,该地址存放对应服务程序的jmp指令。到该地址找到jmp指令就可以跳转到服务程序。

在这里插入图片描述

8086/8088的中断向量表

在这里插入图片描述

4. 程序中断方式接口电路的基本组成

在这里插入图片描述

5.5.4 I/O中断处理程序

1. CPU响应中断的条件和时间

条件:

​ CPU内部有一个允许中断触发器EINT,取值为1时可以响应中断请求。

​ 可以用开中断指令将EINT置1;关中断指令将EINT置0,或硬件自动复位

时间:

​ CPU在每条指令执行阶段结束前向接口发中断查询信号,以获取I/O的中断请求。

2. I/O中断处理过程

以外部设备向主机输入为例:

①CPU在运行程序中执行到输入命令,就会将对应设备的设备号通过地址线送入设备选择电路,对应设备的SEL信号置为有效。由CPU发启动I/О设备命令,在接口(SEL有效的)中进行译码,将接口中的B置1,D置O(设备处于准备阶段)。

②接口启动输入设备开始工作。

③输入设备将数据送入接口中的数据缓冲寄存器DBR。

④输入设备向接口发出“设备工作结束”信号,将D置1,B置0,标志设备准备就绪。

⑤当设备准备就绪(D=1),且本设备未被屏蔽(MASK=0)时,在指令执行阶段的结束时刻,由CPU发出中断查询信号。

⑥设备中断请求触发器INTR被置1,标志设备向CPU提出中断请求。与此同时, INTR送至排队器,进行中断判优。

⑦若CPU允许中断(EINT=1),设备又被排队选中,即进入中断响应阶段,由中断响应信号INTA将排队器输出送至编码器形成向量地址。

⑧向量地址通过数据线送至PC,作为下一条指令的地址。

⑨由于向量地址中存放的是一条无条件转移指令,故这条指令执行结束后,即无条件转至该设备的服务程序入口地址,开始执行中断服务程序,进入中断服务阶段,通过输入指令将数据缓冲寄存器的输入数据送至CPU的通用寄存器,再存入主存相关单元。

⑩中断服务程序的最后一条指令是中断返回指令,当其执行结束时,即中断返回至原程序的断点处。至此,一个完整的程序中断处理过程即告结束。

在这里插入图片描述

5.5.5 中断服务程序的流程

分为四部分:保护现场、中断服务、恢复现场和中断返回。

1. 保护现场
  • 保存程序的断点
    • 由中断隐指令完成(中断隐指令并不是一条指令,需要完成一系列操作,例如图5.43中的中断周期)
  • 保存通用寄存器和状态寄存器的内容
    • 使用进栈指令PUSH
2. 中断服务

​ 是中断服务程序的主体部分,对于不同的中断请求源具有不同的中断服务操作内容。

3. 恢复现场

​ 结尾部分。在退出服务程序前将运行状态恢复到中断时。

  • 保存到栈里的
    • POP出栈指令
  • 保存在寄存器里的
    • 取数指令取出
4. 中断返回

​ 中断服务程序的最后一条指令。使其返回到原程序的断点处继续执行。

计算机在处理中断的过程中,有可能出现新的中断请求,

**多重中断:**允许级别更高的中断源中断现行的中断服务程序,这种现象称为中断嵌套。

**单重中断:**不允许中断现行的中断服务程序。

在这里插入图片描述

CPU一旦响应了某中断源的中断请求后,便由硬件线路自动关中断,即中断允许触发器EINT被置“O”,以确保该中断服务程序的顺利执行。因此如果不用“开中断”指令将EINT置“1”,则意味着CPU不能再响应其他任何一个中断源的中断请求。

单重中断与多重中断最本质的区别在于“开中断”的设置时间不同。

主程序和服务程序抢占CPU的示意图

在这里插入图片描述

5.6 DMA方式

5.6.1 DMA方式的特点

DMA方式与程序中断方式的数据通路示意图:

在这里插入图片描述

(ACC身为一个CPU中的一个寄存器,作为传输数据的媒介)

DMA方式中,主存和DMA接口之间有一条数据通路,主存和设备交换信息时,不通过CPU,也不需要CPU暂停现行程序为设备服务,省去了保护现场和恢复现场,提高了工作速度。

主存冲突

在DMA方式中,由于DMA接口与CPU共享主存,这就有可能出现两者争用主存的冲突。为了有效地分时使用主存,通常DMA与主存交换数据时采用如下三种方法。

(1)停止CPU访问主存

当外设要求传送一批数据时,由DMA接口向CPU发一个停止信号,要求CPU放弃地址线数据线和有关控制线的使用权。DMA接口获得总线控制权后,开始进行数据传送,在数据传送结束后,DMA接口通知CPU可以使用主存,并把总线控制权交回给CPU。

  • 优点:控制简单,适用于数据传输率很高的I/О设备实现成组数据的传送。

  • 缺点:DMA接口在访问主存时,CPU基本上处于不工作状态或保持原状态。CPU对主存的利用率没得到充分发挥。

  • 弥补措施:在DMA接口中,一般设有一个小容量存储器,使I/О设备首先与小容量存储器交换数据,然后由小容量存储器与主存交换数据,这便可减少DMA传送数据时占用总线的时间,即可减少CPU的暂停工作时间。

在这里插入图片描述

(2)周期挪用/窃取

周期:访存周期

每当I/O设备发出DMA请求时,I/O设备便挪用或窃取总线占用权一个或几个主存周期;而DMA不请求时,CPU仍继续访问主存。

I/O设备请求DMA传送时的三种情况:

  1. CPU此时不需要访问主存

    例如正在执行乘法指令。此时I/O设备与CPU不发生冲突。

  2. CPU正在访问主存

​ 必须等待存取周期结束,CPU才能将总线占有权让出。

  1. CPU与DMA同时请求访问主存

    I/O访存优先于CPU访存,将总线控制权让给DMA(减少丢失数据的风险)

  • 优点:既能及时响应I/O请求,又能较好地发挥CPU和主存的效率。这种方式下,在下一数据的准备阶段,主存周期被CPU充分利用。因此适合于I/O设备的读写周期大于主存周期的情况。
  • 缺点:每次DMA访存都要申请总线控制权、占用总线进行传送、释放总线,因此,会增加传输开销。

在这里插入图片描述

(3)DMA与CPU交替访问

这种方法适合于CPU的工作周期比主存存取周期长的情况。

例如,CPU的工作周期为1.2μs,主存的存取周期小于0.6μs,那么可将一个CPU周期分为 C 1 C_1 C1 C 2 C_2 C2两个分周期,其中 C 1 C_1 C1专供DMA访存, C 2 C_2 C2专供CPU访存。

这种方式不需要总线使用权的申请、建立和归还过程,总线使用权是通过 C 1 C_1 C1 C 2 C_2 C2分别控制的。CPU与DMA接口各自有独立的访存地址寄存器,数据寄存器和读/写信号。

不需要申请建立和归还总线的使用权,硬件复杂。

在这里插入图片描述

5.6.2 DMA接口的功能和组成

1. 功能

使用DMA方式传送数据时,数据的传输过程完全由DMA接口电路控制。

  • 向CPU申请DMA传送。
  • 在CPU允许DMA工作时,处理总线控制权的转交。
  • 在DMA期间管理系统总线,控制数据传送。
  • 确定数据传送的起始地址和数据长度,修正数据传送过程中的数据地址和数据长度。
  • 在数据块传送结束时,给出DMA操作完成的信号。
2. DMA接口基本组成

在这里插入图片描述

(1)主存地址寄存器AR

​ 存放主存中需要交换数据的地址。

​ 数据传送前存放首地址;传送过程中每交换一次数据,将地址寄存器内容加1,直到一批数据传送完毕为止。

(2)字计数器WC
记录传送数据的总字数。

​ 通常以交换字数的补码值预置。传送过程中每传送一个字,字计数器加1,直到计数器为0,表示该批数据传送完毕(若交换字数以原码值预置,则每传送一个字,字计数器减1,直到计数器为0时,表示该批数据传送结束)。

(3)数据缓冲寄存器BR
暂存每次传送的数据。

(4)设备地址寄存器DAR

​ 存放I/O设备的设备码或者表示设备信息存储区的寻址信息。

(5)DMA控制逻辑

​ 负责管理DMA的传送过程,由控制电路、时序电路及命令状态控制寄存器等组成。

​ 每当设备准备好一个数据字(或一个字传送结束),就向DMA接口提出申请DREQ,DMA控制逻辑便向CPU请求DMA服务,发出总线使用权的请求信号HRQ。待收到CPU发出的响应信号HLDA后,DMA控制逻辑便开始负责管理DMA传送的全过程,包括对主存地址寄存器和字计数器的修改、识别总线地址、指定传送类型(输入或输出)以及通知设备已经被授予一个DMA周期(DACK)等。

(6)中断机构

​ 当字计数器溢出(全0)时,表示一批数据交换完毕,由“溢出信号”通过中断机构向CPU提出中断请求,请求CPU作DMA操作的后处理。

注意:这里的中断与I/О中断的技术相同,但中断的目的不同,前面是为了数据的输入或输出,而这里是为了报告一批数据传送结束。它们是I/O系统中不同的中断事件。

5.6.3 DMA的工作过程

1. DMA传送过程

在这里插入图片描述

(1)预处理

在DMA接口开始工作之前,CPU执行几条输入输出指令,给它预置如下信息:

  • 给DMA控制逻辑指明数据传送方向是输入(写主存)还是输出(读主存)。
  • 向DMA设备地址寄存器DAR送入设备号,并启动设备。
  • 向DMA主存地址寄存器AR送入交换数据的主存起始地址。
  • 对字计数器WC赋予交换数据的个数。

当I/O设备准备好发送的数据(输入)或上次接收的数据已经处理完毕(输出)时,它便通过DMA接口向CPU提出占用总线的申请。若有多个DMA同时申请,则按轻重缓急由硬件排队判优逻辑决定优先等。待I/О设备得到主存总线的控制权后,数据的传送便由该DMA接口进行管理。

(2)数据传送

在这里插入图片描述

以数据输入为例:

①当设备准备好一个字时,发出选通信号,将该字读到DMA的数据缓冲寄存器(BR)中,表示数据缓冲寄存器"满”(如果I/О设备是面向字符的,则一次读入一个字节,组装成一个字)。

②与此同时设备向DMA接口发请求(DREQ)。

③DMA接口向CPU申请总线控制权(HRQ)。

④CPU发回HLDA信号,表示允许将总线控制权交给DMA接口。

⑤将DMA主存地址寄存器AR中的主存地址送地址总线,并命令存储器写。

⑥通知设备已被授予一个DMA周期(DACK),并为交换下一个字做准备。

⑦将DMA数据缓冲寄存器的内容送数据总线。

⑧主存将数据总线上的信息写至地址总线指定的存储单元中。

⑨修改主存地址和字计数值(+1)。

⑩判断数据块是否传送结束,若未结束,则继续传送;若已结束,(字计数器溢出),则向CPU申请程序中断,标志数据块传送结束。

以数据输出为例:

①当DMA数据缓冲寄存器已将输出数据送至I/O设备后,表示数据缓冲寄存器已“空”。

②设备向DMA接口发请求(DREQ)。

③DMA接口向CPU申请总线控制权(HRQ)。

④CPU发回HLDA信号,表示允许将总线控制权交给DMA接口使用。

⑤将DMA主存地址寄存器中的主存地址送地址总线,并命令存储器读。

⑥通知设备已被授予一个DMA周期(DACK),并为交换下一个字做准备。

⑦主存将相应地址单元的内容通过数据总线读入DMA的数据缓冲寄存器中。

⑧将DMA数据缓冲寄存器的内容送到输出设备,若为字符设备,则需将其拆成字符输出。

⑨修改主存地址和字计数值。

⑩判断数据块是否已传送完毕,若未完毕,继续传送;若已传送完毕,则向CPU申请程序中断。

(3)后处理

当DMA的中断请求得到响应后,CPU停止原程序的执行,转去执行中断服务程序,做一些DMA的结束工作。

包括校验送入主存的数据是否正确;决定是否继续用DMA传送其他数据块;若继续传送,则又要对DMA接口进行初始化,若不需要传送,则停止外设;测试在传送过程中是否发生错误,若出错,则转错误诊断及处理错误程序。

2. DMA接口与系统的连接方式

(1)具有公共请求线的DMA请求

若干个DMA接口通过一条公用的DMA请求线向CPU申请总线控制权。CPU发出响应信号,用链式查询方式通过DMA接口,首先选中的设备获得总线控制权。

在这里插入图片描述

(2)独立的DMA请求

每一个DMA接口各有一对独立的DMA请求线和DMA响应线,它由CPU的优先级判别机构裁决首先响应哪个请求,并在响应线上发出响应信号,被获得响应信号的DMA接口便可控制总线与主存传送数据。

在这里插入图片描述

3. DMA与程序中断的对比
中断方式DMA方式
数据传送靠程序传送靠硬件传送
CPU响应时间指令结束时响应任一存取周期结束时响应
处理异常事件不能
保护现场需要不需要
中断请求的目的传送数据后处理
优先级

5.6.4 DMA接口的类型

1. 选择型

物理上可连接多个设备,逻辑上只允许连接一个设备。

  • 即在某一段时间内,DMA接口只能为一个设备服务,关键是在预处理时将所选设备的设备号送人设备地址寄存器。

  • 特别适用于数据传输率很高的设备。

在这里插入图片描述

2. 多路型

不仅在物理上可以连接多个设备,而且在逻辑上也允许多个设备同时工作,各个设备采用字节交叉的方式通过DMA接口进行数据传送。

(传输时仍是只能一个设备进行传输数据,但是准备阶段可以多设备并行)

  • 每个与它连接的设备都设置了一套寄存器,分别存放各自的传送参数。
  • 特别适合于同时为多个数据传输率不十分高的设备服务。

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

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

友人帐_

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

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

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

打赏作者

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

抵扣说明:

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

余额充值