欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 文旅 > 八卦 > 第七章 输入/输出系统

第七章 输入/输出系统

2024/10/24 6:39:00 来源:https://blog.csdn.net/qq_44419734/article/details/142142440  浏览:    关键词:第七章 输入/输出系统

一、I/O接口

1.I/O接口的功能

I/O接口:又称I/O控制器(I/O Controller)、设备控制器,负责协调主机与外部设备之间的数据传输。

I/O接口示例


作用:

  • 数据缓冲: 通过数据缓冲寄存器(DBR) 达到主机和外设工作速度的匹配。
  • 错误或状态监测:通过状态寄存器反馈设备的各种错误、状态信息,供 CPU 查用。
  • 控制和定时:接收从控制总线发来的控制信号、时钟信号。
  • 数据格式转换: 串-并、并-串等格式转换。与主机和设备通信: 实现主机 - I/O 接口 - I/O 设备之间的通信。

2.I/O接口的基本结构


内部接口:内部接口与系统总线相连,实质上是与内存、CPU相连。数据的传输方式是并行传输。
外部接口:外部接口通过接口电缆与外设相连,外部接口的数据传输可能是串行方式,因此I/O接口需具有串/并转换功能。
 





 

3.I/O接口的类型

1.按数据传送方式可分为:

        ①并行接口:一个字节或一个字所有位同时传送

        ②串行接口:一位一位地传送。
        note:这里说的数据传送方式指的是外设和接口一侧的传送方式。

2.按主机访问I/O设备的控制方式可分为:

        ①程序查询接口

        ②中断接口

        ③DMA接口


3.按功能选择的灵活性可分为:

        ①可编程接口

        ②不可编程接口

4.I/O端口及其编址

I/O端口:IO控制器中的各种寄存器为I/O端口。

Q---》如何访问I/O端口?

        I/O端口要想能够被CPU访问,必须要有端口地址,每一个端口都对应着一个端口地址。

编址方式:

统一编址独立编址
概念把I/O端口当做存储器的单元进行地址分配,用统一的访存指令就可以访问I/O端口,又称存储器映射方式I/O端口地址与存储器地址无关,独立编址CPU需要设置专门的输入/输出指令访问端口,又称I/O映射方式。
区分方式靠不同的地址码区分内存和I/O设备,I/O地址要求相对固定在地址的某个部分。靠不同的指令区分内存和I/O设备
优点①不需要专门的输入 / 输出指令,所有访存指令都可直接访问端口,程序设计灵活性高。
②端口有较大的编址空间。
③读写控制逻辑电路简单。

①端口占用了主存地址空间,使主存地址空间变小。

②外设寻址时间长(地址位数多:地址译码速度慢)。

缺点

①使用专用 I/O 指令,程序编制清晰。
②I/O 端口地址位数少,地址译码速度快。

③I/O 端口的地址不占用主存地址空间。

①I/O 指令类型少,一般只能对端口进行传送操作,程序设计灵活性差。

②需要 CPU 提供存储器读 / 写、I/O 设备读 / 写两组控制信号,增加了控制逻辑电路的复杂性。

二、I/O方式

输入/输出系统实现主机与I/O设备之间的数据传送,可以采用不同的控制方式,各种方式在代价、性能、解决问题的着重点等方面各不相同。

1.程序查询方式

        信息交换的控制直接由 CPU 执行程序实现。程序查询方式接口中设置一个数据缓冲寄存器(数据端口)和一个设备状态寄存器(状态端口)。
主机进行 I/O 操作时,先读取设备的状态并根据设备状态决定下一步操作究竟是进行数据传送还是等待。
 

程序查询方式流程图

根据上述流程④中查询方式的不同:程序查询方式可分为如下两类:
        1)独占查询:CPU 100% 的时间都在查询 I/O 状态:完全串行。
        2)定时查询:在保证数据不丢失的情况下,每隔一段时间 CPU 就查询一次 I/O 状态。查询的间隔内 CPU 可以执行其他程序。




CPU 一旦启动 I/O,必须停止现行程序的运行,并在现行程序中插入一段程序。
        主要特点:CPU 有 “踏步” 等待现象;CPU 与 I/O 串行工作。
        优点:接口涉及简单,设备量少。
        缺点:CPU 在信息传送过程中花费很多时间用于查询和等待,而且在一段时间只能和一台外设交换信息,效率大大降低。

2.程序中断方式

①程序中断的基本概念

        程序中断:当计算机在执行程序时,出现了某种急需处理的异常情况和特殊请求,CPU暂时中止现行程序,而转去对这些异常情况或特殊请求进行处理,处理完毕后再返回到原程序的断点,继续执行原程序。

