1、什么是I/O控制器

由于CPU无法直接控制I/O设备的机械部件,因此I/O设备还要有个电子部件作为CPU和I/O设备机械部件之间的“中介”,用于实现CPU对设备的控制,这个电子部件就是I/O控制器,又称为设备控制器。

I/O控制器是控制计算机输入输出的一个最基本的控制系统,可指挥计算机的各个部件按照指令的功能要求协调工作的部件。它由指令寄存器IR(InstructionRegister)、程序计数器PC(ProgramCounter)和操作控制器OC(OperationController)三个部件组成,对协调整个电脑有序工作极为重要。

下面小编就从功能和控制方式两个方面带大家进一步了解I/O控制器,想学习的客户朋友就一起看下去吧,绝对干货哦!

2、I/O控制器的功能

l接收设备CPU指令:CPU的读写指令和参数存储在控制寄存器中

l向CPU报告设备的状态:I/O控制器中会有相应的状态寄存器,用于记录I/O设备的当前状态。(比如1代表设备忙碌,0代表设备就绪)

l数据交换:数据寄存器,暂存CPU发来的数据和设备发来的数据,之后将数据发给控制寄存器或CPU。

l地址识别:类似于内存的地址,为了区分设备控制器中的各个寄存器,需要给各个寄存器设置一个特定的地址。I/O控制器通过CPU提供的地址来判断CPU要读写的是哪个寄存器。

这里向大家简单介绍常见的几种I/O控制方式,包括程序直接控制方式、中断驱动方式、DMA(直接存储方式)、通道控制方式。

3、I/O控制方式

①程序直接控制方式

CPU向I/O模块发出读写指令,CPU会从状态寄存器中读取I/O设备的状态,如果是忙碌状态就继续轮询检查状态,如果是已就绪,就代表I/O设备已经准备好,可以从中读取数据到CPU寄存器中,读到CPU后,CPU还要往存储器(内存)中写入数据,写完后再执行下一套指令。

优点:实现简单。在读写指令之后,加上实现轮询检查的一系列指令即可。缺点:CPU和I/O设备只能串行化工作,CPU需要一直轮询检查,长期处于忙等状态,CPU利用率很低。

②中断驱动方式

中断驱动方式的思想是允许I/O设备主动打断CPU的运行并请求服务,从而“解放”CPU,使得其向I/O控制器发送读命令后可以继续做其他有用的工作。I/O控制器从CPU接收一个读命令,然后从外围设备读数据,一旦数据读入到该I/O控制器的数据寄存器,便通过控制线给CPU发出一个中断信号,表示数据已准备好,然后等待CPU请求该数据。I/O控制器收到CPU发出的取数据请求后,将数据放到数据总线上,传到CPU的寄存器中。至此,本次I/O操作完成,I/O控制器又可开始下一次I/O操作。这样就使得CPU与I/O设备能够并行工作。

优点:与程序直接控制方式相比,在中断驱动方式中,I/O控制器会通过中断信号主动报告I/O已完成,CPU不再需要不停的轮询。CPU和I/O设备可并行工作,CPU利用率得到明显提升。

缺点:由于数据中的每个字在存储器与I/O控制器之间的传输都必须经过CPU,这就导致了中断驱动方式仍然会消耗较多的CPU时间。

③DMA(直接存储方式)

DMA方式的数据流向是从设备直接放入内存(设备→内存),或者是从内存直接到设备(内存→设备),不再使用CPU作为中间者。CPU在读写数据前要指明要读入多少数据、数据要存放在内存中的什么位置、数据放在外部磁盘的什么位置等问题,然后DMA控制器会根据CPU提出的要求完成数据的读写操作。当整块数据的传输完成后,才向CPU发出中断信号。

优点:数据传输效率以“块”块为单位,仅仅在传送一个或多个数据块的开始和结束时,才需要CPU的干预,CPU的介入性进一步降低。同时。CPU和I/O设备的并行性进一步提升。

缺点:CPU发出一条指令,只能读或写一个或多个连续的数据块。如果读写的数据块不是连续存放的而是离散的,那么CPU要分别发出多条I/O指令,进行多次中断处理才能完成。

④通道控制方式

通道是一种硬件,可以理解为“低配版的CPU”。通道与CPU相比的话,CPU能够处理的指令种类比较多,而通道只能执行单一指令。使用这种控制方式,CPU干涉频率极低,通道会根据CPU的指令执行响应程序,只有完成一组数据块的读写后才需要发出中断信号让CPU干预。

优点:CPU、 通道、I/O设备可并行工作,资源利用率极高。

缺点:实现复杂,需要专门的通道硬件支持。

懵逼了的小伙伴快看这里!贴心小编为你奉上总结表格,一目了然呢!

*博客内容为网友个人发布,仅代表博主个人观点,如有侵权请联系工作人员删除。

