• I/O系统:I/O设备,I/O接口,I/O端口的编址,I/O指令、通道指令,I/O控制方式 ,补充:中断


    I/O:Input / Output,即输入/输出。

    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设备:输入设备(鼠标,键盘),输出设备(显示器,打印机等),外存储器(简称外存,硬盘,光盘等)。

    其中:显示器(阴极射线管CRT显示器、液晶LCD显示器、LED显示器)

    显示器的性能指标:

    • 屏幕大小:以对角线长度表示。
    • 分辨率:像素个数。屏幕上一个光点就是一个像素。宽的像素 * 高的像素。
    • 灰度级:黑白显示器(例如:kindle)所显示的像素点的亮暗差别;彩色显示器所表现的颜色的不同。灰度级越高,图像层次越清楚逼真。灰度级位数n,则亮度或颜色eq?2%5E%7Bn%7D种。
    • 刷新频率:单位时间内扫描整个屏幕内容的次数。通常显示器刷新频率在60~120Hz。刷新频率超过30Hz才不会感到闪烁。(因光点很快消失,需在消失前重新扫描显示,即刷新)
    • 显示存储器(VRAM):刷新存储器。存储容量由图像分辨率和灰度级决定。至少存储一帧图像信息。

            VRAM容量 =  分辨率 * 灰度级位数。

            VRAM带宽 =  分辨率 * 灰度级位数 * 帧频。

    I/O设备由机械部件和电子部件组成。

    I/O设备的机械部件主要用于执行具体的I/O操作。CPU不能直接控制I/O设备的机械部件。

    I/O设备的电子部件是I/O接口,介于主机和I/O设备的机械部件之间,用于实现CPU对设备的控制(CPU控制I/O接口,I/O接口控制I/O设备的机械部件)。

    I/O接口(又称I/O控制器、设备控制器)

    主机和I/O设备的数据传送,通过I/O接口实现。

    I/O接口种类很多,也会制定相应的标准。大部分I/O接口是可编程的。

    I/O接口可能是串行接口(一位一位数据传送,例如USB),也可能是并行接口(多位数据同时传送)。

    I/O接口是块芯片,常集成在主板上,通过总线(地址总线、数据总线、控制总线)与主机连接。也有的I/O接口集成在南桥芯片(桥接器)中。

    I/O接口中包含一系列寄存器(数据缓冲寄存器、控制寄存器、状态寄存器等)。

    I/O接口的功能:

    • 缓冲数据:CPU速度快,I/O设备速度慢,为了缓解两者速度的矛盾,因此需I/O接口中的数据缓冲寄存器暂存需传送的数据。
    • 数据格式转换:因为CPU到I/O接口大多为并行,也可能串行;外部设备到I/O接口可能串行也可能并行,因此需I/O接口中的串-并转换机构负责数据格式转换(串行-并行转换)。
    • 检测状态和错误:检测设备的状态和错误信息,以便CPU查询。
    • 接收并识别CPU发出的命令。
    • 地址译码和设备选择功能。
    • 控制逻辑,如中断、DMA控制逻辑(允许产生DMA请求信号并在响应后完成DMA传输)、设备操作等。

    CPU --> I/O接口:

    • CPU通过控制总线向I/O接口发送命令、时钟信号等。
    • CPU通过地址总线向I/O接口指明I/O端口。
    • CPU通过查询I/O接口的状态寄存器来获取外部设备的状态或错误。
    • (向I/O设备写数据)CPU通过数据总线向I/O接口的数据缓冲寄存器传送数据;(从I/O设备读数据)CPU通过数据总线从I/O接口的数据缓冲寄存器接收数据存入主存。

    I/O接口:

    • I/O接口通过控制总线向CPU反馈中断请求信号。
    • I/O接口通过数据总线向CPU传送中断类型号。
    • I/O接口通过地址译码逻辑电路将地址信号映射到指定端口。
    • I/O接口通过I/O控制逻辑电路根据控制字(命令字,即CPU对设备发出的具体命令)向设备发出控制信号。
    • (向I/O设备写数据)将I/O接口中的数据缓冲寄存器的数据写入外部设备;(从I/O设备读数据)外部设备向I/O接口的数据缓冲寄存器传送数据。

    注:控制寄存器和状态寄存器因时间错开,有些I/O接口中控制寄存器和状态寄存器为同一个寄存器。

    一个IO接口可以对应一个或者多个设备,每个设备可以有自己的一组寄存器(数据寄存器、控制寄存器、状态寄存器)。CPU通过控制不同组的寄存器,来控制不同的设备。

    I/O接口中能被CPU直接访问的寄存器称为I/O端口(PORT)。 

    I/O端口主要有数据端口、控制端口和状态端口,若干端口加上相应的控制逻辑电路组成接口。

    一般CPU能对数据端口执行读写操作,对控制端口只能执行写操作,对状态端口只能执行读操作。

    4f9fa0e6ea15491292e28592830c4f4f.png

    I/O端口的编址

    一个I/O端口对应一个或一组寄存器,都有各自的编号(即地址)。

    I/O端口的编址方式:统一编址,独立编址。

    (1)统一编址:将I/O端口当做主存单元进行地址分配。将主存划分出一部分作为I/O端口的地址空间。也称为存储器映射方式。一般用于单总线结构的计算机系统中。

            统一的访存指令。访问主存的指令都可以访问I/O端口。使用不同的地址码区分主存和I/O端口。

            控制电路简单,程序设计较灵活,端口有较大编址空间,但占用主存地址空间,地址位数多,译码速度慢。

    (2)独立编址:I/O端口的地址和主存地址是相互独立的。也称为I/O映射方式。

            专门的I/O指令访问I/O端口。使用不同的指令区分内存和I/O端口。在X86中,I/O指令有IN、OUT、INS、OUTS。

            有专门的I/O指令,程序清晰,不占用主存地址空间,地址位数少,译码速度快,但控制电路复杂,I/O指令少,程序设计灵活性差。

    I/O指令,通道指令

    通常,CPU通过I/O指令,访问I/O端口,从而实现主机和外部设备之间的数据传送。

    有通道的系统中,CPU通过I/O指令启动/停止设备、控制通道等,通道通过通道指令完成主机和设备之间的数据传送。

    I/O指令:CPU指令的一部分。I/O指令是只能在操作系统内核使用的特权指令。

    格式:操作码、命令码、设备码。

    • 操作码:识别是否是I/O指令。
    • 命令码:执行什么操作。
    • 设备码:对哪个设备执行操作。

    通道指令:通道能识别的指令。

    通道指令序列组成通道程序,通道程序提前编制好存放在内存中。

    CPU通过I/O指令向通道发出命令(通道程序在内存中的位置、哪个设备等),通道识别并执行一系列通道指令,代替CPU对I/O设备进行统一管理。

    I/O控制方式 

    外部设备(外设)和主机之间的输入/输出控制方式:程序查询方式,程序中断方式,DMA方式,通道控制方式等。

    (1)程序查询方式:也称为程序直接控制方式。

    • CPU启动I/O设备后,不断循环查询I/O设备的状态,等到I/O设备数据准备好,进行数据传送(一般每次传送一个字)。

    CPU和I/O设备只能串行工作。CPU不断轮询检查设备状态,长时间处于忙等状态,CPU利用率低。

    注:从外部设备读数据时,CPU从I/O接口中的数据缓冲寄存器将数据读入CPU寄存器,再将CPU寄存器中的内容写入主存。

    ab6a4687748145b6ab080393ba04e7b1.png​ 

    3fe2ba5084044b1e82e0fc6099a3204e.pngc6e86fa8c6eb41c391c896454f6dac86.png

    (2)程序中断方式:也称中断驱动方式。

    1. CPU启动I/O设备后,CPU继续执行当前程序;
    2. I/O设备准备好数据后,向CPU发出中断请求,CPU响应请求则暂停当前程序,开始处理中断服务程序(I/O设备与主机之间的数据传送);
    3. CPU处理完中断,CPU再继续执行被暂停的程序。

    CPU和I/O设备可并行工作,提高CPU的工作效率,但要每个设备分配相应的中断请求号和中断服务程序,以及增加中断控制器,且每准备好一个字就发出一次中断请求,降低系统性能。

    字符设备常采用中断方式。字符设备:以字符或字节为单位进行数据传送的设备,传输速率慢,不可寻址,例如:鼠标,键盘。

    da07dac0c85542eaa9922e4fe2d6c5fd.png

    7ecd4c432d444407a80530ed0e0fc1f2.png

    (3)DMA方式:需要DMA控制器(又称DMA接口,一种I/O接口,连接高速设备、块设备)。

    DMA,Direct Memory Access,直接主存访问。

    块设备:以“块”为单位进行数据传送的设备,传输速率较快,可寻址,例如:磁盘。

    DMA方式,数据传送时是由DMA控制器控制不需要CPU干预,CPU只涉及开始时向DMA控制器发出命令、数据传送完处理中断请求。

    进一步提高CPU和I/O设备的并行性。但对于多个离散的数据块,CPU需发出多次I/O指令、处理多次中断请求。

    a6b6908274194a8a8845a507588b38d9.png

    【单总线结构】以从I/O设备读数据为例:

    1. CPU启动I/O指令将主机地址、外部设备地址、数据长度等传送到DMA控制器,CPU仍执行当前程序;
    2. I/O设备将数据暂存在DMA控制器的数据缓冲寄存器,每准备好一个字,向DMA控制器发出一次DMA请求;
    3. DMA控制器向CPU申请总线,CPU将总线控制权交给DMA控制器;
    4. DMA控制器控制I/O设备与主机之间数据传送(每次传送一个字,此时CPU不能使用总线不能访问主存);
    5. 一整块或多个连续块的数据传送完,DMA控制器才向CPU发出一次中断请求表明数据已传送完;
    6. CPU响应并处理中断请求。

    【三总线结构】以从I/O设备读数据为例:

    1. CPU启动I/O指令将主机地址、外部设备地址、数据长度等传送到DMA控制器,CPU仍执行当前程序;
    2. I/O设备将数据暂存在DMA控制器的数据缓冲寄存器,每准备好一个字,向DMA控制器发出一次DMA请求;
    3. DMA控制器花费一个存取周期通过专门的DMA总线控制I/O设备和主存之间的数据传送(每次传送一个字,此时CPU不能访问主存);
    4. 一整块或多个连续块的数据传送完,DMA控制器才向CPU发出中断请求表明数据已传送完;
    5. CPU响应并处理中断请求。

    【三总线结构】CPU和DMA控制器都有专门的总线访问主存,在访存时可能产生冲突。

    CPU和DMA控制器访问主存的方式:

    1. DMA控制器传送一整块数据时CPU都不能访问主存,CPU利用率不高;
    2. DMA控制器和CPU交替访问主存,硬件逻辑复杂;
    3. 存取周期挪用:CPU访问主存时DMA控制器等待,CPU不访问主存(或存取周期结束后)DMA控制器访问主存,若同时访问则DMA控制器先访问主存(I/O访存优先)。

    ​(4)通道控制方式:需要硬件设备通道,通道程序提前编制好存放在主存中。

    1. CPU向通道发送I/O指令(通道程序在内存中的位置、哪个设备等),CPU仍执行当前程序;
    2. 通道执行内存中通道程序的一系列通道指令,控制I/O设备完成数据传送;
    3. 通道执行完规定的任务后(即传送完一组数据块),向CPU发出中断请求;
    4. CPU响应并处理中断请求。

    通道控制方式,数据传送时是由通道控制不需要CPU干预,CPU只涉及开始时向通道发出命令、数据传送完处理中断请求。 

    补充:中断

    中断:多道程序中,程序执行过程中,因某些情况,CPU暂停当前程序,去处理其他程序,处理完,再继续原程序。

    引起中断的事件称为中断源。即可以产生中断请求信号的部件为中断源。

    中断源向CPU 发出中断请求信号称为中断请求。

    发生中断时被打断程序的暂停点称为断点。

    CPU暂停当前程序而转为响应中断请求的过程称为中断响应。

    处理中断源的程序称为中断处理程序。

    CPU执行有关的中断处理程序称为中断处理。

    返回断点的过程称为中断返回。

    中断分类:内中断,外中断(狭义上的中断)。

    e5890d07cf1247818cbc16feee3795f0.png

    CPU响应中断必须满足的条件:

    (1)有中断源发出中断请求,

    (2)CPU处于开中断状态(即允许中断),

    (3)一条指令执行完并且没有更紧急的任务。

    CPU响应中断的时间:

    每条指令执行阶段的结束时刻。

    (每条指令执行阶段结束前,CPU向接口发出中断查询信号以获取I/O的中断请求)

    中断判优:多个中断源同时发出中断请求时,通过中断判优逻辑(优先级)响应一个中断源。可由硬件实现(硬件排队器)也可由软件实现(查询程序)。通常使用硬件排队器来实现中断判优。

    3acf78ec6d5b48c292ba427163c381cb.pnge9df7c2aecfc4c42b30dfefef48a5446.png

    中断处理过程(CPU执行):中断隐指令,中断服务程序。

    中断隐指令:

    • 关中断(确保在中断服务程序时,保护中断现场或恢复中断现场不被新的中断打断,中断处理完可以回到原程序正确执行下去),
    • 保存断点(用堆栈或特定存储单元保存当前程序的PC值即程序计数器的内容,保证中断处理后能正确返回原程序),
    • 引出中断服务程序(硬件排队器择优后,通过中断向量地址形成部件映射到对应的向量地址即中断类型号,根据向量地址对应的无条件转移指令(JMP指令)的中断向量,获得中断服务程序的入口地址并传送给PC)。

    7203f6f741454baea575dbb117e95500.png

    中断服务程序:

    • 保护现场(用堆栈或特定存储单元保存通用寄存器和状态寄存器的内容,保证返回原程序时恢复中断时的CPU环境),
    • 中断服务(设备服务,即操作系统内核处理中断),
    • 恢复现场(通过出栈指令或取数指令把之前保存的信息送回到各自寄存器中),
    • 中断返回(通过中断返回指令回到原程序断点处,即把之前保存的PC值即断点送回到PC中)。

    4ab5166583b441bfbafabb27a49b3a4c.png

    多重中断(中断嵌套):

    多重中断:执行中断服务程序时,可响应新的中断请求。但需有选择的响应中断请求。

    中断屏蔽:当CPU检测到中断请求时,中断控制器通过中断屏蔽字决定是否响应中断请求。1表示屏蔽该中断源(即不响应该中断源的中断请求),0表示该中断源可正常申请中断。

    每个中断源必须屏蔽自身(即不能被自身中断);优先级高的中断源可以中断优先级低的中断源(例如:A的优先级高于B,A执行时,B发出中断请求 将被屏蔽不被响应;若B执行时,A发出中断请求,暂停B执行A即A的中断请求被响应)。

    每个中断源都有一个屏蔽触发器,所有屏蔽触发器组合在一起就是屏蔽字寄存器,屏蔽寄存器的内容称为屏蔽字

    c80b062cbb5e44568b1c7de40fee10d6.png

    47c65248de5d4c9b96da369e3a30ca12.png

  • 相关阅读:
    微信小程序自定义按钮触发转发分享功能
    C++经典41问(2个小时快速掌握C++)
    30亿美元并购启示:中美CDM不再“萧规曹随”
    Scatter plot with histograms
    dreamweaver网页设计作业制作 小米商城官网商城购物网页设计 WEB静态网页作业模板 大学生个人购物商城网页代码 dw个人网页作业
    SD3403/SS928 视频采集调试记录
    自调试打印
    JAVA培训之数据库表关联关系
    基于若依ruoyi-nbcio增加flowable流程待办消息的提醒,并提供右上角的红字数字提醒(七)
    怎样选择青少年护眼灯?推荐最好的青少年护眼灯品牌
  • 原文地址:https://blog.csdn.net/yannan20190313/article/details/132628607