1)中断请求的分类:

②程序中断的工作流程


1)中断请求
        中断源是请求 CPU 中断的设备或事件,一台计算机允许有多个中断源。每个中断源向 CPU 发出中断请求的时间是随机的。
        为了记录中断事件并区分不同的中断源,中断系统需对每个中断源设置中断请求标记触发器INTR。当其状态为 “1” 时,表示中断源有请求。这些触发器可组成中断请求标记寄存器,该寄存器可集中在 CPU 中,也可分散在各个中断源中。 


2)中断响应判优
        中断响应优先级是指 CPU 响应中断请求的先后顺序。由于许多中断源提出中断请求的时间都是随机的,因此当多个中断源同时提出请求时,需通过中断判优逻辑来确定响应哪个中断源的请求,中断响应的判优通常是通过硬件排队器(或中断查询程序)实现的。

   中断判优既可以用硬件实现,也可用软件实现:

        硬件实现是通过硬件排队器实现的,它既可以设置在 CPU 中,也可以分散在各个中断源中;

        软件实现是通过查询程序实现的。

        对应的优先级设置:

                1. 硬件故障中断属于最高级,其次是软件中断;

                2. 非屏蔽中断优于可屏蔽中断;
                3.DMA 请求优于 I/O 设备传送的中断请求;
                4. 高速设备优于低速设备;
                5. 输入设备优于输出设备;
                6. 实时设备优于普通设备。



3)CPU响应中断的条件
        对于外中断,CPU 是在统一的时刻即每条指令执行阶段结束前向接口发出中断查询信号,以获取 I/O 的中断请求,也就是说,CPU 响应中断的时间是在每条指令执行阶段的结束时刻。
CPU 响应中断必须满足以下 3 个条件:
        (1)中断源有中断请求。
        (2)CPU 允许中断即开中断。
        (3)一条指令执行完毕,且没有更紧迫的任务。


4)中断响应过程(中断隐指令)
        CPU 响应中断后,经过某些操作,转去执行中断服务程序。这些操作是由硬件直接实现的,我们将它称为中断隐指令。中断隐指令并不是一条具体的指令,而是 CPU 在检测到中断请求时自动完成的一系列动作。本质上是硬件的一系列自动操作。它所完成的操作如下:
        (1)关中断
        在中断服务程序中,为了保护中断现场(即 CPU 主要寄存器中的内容)期间不被新的中断所打断,必须关中断,从而保证被中断的程序在中断服务程序执行完毕之后能接着正确地执行下去。

        (2)保存断点
        为了保证在中断服务程序执行完毕后能正确地返回到原来的程序,必须将原来程序的断点(即程序计数器(PC)的内容)保存起来。可以存入堆栈,也可以存入指定单元。

        (3)引出中断服务程序

        引出中断服务程序的实质就是取出中断服务程序的入口地址并传送给程序计数器(PC)。


5)中断向量
        中断识别分为向量中断和非向量中断两种。非向量中断即软件查询法。每个中断源都有一个唯一的类型号,每个中断类型号都对应一个中断服务程序,每个中断服务程序都有一个入口地址,即中断向量,CPU 必须找到入口地址。把系统中的全部中断向量集中存放到存储器的某个区域内:这个存放中断向量的存储区就称为中断向量表

6)中断处理过程
        ①关中断

        ②保存断点。
        ③中断服务程序寻址

        ④保存现场和屏蔽字:进入中断服务程序后首先要保存现场和中断屏蔽字,现场信息是指用户可见的工作寄存器的内容,它存放程序执行到断点处的现行值。

        ⑤开中断:允许更高级中断请求得到响应,以实现中断嵌套。

        ⑥执行中断服务程序:这是中断请求的目的。

        ⑦关中断:保证在恢复现场和屏蔽字时不被中断。

        ⑧恢复现场和屏蔽字:将现场和屏蔽字恢复到原来的状态。

        ⑨开中断、中断返回:中断服务程序的最后一条指令通常是一条中断返回指令,使其返回到原程序的断点处,以便继续执行原程序。
        note:①~③是中断隐指令(硬件自动)完成。④~⑨由中断服务程序完成。

③多重中断和中断屏蔽技术

1)单重中断 vs 多重中断
单重中断:执行中断服务程序时不响应新的中断请求。
多重中断:又称中断嵌套,执行中断服务程序时可响应新的中断请求。

中断处理流程的比较

