2024王道考研计算机组成原理——输入输出系统

7.1.1 输入输出系统和几种IO控制方式

输入设备:把数据从主机外部输入主机内部

输出设备:把数据从主机内部输出到主机外部

现在的IO接口(芯片)通常被集成在南桥芯片的内部

 

DMA接口其实也是IO接口(芯片)的一种,磁盘准备的数据先一个字一个字地送入DMA的寄存器,然后再送到主存当中,主存总线和DMA总线当然会冲突,这也需要仲裁,当然CPU需要的数据80%都在cache当中可以找到,所以主存大部分时间都是可以判给DMA总线!!!

IO总线当然包括了:地址总线、数据总线、控制总线

通道其实就相当于是一个弱鸡版的CPU,它也可以取指执行,但是它只能识别很小的一部分和IO相关的操作指令(了解即可)

 7.1.2 显存

了解即可:

独立显卡有自己专门的一块存储芯片

集成显卡是在内存当中单独划出来一块区域作为显存

7.2.1 I/O接口

主机与IO设备交互通过的就是IO接口

控制外设输入的示例:

7.3.1 程序查询方式

打印是时候,打印机是忙状态(busy),CPU轮询in来检查端口是否空闲,打印完a之后就会把状态从busy设置为ready

当打印任务全部完成之后,CPU就会给io接口发送一个停机的命令

打印3个字符abc的过程:

7.3.2 中断的原理和作用 

中断处理的过程:

中断请求(INT) -> 中断响应(INTA) -> 中断处理(中断隐指令(硬件)+中断服务程序(软件))

中断请求:中断控制芯片8259告诉CPU有外部中断产生了

中断响应:CPU检查自己的IF位,如果IF=1就通知8259我准备好了,可以把中断类型码发过来了

中断处理:8259把中断类型码送给CPU(比如放到eax当中),然后CPU通过执行中断隐指令的引出中断服务程序(比如eax -> PC),就可以到对应位置继续取指顺序执行了

CPU在指令周期的末尾会例行检查中断(检查CPU的INT端口有没有信号) 

根据IF位可以判断当前CPU有没有关中断,如果IF位为1,就从中断寄存器当中取数据,IF为0就不取,相当于不会响应中断

关中断的目的是为了实现原子操作,是通过硬件实现的

 

中断请求寄存器是在中断控制器8259当中的 

关机之前会进行一系列的紧急处理,之后才会被关闭

现在的计算机一般使用硬件实现中断判优,这样比较快速

中断判优的优先级问题: 

中断处理过程:

中断隐指令指的是一些列的指令,这一系列指令都是由CPU自动完成的,只要检测到中断请求,CPU就会自动执行这一系列的指令(是通过硬件电路自动实现的)

中断隐指令:关中断、保存断点(PC)、获取中断向量

所有中断源的中断隐指令都是一模一样的!!!

引出中断服务程序:先通过中断类型号指明要去主存为12H的位置取指令并执行(在操作系统的内核空间,常驻内存),执行JMP 200,CPU就会从200的地址处去继续取指执行了!

二级指针,你一级变化,二级不变,不用改动,这样可以方便拓展中断服务程序

中断服务程序的执行过程:

7.3.3 多重中断

执行中断期间也可以响应新的(一般是优先级更高的)中断请求

肯定得在保护完现场/恢复完现场之后才能开中断啊!

至于中断隐指令和中断返回都是通过硬件电路实现的,直接一气呵成好吧

中断屏蔽技术:

中断屏蔽字1111:都给屏蔽喽(这个中断源的优先级很高)

中断屏蔽字存储在屏蔽字寄存器当中,这样可以动态地调整各个中断源的优先级,从而为实现多重中断提供了技术支撑

每个中断源都有一个中断屏蔽字,在这个中断源被响应的时候,就可以把它的屏蔽字写到中断屏蔽字寄存器当中了,以此来决定在他进行中断处理的过程中会对哪些其他中断源进行响应!!!

也就是说,当CPU在处理当前中断的过程中,有其他IO端口发出中断请求,但是这个信号不会被立即送到CPU的INT当中,而是由中断控制器8259根据中断屏蔽字和判优逻辑电路来决定要不要给CPU发送一个INT信号(8259决定了中断信号会不会被送出去给CPU)

一个小练习题😄:

实际CPU当中的中断系统: 

