I/O知识点汇总

来源:互联网 发布:ro膜纯水量算法 编辑:程序博客网 时间:2024/06/05 15:51

I/O设备分类:

  1. 按使用特性
    人机交互类外设:打印机、显示器、鼠标、键盘等
    存储设备:磁盘、磁带、光盘等
    网络通信设备:网络接口、调制解调器等

  2. 按传输速率分类
    低速设备:每秒几个到数百个字节(< KB/s),如键盘、鼠标
    中速设备:每秒数千个字节至数万个字节,如激光打印机
    高速设备:数百个千字节至千兆字节(>100 KB/s),如磁带机、光盘机

  3. 信息交换的单位分类
    块设备:信息的存取以数据块为单位,读写的基本单位是数据块,如磁盘
    字符设备:用于数据输入输出的设备为字符设备,读写的基本单位是字符,如交互式终端机、打印机


设备控制器

什么是设备控制器?

设备控制器是计算机中的一个实体,物理上看控制器是一块接口卡或主板上的一个功能模块。主要职责是控制一个或多个I/O设备,以实现CPU与I/O设备之间的数据交换。设备控制器收到命令后,CPU可以转向执行其他工作,而让设备控制器自行完成具体的I/O操作。当命令执行结束后,控制器发出一个中断信号,OS重新获得CPU控制权并检查执行结果。这样把CPU解脱出来。

设备控制器的功能

设备地址识别:识别I/O端口,使I/O操作与设备对应。

接收和识别命令指挥设备执行:接收通道或CPU通过I/O总线发来的命令和参数,存储在控制寄存器中,并对它进行译码识别,转换成适当的电信号,通过控制器与设备的接口向设备发送,控制设备执行相应操作。

接收和记录设备的状态:接收设备发来的电信号,并转换和解释为设备的状态信息,记录在状态寄存器中,供CPU处理使用。

数据交换:通过CPU<—>设备控制器<—>设备的数据交换,实现了CPU与设备之间的数据传递。

数据缓冲:I/O设备的速率较低而CPU和内存的速率却很高,控制器可做数据缓冲。在输出时,暂存从CPU送来的数据,然后以I/O设备所具有的速率将缓存的数据发送给I/O设备;输入时相反。

差错控制:设备控制器可对由I/O设备传来的数据进行差错检测,检查出错误后向CPU报告,CPU将传来的错误数据作废,并重新传送。

设备控制器的组成

这里写图片描述

为了完成上面的功能,设备控制器必须包含以下组成部分:

  1. 与CPU的接口。三类信号线:数据线、地址线和控制线。数据线通常与数据寄存器、控制/状态寄存器相连。
  2. 设备控制器与设备的接口。设备控制器通过这些接口与设备连接,一个接口连一个设备。每个接口中都存在数据、控制和状态三种类型信号。
  3. I/O控制逻辑。CPU将要启动的设备地址通过地址线发送给控制器,通过控制线将I/O命令发给控制器,然后控制器进行译码,并对所选设备进行控制。
  4. 数据寄存器:存放从CPU送来的输出数据、从设备送来的输入数据。
  5. 控制/状态寄存器:存放从CPU送来的控制信息、从设备送来的状态信息。

PC的I/O体系结构

这里写图片描述

I/O端口

CPU与外设的连接和数据交换需要通过接口设备来实现,每个连接到I/O总线上的设备都有自己的I/O地址集,通常称为I/O端口。在IBM PC体系结构中,I/O地址空间一共提供了65536个8位的I/O端口,正好对应16位的端口地址。

有四条专用汇编指令 允许CPU对I/O端口进行读写。即:in、ins、out、outs。

在执行指令时,CPU用地址总线选择所请求的I/O端口,用数据总线在CPU和设备控制器之间传送数据。

