当前位置: 首页 > news >正文

计算机组成原理 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 设备读/写
    两组控制信号,增加了控制的复杂性

相关文章:

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

I/O 方式 I/O方式分类: 程序查询方式。由 CPU通过程序不断查询 /O 设备是否已做好准备,从而控制0 设备与主机交换信息程序中断方式。只在 I/0 设备准备就绪并向 CPU发出中断请求时才予以响应。DMA方式。主存和 I/O 设备之间有一条直接数据通路,当主存和…...

VMWare网络配置

1、通用配置 选择自动,相对与选择指定网卡,能解决网卡更换导致网络不可用的问题。 2、每个虚拟机配置...

opencv期末练习题(3)附带解析

创建黑色画板,并支持两种画图功能 import mathimport cv2 import numpy as np """ 1. 创建一个黑色画板 2. 输入q退出 3. 输入m切换画图模式两种模式,画矩形和画圆形。用户按住鼠标左键到一个位置然后释放就可以画出对应的图像 "&qu…...

51单片机之LED灯

51单片机之LED灯 🌴前言:🏮点亮LED灯的原理💘点亮你的第一个LED灯💘点亮你的八个LED灯 📌让LED灯闪烁的原理🎽 LED灯的闪烁🏓错误示范1🏓正确的LED闪烁代码应该是这样&am…...

操作系统内存碎片

大家好,我叫徐锦桐,个人博客地址为www.xujintong.com,github地址为https://github.com/jintongxu。平时记录一下学习计算机过程中获取的知识,还有日常折腾的经验,欢迎大家访问。 一、前言 内存碎片是指无法被利用的内…...

三菱plc学习入门(二,三菱plc指令,触点比较,计数器,交替,四则运算,转换数据类型)

今天,进行总结对plc的学习,下面是对plc基础的学习,希望对读者有帮助,欢迎点赞,评论,收藏!!! 目录 触点比较 当数据太大了的时候(LDD32位) CMP比…...

Spring学习之——代理模式

Proxy代理模式 介绍 为其他对象提供一种代理以控制对这个对象的访问。在某些情况下,一个对象不适合或者不能直接引用另一个对象,而代理对象可以在客户端和目标对象之间起到中介的作用 2. 组成 抽象角色:通过接口或抽象类声明真实角色实现的…...

【Linux】之搭建 PostgreSQL 环境

前言 在 Linux 系统下安装 PostgreSQL,可以选择快捷方便的 Docker 安装,但正常的服务器都是直接原生安装的,所以,这里我将讲解如何正常安装 PostgreSQL 以及安装之后的一些配置。如果想了解 Docker 安装的话,可以查看我…...

docker 安装elasticsearch、kibana、cerebro、logstash

安装步骤 第一步安装 docker 第二步 拉取elasticsearch、kibana、cerebro、logstash 镜像 docker pull docker.elastic.co/elasticsearch/elasticsearch:7.10.2 docker pull docker.elastic.co/kibana/kibana:7.10.2 docker pull lmenezes/cerebro:latest docker pull l…...

C/C++ 联合体

目录 联合体概述 联合体的内存分配 联合体大小计算 联合体概述 联合与结构非常的相似,主要区别就在于联合这两个字。 联合的特征:联合体所包含的成员变量使用的是同一块空间。 联合体定义 //联合类型的声明 union Un {char c;int i; }; //联合变量…...

基于SSM的基金投资交易管理网站的设计与实现

末尾获取源码 开发语言:Java Java开发工具:JDK1.8 后端框架:SSM 前端:采用JSP技术开发 数据库:MySQL5.7和Navicat管理工具结合 服务器:Tomcat8.5 开发软件:IDEA / Eclipse 是否Maven项目&#x…...

JS数据类型转换成Boolean型

在javaScript中 布尔值用到的很频繁 接下来让我稍微为大家介绍一下数据类型转换为布尔型 转换成布尔值为false的类型 console.log(Boolean("")) //falseconsole.log(Boolean(0)) //falseconsole.log(Boolean(undefined)) //falseconsole.log(Boolean(null)) //false…...

uni-app页面数据传参方式

uni-app 是一个使用 Vue.js 开发所有前端应用的框架,可以编译到 iOS、Android、H5、小程序等多个平台。当你在多个页面间传递参数时,通常有多种方法,例如通过 uni.navigateTo、路由参数、本地存储等方式。下面是一些方法的说明和示例代码。 …...

计算机网络实验(二):Wireshark网络协议分析

一、实验名称:Wireshark网络协议分析 二、实验原理 HTTP协议分析 1.超文本传输协议(Hypertext Transfer Protocol, HTTP)是万维网(World Wide Web)的传输机制,允许浏览器通过连接Web服务器浏览网页。目…...

Spark内核解析-数据存储5(六)

1、Spark的数据存储 Spark计算速度远胜于Hadoop的原因之一就在于中间结果是缓存在内存而不是直接写入到disk,本文尝试分析Spark中存储子系统的构成,并以数据写入和数据读取为例,讲述清楚存储子系统中各部件的交互关系。 1.1存储子系统概览 …...

ASP.NET Core高级之认证与授权(一)--JWT入门-颁发、验证令牌

阅读本文你的收获 了解认证和授权的作用了解在ASP.NET Core中实现身份认证的技术都有哪些学习基于JWT认证并学会颁发和验证JWT令牌 一、重要的前置概念 在一个系统中,不是所有的功能和资源都能够被自由地访问,比如你存在银行系统里面的资金&#xff0c…...

实例:NodeJS 操作 Kafka

本人是C#出身的程序员,c#很简单就能实现,有需要的可以加我私聊。但是就目前流行的开发语言,尤其是面向web方向应用的,我感觉就是Nodejs最简单了。下面介绍: 本文将会介绍在windows环境下启动Kafka,并通过n…...

AI实景无人直播创业项目:开启自动直播新时代,一部手机即可实现增长

在当今社会,直播已经成为了人们日常生活中不可或缺的一部分。无论是商家推广产品、明星互动粉丝还是普通人分享生活,直播已经渗透到了各行各业。然而,传统直播方式存在着一些不足之处,如需现场主持人操作、高昂的费用等。近年来&a…...

YOLOv5改进 | 损失函数篇 | InnerIoU、InnerSIoU、InnerWIoU、FocusIoU等损失函数

一、本文介绍 本文给大家带来的是YOLOv5最新改进,为大家带来最近新提出的InnerIoU的内容同时用Inner的思想结合SIoU、WIoU、GIoU、DIoU、EIOU、CIoU等损失函数,形成 InnerIoU、InnerSIoU、InnerWIoU等新版本损失函数,同时还结合了Focus和AIpha思想,形成的新的损失函数,其…...

构建高效PythonWeb:GraphQL+Sanic

1.1 简介:在当今快速发展的技术时代,Web应用的性能和灵活性变得越来越重要。在众多技术中,GraphQL和Sanic以其独特的优势脱颖而出。GraphQL,作为一个强大的数据查询语言,为前端和后端之间的通信提供了极大的灵活性。而…...

【通义千问】大模型Qwen GitHub开源工程学习笔记(5)-- 模型的微调【全参数微调】【LoRA方法】【Q-LoRA方法】

摘要: 训练数据的准备 你需要将所有样本放到一个列表中并存入json文件中。每个样本对应一个字典,包含id和conversation,其中后者为一个列表。示例如下所示: [{"id": "identity_0","conversations": [{"from": "user",…...

PCL 大地坐标转空间直角坐标(C++详细过程版)

目录 一、算法原理二、代码实现三、结果展示四、测试数据本文由CSDN点云侠原创,原文链接。如果你不是在点云侠的博客中看到该文章,那么此处便是不要脸的爬虫与GPT生成的文章。 一、算法原理 二、代码实现 头文件及读取保存函数见:PCL 空间直角坐标转大地坐标(直接求解法C…...

Linux之Shell编程

shell是什么 shell是一个命令行解释器,他为用户提供一个向linux内核发送请求以便运行程序的界面系统级程序,用户可以用shell来启动,挂起,停止甚至编写一些程序。 shell脚本的执行方式 脚本格式要求 脚本以#!/bin/bash开头脚本需…...

Unity组件开发--传送点

本组件仅实现A传送点到B传送的功能,是可以双向传送的,如果只要单向传送,可以另外改脚本实现; 先看效果: unity组件传送点演示 1.传送组件shader是怎么写的:这种效果的实现方案 shader编辑器是这样的&#…...

vue结合Cesium加载gltf模型

Cesium支持什么格式? Cesium支持的格式包括:3D模型格式(如COLLADA、gITF、OBJ)、影像格式(如JPEG、PNG、GeoTIFF)、地形格式(如STL、Heightmap)、矢量数据格式(如GeoJSON…...

逆置算法和数组循环移动算法

元素逆置 概述:其实就是将 第一个元素和最后一个元素交换,第二个元素和倒数第二个元素交换,依次到中间位置。用途:可用于数组的移动,字符串反转,链表反转操作,栈和队列反转等操作。 逆置图解 …...

【MATLAB】数豆子

Matlab数豆子 创建一个变量来表示豆子的数量。例如,可以使用豆子数量 100;来表示有100颗豆子。 使用disp函数打印出豆子的数量。例如,可以使用disp([目前有 num2str(豆子数量) 颗豆子])来打印出当前豆子的数量。 进行豆子的计数操作。例如&#xff0c…...

QT C++中调用python脚本时,import第三方库失败问题解决

QT C中调用python脚本时,import第三方库失败问题解决 文章目录 QT C中调用python脚本时,import第三方库失败问题解决前言一、问题复现二、调试过程三、问题解决1 numpy问题解决2 matplotlib问题解决 四、补充说明五、参考资料 前言 项目需要&#xff0c…...

【AI视野·今日Robot 机器人论文速览 第七十期】Thu, 4 Jan 2024

AI视野今日CS.Robotics 机器人学论文速览 Thu, 4 Jan 2024 Totally 17 papers 👉上期速览✈更多精彩请移步主页 Daily Robotics Papers Many-Objective-Optimized Semi-Automated Robotic Disassembly Sequences Authors Takuya Kiyokawa, Kensuke Harada, Weiwei …...

Flutter中的布局组件介绍及使用

1. 引言 Flutter 是一款由 Google 开发的开源 UI 软件开发工具,可用于在单个代码库中构建漂亮、本机编译的应用程序。在 Flutter 中,布局是构建用户界面的核心部分之一。本文将介绍 Flutter 中的全部布局组件,以及它们的使用方式。 2. 基础…...

网站建设中英文版/大连网络推广公司哪家好

转:http://www.cnblogs.com/iamlilinfeng/p/3026332.html 一、前言 听说SharePoint也有一段时间了,可一直处在门外。最近被调到SharePoint实施项目小组,就随着工作一起学习了一下实施与开发。但苦于网上SharePoint入门的东西实在太少&#x…...

网站开发的前置审批是什么意思/域名注册网站哪个好

持久代Permanent Generation space(JDK1.7及以下版本存在)主要存放存放class文件中类的版本、字段、方法、接口,类和方法的元数据等描述信息,运行时常量池,用于存放编译器生成的各种字面量和符号引用。上限是MaxPermSizePremGen与old区绑定在…...

工程公司账务处理分录/在线排名优化

require() 和 include() 几乎完全一样,除了处理失败的方式不同之外。include() 产生一个Warning而 require() 则导致一个 Fatal Error。换句话说,如果想在丢失文件时停止处理页面,那就别犹豫了,用 require() 吧。include() 就不是…...

做网站要注意些什么/seo是什么味

在MySQL中有时需要随机生成数字或字符串,随机生产数字可直接使用rand()函数,但是要随机生成字符串就比较麻烦。要随机生成字符串代码如下:在MySQL中定义一个随机串的方法,然后再SQL语句中调用此方法。随机串函数定义方法&#xff…...

北京市网站公安备案查询系统/地推项目平台

项目中用到stormkafkazookeeper,在实际应用中zk和kafka常出问题,这里记录下在使用zk过程中的问题。 注:zk版本是3.4.8,kafka是0.8.2.0。zk、storm和kafka都是运行在同一个集群的三台机器上。 CancelledKeyException 在开发环境…...

在家用电脑做网站/北京网站推广服务

行为识别与分析是计算机视觉领域的一个重要研究方向。通过分析视频中的行为和动作,我们可以为许多实际应用提供智能解决方案,如智能监控、安防、医疗康复、体育分析等 实际项目:基于3D卷积神经网络(3D-CNN)的行为识别…...