计算机组成原理 I/O方式

I/O 方式

I/O方式分类:

  1. 程序查询方式。由 CPU通过程序不断查询 /O 设备是否已做好准备,从而控制0 设备与主机交换信息
  2. 程序中断方式。只在 I/0 设备准备就绪并向 CPU发出中断请求时才予以响应。
  3. DMA方式。主存和 I/O 设备之间有一条直接数据通路,当主存和 /0 设备交换信息时 无须调用中断服务程序。
  4. 通道方式。在系统中设有通道控制部件,每个通道都挂接若干外设,主机在执行0 命令时,只需启动有关
    通道,通道将执行通道程序,从而完成 I/O 操作。
    其中,方式 1)和方式 2)主要用于数据传输率较低的外部设备,方式 3)和方式 4)主要用于数据传输率较高的设备。

程序查询方式

  1. CPU执行初始化程序,并预置传送参数。
  2. 向I/O接口发出命令字,启动I/O设备。
  3. 从外设接口读取其状态信息
  4. CPU 不断查询I/O设备状态,直到外设准备就绪
  5. 传送一次数据
  6. 修改地址和计数器参数
  7. 判断传送是否结束,若未结束转第3步,直到计数器为0

在这里插入图片描述

程序中断方式

中断
中断:由于系统中某些突发事件或异常情况的发生,而强迫CPU暂停(或中断)正在执行的程序转去执行相应的服务,当中断服务结束之后再回到原来被中断的地方继续执行原来的程序。
中断源:发出中断请求的来源。
中断源可以分为两大类:内部中断和外部中断。
中断的原理
在中断传送方式下,外部设备具有申请CPU服务的主动权。当输入设备将数据准备好或者输出设备准备好接收数据时,便可以向CPU发中断请求,使CPU暂时信下当前正在执行的程序而和外部设备完成一次数据传输。等输入/输出操作完成以后,CPU继续执行原来的程序。

中断的功能

  1. 实现CPU 与IO设备的并行工作。
  2. 处理硬件故障和软件错误
  3. 实现人机交互,用户千预机器需要用到中断系统
  4. 实现多道程序、分时操作,多道程序的切换需借助于中断系统
  5. 实时处理需要借助中断系统来实现快速响应
  6. 实现应用程序和操作系统 (管态程序) 的切换,称为“软中断”
  7. 多处理器系统中各处理器之间的信息交流和任务切换

程序中断方式
CPU在程序中安排好于某个时刻启动某台外设,然后CPU继续执行原来的程序,不需要像查询方式那样一直等待外设准备就绪。一旦外设完成数据传送的准备工作,就主动向CPU 发出中断请求,请求CPU为自己服务。在可以响应中断的条件下,CPU暂时中止正在执行的程序,转去执行中断服务程序为外设服务,在中断服务程序中完成一次主机与外设之间的数据传送,传送完成后,CPU返回原来的程序。
在这里插入图片描述

程序中断方式工作流程

(1) 中断请求
(2) 中断判优
(3) CPU响应中断的条件
(4) 中断隐指令
(5) 中断向量
(6) 中断处理过程

中断请求
当外部设备处于就绪状态,即输入设备将数据准备好或者输出设备准备好接收数据时,便通过相应的硬件电路向CPU发送一个中断请求信号,请求为之服务
中断判优
一个计算机系统包含多个中断源。由于中断产生的随机性,使得有可能在某一时刻有多个中断源向CPU发出中断请求,但是CPU在任意时刻只能响应并处理一个中断。
中断优先级判定的方法一般有两种:软件判优和硬件判优
软件判优: 指通过软件来安排各中断源的优先级别,但是也要借助于简单的硬件电路实现
硬件判优: 指利用专门的硬件电路或中断控制器来安排冬中断源的优先级。

