首页 最新 热门 推荐

  • 首页
  • 最新
  • 热门
  • 推荐

计算机组成原理学习笔记(5):I/O

  • 25-03-03 17:23
  • 2316
  • 5077
blog.csdn.net

文章目录

  • 课程笔记导览
  • 附录:英语解释
  • 第五章 I/O
    • 5.1 概述
      • 5.1.1 输入输出系统的发展概况
      • 5.1.2 输入输出系统的组成
      • 5.1.3 I/O设备与主机的联系方式
    • 5.2 I_O设备
      • 5.2.1 概述
      • 5.2.2 输入设备
      • 5.2.3 输出设备
      • 5.2.4 其它
      • 5.2.5 多媒体设备
    • 5.3 I_O接口
      • 5.3.1 概述
      • 5.3.2 接口的功能和组成
      • 5.3.3 接口类型
    • 5.4 程序查询方式
      • 5.4.1 程序流程
      • 5.4.2 程序接口电路
    • 5.5 程序中断方式
      • 5.5.1 中断的概念
      • 5.5.2 I/0中断的产生
      • 5.5.3 程序中断方式的接口电路
      • 5.5.4 I/O中断处理过程
      • 5.5.5 中断服务程序流程
    • 5.6 DMA方式
      • 5.6.1 DMA和程序中断两种方式的数据通路
      • 5.6.2 DMA与主存交换数据的三种方式
      • 5.6.3 DMA接口的功能和组成
        • DMA的接口功能
        • 接口组成
        • DMA的工作过程
        • DMA方式与程序中断方式的比较
      • 5.6.4 DMA接口类型

课程笔记导览

计算机组成原理学习笔记(1):概述
计算机组成原理学习笔记(2):发展
计算机组成原理学习笔记(3):总线
计算机组成原理学习笔记(4):存储器
计算机组成原理学习笔记(5):I/O
计算机组成原理学习笔记(6):数字
计算机组成原理学习笔记(7):指令系统
计算机组成原理学习笔记(8):CPU的结构和功能
计算机组成原理学习笔记(9):控制单元的功能
计算机组成原理学习笔记(10):控制单元的设计

附录:英语解释

CPU——Central Processing Unit,中央处理机(器)
PC——Program Counter,程序计数器,存放当前欲执行指令的地址,并可自动计数形成下一条指令地址的计数器
IR——Instruction Register,指令寄存器,存放当前正在执行的指令的寄存器
CU——Control Unit,控制单元(部件),控制器中产生微操作命令序列的部件,为控制器的核心部件
ALU——Arithmetic Logic Unit,算术逻辑运算单元,运算器中完成算术逻辑运算的逻辑部件
ACC——Accumulator,累加器,运算器中运算前存放操作数、运算后存放运算结果的寄存器
MQ——Multiplier-Quotient Register,乘商寄存器,乘法运算时存放乘数、除法时存放商的寄存器
X——此字母没有专指的缩写含义,可以用作任一部件名,在此表示操作数寄存器,即运算器中工作寄存器之一,用来存放操作数
MAR——Memory Address Register,存储器地址寄存器,内存中用来存放欲访问存储单元地址的寄存器
MDR——Memory Data Register,存储器数据缓冲寄存器,主存中用来存放从某单元读出、或写入某存储单元数据的寄存器
I/O——Input/Output equipment,输入/输出设备,为输入设备和输出设备的总称,用于计算机内部和外界信息的转换与传送
MIPS——Million Instruction Per Second,每秒执行百万条指令数,为计算机运算速度指标的一种计量单位

第五章 I/O

5.1 概述

5.1.1 输入输出系统的发展概况

外部设备的独立性越来越强

image-20200805090055448

5.1.2 输入输出系统的组成

I/O软件部分分为I/O指令和通道指令

I/O指令

属于CPU指令

操作码相当于一个标志,指明I/O设备

命令码相当于普通指令的操作码,指出对I/O做出什么操作

设备码给出某一个I/O设备的编码或者具体某个I/O寄存器的位置(这些寄存器也就是I/O的端口)

image-20200806080845823

通道指令

通道是一种小型的DMA处理器,能够实现小型的I/O设备和主机之间直接进行信息传送。通道有自己的处理器,有的通道也有自己的存储器,通道能执行通道自身的指令。

通道指令就是通道自身的指令。

