计算机组成结构—IO接口(IO控制器)

目录

一、I/O 接口的功能

二、I/O 接口的基本结构

1. 总线连接的数据通路

2. I/O 接口的基本组成

三、I/O 端口及其编址

1. 统一编址

2. 不统一编址

四、I/O 接口的类型


        两个系统或两个部件之间的交接部分,一般就称为 接口。接口可以是硬件上两种设备间的连接电路;也可以是两个软件之间交互的逻辑边界。

        主机与 I/O 设备之间,专门设置一套硬件电路、配合相应的软件控制,实现两者间的信息交互,这就是 I/O 接口。不同的 I/O 设备都有其相应的设备控制器,而它们往往都是通过 I/O 接口与主机取得联系的。

一、I/O 接口的功能

        I/O 接口主要的功能如下:

  • 选址功能:根据 I/O 指令中的设备码进行设备选择;

  • 数据缓冲:I/O 设备速度不一,与 CPU 相差比较大,需要进行数据的缓冲达到速度匹配、防止丢失数据;

  • 串并转换:有些 I/O 设备采用串行传输方式,而 CPU 一般为并行传输,需要进行数据格式转换;

  • 电平转换:I/O 设备的输入输出电平可能与 CPU 不同,需要进行电平转换;

  • 传送控制命令:CPU 会向 I/O 设备发出各种控制信号,需要相应的传输通路;

  • 反馈状态信息:I/O 设备需要将工作状态(比如 “忙” “准备就绪” “错误” “中断请求” 等)报告给 CPU,并且可能需要将状态信息进行保存,供 CPU 查询。

二、I/O 接口的基本结构

        总线结构的计算机中,每一台 I/O 设备都是通过 I/O 接口挂到 I/O 总线上的。

1. 总线连接的数据通路

        由于需要实现设备选择、数据缓冲、传送命令和状态等功能,总线中必须有相应的数据通路:

        上图中的 I/O 总线,就包含了 数据线设备选择线命令线状态线

  • 数据线

        数据线是 I/O 设备与主机之间传送数据的线路。

        数据线的根数一般等于存储字长的位数,通常是 双向的。若采用单向数据总线,则必须用两组才能实现数据的输入和输出功能,而双向数据总线只需一组即可。

  • 设备选择线

        设备选择线用来传送设备码,如果把设备码看做是地址号,那么设备选择线又可称为 地址线

        设备选择线的根数取决于 I/O 指令中设备码的位数,决定了能够连接设备的数量。设备选择线一般是一组,也可以有两组,其中一组用于主机向 I/O 设备发送设备码,另一组用于 I/O 设备向主机回送设备码。

  • 命令线

        命令线主要用来传输 CPU 向设备发出的各种命令信号,比如启动、清除、屏蔽、读、写等。

        命令线是一组单向总线,根数与命令信号的数量有关。

  • 状态线

        状态线主要用来向主机报告 I/O 设备的状态信号,比如设备是否准备就绪、是否向 CPU 发出中断请求等。

        状态线也是一组单向总线。

2. I/O 接口的基本组成

        根据 I/O 接口的功能,以及总线结构中整体的数据通路,就可以推出接口应该具有的硬件配置。

(1)选址功能

        设备码通过设备选择线(地址线)送至所有设备的接口,因此需要每个接口都必须具有选址功能。

        当设备选择线上的设备码与本设备码相符时,发出一个 设备选中信号 SEL,这种功能可通过接口内的设备选择电路来实现。

(2)传送命令的功能

        当 CPU 向 I/O 设备发出命令时,要求 I/O 设备能做出响应,因此通常在 I/O 接口中设有存放命令的 命令寄存器 以及 命令译码器

        命令寄存器用来存放 I/O 指令中的命令码,它受设备选中信号 SEL 控制。命令线和所有接口电路的命令寄存器相连,只有被选中设备的 SEL 信号有效,才会将命令线上的命令码存入命令寄存器。