中断类型号是通过数据寄存器传给CPU的

中断请求寄存器IR1,IR2...IR7连接的就是IO接口;优先级电路会根据当前中断源的中断屏蔽寄存器等信息决定选择哪一个中断;中断服务寄存器(前面PPT当中用于产生中断向量的)

不管是哪个IO端口(IRx)产生了电信号,中断请求寄存器IRR都会给控制逻辑的INT发一个信号,然后传给CPU的INTR引脚,如果IF=1的话,CPU允许中断,就会通过INTA引脚发给控制逻辑,告诉他我收到了,你可以把中断类型号发给我了,然后控制逻辑控制8259通过和CPU数据寄存器相连的线把中断向量发给CPU

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

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

相关文章

【JAVA学习笔记】 51 - 日期类

项目代码 一、第一代日期类 1.Date: 精确到亳秒,代表特定的瞬间 2.SimpleDateFormat:格式和解析日期的类 3.SimpleDateFormat格式化和解析日期的具体类。它允许进行格式化(日期> 文本)、解析(文本->日期)和规范化 public class Date01 {public static voi…

机器学习(python)笔记整理

目录 一、数据预处理: 1. 缺失值处理: 2. 重复值处理: 3. 数据类型: 二、特征工程: 1. 规范化: 2. 归一化: 3. 标准化(方差): 三、训练模型: 如何计算精确度,召…

.NET CORE 3.1 集成JWT鉴权和授权2

JWT:全称是JSON Web Token是目前最流行的跨域身份验证、分布式登录、单点登录等解决方案。 通俗地来讲,JWT是能代表用户身份的令牌,可以使用JWT令牌在api接口中校验用户的身份以确认用户是否有访问api的权限。 授权:这是使用JWT的…

搭建gnn环境

1.无法激活 激活pytorch遇到报错usage: conda-script.py [-h] [--no-plugins] [-V] COMMAND ... conda-script.py: error: arg-CSDN博客 参考教程 【精选】手把手教你在windows10安装GNN相关环境(torchtorch_geometricrdkitdeepchem)_gnn环境相关的包-…

redis6.0源码分析:字典扩容与渐进式rehash

文章目录 字典数据结构结构设计dictType字典类型为什么字典有两个哈希表?哈希算法 扩容机制扩容前置知识字典存在几种状态?容量相关的关键字段定义字典的容量都是2的幂次方 扩容机制字典什么时候会扩容?扩容的阈值 & 扩容的倍数哪些方法会…

matlab中类的分别之handle类和value类——matlab无法修改类属性值的可能原因

写在之前(吐槽) 最近由于变化了一些工作方向,开始需要使用matlab进行开发,哎哟喂,matlab使用的我想吐,那个matlab编辑器又没代码提示,又没彩色,我只好用vscode进行代码编辑&#xf…

EASYX动画效果实现

eg1:绘制小球的动画效果 通过一下的代码实现小球从左向右移动效果&#xff0c;计算小球的移动速度和帧率实现移动效果平和造成视觉上的错觉 #include <stdio.h> #include <easyx.h> #include <iostream> #include <math.h> #define PI 3.14 // 1PI …

springboot在线招聘系统

springboot在线招聘管理系统&#xff0c;java在线招聘管理系统&#xff0c;在线招聘管理系统 运行环境&#xff1a; JAVA版本&#xff1a;JDK1.8 IDE类型&#xff1a;IDEA、Eclipse都可运行 数据库类型&#xff1a;MySql&#xff08;8.x版本都可&#xff09; 硬件环境&#xf…

云服务器的先驱,亚马逊云科技海外云服务器领军者

随着第三次工业革命的发展&#xff0c;移动互联网技术带来的信息技术革命为我们的生活带来了极大的便捷。其中&#xff0c;不少优秀的云服务器产品发挥了不可低估的作用&#xff0c;你或许听说过亚马逊云科技、谷歌GCP、IBM Cloud等优秀的海外云服务器。那么云服务器有哪些&…

Word批量删除文档属性和个人信息方法图解

投标文件中设计敏感信息&#xff0c;在投标前必须删除&#xff0c;Word批量删除文档属性和个人信息方法图解&#xff1a; 右键word文件属性--详细信息&#xff0c;可以查看如下信息&#xff1b; 删除上述信息的办法&#xff1a; 1.打开word文件---文件 2.检查文档、检查文档 检…

【Python · PyTorch】线性代数 微积分

本文采用Python及PyTorch版本如下&#xff1a; Python&#xff1a;3.9.0 PyTorch&#xff1a;2.0.1cpu 本文为博主自用知识点提纲&#xff0c;无过于具体介绍&#xff0c;详细内容请参考其他文章。 线性代数 & 微积分 1. 线性代数1.1 基础1.1.1 标量1.1.2 向量长度&…

分类预测 | Matlab实现KOA-CNN-BiLSTM-selfAttention多特征分类预测

分类预测 | Matlab实现KOA-CNN-BiLSTM-selfAttention多特征分类预测 目录 分类预测 | Matlab实现KOA-CNN-BiLSTM-selfAttention多特征分类预测分类效果基本描述程序设计参考资料 分类效果 基本描述 1.Matlab实现KOA-CNN-BiLSTM-selfAttention开普勒算法优化卷积双向长短期记忆神…

HIT_OS_LAB1 调试分析 Linux 0.00 引导程序

操作系统实验一 姓名&#xff1a;董帅学号&#xff1a;2021111547班级&#xff1a;21R0312 1.1 实验目的 熟悉实验环境掌握如何手写Bochs虚拟机的配置文件掌握Bochs虚拟机的调试技巧掌握操作系统启动的步骤 1.2 实验内容 1.2.1 掌握如何手写Bochs虚拟机的配置文件 boot: f…

使用 Visual Studio Code 编写 TypeScript程序

安装 TypeScript 首先&#xff0c;确保你已经安装了 TypeScript&#xff0c;如果没有安装&#xff0c;请参考https://blog.csdn.net/David_house/article/details/134077973?spm1001.2014.3001.5502进行安装 创建 新建一个文件夹&#xff0c;用vs code打开&#xff0c;在文…

学习笔记---更进一步的双向链表专题~~

目录 1. 双向链表的结构&#x1f98a; 2. 实现双向链表&#x1f41d; 2.1 要实现的目标&#x1f3af; 2.2 创建初始化&#x1f98b; 2.2.1 List.h 2.2.2 List.c 2.2.3 test.c 2.2.4 代码测试运行 2.3 尾插打印头插&#x1fabc; 思路分析 2.3.1 List.h 2.3.2 List.…

基于Qt 的CAN Bus实现

# 简介 从 Qt5.8 开始,提供了 CAN Bus 类,假设您的 Qt 版本没有 CAN Bus,可以参考 Linux 应用编程来操控开发板的 CAN,目前我们主要讲解 Qt 相关的 CAN编程。其实 Qt 也提供了相关的 Qt CAN 的例子,我们也可以直接参考来编程。读者手上需要有测试 CAN 的仪器!否则写好程…

分类预测 | MATLAB实现SSA-CNN-BiGRU麻雀算法优化卷积双向门控循环单元数据分类预测

分类预测 | MATLAB实现SSA-CNN-BiGRU麻雀算法优化卷积双向门控循环单元数据分类预测 目录 分类预测 | MATLAB实现SSA-CNN-BiGRU麻雀算法优化卷积双向门控循环单元数据分类预测分类效果基本描述程序设计参考资料 分类效果 基本描述 1.MATLAB实现SSA-CNN-BiGRU麻雀算法优化卷积双…

python安装库

查看安装的库 按下开始r 输入cmd 查看python版本 查看python所有库 安装一个库 在pycharm里面查看库文件 在pycharm里面安装库 在anaconda里面安装库和查看库

【面试经典150 | 栈】最小栈

文章目录 Tag题目来源题目解读解题思路方法一&#xff1a;辅助栈方法二&#xff1a;一个栈方法三&#xff1a;栈中存放差值 其他语言python3 写在最后 Tag 【设计类】【栈】 题目来源 155. 最小栈 题目解读 本题是一个设计类的题目&#xff0c;设计一个最小栈类 MinStack() …

Linux 基本语句_8_C语言_文件控制

为了解决多个进程同时操作一个文件&#xff0c;产生一些情况&#xff0c;通常对文件进行上锁&#xff0c;已解决对共享文件的竞争 对打开文件进行各种操作&#xff1a; int fcentl(int fd, int cmd, .../*arg*/如果cmd与锁操作有关&#xff0c;那么fcentl函数的第三个参数就要…