漫谈计算机组成原理(七)I/O系统
本文讲什么?
这个系列的文章其实可以分成两个部分,计算机系统的其他硬件结构和CPU。
而我们今天要讲述的内容,就是其他硬件结构中的最后一个部分——I/O(输入输出)系统。
这篇文章主要讲述的就是I/O系统的组成以及I/O系统的工作原理,下面就正式开始I/O系统之旅吧!
I/O设备的组成
说起输入输出系统,其实我们一点都不陌生。从我们开始接触计算机到现在,鼠标、键盘、显示器等可能是我们一直在使用的,但仅仅是这些设备并没有办法组成I/O系统,这只能算是I/O系统的一部分——外围设备(I/O硬件)。除了外围设备,I/O硬件还包括I/O接口。只有硬件没有软禁,这个系统只能是一堆废铁,所以,I/O软件和I/O硬件共同组成了计算机的I/O系统。
I/O软件
所谓I/O软件,简单讲就是用来控制I/O硬件的,分成I/O指令和通道指令两个部分。I/O系统的主要任务就是将用户输入的数据经过处理转换成人能够识别的数据再输出。就比如我现在正在努力的敲键盘,而通过键盘输入的字符经过输入法转换成汉字,最终显示在屏幕上,尽管有些不太准确,但大致上就这这样一个过程。
I/O指令
I/O指令实际上是CPU指令的一部分,基本格式是这样的:【操作码|命令码|设备码】。操作码是一种控制指令,如访存、算数逻辑运算等,命令码是执行具体的指令,比如说算数逻辑运算中的加减乘除,而设备码就是外围设备在I/O系统中的编号。通过I/O指令,就能够实现对I/O设备的基本控制。通道指令
说道通道指令,我们需要先了解一下I/O系统的发展史。
早期的I/O系统,因为设备较少,所以采用I/O设备直接与CPU连接的方式,很明显,设备一旦多了,就会对CPU造成严重的负担,所以有了接口这种连接方式;接口连接在I/O总线和I/O设备之间,起到了桥梁的作用,接口不但能够对数据进行缓冲,还能对中断进行处理,最终采用正确的逻辑,设备们就能分时占用CPU,大大的提高了速率。后来出现的DMA,同样起到了提高效率的作用,DMA能够在主存和I/O设备之间直接交换数据,进一步解放了CPU;虽然DMA方式不错,但是在大型机上面,I/O设备太多,交互十分频繁,CPU不但需要对众多的DMA进行管理,而且控制起来十分复杂,直接影响了CPU的效率,又有了通道这种结构。通道可以理解为一种特殊的处理器,功能和CPU类似,但肯定不如CPU强大,它的作用仅仅是处理经过通道的数据,减轻CPU负担而已。最后就是I/O处理机,这玩意独立于系统而存在,功能更加强大,但不是重点,就不展开介绍了。
继续说通道指令,通道指令是通道自身的指令,用来执行I/O指令,比如读写磁盘、控制I/O设备的工作状态等等。
I/O硬件
I/O硬件基本包括接口和I/O设备两个部分,上面说的其实已经十分全面了,就不再赘述。
I/O系统与主机的信息传输方式
我们之前讲的只是一个铺垫,这一章节最重要的还是主机和I/O系统之间的数据传输。
在讲之前需要先了解一下I/O设备与主机之间的连接方式。
分散连接(辐射式连接):就是I/O系统发展阶段中的第一个阶段,各种设备都直接连接在主机上。这种方式不便于维护,成本相对较高。
总线连接:即用接口将总线和I/O设备连接起来,这样的便于增删设备。
I/O系统与主机的信息传输方式共有5种,这里我值介绍三种,即程序查询方式、程序中断方式、DMA方式。
程序查询方式
这种方式,一张图就很好说明了。
程序查询方式就是利用CPU向I/O设备发送读取指令,然后再检查I/O设备的状态,如果I/O设备已经准备就绪,则一个一个字节的将数据传输到CPU中;如果I/O设备没有准备就绪,则CPU将会不断的向I/O设备发送查询请求,直到I/O设备准备好了。
注意,在CPU不断查询的过程中,原有的程序是被打断了的,如果I/O设备没有准备好,那么原来执行的程序就不会执行,直到I/O设备就绪,且数据读取完毕,程序才会恢复。
上面说的是只有一个设备的情况,CPU会采取踏步查询的方式查询I/O设备是否准备好了。那么如果一个接口连接着多个I/O设备又当如何呢?如下图,当一个设备没有准备好的时候,就向下查询,然后如果还是没有准备好,则循环这个过程。
可以看到,这种方式存在非常鲜明的优先级问题,极端一些,如果第一个设备请求完成一次,接着就进行下一次请求,那么后面的设备可能永远也没有办法得到CPU的“临幸”。
程序中断方式
这种方式就要比第一种方式聪明了,上一种方式是由CPU占据主导地位,而这种方式是由I/O设备占据主导。
只有当I/O设备准备好了以后,才会向CPU发送一个中断请求,表示我已经准备好了,然后CPU执行中断,与I/O设备进行数据交互。
图示如下:
这种方式没有CPU的“原地踏步”式的查询,即CPU不会去等待设备准备好,而是设备准备好了,你直接通知CPU就好了,这无疑大大提高了效率。
注:中断程序的流程如下:保护现场–>中断服务–>恢复现场–>中断返回
这里额外讲述一下中断,实际上有两种中断方式,一种是单重中断,另外一种就是多重中断。
单重中断很好理解,就是中断现行的程序,转而去执行另外一个服务,而多重中断则是在单重中断的基础上建立的。一般来讲,I/O接口中的是否允许中断标记,在一个I/O设备发起中断后就关闭了,也就是不再允许设备中断现在的中断程序,如果遇到特殊情况,如遇到紧急事件需要处理,那么就会中断现在的中断。就叫做你多重中断。
DMA方式
DMA方式就如同一开始讲的那样,DMA直接与主存进行数据交互,不占用CPU的时钟周期,直接I/O设备之间建立通路,再次提升了效率。
我们来看一下DMA方式传送数据的过程:
如图所示,DMA传输数据的过程包括三个过程。
首先是预处理,找到I/O设备输入的数据要存放在主存中的地址,然后找到I/O设备的地址,接着设定数据传送的个数。
接着是数据传送,因为DMA方式并不占用CPU,所以可以在主程序执行的过程中,完成I/O设备的数据传送。
然后是后处理,即将DMA终结掉。
I/O接口
最后,我们来了解下起到了桥梁作用的I/O接口。
如上图所示,I/O接口由数据缓冲寄存器、设备选择电路、设备状态标记、命令寄存器和命令译码器组成。之所以说I/O接口起到了桥梁的作用,是指它一端连接了CPU,另一端则连接了I/O设备,能够有效的保证设备和CPU间 正确的数据交换。
接下来说一下各个模块的作用:
设备选择电路:这个电路是一种比较器,简单可以理解为CPU向接口发送了一个设备地址,而比较器就是拿着这个设备地址去判断究竟那个I/O设备的地址和这个地址相同,如果找到则建立连接。
命令寄存器和命令译码器:起到了传送命令的作用
数据缓冲寄存器:缓冲从I/O设备中读取到的信息,或者是把CPU中传给I/O设备的数据缓存。
设备状态标记:可以用于标记设备的工作状态、标记设备是否准备完成、标记是否可以向CPU发送中断请求等
总结
本文介绍了I/O系统的组成,重点在介绍三种数据的传送方式。希望能够帮助到大家更好的理解I/O系统,感谢阅读!
喜欢我文章的同学,可以帮忙点个赞、关注一下我。
公众号:最高权限比特流
漫谈计算机组成原理(七)I/O系统的更多相关文章
- linux的系统组成和计算机组成原理,linux常用操作
Linux入门 linux简介 学习目的:linux服务器操作系统稳定长期运行,python,pycharm装于linux上 linux系统组成 应用软件:调用系统软件接口 linux操作系统分两 ...
- 计算机组成原理实验之CPU组成与指令周期实验
(实验五 CPU组成与指令周期实验) 课程 计算机组成原理实验 实验日期 2015 年 12 月 8 日 一.实验目的 1.将微程序控制器同执行部件(整个数据通路)联机,组成一台模型计算机. 2. ...
- 重学计算机组成原理(五)- "旋转跳跃"的指令实现
CPU执行的也不只是一条指令,一般一个程序包含很多条指令 因为有if-else.for这样的条件和循环存在,这些指令也不会一路平直执行下去. 一个计算机程序是怎么被分解成一条条指令来执行的呢 1 CP ...
- 计算机组成原理 — CPU 中央处理器
目录 文章目录 目录 前文列表 逻辑电路部件 组合逻辑电路 时序逻辑电路 阵列逻辑电路 中央处理器(CPU) 控制单元(控制器) 运算单元(运算器) 存储单元(寄存器组和片内缓存) CPU 的工作原理 ...
- 《计算机组成原理 》& 《计算机网络》& 《数据库》 Roadmap for self-taugh student
计算机组成原理: UCB的这门课绝对是不错的资源. Great Ideas in Computer Architecture (Machine Structures) B站:https://www.b ...
- 计算机组成原理往年试题以及答案(tzf!!!)
计算机组成原理往年试题以及答案(下载链接!!!) 太子妃升职记(1~36) ::http://pan.baidu.com/s/1dDP5Kqd
- VB.NET版机房收费系统---七仙女之系统登录
VB.NET第一版机房收费系统,告一段落,验收的时候.问题也是大大的存在,没实用上设计模式,什么触发器.存储过程,都没实用上.看看其她小伙伴的,七层实现登录?那是什么东东,相比較我的三层而言,多了两倍 ...
- Wix打包系列(七) 添加系统必备组件的安装程序
原文:Wix打包系列(七) 添加系统必备组件的安装程序 我们知道在vs的打包工程中添加系统必备组件是一件很容易的事情,那么在wix中如何检测系统必备组件并在安装过程中安装这些组件.这里以.Net Fr ...
- 一、变量.二、过滤器(filter).三、标签(tag).四、条件分支tag.五、迭代器tag.六、自定义过滤器与标签.七、全系统过滤器(了解)
一.变量 ''' 1.视图函数可以通过两种方式将变量传递给模板页面 -- render(request, 'test_page.html', {'变量key1': '变量值1', ..., '变量ke ...
随机推荐
- struts2--验证器
1.输入验证: --struts2提供了一些基于Xwork Validation Framework的内建验证程序,使用这些验证程序不需要变编程,只要在一个XML文件里进行声明,声明的内容如下: &g ...
- Golang基础之文件操作
目录 文件读取 os.open文件读取 os.open循环读取 bufio文件读取 bufio循环读取 ioutil读取整个文件 文件写入 os.OpenFile文件写入 bufio.NewWrite ...
- 「CF5E」Bindian Signalizing
传送门 Luogu 解题思路 很显然的一点,任何一条可能成为路径的圆弧都不可能经过最高的点,除非这条路径全是最高点. 所以我们先把最大值抠掉,把剩下的按原来的顺序排好. 从前往后.从后往前扫两次,用单 ...
- 「POJ1147」The Buses
传送门 POJ Vjudge 解题思路 可以首先预处理一下可能成为一条线路的所有方案,然后把这些可能的方案按照长度降序排序,即按照路线上的时间节点从多到少排序. 因为这样我们就可以先确定更多的时刻的状 ...
- POI 2001 Goldmine 线段树 扫描线
题目链接 http://www.acm.cs.ecnu.edu.cn/problem.php?problemid=1350 http://main.edu.pl/en/archive/oi/8/kop ...
- DEDE后台升级后不显示编辑器
dede5.7不显示编辑器不能编辑文章的解决办法:进入系统后台系统配置-系统基本参数-核心设置将fck换成ckeditor保存,当然需要fck编辑器也可以到dede官网下载.dede5.7不显示编辑器 ...
- 2.13 阶段实战 使用layui重构选课系统
一.说在前面 昨天 学习表单校验插件validate,并使用ajax 自定义校验规则 今天 使用layui重构选课系统 二.题目要求 1.项目需求: 本项目所开发的学生选课系统完成学校对学生 ...
- mac flutter 创建过程及遇到的问题
参考: 1.入门: 在macOS上搭建Flutter开发环境 系统要求 2.mac配置环境变量 1.打开终端 2.clone flutter 命令: git clone -b beta https:/ ...
- 安卓10GB内存旗舰手机的普及,能成为拯救DRAM厂商的救命稻草吗?
你对2019年手机即将展现出的全新变化,有哪些期待?是全新的处理器.更名副其实的全面屏,还是愈发强大的拍照功能,抑或折叠屏幕?但不管你有怎样的期待,手机厂商似乎总是"不解风情".常 ...
- jmeter抓取cnode网站token值
前置条件:已经登录 1.线程组下面先添加HTTP信息头管理器 1.1 jmeter向服务器发送http请求时,需要验证 cookie的等设置信息给到服务器去识别,因此,在发送请求前,我们一般会把相关需 ...