一般情况下,编程人员在应用程序当中为了调用外部设备使得外部设备能够工作,应用程序需要增加广义I/O指令(包含所使用的I/O设备,数据传输主存的首地址,传输数据长度,传输数据方向),操作系统根据广义I/O指令和设置的参数,编写对应的通道程序,有了通道程序之后就可以控制通道完成I/O操作

image-20200806083425493

I/O硬件

image-20200806083657120

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

I/O设备编址方式

  • 统一编址 直接和内存进行统一编址,可以直接使用取数、存数的操作进行I/O的操作。评价:CPU的指令集会比较简单。如果内存空间的编址空间比较大的话我们就可以采用统一编址。

  • 不统一编址(单独编址)独立于内存编址之外,位数等不一样,输入输出不能采用CPU原有的取数存数指令,使用专用的I/O指令

设备选址

用设备选择电路识别是否被选中(比较CPU给出的设备地址和设备中自己保存的设备地址)

传送方式

串行:适合远程传输,传输速度较慢

并行:同时传输的数据比较多

联络方式

立即响应

异步工作采用应答信号

image-20200806090242735

同步工作采用同步时标

连接方式

辐射式连接

image-20200806091102106

总线连接(便于增删设备)

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

程序查询方式

原地检查原地踏步状态较多,对CPU的浪费较大,CPU还需要连接内存和I/O更加增大了时间浪费

image-20200806091535461

程序中断方式

内存和外设之间想要通信还是需要CPU的参与

当传输数据量非常小的时候保护现场进入中断的程序可能都有十几条这个情况下,进入中断就显得得不偿失

可以做到I/O与cpu并行工作

image-20200806092523049

DMA方式

程序查询方式、中断方式的终端还是需要CPU链接内存和I/O进行信息传输,通过执行程序的方式完成数据传输

DMA控制器建立了主存和I/O之间的直接数据通道

不中断现行程序(只需要在数据存取的时候申请一次数据和地址总线占用一个存取周期就可以了)

周期挪用(周期窃取)

image-20200806093538335

三种方式的比较

image-20200806104411727

image-20200806104525443

5.2 I_O设备

5.2.1 概述

image-20200806104839077

5.2.2 输入设备

image-20200806105023048

5.2.3 输出设备

image-20200806105240012

5.2.4 其它

image-20200806105854159

5.2.5 多媒体设备

5.3 I_O接口

5.3.1 概述

为什么要设置接口?(接口的功能)

实现设备的选择

实现数据缓冲达到速度匹配(接口之间的速度不一样)

实现数据串一并格式转换(有的外部设备是通过串行传输的需要在接口中完成转换,在进行传输)

实现电平转换

传送控制命令

反映设备的状态(“忙”、“就绪”、“中断请求”)

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

image-20200806110706329

5.3.2 接口的功能和组成

image-20200806140541436

五部分电路

image-20200806141028295

5.3.3 接口类型

image-20200806143113349

5.4 程序查询方式

5.4.1 程序流程

image-20200807081449521

进行I/O通信时可能需要使用到CPU中的某个寄存器,需要对这个寄存器进行预先的处理(将它保存到内存中或者压入到堆栈中或者保存到cpu其他空闲的寄存器中)

设置计数器是用来控制通信数据的大小,每传输完一个数据,计数值迭代一次

image-20200807082227536

5.4.2 程序接口电路

image-20200807082655313

以输入为例

初始化状态(设备工作结束后)

image-20200807083500114

设备工作结束后,更改状态

image-20200807083528489

5.5 程序中断方式

5.5.1 中断的概念

CPU在执行程序的过程中,如果发生意外事件或者特殊事件,CPU要中断当前程序的处理,(通过中断服务或程序的方式)转而处理特殊事件或者意外事件,处理结束后,要返回到被中断的程序断点

image-20200807084018241

5.5.2 I/0中断的产生

image-20200807085013392

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

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

image-20200807085632156

排队器

image-20200807091734657

中断向量地址形成部件

中断向量:程序状态字,中断服务程序的入口地址

向量地址:中断向量保存的内存地址

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

image-20200807094906601

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

image-20200807094948644

5.5.4 I/O中断处理过程

image-20200807100127311

image-20200807100609613

image-20200807100627700

image-20200807100650378

5.5.5 中断服务程序流程

中断服务程序的流程

