I_O系统

I/O系统概念

  • 外部设备:包括输入/输出设备及通过输入/输出接口才能访问的外部设备;
  • 接口:在各个外设与主机之间传输数据时进行各种协调工作的逻辑部件。协调包括传输过程中速度的匹配、电平和格式转换;
  • 输入设备:用于向计算机系统输入命令和文本、数据等信息的部件。键盘和鼠标是最基本的输入设备;
  • 输出设备:用于将计算机系统中的信息输出到计算机外部进行显示、交换等的部件。显示器和打印机是最基本的输出设备;
  • 外存设备:指除计算机内存及CPU缓存外的存储器。如硬磁盘、光盘等;

I/O系统构成

  • I/O软件。包括驱动软件、用户程序、管理程序、升级补丁等。通常采用I/O指令和通道指令实现CPU与I/O设备的信息交换。
  • I/O硬件。包括外部设备、设备控制器和接口、I/O总线等。通过设备控制器来控制I/O设备的具体动作,通过I/O总线与主机(总线)相连。

image.png

I/O接口

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

  • 进行地址译码和设备选择。

CPU送来选择外设的地址码后,接口需要进行译码以产生设备选择信息。

  • 实现主机和外设的通信联络机制。

解决主机与外设的时序配合问题。

  • 实现数据缓冲。

设置数据缓冲器以缓解CPU与外设之间速度的不匹配。

  • 信号格式的转换。

外设与主机的电平、数据格式等可能存在差异,接口应提供计算机与外设的信号格式的转换功能,如电平转换、并/串转换或串/并转换、模/数或数/模转换等。

  • 传送控制命令和状态信息。

CPU要启动某一外设时,通过接口中的命令寄存器向外设发送启动命令;外设准备就绪时,将“已准备”状态信息送回接口的状态寄存器,并反馈给CPU。
外设向CPU提出中断请求时,CPU也应有相应的响应信号反馈给外设。

I/O接口结构

数据缓冲寄存器、状态/控制寄存器

I/O接口在主机侧通过I/O总线与内存、CPU相连。通过数据总线,在数据缓冲寄存器和内存或CPU的寄存器之间进行数据传送。

接口和设备的状态信息被记录在状态寄存器中,通过数据线将状态信息送到CPU。
CPU对外设的控制命令也通过数据线传送,一般将其送到I/O接口的控制寄存器。
控制寄存器和状态寄存器在传送方向上是相反的,并且使用时间上是错开的,所以可以将二者合二为一。

对数据缓冲寄存器、状态/控制寄存器的访问是通过相应的指令来完成的,通常这类指令叫做I/O指令。
I/O指令只能在操作系统内核的底层I/O软件中使用,是一种特权指令

I/O控制逻辑部件

地址线用于给出要访问的I/O接口中的寄存器(端口)的地址,和控制线上的读写控制信号一起被送到I/O控制逻辑部件。此外,控制线还会传递一些仲裁信号和握手信号。
I/O控制逻辑部件还要有对控制寄存器里的命令字进行译码的功能,并将译码信号传递给外设界面控制逻辑以送给外设,同时将数据缓冲寄存器中的数据发送给外设或从外设读入数据。同时,它还有收集外设状态到状态控制寄存器的功能。

端口是接口电路中可以读/写的寄存器。
若干端口 + 相应的控制逻辑 = 接口

image.png
image.pngimage.png

I/O端口类型

  • 按数据传送方式分类
    • 并行接口(一次一字节所有位同时传送)
    • 串行接口(一位一位地传送)
  • 按主机访问I/O设备的控制方式分类
    • 程序查询接口
    • 中断接口
    • DMA接口
    • 通道接口
  • 按功能选择的灵活性分类
    • 可编程接口
    • 不可编程接口

I/O端口编址

I/O端口是指接口电路中可被CPU直接访问的寄存器,主要由数据接口、状态接口、控制接口。
通常,CPU能对数据接口执行读/写操作,对状态接口只能执行读操作,对控制接口只能执行写操作。
image.pngimage.pngimage.png

I/O控制方式

image.pngimage.pngimage.pngimage.pngimage.png

程序查询方式

信息交换的控制完全由CPU执行程序实现。
image.pngimage.pngimage.png

程序中断方式

image.pngimage.png

关于中断:操作系统概述

DMA方式

image.png
image.pngimage.png

  1. 预处理用以测试I/O设备状态,启动I/O设备后,CPU继续执行原来的程序,直至I/O设备准备好发送的数据或接收的数据时,I/O设备向DMA控制器发送DMA请求,再由DMA控制器向CPU发送总线请求(有时这两步统称为DMA请求)
  2. 数据传送中,DMA的数据传输可以以单字节(或字)为单位,也可以以数据块为单位。

对于以数据块为单位的传送(如磁盘),DMA占用总线后的数据输入和输出都是通过循环来实现的。

  1. 后处理中,DMA控制器向CPU发送中断请求,中断服务程序做DMA结束处理,包括校验送入主存的数据是否正确、测试传送过程中是否出错以及决定是否继续使用DMA传送其他数据等。

image.png
DMA与CPU交替访存,适用于CPU工作周期比主存存储周期长的情况。
周期挪用,在CPU与DMA同时访存时,DMA优先挪用几个周期传送数据,传送完一个数据后立即释放总线,是一种单字传送方式。
image.pngimage.png

posted @   青子Aozaki  阅读(71)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 分享4款.NET开源、免费、实用的商城系统
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 记一次.NET内存居高不下排查解决与启示
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
点击右上角即可分享
微信分享提示