CPU响应中断的条件
中断源有中断请求
CPU允许中断及开中断
一条指令执行完些,且没有更紧迫的任务
中断隐指令

  1. 关中断。在中断服务程序中,为了保护中断现场 (即CPU主要寄存器中的内容)期间不被新的中断所打断
    必须关中断,从而保证被中断的程序在中断服务程序执行完毕后能接着正确地执行。
  2. 保存断点。为保证在中断服务程序执行完毕后能正确地返回到原来的程序,必须将原来程序的断点[即程序计数器(PC) 的内容] 保存起来
  3. 引出中断服务程序。引出中断服务程序的实质是,取出中断服务程序的入口地址并传送给程序计数器 (PC)。

中断向量
中断向量:不同的设备有不同的中断服务程序,每个中断服务程序都有一个入口地址,CPU 必须找到这个入口地址
中断服务程序入口地址表: 把系统中的全部中断向量集中存放到存储器的某个区域内,这个存放中断向量的存储区就称为中断向量表。
注意:中断向量是中断服务程序的入口地址,中断向量地址是指中断服务程序的入口地址的地址

中断处理过程

  1. 关中断。处理器响应中断后,首先要保护程序的现场状态,在保护现场的过程中,CPU不应响应更高级中断源的中断请求。否则,若现场保存不完整,在中断服务程序结束后,也就不能正确地恢复并继续执行现行程序
  2. 保存断点。为保证中断服务程序执行完些后,能正确返回到原来的程序必须将原来的程序的断点保存起来。断点可以压入堆栈,也可以存入主存的特定单元中。
  3. 引出中断服务程序。引出中断服务程序的实质是,取出中断服务程序的入口地址送入程序计数器(PC)。通常有两种方法寻址中断服务程序的入口地址:硬件向量法和软件查询法
  4. 保存现场和屏蔽字。进入中断服务程序后首先要保存现场,现场信息一般是指程序状态字、中断屏蔽寄存器和CPU中某些寄存器的内容
  5. 开中断。允许更高级中断请求得到响应,实现中断嵌套
  6. 执行中断服务程序。这是中断请求的目的。
  7. 关中断。保证在恢复现场和屏蔽字时不被中断
  8. 恢复现场和屏蔽字。将现场和屏蔽字恢复到原来的状态
  9. 开中断、中断返回。中断服务程序的最后一条指令通常是一条中断返回指令,使其返回到原程序的断点处,以便继续执行原程序。
    在这里插入图片描述

多重中断
在这里插入图片描述

中断屏蔽技术主要用于多重中断。CPU要具备多重中断的功能,必须满足下列条件:

  1. 在中断服务程序中提前设置开中断指令
  2. 优先级别高的中断源有权中断优先级别低的中断源

每个中断源都有一个屏蔽触发器,1表示屏蔽该中断源的请求,0表示可以正常申请
所有屏蔽触发器组合在一起便构成一个屏蔽字寄存器,屏蔽字寄存器的内容称为屏蔽字。

程序中断方式VS程序查询方式
在这里插入图片描述

DMA方式

DMA传送方式的特点

  1. 它使主存与CPU 的固定联系脱钩,主存既可被CPU访问,又可被外设访问
  2. 在数据块传送时,主存地址的确定、传送数据的计数等都由硬件电路直接实现
  3. 主存中要开辟专用缓冲区,及时供给和接收外设的数据
  4. DMA传送速度快,CPU和外设并行工作,提高了系统效率
  5. DMA在传送开始前要通过程序进行预处理,结束后要通过中断方式进行后处理

DMA控制器的组成
在这里插入图片描述

  • 主存地址计数器:存放要交换数据的主存地址
  • 传送长度计数器:记录传送数据的长度,计数溢出时,数据即传送完毕,自动发中断请求信号
  • 数据缓冲寄存器:暂存每次传送的数据
  • DMA请求触发器:每当I/0设备准备好数据后,给出一个控制信号,使DMA请求触发器置位
  • “控制/状态”逻辑:由控制和时序电路及状态标志组成,用于指定传送方向,修改传送参数并对 DMA请求信号和CPU响应信号进行协调和同步
  • 中断机构:当一个数据块传送完些后触发中断机构,向CPU提出中断请求