2)中断屏蔽技术
中断屏蔽技术主要用于多重中断,CPU 要具备多重中断的功能,须满足下列条件。
        ①在中断服务程序中提前设置开中断指令。
        ②优先级别高的中断源有权中断优先级别低的中断源。
每个中断源都有一个屏蔽触发器,1 表示屏蔽该中断源的请求,0 表示可以正常申请,所有屏蔽触发器组合在一起,便构成一个屏蔽字寄存器,屏蔽字寄存器的内容称为屏蔽字。
屏蔽字设置的规律:
        1. 一般用 “1” 表示屏蔽,“0” 表示正常申请。
        2. 每个中断源对应一个屏蔽字(在处理该中断源的中断服务程序时,屏蔽寄存器中的内容为该中断源对应的屏蔽字)。
        3. 屏蔽字中 “1” 越多,优先级越高。每个屏蔽字中至少有一个 “1”(至少要能屏蔽自身的中断)。

3.DMA方式

        DMA 方式是一种完全由硬件进行成组信息传送的控制方式,它具有程序中断方式的优点,即在数据准备阶段,CPU 与外设并行工作。DMA 方式在外设与内存之间开辟了一条 “直接数据通路”,信息传送不再经过 CPU,降低了 CPU 在传送数据时的开销,因此称为直接存储器存取方式。由于数据传送不经过 CPU,因此不需要保护、恢复 CPU 现场等烦琐操作。        

        这种方式适用于磁盘、显卡、声卡、网卡等高速设备大批量数据的传送,它的硬件开销比较大。在 DMA 方式中,中断的作用仅限于故障和正常传送结束时的处理。

①DMA方式的特点

特点:

  1. 它使主存与 CPU 的固定联系脱钩,主存既可被 CPU 访问,又可被外设访问。
  2. 在数据块传送时,主存地址的确定、传送数据的计数等都由硬件电路直接实现。
  3. 主存中要开辟专用缓冲区,以及时提供和接收外设的数据。
  4. DMA 传送速度快,CPU 和外设并行工作,提高了系统效率。
  5. DMA 在传送开始前要通过程序进行预处理,结束后要通过中断方式进行后处理。

②DMA控制器的组成




note:在 DMA 传送过程中,DMA 控制器将接管 CPU 的地址总线、数据总线和控制总线,CPU 的主存控制信号被禁止使用。而当 DMA 传送结束后,将恢复 CPU 的一切权利并开始执行其操作。

③DMA的传送方式

        主存和 DMA 控制器之间有一条数据通路,因此主存和 I/O 设备之间交换信息时,不通过 CPU。但当 I/O 设备和 CPU 同时访问主存时,可能发生冲突。

为了有效地使用主存,DMA 控制器与 CPU 通常采用以下 3 种方法使用主存。

1)停止CPU访问主存

        当 I/O 设备有 DMA 请求时,由 DMA 接口向 CPU 发送一个停止信号,使 CPU 放弃总线控制权,停止访问主存,直到 DMA 传送一块数据结束。数据传送结束后,DMA 接口通知 CPU 可以使用主存,并把总线控制权交回给 CPU。

        优点:控制简单

        缺点:CPU处于不工作状态或保持状态未充分发挥CPU对主存的利用率

2)DMA与CPU交替访存
 

        优点:不需要总线使用权的申请、建立和归还过程

        缺点:硬件逻辑更为复杂

3)周期挪用

        由于 I/O 访存的优先级高于 CPU 访存(I/O 不立即访存就可能丢失数据),因此由 I/O 设备挪用一个存取周期,传送完一个数据字后立即释放总线。

        当 I/O 设备有 DMA 请求时,会遇到 3 种情况:

                (1)CPU 此时不访存(不冲突)

                (2)  CPU 正在访存(存取周期结束让出总线)

                (3) CPU 与 DMA 同时请求访存(I/O 访存优先)

        优点:既实现了I/O传送,又较好地发挥了主存与CPU的效率

        缺点:每挪用一个主存周期,DMA接口都要申请、建立和归还总线控制权


 

④DMA的传送过程


 

⑤DMA方式和中断方式的区别
 

中断DMA
数据传送程序控制
程序的切换 -->保存和恢复现场
硬件控制
CPU只需进行预处理和后处理
中断请求传送数据后处理
响应指令执行周期结束后响应中断每个机器周期结束均可,总线空闲时即可响应DMA请求
场景CPU控制,低俗设备DMA控制器控制,高速设备
优先级优先级低于DMA优先级高于中断
异常处理能处理异常事件仅传送数据

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com