保护现场

  • 程序断点的保护:中断隐指令完成

  • 寄存器内容的保护:进栈指令

中断服务:对不同的I/O设备具有不同内容的设备服务

恢复现场:出栈指令

中断返回:中断返回指令

单重中断和多重中断

单重中断:不允许中断现行的中断服务

多重中断:允许级别更高的中断源中断现行的中断服务程序

image-20200807103032802

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

image-20200807103305899

5.6 DMA方式

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

image-20200808094438431

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

停止CPU访问主存

image-20200808095049797

周期挪用(或周期窃取)

image-20200808095505445

DMA与CPU交替访问

使用权决定于时序

image-20200808095636170

5.6.3 DMA接口的功能和组成

接口组成是由接口功能确定的

DMA的接口功能

向CPU申请DMA传送

处理总线控制权的转交

管理系统总线、控制数据传送

确定数据传送的首地址和长度

修正传送过程中的数据地址和长度

DMA传送结束时,给出操作完成信号

接口组成

BR基址寄存器

DREQ设备请求

DACK控制信号

HRQ总线请求信号

HLDA总线应答信号

WC计数器(标记传输的个数)

image-20200808110733110

DMA的工作过程

DMA传送过程

image-20200809092427432

预处理

  • 通过几条输入输出指令预置如下信息
  • 通知DMA控制逻辑传送方向(入/出)
  • 设备地址—DMA的DAR
  • 主存地址—DMA的AR
  • 传送字数—DMA的WC

数据传送

image-20200809092439964

  • 执行主程序

  • 完成数据传输

  • 以数据输入为例

image-20200809092828232

  • 以数据输出为例

image-20200809093055370

后处理

  • 执行中断服务
  • 做DMA的结束处理
  • 校验送入主存的数是否正确
  • 是否继续用DMA测试传送过程是否正确,错则转诊断程序
  • 由中断服务程序完成

DMA接口与系统的连接方式

  • 具有公共请求线的DMA请求

image-20200809093933320

  • 独立的DMA请求

DMA方式与程序中断方式的比较
中断方式DMA方式
数据传送通过程序实现通过硬件实现
响应时间中断发生时候当前指令执行结束进行中断响应CPU本次存取周期结束进行DMA的响应
在程序执行过程中能否用于处理异常情况可以不可以
在过程中都有使用到中断请求,其中中断请求的作用用于传送数据用于后处理
优先级低高

5.6.4 DMA接口类型

选择型

image-20200809095927298

多路型

因为有子通道,每次使用一个子通道的时候单独设置所需要地址、控制等参数,多个设备可以并行着准备数据,准备好后通过子通道向通道提出数据传输请求

多路型工作原理

同时发生请求时,速度越高的设备优先级越高

image-20200809101506678

注:本文转载自blog.csdn.net的呆呆象呆呆的文章"https://blog.csdn.net/qq_41554005/article/details/108085117"。版权归原作者所有,此博客不拥有其著作权,亦不承担相应法律责任。如有侵权,请联系我们删除。
复制链接
复制链接
相关推荐
发表评论
登录后才能发表评论和回复 注册

/ 登录

评论记录:

未查询到任何数据!
回复评论:

分类栏目

后端 (14832) 前端 (14280) 移动开发 (3760) 编程语言 (3851) Java (3904) Python (3298) 人工智能 (10119) AIGC (2810) 大数据 (3499) 数据库 (3945) 数据结构与算法 (3757) 音视频 (2669) 云原生 (3145) 云平台 (2965) 前沿技术 (2993) 开源 (2160) 小程序 (2860) 运维 (2533) 服务器 (2698) 操作系统 (2325) 硬件开发 (2491) 嵌入式 (2955) 微软技术 (2769) 软件工程 (2056) 测试 (2865) 网络空间安全 (2948) 网络与通信 (2797) 用户体验设计 (2592) 学习和成长 (2593) 搜索 (2744) 开发工具 (7108) 游戏 (2829) HarmonyOS (2935) 区块链 (2782) 数学 (3112) 3C硬件 (2759) 资讯 (2909) Android (4709) iOS (1850) 代码人生 (3043) 阅读 (2841)

热门文章

101
推荐
关于我们 隐私政策 免责声明 联系我们
Copyright © 2020-2025 蚁人论坛 (iYenn.com) All Rights Reserved.
Scroll to Top