首页 > 其他分享 >计组复习(输入输出)

计组复习(输入输出)

时间:2023-12-09 23:13:29浏览次数:40  
标签:编址 DMA 计组 中断 输入输出 接口 IO CPU 复习

目录

前言

本文为JMU22级软件计组考前复习而总结归纳,吸收了课本上晦涩且长篇大论的文章,以尽量简洁易懂的语句来对知识点进行归纳。



IO接口编址

统一编址

把IO接口的寄存器和存储器收编,与主存一起编址。比如主存有0-7共8个位置,0-6给内设的存储器,7就给IO接口。
缺点: 占用主存
优点: 使用通用的指令就可以访问IO接口的存储器,操作灵活。

单独编址

给IO接口单独的地址空间。比如主存有0-7共8个位置,IO接口也有它自己单独的0-1个位置。
那问题来了,访问0号地址时,会有2个地址,怎么确定是内部地址还是IO接口的地址?
解决办法就是:为IO接口设立单独的指令。mov ax,[0] 是内存操作,in ax,[0]就是IO接口的操作。

缺点:要用专门的IO指令,寻址方式简单导致编程灵活性稍差。
优点:不占用主存



IO操作的发展

通过普通接口

CPU直接通过IO指令对IO接口进行访问,每一步都表现在程序里。

以立即程序传送方式

当IO接口随时都准备好接收/传入数据,那么CPU就无需查询接口状态,直接利用IO指令访问相应IO端口。

图片名称

以程序查询方式

很多外设的工作状态难预知,所以CPU需要查询接口状态,直到接口准备好。

图片名称

以中断方式

程序查询时CPU会执行很多次无效查询,导致CPU利用率不高。所以反过来让别的设备主动通知CPU。

图片名称

中断向量

即 中断处理程序入口地址。记录CS和IP。
现在常用二/多级向量方式。
中断源向CPU提供中断码,这个码与一个中断向量一一映射。设中断码为n,在32位系统里,入口地址为32位,2字节CS,2字节IP。
那么IP=(4N,4N+1),CS=(4N+2,4N+3)。

图片名称

中断过程

  • 保存现场(记下被中断时的CS和IP,把一些寄存器值入栈)
  • 执行中断程序
  • 恢复现场(回到原来的CS和IP,把寄存器值出栈)
图片名称

中断允许位 和 优先级

其中还涉及到判断是否能被打断,以及优先响应问题。
CPU的状态寄存器有一位'IF'中断允许位,用来标记当前能否被中断,避免执行重要操作时被中断。且执行中断程序时不允许再被中断。
面对多个中断请求,CPU会按设定好的优先级进行排队。



通过DMA

中断可以提高CPU利用率,但是一次中断一般只能传递一个字符,还要经过保存现场、处理、恢复现场等阶段,需要执行多条指令才能处理一次中断事件,很难满足高速批量数据传输的需求。所以产生了“直接存储器传送(DMA)方式”。

DMA方式通过硬件实现主存和IO设备的直接数据传送。

预处理

  • 主存准备好足够的内存迎接要读取的数据 或者 准备好要传送的数据。
  • 把数据首址和长度写入相应位置
  • DMA处理完了一般以中断方式提醒CPU,所以还要做一些关于中断处理的预处理操作。

DMA请求

接口准备好接受/发送数据后,向CPU发出DMA请求。

DMA响应

CPU接到请求,放弃对系统总线的使用和控制,发出应答信号,把控制权给DMA。

DMA传送

DMA接到应答信号,向IO接口确认。发出信号驱动总线,把地址送入地址总线,读写操作送入控制总线。每次传送完数据,地址指针变动一次,数据块长计数器-1,可以暂时清除DMA请求信号,等接口准备好时再发送请求。

循环直至完成整个数据块的传送。

结束处理

由计数器归零信号/接口发出中断请求来通知CPU进行后续处理。



通过通道

DMA虽然不需要CPU执行传输操作指令,但是CPU还是需要承担一部分管理控制功能,在IO设备多的情况下,DMA不能很好地满足需求。于是产生了通道。

通道是一种控制器,它有它自己的通道程序,可以完成较复杂的IO管理和预处理。需要IO操作时,cpu只要按格式准备好数据启动通道即可。通道自己去执行相应指令完成所需操作。