DMA的传送方式

  1. 停止CPU访问主存。
  2. DMA与CPU交替访存。CPU与DMA控制器交替访问内存。不需要总线使用权的申请、建立和归还过程,
  3. 周期挪用(或周期窃取)。当O接口没有DMA请求时,CPU按程序要求访问内存,一旦P接口有DMA请求,则
    I/O接口挪用一个或几个周期。

DMA传送过程

  1. 预处理
  2. 数据传送
  3. 后处理

在这里插入图片描述

通道方式

外部设备

外部设备
外部设备也称外围设备,是除了主机以外的、能直接或间接与计算机交换信息的装置
输入设备:用于向计算机系统输入命令和文本、数据等信息的部件。键盘和鼠标是最基本的输入设备
输出设备:用于将计算机系统中的信息输出到计算机外部进行显示、交换等的部件。显示器和打印机是最基
本的输出设备。
外存设备:是指除计算机内存及CPU缓存等以外的存储器。硬磁盘、光盘等是最基本的外存设备

I/O接口

I/O接口的结构

在这里插入图片描述

I/O接口的功能

  1. 实现主机和外设的通信联络控制。解决主机与外设时序配合问题,协调不同工作速度的外设和主机之间
    交换信息,以保证整个计算机系统能统一、协调地工作。
  2. 进行地址译码和设备选择。CPU 送来选择外设的地址码后,接口必须对地址进行译码以产生设备选择信
    息,使主机能和指定外设交换信息。
  3. 实现数据缓冲。CPU 与外设之间的速度往往不匹配,为消除速度差异,接口必须设置数据缓冲寄存器
    用于数据的暂存,以避免因速度不一致而丢失数据。
  4. 信号格式的转换。外设与主机两者的电平、数据格式都可能存在差异,接口应提供计算机与外设的信
    号格式的转换功能,如电平转换、并/串或串/并转换、模/数或数/模转换等传送控制命令和状态信息。
  5. CPU 要启动某一外设时,通过接口中的命令寄存器向外设发出启动命令外,设准备就绪时,则将"准备好“状态信息送回接口中的状态寄存器,并反馈给 CPU。外设向 CPU提出中新请求时,CPU也应有相应的响应信号反馈给外设

I/O接口的分类

按数据传送方式可分为:

  1. 并行接口 : 一个字节或一个字所有位同时传送。
  2. 串行接口:一位一位地传送。
    注:这里所说的数据传送方式指的是外设和接口一侧的传送方式,而在主机和接口一侧,数据总是并行送的。接口要完成数据格式转换。

按主机访问I/O设备的控制方式可分为

  • 程序查询接口
  • 中断接口
  • DMA接口

按功能选择的灵活性可分为

  • 可编程接口
  • 不可编程接口

I/O端口编址方式

I/O 端口要想能够被 CPU访问,就必须要对各个端口进行编号,每个端口对应一一个端口地址。而对 I/O
端口的编址方式有与存储器统一编址和独立编址两种。

  1. 统一编址: 又称存储器映射方式,是指把 I/O 端口当作存储器的单元进行地址分配,这种方式 CPU不需要设置专门的 I/O指令,用统一的访存指令就可以访问 I/O 端口。
    优点:不需要专门的输入/输出指令,可使 CPU访问 I/O 的操作更灵活、更方便,还可使端口有较大的编址
    空间。
    缺点:端口 占用存储器地址,使内存容量变小,而且利用存储器编址的 I/O 设备进行数据输入/输出操作
    执行速度较慢。
  2. 独立编址: 又称 I/O 映射方式,I/O 端口的地址空间与主存地址空间是两个独立的地址空间,因而无法从地址码的形式上区分,需要设置专门的 I/O指今来访问 I/O 端口。
    优点: 输入/输出指令与存储器指令有明显区别,程序编制清晰,便于理解。
    缺点: 输入/输出指令少,一般只能对端口进行传送操作,尤其需要 CPU提供存储器读/写、I/0 设备读/写
    两组控制信号,增加了控制的复杂性

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

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

