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

news2024/11/20 20:28:17

写在前面的话:此系列文章为笔者学习计算机组成原理时的个人笔记,分享出来与大家学习交流。使用教材为唐朔飞第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接口进行数据传送。

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

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

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/591081.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

chatgpt赋能python:Python中用什么表示空值?

Python中用什么表示空值? 在Python编程中,我们经常会遇到处理空值的场景。空值通常表示缺失的或未定义的值,这在数据处理和分析中尤其常见。那么,在Python中,究竟用什么来表示空值呢? None 在Python中&a…

6G显存玩转130亿参数大模型,仅需13行命令,RTX2060用户发来贺电

羊驼家族的Alpaca和Vicuna也都能运行,显存最低只需要6G,简直是低VRAM用户的福音有木有。 GitHub上的搭建教程火了之后,网友们纷纷跑来问苹果M2是不是也能跑。 这通操作的大致原理是利用最新版CUDA,可以将Transformer中任意数量的…

什么是先进存力?曙光存储:内铸数字底座,外成实践底气

5月26日,由DOIT联合中国电子学会共同举办的2023数据基础设施技术峰会在苏州举办。中科曙光存储产品事业部副总经理张新凤受邀参会,并在主论坛发表主题演讲,与数百位业内专业嘉宾伙伴共探存力发展未来。 什么样的存力能打造数字经济底座&#…

【笔记】【Javascript】javascript实现继承

前言 之前写过关于面向对象编程的文章,通过阅读别人的博客了解了一下Javascript实现继承的方法,并且使用图画的形式帮助了解,图是自己做的,若有偏差请读者帮忙指出,谢谢。笔记中有些个人理解后整理的笔记,…

基于STM32的ADC采样及各式滤波实现(HAL库,含VOFA+教程)

前言:本文为手把手教学ADC采样及各式滤波算法的教程,本教程的MCU采用STM32F103ZET6。以HAL库的ADC采样函数为基础进行教学,通过各式常见滤波的实验结果进行分析对比,搭配VOFA工具直观的展示滤波效果。ADC与滤波算法都是嵌入式较为…

MySQL进阶- Linux安装 和 索引

目录 Linux安装索引索引的概述索引的结构索引结构的介绍BtreeBtreeHash 索引的分类索引的语法(创建,查看,删除等)SQL性能分析SQL的执行频率(查看SQL的执行频率)慢查询日志show profilesexplain执行计划 索引…

video标签学习 xgplayer视频播放器分段播放mp4

文章目录 学习链接目标video标签自带视频和制作的视频区别video标签的src属性本地视频文件前端代码播放效果 服务器视频文件示例1后端代码前端代码播放效果 示例2后端代码前端代码播放效果 示例3后端配置前端代码播放效果 video对象video对象创建和获取video的属性video的方法v…

chatgpt赋能python:Python模块安装方法全解析

Python模块安装方法全解析 Python是一种功能强大的编程语言,拥有大量的开源库,这些库是在各种应用程序中使用的重要组件,它们能加速开发过程。不管你是初学者、中级者还是高级者,总会遇到需要安装第三方库的情况。但是安装库是一…

《Java并发编程实战》课程笔记(四)

互斥锁 原子性问题到底该如何解决呢? “同一时刻只有一个线程执行”这个条件非常重要,我们称之为互斥。如果我们能够保证对共享变量的修改是互斥的,那么,无论是单核 CPU 还是多核 CPU,就都能保证原子性了。 锁模型 …

Python连接达梦数据库

python如果想连接达梦数据库,必须要安装dmPython。 简介:dmPython 是 DM 提供的依据 Python DB API version 2.0 中 API 使用规定而开发的数据库访问接口。dmPython 实现这些 API,使 Python 应用程序能够对 DM 数据库进行访问。 dmPython 通…

数据库服务器

数据库服务器,联系Web服务器与DBMS的中间件是负责处理所有的应用程序服务器,包括在web服务器和后台的应用程序或数据库之间的事务处理和数据访问。 基本信息 中文名 数据库服务器 外文名 database server 功能 数据库服务器建立在数据库系统基础上&a…

系统漏洞利用与提权

任务二:系统漏洞利用与提权 任务环境说明: 服务器场景:PYsystem0033 服务器场景操作系统:Ubuntu 服务器场景用户名:未知 密码:未知 1.使用nmap扫描靶机系统,将靶机开放的端口号按从小到大的顺序作为F…

解决Vmware上的kali找不到virtualbox上的靶机的问题

解决kali找不到靶场ip问题的完整方法 1.配置靶机2.配置kali的虚拟网络3.配置kali中的eth0网络 1.配置靶机 靶机部署在Virtualbox上对其进行网络配置,选择连接方式为仅主机(Host-Only)网络。 2.配置kali的虚拟网络 在编辑中选择虚拟网络配…

chatgpt赋能python:Python中浮点数的表示方法

Python中浮点数的表示方法 在Python中,浮点数是一种数字类型,用于表示带有小数点的数值。但是,由于计算机在表示浮点数时存在精度限制,因此需要特别注意。本文将介绍Python中浮点数的表示方法及其可能导致的错误。 Python中浮点…

陕西发布!陕西省重点实验室申报条件类别、认定程序要求

本文整理了陕西省重点实验室申报条件,认定材料等相关内容,感兴趣的朋友快跟小编一起来看看吧! 一、总体思路 本次省重点实验室布局建设工作以填补我省优势学科领域下无省级及以上科学与工程研究类科技创新基地的空白为主,同时兼顾前沿、新兴、…

MySQL基础- 多表查询 和 事务

目录 多表查询多表关系多表查询概述多表查询的分类内连接外连接自连接联合查询union,union all子查询标量子查询列子查询行子查询表子查询 综合练习小结 事务事务简介事务的操作四大特性ACID并发事务问题事务的隔离级别小结 多表查询 之前的SQL语句里的DQL只能进行…

数字图像学笔记 —— 18. 图像抖动算法

文章目录 为什么需要图像抖动图像抖动算法实现的基本思路常见图像抖动算法实现Floyd-Steinberg 抖动算法Atkinson 抖动算法算法实现 为什么需要图像抖动 在数字图像中,为了表示数字图像的细节,像素的颜色深度信息最少也是8位,即 0 − 256 0…

Linux:centos:周期性计划任务管理《crontab》

crontab常用基础属性 -e 编辑计划任务 -l 查看计划任务 -r 删除计划任务 -u 指定用户的计划任务 首先创建一个名为test的用户名 crontab时间规定 格式:分钟 小时 日期 月份 星期 命令 分钟-- 0-59整数 小时 -- 0-23整数 日期 -- 1--31 整数 月份 -- 1-12 整数 星期…

C++ queue类成员介绍

目录 🤔queue模板介绍: 🤔queue特点: 🤔queue内存图解: 🤔 queue的成员函数 🔍queue构造函数: 🔍queue赋值函数: 🔍queue判断函…

黑马Redis视频教程实战篇(三)

目录 一、优惠券秒杀 1.1 全局唯一ID 1.2 Redis实现全局唯一ID 1.3 添加优惠卷 1.4 实现秒杀下单 1.5 库存超卖问题分析 1.6 代码实现乐观锁解决超卖问题 1.7 优惠券秒杀-一人一单 1.8 集群环境下的并发问题 二、分布式锁 2.1 基本原理和实现方式对比 2.2 Redis分布…