I/O端口的寻址方式:

  1. 直接端口寻址:在指令中直接给出要访问的端口地址,端口地址用一个8位二进制数表示,此时最多允许寻址256个端口。
    比如: IN AL,40H ;从端口地址为40H的 端口中取出字节送给寄存器AL
  2. 间接端口寻址:当访问的端口地址数大于等于256时,直接端口寻址不能满足要求,而要采用间接端口寻址方式。此时,端口的地
    址必须由DX寄存器指定,允许寻址64K(0~65535)个端口。
    例如:MOV DX, 309H ;从端口地址为309H的端口中取出字节给AL

总线技术

概念

在计算机系统内个各种子系统如CPU、内存、I/O设备等之间构建共用的信号或数据传输通道,这种可共享连接的传输通道称为总线。如果说主板是一座城市,那么总线就像是城市里的公共汽车。

I/O总线

总线连接的是CPU和I/O设备时,就称为I/O总线。Intel 8086微处理器使用了32位地址总线中的16位对I/O设备进行寻址,使用64位数据总线中的8位、16位或32位来传送数据。每个I/O设备通过设备控制器连接到I/O总线上。


I/O设备控制方式

这里写图片描述

(a) 程序直接控制方式:

CPU给I/O设备发送读取数据的命令,CPU不停的循环测试设备的状态,当发现设备处于ready状态时,CPU就可以与I/O设备进行数据存取操作。CPU和I/O设备之间是串行工作的,CPU的绝大部分时间都处于等待I/O设备完成数据I/O的循环测试中,造成了 CPU资源的极大浪费,CPU的利用率相当低。

(b)中断驱动方式

允许I/O设备主动打断CPU的运行并请求服务,从而解放CPU,使得其向I/O设备控制器发送读命令后可以继续做其他有用的工作。可以分别从I/O控制器和CPU的角度来看这种方式的工作过程。
由于数据中的每个字在存储器与I/O控制器之间的传输都必须经过CPU,导致了这种方式仍然会消耗较多的CPU时间。

(c)DMA方式

DMA,直接存储器存取基本思想是I/O设备和内存之间开辟直接的数据交换通路,彻底解放CPU。

特点:

  1. 基本单位是数据块;
  2. 传送的数据是在设备与内存之间进行;
  3. 仅在一个或多个数据块的开始和结束时,才需CPU的干预,整块数据的传送是在DMA控制器的控制下完成的。

DMA控制器的组成

这里写图片描述

  1. 数据寄存器(DR):暂存从设备到内存或者从内存到设备的数据。
  2. 内存地址寄存器(MAR):输入时,存放把数据从设备传送到内存的起始目标地址;输出时,存放有内存到设备的内存源地址。
  3. 数据计数器(DC):存放CPU本次要读或写的字(节)数。
  4. 命令/状态寄存器(CR):用于接收从CPU发来的I/O命令或有关控制信息或设备的状态信息

工作过程:

CPU读写数据时,它给I/O控制器发出一条命令,启动DMA控制器,然后继续其他工作。之后由DMA控制器处理操作,直接与存储器交互,传送整个数据块,每次传送一个字,当传送完成后,DMA发送一个中断信号给处理器。

中断驱动方式与DMA控制方式的区别:

中断在每个数据需要传输时中断CPU,而DMA是要传送的一批数据全部传送完成后再中断CPU;中断方式数据的传送是在中断处理时由CPU控制完成的,而DMA则是DMA控制器完成的。减少了CPU处理中断的次数

(d)通道控制模式

I/O通道是一种特殊的处理机,可执行指令类型单一,主要局限于I/O操作,专门负责输入/输出;通道没有自己的内存,通道所执行的程序是放在主机的内存中的,通道与CPU共享内存。

工作过程:

当CPU要完成一组相关的读(或写)操作及有关控制时,只需向I/O通道发送一条I/O指令,以给出其所要执行的通道程序的首地址和要访问的I/O设备,通道接到该指令后,通过执行通道程序便可完成CPU指定的I/O任务,数据传送结束时向CPU发中断请求。

与DMA控制方式的区别:

DMA方式中传输的数据块大小、传输的内存位置是CPU控制的,而通道控制模式是由通道控制的;每个DMA控制器只能控制一个I/O设备,而一个通道可以控制多台设备与内存进行数据交换。

未完待续