相关文章

UDS诊断(ISO14229-1) 3D服务

文章目录 功能简介应用场景请求和响应1、请求2、子功能3、肯定响应4、否定响应 NRC 判断优先级顺序报文示例UDS中常用 NRC 功能简介 3D服务,即 WriteMemoryByAddress(按地址写内存)服务,允许客户端向服务器的一个或多个连续存储单…

开源游戏引擎:创造无限可能 | 开源专题 No.56

godotengine/godot Stars: 62.6k License: MIT Godot Engine 是一个功能强大的跨平台游戏引擎,可用于创建 2D 和 3D 游戏。它提供了一套全面的常见工具,让用户可以专注于制作游戏而不必重复造轮子。该引擎支持将游戏一键导出到多个平台上,包…

虾皮广告数据分析:如何进行虾皮广告数据分析以优化广告效果

虾皮(Shopee)作为一家知名的电商平台,广告数据分析是优化广告效果的关键步骤。通过对广告数据进行深入分析,卖家可以了解广告的表现、找出优势和不足,并制定更有效的广告策略。在本文中,我们将介绍如何进行…

Mac 16g约等于Windows多少g?

Mac 16g 内存等于 Windows 320g 内存 何为“黄金内存”? Mac 的内存是用黄金做的,而 Windows 的内存是用铁做的。 黄金的密度是 19.32 g/cm,而铁的密度是 7.874 g/cm。 因此,16g 的黄金体积是 0.082 cm,而 16g 的铁…

Vue3使用Pinia

1.安装 npm i pinia 2.搭建架子文件 2.1main.js import { createApp } from vue // 引入pinia import { createPinia } from piniaimport App from ./App.vue import router from ./router // 创建pinia const app createApp(App) //安装pinia app.use(createPinia())app.use(…

P1262 间谍网络

1、思路 阅读题目,发现有些间谍可以是被前面的点更新,也就是说,在一开始的时候,把能贿赂的人员从小到达排个序,再使用bfs算法,把他们能到达的人员的贿赂价钱设置为0。 有解的情况: 首先如果有…

【leetcode】力扣热门之反转链表【简单难度】