计算机io设备是cpu控制的吗,I/O控制器及控制方式,了解一下相关推荐

  1. Linux内核:IO设备通信的控制方式

    IO设备与主机(CPU.内存)之间的通信不是直接的,而是通过设备控制器,设备控制器是IO设备和主机之间的中介.IO设备和进程之间的数据传送方式主要有4种: 1.程序控制方式:又被称为"忙等& ...

  2. 18 操作系统第五章 设备管理 IO设备的基本概念和分类 IO控制器 IO控制方式 IO软件层次结构 IO核心子系统 假脱机技术 设备的分配与回收 缓冲区管理

    文章目录 1 IO设备的基本概念和分类 1.1 什么是I/O设备 1.2 I/O设备分类 2 IO控制器 2.1 I/O设备组成 2.2 I/O控制器功能 2.3 I/O控制器的组成 2.4 寄存器编 ...

  3. 计算机io接口指令控制,计算机接口及IO指令.ppt

    计算机接口及IO指令 输入/输出程序设计 学习目的 1)掌握计算机接口的概念 2)掌握CPU与接口交换信息.CPU控制外部设备的基本原理. 3)理解接口设计的大致过程和方法. 学习目的 4)掌握端口访 ...

  4. 计算机IO系列「一」零拷贝技术

    深入剖析Linux IO原理和几种零拷贝机制的实现 转载自:深入剖析Linux IO原理和几种零拷贝机制的实现 - 知乎 前言 零拷贝(Zero-copy)技术指在计算机执行操作时,CPU 不需要先将 ...

  5. 【操作系统】IO设备

    第五章 IO设备 文章目录 第五章 IO设备 I/O设备的基本概念和分类 I/O控制器 I/O软件层次结构 I/O核心子系统 假脱机技术(SPOOLing技术) 设备的分配与回收 缓冲区管理 I/O设 ...

  6. 计算机通过io接口对什么实现控制器,《微机原理与接口技术》第6章 微计算机IO接口基础.ppt...

    <微机原理与接口技术>第6章 微计算机IO接口基础.ppt 第6章 微计算机IO接口基础 2.间接I/O端口寻址方式 (1) 输入指令格式: IN AL, DX 或 IN AX, DX 指 ...

  7. IO设备在OS中的权衡

    IO设备是操作系统的中断源之一,IO设备包括磁盘,时钟,中断源,显示器,按照数据传送的基本单元分为块设备和字符设备.本文从磁盘这一个IO设备来归纳操作系统中IO设备从硬件到软件的工作方式. 硬件水平观 ...

  8. 【存储知识学习】第二章存走进计算机IO世界--《大话存储》阅读笔记

    2.1IO的通路--总线 IO是通过共享一条总线的方式来实现的.包括用于数据交互的数据总线.传递信号的控制总线.中断与仲裁的中断总线,还有一些是地址总线,用来确认通信时的目标设备. 1.PCI总线 P ...

  9. 计算机io工作方式,QEMU/KVM和VirtIO工作模式

    https://blog.csdn.net/shengxia1999/article/details/52244119 KVM:Kernel-Based Virtual Machine 基于内核的虚拟 ...

  10. 计算机IO系列「零」计算机IO【硬件部分】

    背景:最近遇到了io等待导致我整个系统挂掉的问题,当然是因为其它原因.一只对io从硬件到软件.阻塞和非阻塞这些概念一知半解,故记录一下了解到过程 1..总线: IO是通过共享一条总线的方式来实现的,总 ...

最新文章

  1. UESTC 1811 Hero Saving Princess
  2. iOS开发-自己定义重用机制给ScrollerView加入子视图
  3. R语言ggplot2可视化在ggplot2生成的可视化结果下方显示文本:显示一些关于数据的信息
  4. win7下计划任务schtasks使用详解及错误:无法加载列资源的解决方法1
  5. 各浏览器对document.getElementById等方法的实现差异
  6. VS2008中设置字体大小和添加显示行号
  7. log4j2 配置文件
  8. DataReader不奇怪,该出手时就出手!
  9. 怪兽充电递交IPO招股书:2020年净利润7540万元 阿里为第一大股东
  10. 引导界面滑动导航 + 大于等于1页时无限轮播 + 各种切换动画轮播效果
  11. js文件中可以写html吗,js代码写在HTML正常,分离成js文件再在HTML中引用不起作用...
  12. Python中的split()函数的使用方法
  13. Ubuntu20 运行不了网络助手NetAssist
  14. 测试方案和测试计划区别
  15. c# cad二次开发图表绘制
  16. 2021-2022-1 20212810《Linux内核原理与分析》第一周作业
  17. Mac 拓展屏幕时切换软件窗口停留在Mac 显示器中
  18. Redis - CLUSTER命令中槽管理命令详解
  19. mongodb的单机和集群安装手册
  20. bss段,data段、text段、堆heap和栈stack

热门文章

  1. android双卡切换,OPPOReno双卡双待怎么切换使用?
  2. STM32硬件剖析(STM32F407 定时器功能引脚分配)
  3. 如何将PDF分成每页单独的PDF?3种PDF拆分的方法
  4. Atlas:Ubuntu18.04使用过程中空间爆满的处理(.cache)
  5. Sublime 使用笔记(九):汉字乱码问题的解决方法
  6. 编译原理实验四 C-语言 语法分析程序
  7. 一文搞明白DNS与域名解析
  8. 普通计算机硬件cpu,cpu怎么看型号 教你怎么看电脑cpu型号(软件+硬件)
  9. ubuntu 显示网速 16 18 20 都可以
  10. 视觉SLAM十四讲 报错In function `fmt::v8::detail::error_handler::on_error(char const*)‘