中断和通道都是靠程序实现IO管理,但是通道无需CPU执行发出中断的程序。



通过IOP

IOP是通道的进一步发展,它的指令系统更加丰富和通用,功能更强,更接近常规CPU,能更好地胜任复杂的预处理操作。

标签:编址,DMA,计组,中断,输入输出,接口,IO,CPU,复习
From: https://www.cnblogs.com/lmj00/p/17891984.html

相关文章

  • C++基础 -1- 标准输入输出
    ———————标准输入输出——————— ......
  • Python 输入输出与文件处理: io、pickle、json、csv、os.path 模块详解
    Python提供了强大的输入输出和文件处理工具,通过io、pickle和json等模块,开发者可以轻松处理文件、序列化和反序列化数据,并在不同格式之间进行转换。在本文中,我们将深入介绍这些模块的用法和实际示例。1.io模块:强大的输入输出工具io模块提供了对文件I/O进行灵活处理的能力......
  • Python 输入输出与文件处理: io、pickle、json、csv、os.path 模块详解
    Python提供了强大的输入输出和文件处理工具,通过io、pickle和json等模块,开发者可以轻松处理文件、序列化和反序列化数据,并在不同格式之间进行转换。在本文中,我们将深入介绍这些模块的用法和实际示例。1.io模块:强大的输入输出工具io模块提供了对文件I/O进行灵活处理的能力......
  • 第一章 引言 —— 现代密码学(杨波)复习题
    第一章引言一、填空:1.保密学包括两个重要的分支,分别是______________和_______________2.信息系统产生安全问题的外因是_____________内因是_______________3.信息系统的被动攻击分为哪两类______________和_______________4.某黑客在信道上截获一段密文后试图破译,这属......
  • 第二章 流密码 —— 现代密码学(杨波)复习题
    第二章流密码一、填空1.分组密码和流密码的根本区别在于____________________________2.n-LFSR最大周期是__________3.已知一3-FSR,其反馈函数为f(a1,a2,a3)=a1⊕a2a3,且当前的状态(a3,a2,a1)=(101),则其前两个状态分别是____________,输出序列的周期是____________4.n级m序......
  • [机器学习复习笔记] 机器学习基础
    机器学习基础1.基础概念和术语样本(\(\text{sample}\))/实例(\(\text{instance}\))我们获得的数据集中的一条数据,被称为一个样本(\(\text{sample}\))/实例(\(\text{instance}\)),在不存在数据缺失的情况下,所有样本应该具有相同的结构。特征(\(\text{feature}\))记录样本的某......
  • [机器学习复习笔记] KNN(k近邻)
    KNN1.KNN算法(\(k\)近邻)\(k\)近邻学习(\(\text{k-nearest}\;\text{neighbor},\;k\text{-NN}\))是一种常用的监督学习方法,思路非常简单:给定一个样本数据集,对于每个输入的测试样本,在训练集中找到与该测试样本最近的\(k\)个训练样本,然后基于这\(k\)个样本的类别标......
  • 数据库总结复习(sql应用题 二)
    目录前言关系代数关系间运算条件表达式使用案例语法树例子前言本文针对考纲上的30分sql应用题所涉及到的知识进行归纳总结。分为两篇文章,本篇为关系代数相关知识点。关系代数关系间运算关系和关系之间需要用到以下关系运算符:其中,连接从连接条件上分,等值连接,非等值连......
  • 每天5分钟复习OpenStack(十二)Ceph FileStore 和 BlueSotre
    一个最小化的Ceph集群需要三个组件MONMGROSD.上一章我们部署了MON,本章节我们完成剩下MGR和OSD的部署。在文末我们将重点介绍下什么是FileStore和BlueStore,并详细分析其特点,来说明为什么Ceph社区放弃了FileStore,直接采用了BlueStore.1、MGR部署创建mgr工作目录sudo-u......
  • day15 函数复习和模块基础
    蒙特卡洛仿真2023-12-0519:28:40函数复习deffunc(*args,**kwargs): pass#func可以接受所有的参数*形参:接受多余的位置实参以元组的形式存储**形参:接受多余的关键字参数以字典的形式存储函数对象的作用:①引用f1=func②作为函数的返回值returnfunc③作为函数的参数f2(......