题目描述 给你单链表的头节点 head ,请你反转链表,并返回反转后的链表。 用例 输入:head [1,2,3,4,5] 输出:[5,4,3,2,1] 输入:head [1,2] 输出:[2,1] 输入:head [] 输出:[…

强化学习的数学原理学习笔记 - 时序差分学习(Temporal Difference)

文章目录 概览:RL方法分类时序差分学习(Temporal Difference,TD)TD for state valuesBasic TD🟡TD vs. MC 🟦Sarsa (TD for action values)Basic Sarsa变体1:Expected Sarsa变体2:n-…

教程:Centos6迁移旧虚拟机文件后的网络配置教程,完美解决虚拟机移动后的网络ip变化问题

博主在工作后,想整整之前大学的虚拟机集群,因此特意从之前的旧电脑把虚拟机文件给拷贝了过来,在导入到vm-workstation,顺便能启动虚拟机后,发现之前的静态ip已经跟现在的宿主机网络不一样。想着重新配置,但觉得太麻烦,故想到了修改网卡的mac地址+网卡重配置方法,完美解…

【已解决】如何用c语言位运算输出浮点数数据

本博文源于笔者正在学习的c语言如何利用位运算输出浮点数数据类型&#xff0c;浮点数在其底部也是用二进制来处理&#xff0c;又考虑到他是低位在前高位在后的原理&#xff0c;因此进行了这样的代码编写 问题浮现 想要用c语言的位运算输出浮点数 问题源码 #include<stdi…

etcd储存安装

目录 etcd介绍: etcd工作原理 选举 复制日志 安全性 etcd工作场景 服务发现 etcd基本术语 etcd安装(centos) 设置&#xff1a;etcd后台运行 etcd 是云原生架构中重要的基础组件&#xff0c;由 CNCF 孵化托管。etcd 在微服务和 Kubernates 集群中不仅可以作为服务注册…

[大厂实践] 重新发明后端子集

子集算法有助于优化服务间连接利用率&#xff0c;降低资源使用。但随机或轮询子集算法在动态拓扑环境中会造成较高的连接扰动。本文介绍了谷歌在解决连接扰动方面所做的思考和实践&#xff0c;并介绍了当前最新的Rocksteadier子集算法。原文: Reinventing Backend Subsetting a…

面试题:怎么给详情页做性能优化的?

文章目录 一、背景二、接口优化方案总结1.批处理2.异步处理3.空间换时间4.预处理5.池化思想6.串行改并行7.索引8.避免大事务9.优化程序结构10.深分页问题11.SQL优化12.锁粒度避免过粗 三、最后 一、背景 针对老项目&#xff0c;去年做了许多降本增效的事情&#xff0c;其中发现…

03MyBatis完成CRUD

准备工作 ○ 创建module&#xff08;Maven的普通Java模块&#xff09;&#xff1a;mybatis-002-crud ○ pom.xml ■ 打包方式jar ■ 依赖&#xff1a; ● mybatis依赖 ● mysql驱动依赖 ● junit依赖 ● logback依赖 ○ mybatis-config.xml放在类的根路径下 ○ CarMapper.xml放…

Elasticsearch:Serarch tutorial - 使用 Python 进行搜索 (二)

这个是继上一篇文章 “Elasticsearch&#xff1a;Serarch tutorial - 使用 Python 进行搜索 &#xff08;一&#xff09;” 的续篇。在今天的文章中&#xff0c;我们接着来完成如何进行分页及过滤。 分页 - pagination 应用程序处理大量结果通常是不切实际的。 因此&#xff0…

【ros笔记】urdf文件

urdf文件属于xml文件&#xff0c;他的标签有&#xff1a; <robot name"robot_name"><!-- 看的见摸的着刚体用link --><link name"base_link"><!-- 可视化部分 --><visual><!-- 几何形状 --><geometry><!-- b…

vue-springboot 音乐推荐系统 带歌词的音乐播放器系统设计与实现 7902c

少数民族音乐网站在流畅性&#xff0c;续航能力&#xff0c;等方方面面都有着很大的优势。这就意味着少数民族音乐网站的设计可以比其他系统更为出色的能力&#xff0c;可以更高效的完成最新的音乐信息、音乐资讯、在线交流等功能。 此系统设计主要采用的是JAVA语言来进行开发&…

基于SpringBoot的教学辅助系统

文章目录 项目介绍主要功能截图&#xff1a;部分代码展示设计总结项目获取方式 &#x1f345; 作者主页&#xff1a;超级无敌暴龙战士塔塔开 &#x1f345; 简介&#xff1a;Java领域优质创作者&#x1f3c6;、 简历模板、学习资料、面试题库【关注我&#xff0c;都给你】 &…

实战Flink Java api消费kafka实时数据落盘HDFS

文章目录 1 需求分析2 实验过程2.1 启动服务程序2.2 启动kafka生产 3 Java API 开发3.1 依赖3.2 代码部分 4 实验验证STEP1STEP2STEP3 5 时间窗口 1 需求分析 在Java api中&#xff0c;使用flink本地模式&#xff0c;消费kafka主题&#xff0c;并直接将数据存入hdfs中。 flin…

java火车查询管理系统Myeclipse开发mysql数据库web结构java编程计算机网页项目

一、源码特点 java Web火车查询管理系统是一套完善的java web信息管理系统&#xff0c;对理解JSP java编程开发语言有帮助&#xff0c;系统具有完整的源代码和数据库&#xff0c;系统主要采用B/S模式开发。开发环境为 TOMCAT7.0,Myeclipse8.5开发&#xff0c;数据库为Mysql…