(3)传送数据的功能

        接口处于主机与I/O设备之间,因此主机与 I/O 设备之间进行数据传输必须经过接口。这就要求接口中具有数据通路,完成数据传送。这种数据通路还应具有 缓冲 能力,也就是能将数据暂存在接口内。

        接口中通常设有 数据缓冲寄存器(Data Buffer Register,DBR),它用来暂存 I/O 设备与主机准备交换的信息,与 I/O 总线中的数据线是相连的。

(4)反映 I/O 设备工作状态的功能

        为了使 CPU 能及时了解 I/O 设备的工作状态,接口内必须设置一些反映设备工作状态的触发器。

        比如,可以用 完成触发器 D工作触发器 B 来标志设备所处的状态。

  • 当 D = 1,B = 0 时,表示 I/O 设备已经准备就绪;

  • 当 D = 0,B = 1 时,表示 I/O 设备正处于工作状态;

  • 当 D = 0,B = 0 时,表示 I/O 设备处于暂停状态。

        由于现代计算机系统中大多采用中断技术,因此接口电路中一般还设有 中断请求触发器 INTR,当为 “1” 时,表示该设备向 CPU 发出中断请求;

        接口内还有 中断屏蔽触发器 MASK,它与中断请求触发器配合使用,完成设备的屏蔽功能。

        所有的状态标志触发器都与I/O总线中的状态线相连。此外,不同的 I/O 设备的接口电路中还可根据需要增设一些其他状态标志触发器。

        这样就可以得到 I/O 接口的基本组成:

        目前大多数 I/O 设备所共用的电路都制作在一个芯片内,作为 通用接口芯片。另一些 I/O 设备专用的电路,制作在 I/O 设备的 设备控制器 中。

三、I/O 端口及其编址

        需要注意区分 “接口” (Interface)和 “端口” (Port)的概念:

        端口 指的是接口电路中的一些寄存器,这些寄存器用来存放数据信息、控制信息和状态信息,相应的端口就称为 数据端口控制端口状态端口

        CPU 执行 I/O 指令中的输入操作时,从端口读入信息;执行输出操作时,将寄存器(比如 ACC)的信息写入到端口中。这样,CPU 对 I/O 设备的操作,就可以转换为对 I/O 端口的操作。一些端口,再加上对应的控制逻辑,就组成了接口。

        CPU 要想访问某个 I/O 端口,就需要对 I/O 端口进行统一编号,每个端口对应一个 端口地址。对 I/O 端口的编址,可以选择跟内存统一,也可以完全独立。

1. 统一编址

        统一编址就是把 I/O 地址看作存储器地址的一部分,也就是把 I/O 端口当做存储器单元统一进行地址分配。也称为 存储器映射方式

        这样,CPU 访问 I/O 端口时就可以直接用访存指令,而不需要专门的 I/O 指令,CPU 控制 I/O 设备更加方便;而缺点是端口会占用内存地址空间,减少了主存容量。

2. 不统一编址

        不统一编址就是 I/O 地址和存储器地址完全分开,两者都有自己独立的地址空间,所以又叫 独立编址。也称为 I/O 映射方式

        不统一编址时,CPU 访问一个地址时,就无法从地址码上进行区分;所以必须通过设置专门的 I/O 指令 来访问 I/O 端口。这样就不会占用主存地址空间,用专门的 I/O 指令编写程序也会更加清晰;缺点是让指令系统更加复杂,CPU 需要提供对内存和 I/O 设备的两套读/写控制信号,硬件成本也更高。

四、I/O 接口的类型

        I/O 接口按不同的方式,可以有以下几种分类。

  • 按数据传送方式:分为 并行接口串行接口

  • 按功能选择的灵活性:分为 可编程接口不可编程接口

  • 按通用性:分为 通用接口专用接口

  • 按数据传送的控制方式:分为 程序型接口DMA 型接口

        程序型接口用于连接速度较慢的 I/O 设备,如显示终端、键盘、打印机等;具体的控制方式包括 程序查询方式程序中断方式。DMA 型接口用于连接高速 I/O 设备,如磁盘、磁带等;控制方式采用 DMA 方式

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

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

