码农知识堂 - 1000bd
Python
PHP
JS/TS
JAVA
C/C++
C#
GO
Kotlin
Swift
计算机组成原理 | 输入输出系统
文章目录
输入输出系统系统和I/O控制方式
现代计算机的结构
常见的I/O设备
主机如何与I/O设备进行交互?
I/O控制器(I/O接口)
I/O控制方式简介
DMA控制方式
通道控制方式
I/O系统的基本组成
外部设备
输入设备
输出设备
显示器
阴极射线管(CRT)显示器
打印机
I/O接口
主机如何与I/O设备进行交互?
I/O接口的作用
I/O接口的连接电路
I/O接口
I/O接口的工作原理
接口与端口
统一编址 v.s. 独立编址
I/O端口及其编址
I/O接口的类型
I/O方式——程序查询方式
程序查询方式
程序查询方式流程图
程序查询方式例题
中断的作用和原理
中断的基本概念
中断请求的分类
中断请求标记
中断判优
实现
优先级设置
中断处理过程
中断隐指令
硬件向量法
中断服务程序
多重中断
单重中断与多重中断
扩展(简单了解即可)
I/O方式——程序中断方式
I/O方式——DMA方式
DMA传送方式
DMA传送方式具体过程
DMA方式的特点
DMA方式与中断方式
输入输出系统系统和I/O控制方式
现代计算机的结构
常见的I/O设备
可统称为“外部设备”
主机如何与I/O设备进行交互?
I/O控制器(I/O接口)
I/O控制方式简介
DMA控制方式
通道控制方式
I/O系统的基本组成
外部设备
输入设备
输出设备
显示器
阴极射线管(CRT)显示器
打印机
I/O接口
主机如何与I/O设备进行交互?
I/O接口的作用
I/O接口的连接电路
在这里插入图片描述
I/O接口
I/O接口的工作原理
接口与端口
统一编址 v.s. 独立编址
I/O端口及其编址
I/O接口的类型
I/O方式——程序查询方式
程序查询方式
CPU向打印机发出打印的命令字,用I/O指令OUT输出打印指令,经过打印机驱动程序的处理已经将启动打印的命令字放到寄存器R1中了,然后把它输出到R
n+1
的输出端口
CPU在地址线指明此时要输出的端口的地址是R
n+1
然后再通过控制线指明此时是要对哪个I/O端口进行写操作,把命令字数据通过数据线传到状态/控制寄存器即可
相关的I/O控制逻辑电路根据CPU发过来的命令信号通过控制线给打印机发出相应的控制信号
I/O设备接收到I/O命令就可以开始启动了,当设备启动准备工作完成之后会通过状态线给I/O接口进行反馈
I/O接口接收到设备的ready反馈信号之后会把这个ready信息存放到状态/控制寄存器中,覆盖里面原先的命令字
在此期间CPU会通过这个数据线一直轮询检查状态寄存器是否已经变成ready已经就绪的状态,但是怎么实现轮询检查呢?就是通过IN指令,CPU可以不断执行输入IN这个I/O指令,把状态/控制寄存器的值不断地读到一个寄存器里面,就可以取得状态寄存器里面的值,CPU再测试取得的状态信息是否已经ready就OK了
就绪之后,CPU就可以给打印机输出第一个字符的信息,通过地址线指明此时要输出的端口的地址是R
n+1
,通过控制线指明此时是要往I/O端口里面写入数据,同时通过数据线把字符信息打到数据线上,这3个信号就会导致字符数据被写入数据缓冲寄存器上面
接下来会由I/O控制逻辑会把这个字符的信息传到外设界面控制逻辑再通过数据线输出给打印机并通过控制线发出相应的控制信号
打印完成之后会给I/O接口反馈打印已完成的信号,I/O接口会再次把状态寄存器由忙碌改为就绪的状态
以此类推,直至处理完所有的数据,此时打印工作全部结束,CPU会在驱动程序的帮助下给这个打印机发出一个停机的命令字,在I/O接口的控制下停机的信号同样会被传给打印机,打印机的工作就此停止
程序查询方式流程图
程序查询方式例题
中断的作用和原理
中断的基本概念
中断请求的分类
中断请求标记
中断判优
实现
优先级设置
中断处理过程
中断隐指令
硬件向量法
两级指针避免了一级指针中服务程序修改导致硬件电路也得修改的弊端,一旦中断服务程序修改我们只需修改主存中的中断向量即可
中断服务程序
多重中断
单重中断与多重中断
要保证保护现场和恢复现场时的原子性,保证其一气呵成地保存或恢复完所有现场,不被其他中断程序中断
中断屏蔽字指明了当CPU在处理这个中断源发来的中断请求的时候,应该屏蔽掉其它的哪些中断源的中断请求
比如上图中,如果给键盘设置4个全1的中断屏蔽字,那么当CPU在处理键盘的中断请求的时候,键盘的这4个比特中断屏蔽字就可以保证与键盘相对应的中断服务程序不可以再被中断
扩展(简单了解即可)
I/O方式——程序中断方式
I/O方式——DMA方式
DMA传送方式
DMA传送方式具体过程
预处理的这一阶段,CPU会向这个DNA控制器指明接下来你要读或者要写的那个数据应该存放在主存当中的什么位置,那这个主存的读写指针,这个寄存器英文缩写叫AR,然后还有一个寄存器,就是用于指明设备的读写地址,这个寄存器英文缩写叫DAR,那除此之外还要指明要传送多少个数据,这个寄存器的英文缩写叫WC
好,那这些事情交代清楚之后是不是就可以启动I/O设备了?接下来就会由DMA控制器控制着数据传送的过程,那对于CPU来说,它可以继续执行之前的程序,CPU不用管这个数据传送的过程
那么如果此时我们要输入一个数据,那设备首先是把数据充到DR这个寄存器里边,同时向DMA触发器发出一个高电平信号,让它变为1,当这个控制逻辑检测到DMA请求,检测到这个一个字的传送已经完成之后,它就会向CPU申请总线的控制权,那申请总线的控制权这个信号的英文缩写是HRQ,现在如果说系统总线可以让给DMA控制器使用的话,CPU就会给他一个反馈的信号,这个反馈的信号英文缩写叫HLDA
现在DMA控制器获得了总线的控制权是不是就可以通过控制线、地址线、数据线给主存发出读或者写的命令,那我们这儿说的是数据输入,所以应该是给主存发一个写的命令,同时把数据缓冲寄存器里这几个bit的信息打到数据线上,然后把主存的地址信息打到地址线上,这样的话就完成了一个字的数据传输,那数据传输完了之后,需要让这个主存的地址自动的后移,同时也需要修改这个长度计数器
那这就是一个字的传输,那传输完多个字之后,这个长度计数器会发生溢出,然后这个溢出信号会传送给中断机构,中断机构检测到溢出信号之后会向CPU发出中断请求。接下来CPU在对DMA的中断信号进行一个处理
注意这里DMA请求和DMA中断请求是不一样的两个东西,发生DMA请求的时候意味着我们要和主存传送一个字的数据,而发生DMA中断请求的时候意味着一整块的数据传输已经完成了,所以DMA请求和DMA中断请求是不一样的,不要搞混
那刚才我们捋清楚了数据传送的过程,那数据传送完了之后,CPU收到中断请求就会进行后处理,也就是运行相应的中断服务程序,然后做DMA结束的处理,反正就是做一些善后的工作,做完这些工作之后,CPU继续回去执行主程序就可以
相比于上一小节介绍的程序中断方式来说,程序中断方式,每一个字的传送都需要CPU进行搬运,但是DMA控制器意味着会有DMA,这个小弟帮CPU搬完一整块的数据之后,CPU再进行一次响应,一次处理就可以
DMA方式的特点
上面的DMA方式在传送数据的过程中需要不断地占用系统总线,系统总线是被CPU管理的,由CPU决定要不要把这个系统总线使用权分配给DMA控制器,如果系统总线分配给DMA就意味着CPU暂时不能访问主存
但是现在我们换一种总线的连接方式,就是我们之前提到过的三总线连接方式
为什么要I/O优先呢?原因很简单,如果DMA里面的数据不及时取出的话有可能被后来的数据给重写覆盖导致数据的丢失
DMA方式与中断方式
相关阅读:
minikube部署K8s命令
matlab学习2022.7.4
数字猜谜 帮我猜一下 就猜三个数字就行了
pytorch的buffer学习整理
基于Boost的搜索引擎
【freertos】010-消息队列概念及其实现细节
java设计模式-创建型模式:1-工厂方法模式
393页13万字智慧旅游大脑建设方案
LeetCode47-全排列II-剪枝逻辑
t-io websocket的聊天功能学习记录(二)
原文地址:https://blog.csdn.net/weixin_44043952/article/details/126717585
最新文章
攻防演习之三天拿下官网站群
数据安全治理学习——前期安全规划和安全管理体系建设
企业安全 | 企业内一次钓鱼演练准备过程
内网渗透测试 | Kerberos协议及其部分攻击手法
0day的产生 | 不懂代码的"代码审计"
安装scrcpy-client模块av模块异常,环境问题解决方案
leetcode hot100【LeetCode 279. 完全平方数】java实现
OpenWrt下安装Mosquitto
AnatoMask论文汇总
【AI日记】24.11.01 LangChain、openai api和github copilot
热门文章
十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
奉劝各位学弟学妹们,该打造你的技术影响力了!
五年了,我在 CSDN 的两个一百万。
Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
面试官都震惊,你这网络基础可以啊!
你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
心情不好的时候,用 Python 画棵樱花树送给自己吧
通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
13 万字 C 语言从入门到精通保姆级教程2021 年版
10行代码集2000张美女图,Python爬虫120例,再上征途
Copyright © 2022 侵权请联系
2656653265@qq.com
京ICP备2022015340号-1
正则表达式工具
cron表达式工具
密码生成工具
京公网安备 11010502049817号