相关文章

Wakeup Source框架设计与实现

Wakeup Source 为系统组件提供了投票机制,以便低功耗子系统判断当前是否可以进入休眠。 Wakeup Source(后简称:WS) 模块可与内核中的其他模块或者上层服务交互,并最终体现在对睡眠锁的控制上。 1. 模块功能说明 WS的处理逻辑基本上是围绕 com…

哈希经典题目(C++)

文章目录 前言一、两数之和1.题目解析2.算法原理3.代码编写 二、判定是否互为字符重排1.题目解析2.算法原理3.代码编写 三、 字⺟异位词分组1.题目解析2.算法原理3.代码编写 总结 前言 哈希表是一个存储数据的容器,我们如果想要快速查找某个元素,就可以…

【UE5:CesiumForUnreal】——加载无高度地形数据

目录 1.实现目的 2.数据准备 2.1下载数据 2.2 数据切片 3.加载无地形数据 1.实现目的 在CesiumForUnreal插件中,我们加载地图和地形图层之后,默认都是加载的带有高程信息的地形数据,在实际的项目和开发中,有时候我们需要加载无…

Vue3【三】 使用TS自己编写APP组件

Vue3【三】 使用TS自己编写APP组件 运行截图 目录结构 注意目录层级 文件源码 APP.vue <template><div class"app"><h1>你好世界!</h1></div> </template><script lang"ts"> export default {name:App //组…

【乐吾乐3D可视化组态编辑器】数据接入

数据接入 本文为您介绍3D数据接入功能&#xff0c;数据接入功能分为三个步骤&#xff1a;数据订阅、数据集管理、数据绑定 编辑器地址&#xff1a;3D可视化组态 - 乐吾乐Le5le 数据订阅 乐吾乐3D组态数据管理功能由次顶部工具栏中按钮数据管理打开。 在新弹窗中选择数据订阅…

vue2 后端传年月日 时分秒 前端拿到当日时间 做对比 如果是当日的时间 筛选出来

getList () { this.loading true listAlarm(this.queryParams).then(response > { this.listData response.rows const currentDate new Date() const year currentDate.getFullYear() const month currentDate.getMonth() 1 // 月份是从 0 开始计数的&#xff0c;所以…

图像的IO操作

代码&#xff1a; import cv2 as cvimport matplotlib.pyplot as plt​#读取图像img cv.imread("../data/images/zidane.jpg")​#显示图像#2.1 OpenCVcv.imshow("dili",img)cv.waitKey(0)cv.destroyAllWindows()​#2.2 matplotlibplt.imshow(img[:,:,::-…

[matlab]折线图之多条折线如何绘制实心圆作为标记点

使用MarkerFaceColor是标记点填充的颜色&#xff0c;b&#xff0c;表示blue&#xff0c;蓝色 plot(x, a, d--, MarkerFaceColor, b); % 绘制仿真结果的曲线如果一张图多条曲线那么每条曲线需要单独调用一次plot&#xff0c;每个plot间用hold on 连接 plot(x, a, d--, MarkerF…

Oracle和mysql中插入时间字段

例如有id 和 times两个字段 Oracle insert into xxx values|(1,sysdate) mysql insert into xxx values(1,now()) 在 MySQL 中&#xff0c;SYSDATE() 函数也是可用的&#xff0c;它与 NOW() 类似&#xff0c;但略有不同&#xff1a; NOW…

Linux网络配置命令

文章目录 Linux网络配置的重要命令ifconfig命令网卡配置信息 hostname命令route命令创建一个路由创建默认路由删除路由&#xff1a; netstat命令ss命令lsof命令telnet命令ping命令traceroute命令nslookup命令两个重要相关文件 Linux网络配置的重要命令 ifconfig命令 ifconfig…

基于springboot实现社区养老服务系统项目【项目源码+论文说明】计算机毕业设计

基于springboot实现社区养老服务系统演示 摘要 现代经济快节奏发展以及不断完善升级的信息化技术&#xff0c;让传统数据信息的管理升级为软件存储&#xff0c;归纳&#xff0c;集中处理数据信息的管理方式。本社区养老服务系统就是在这样的大环境下诞生&#xff0c;其可以帮助…

从0开始学统计-什么是回归?

1.什么是回归&#xff1f; 回归&#xff08;Regression&#xff09;是统计学中一种用于探索变量之间关系的分析方法。它主要用于预测一个或多个自变量&#xff08;输入变量&#xff09;与因变量&#xff08;输出变量&#xff09;之间的关系。在回归分析中&#xff0c;我们尝试根…

PHP质量工具系列之php-depend

php-depend是一个开源的静态代码分析工具&#xff0c;它的主要功能包括&#xff1a; 代码质量分析 复杂度度量&#xff1a;计算类、方法和函数的Cyclomatic Complexity&#xff08;循环复杂度&#xff09;&#xff0c;帮助识别潜在的复杂代码段。 耦合度度量&#xff1a;分析类…

瑞鑫RK3588 画中画 OSD 效果展示

这些功能本来在1126平台都实现过 但是迁移到3588平台之后 发现 API接口变化较大 主要开始的时候会比较费时间 需要找到变动接口对应的新接口 之后 就比较好操作了 经过几天的操作 已实现 效果如下

刷代码随想录有感(95):合并区间

题干&#xff1a; 代码&#xff1a; class Solution { public:static bool cmp(vector<int>& a, vector<int>& b){return a[0] < b[0];}vector<vector<int>> merge(vector<vector<int>>& intervals) {sort(intervals.begi…

MySQL排序操作

025排序操作 select .. from .. order by 字段 asc/descselect empno, ename, sal from emp order by sal asc;asc 不写的话&#xff0c;默认升序 多个字段排序 查询员工的编号、姓名、薪资&#xff0c;按照薪资升序排列&#xff0c;如果薪资相同的&#xff0c;再按照姓名升…

New Work-flow of Circuit Bootstrapping

参考文献&#xff1a; [CGGI17] Chillotti I, Gama N, Georgieva M, et al. Faster packed homomorphic operations and efficient circuit bootstrapping for TFHE. ASIACRYPT 2017 (1): 377-408.[CDKS21] Chen H, Dai W, Kim M, et al. Efficient homomorphic conversion be…

爬取基金收盘价并用pyecharts进行展现

爬取基金收盘价并用pyecharts进行展现 一、用到的第三方包 因为使用到了一些第三方的包&#xff0c;包还是比较大的如果直接从社区下载比较费劲&#xff0c;所以建议配置国内镜像源&#xff0c;这里以清华的镜像源为例。 pip config set global.index-url https://pypi.tuna…

uni微信小程序editor富文本组件如何插入图片

需求 在editor中插入图片&#xff0c;并对图片进行编辑&#xff0c;简略看一下组件的属性&#xff0c;官网editor 组件 | uni-app官网 解决方案 首先要使用到ready这个属性&#xff0c;然后官网有给代码粘过来&#xff0c;简单解释一下这段代码的意思&#xff08;作用是在不同…

坐实了!“神坛企业”也是草台班子

越接近真相&#xff0c;越觉得荒诞&#xff01;这次就算删稿也得说两句&#xff0c;KP基于BMC的“可信计算”&#xff0c;正在沦为业内笑柄。戳破那层保护色&#xff0c;施施然端坐神坛的某厂&#xff0c;内里可能也是个草台班子。 近期&#xff0c;网上流传着几页HW给客户洗脑…