计算机组成原理基础知识-输入和输出设备

1.一些基本的点

2.外部设备

3.I/O接口:功能、结构、工作流程、编址方式、和I/O端口对比

(1)功能:根据下面的结构需要有设备选址、传送命令、传送数据、反应I/O设备工作状态的功能

(2)结构:设备选择电路、命令寄存器和命令译码器、数据缓冲寄存器DBR、设备状态标记(一般包含完成触发器D、工作触发器B、中断请求触发器INTR、屏蔽触发器MASK)、控制逻辑电路

(3)工作流程:CPU首先通过于I/O接口的地址线进行设备选择,I/O接口内部的设备选择电路判定选择的是否是自己。设备状态标记通过状态线反映给CPU当前的状态,如果可以进行数据传输,CPU发送命令给I/O接口,I/O接口通过命令寄存器和命令译码器暂存命令并且将命令转换为外设的控制信号,随后向外设发送控制命令,外设向I/O接口进行数据传输,数据传送到数据缓冲寄存器DBR中,数据传输完成后通过I/O接口和外部设备的状态线将传输完成的状态信息告诉I/O接口,这个信息会去更新设备状态标记。随后再由设备状态标记给到CPU信号,反馈输入完成(中断请求)。CPU收到这个中断请求以后如果想去响应这个中断,就会通过命令线给给中断响应给I/O接口,I/O接口会到CPU中断类型号(也就是中断向量号,这里是由于CPU在启动一个I/O接口的工作以后会去执行别的工作,在I/O接口给到CPU中断请求并且CPU回应中断响应的时候,CPU并不知道这个设备是哪种中断,因此这里需要一个中断类型号)。最后CPU将数据缓冲寄存器种的数据取走。

(4)编址方式:统一编址和独立编址

4.I/O方式

程序查询的方式

程序中断的方式

(1)中断中的一些基本点

(2)中断请求的分类

内中断:CPU内部或主存引起的,也称为异常。异常可以分为故障、自陷、终止。

故障:在引起故障等指令启动后、执行前被检测到的异常事件。比如译码时出现非法操作码、取数时出现缺页和缺段、运算时出现除数为0。

自陷:预先安排的一种中断。

终止:执行过程种出现了计算机无法继续执行的一些硬件故障,程序无法继续执行,只能终止。

外中断

(3)中断请求

为了记录中断事件并且区分不同的中断源,中断系统对每个中断源设置中断请求标记触发器INTR,其状态为1时表示存在中断源请求。

需要注意的是内中断是不可屏蔽的中断,即使在IF为0的情况下也会被响应,而外中断是可屏蔽的中断,在IF为0的情况下中断不会被响应。

(4)中断判优

中断系统一次只能响应一个中断请求,但是在同一时间可能存在多个中断源向CPU发起中断请求,因此需要一定的逻辑判断哪个中断源的优先级别高。这种判定既可以通过硬件来实现也可以通过软件来实现。

硬件排队器

需要注意的是,针对外中断,CPU在每条指令结束前向接口发送中断查询信号,以获取I/O的中断请求。另外CPU能够响应中断的请求需要满足:中断源有中断的请求、CPU允许中断并且开中断、一条指令执行完毕后并且没有更加紧迫的任务。

(5)中断响应

CPU在响应中断后经过某些操作转而去执行中断服务程序,这些操作是由硬件实现的,称之为中断隐指令(并不是指令系系统中的一条真正的指令,没有操作码)。主要内容包含:

关中断:CPU响应中断后,首先需要保护程序的断点和现场信息,在保护断点和现场的过程中,CPU不能响应更高级的中断请求。

保存断点:为了保证中断服务程序执行结束后能够正确的返回到原来的程序,必须将原来程序的断点保存。

引出中断服务程序:实质是取出中断服务程序入口地址,并将这个地址给到PC。引出中断服务程序即可以有软件的方式也可以有硬件的方式,硬件的方式称为硬件向量法

(6)中断向量:中断服务程序的入口地址就是中断向量,各个中断程序的入口地址统一存在存储器的某个区域中,这个存放中断向量的存储区就称为中断向量表。由中断判优操作给出相应信号,这个信号经过中断向量地址的形成部件,可以得到向量地址,也就是中断向量的地址,通过向量地址可以找到具体的中断向量。向量地址有的地方也称为中断类型号,中断类型号和实际的中断向量的地址存在一定的映射关系。

(7)整体工作流程:关中断、保存断点(也就是保存PC值,断点既可以压入堆栈,也可以存入特定的单元)、引出中断服务程序、保存现场和屏蔽字(进入中断服务程序后首先需要保护现场和中断屏蔽字,现场信息是指用户可见的工作寄存器的内容,他存放着程序执行到断点处的现行值,现场信息因为是指令可以直接访问的,所以通常中断服务程序是将其保存在栈中,也就是由软件实现,而对于断点信息由CPU在中断响应开始时自动保存到栈或专门的寄存器中,由硬件实现);开中断(允许更高级的中断请求,实现中断中嵌套中断);执行中断服务程序;关中断;恢复现场和屏蔽字;开中断和中断返回(打开中断,同时返回的原程序的断点处)。

中断字:每个中断源都有一个屏蔽触发器,1表示屏蔽改中断源的请求,0表示可以正常申请,所有屏蔽触发器组合一起便构成一个屏蔽字寄存器,改寄存器的内容称为屏蔽字。每个中断源对应一个中断字,某一个位上的屏蔽信号为1表示的这个位置上的中断源的中断请求时得到不到响应的,每个中断源都是不能被自己中断的,因此中断源中的中断屏蔽字的自己那一位的信号为1,屏蔽字的1越多表示改中断信号源的优先级越高。

DMA方式

DMA传送过程:

预处理:由CPU完成一些准备操作,主要是对寄存器进行一些初始化,首先将主存起始地址放到主存地址计数器(AR)中,如果IO设备是磁盘的话,还需要把I/O设备的地址给到DAR中,需要将传送数据的个数给到传送长度计数器(WC)中,最后启动设备(需要注意的是CPU在执行预处理之后就去执行其他的内容了,剩下的数据传输的工作交给DMA来进行操作)。

数据传送步骤:外设将数据内容给到数据缓冲寄存器中,当数据缓冲寄存器写满的时候,设备就会向DMA请求触发器发送请求,DMA请求触发器会把相关请求给到控制/状态逻辑,控制/状态逻辑会向CPU发送总线请求HRQ。CPU在接收到来自控制/状态逻辑的请求后如果能够响应,就会回应控制/状态逻辑HLDA信号,让出总线的使用权。随后控制/状态逻辑可以通过其和系统总线的之间的控制线,实现对总线的控制。主存地址计数器给到总线需要传输数据的地址,数据缓冲寄存器给到总线具体需要传输的数据,在完成一次的数据传输的时候,需要修改主存地址计数器中下次传输的地址、修改传输长度寄存器中下次传输的长度。此外,还需要判定传送长度计数器中的值是否溢出,如果溢出的话,会给到溢出信号到中断机构中,中断机构给到系统总线中断请求。中断信号会通过系统总线给到CPU,告诉CPU此次传输结束。

后处理:本质上是CPU响应了由中断机构给到系统总线上的中断请求。后处理进行了一个中断服务程序,主要执行的内容是通过校验位对数据进行校验,此外CPU还可能有其他的数据需要继续传输,因此可以在中断服务程序中继续进行预处理和IO设备的启动。

预处理和后处理是需要CPU进行执行的,而数据传送实际是DMA进行操作的,CPU在执行完预处理后就去执行别的程序了。

DMA的传送方式:

停止CPU访存:I/O设备需要有DMA请求的时候,DMA控制器向CPU发送一个停止信号停止CPU工作。

DMA于CPU交替访存:将一个CPU周期分为两个周期C1和C2,C1周期用于DMA访存,而C2用于CPU访存。这种实现往往是CPU的工作周期比主存的存取周期要长的情况,访存的控制完全是由时间来控制的,总线的使用权完全是由C1和C2时间来控制的,不涉及总线使用权的申请、建立、归还等。但是这种方式硬件逻辑上实现是较为复杂的,也就是在一个CPU周期内需要具体把一访存的操作划定到C2周期去,并且CPU和DMA访问主存的时间可能也不是完全那么均匀,因此访问的效率可能也会下降。

周期挪用:DMA需要访问主存的时候CPU让出一个或者多个存储周期给DMA。有三种情况,当DMA需要进行访问主存的时候CPU不需要访问主存,那么不存在冲突;当DMA需要进行访问主存的时候CPU正在访问主存,那么等CPU当前存储周期结束的时候让出总线使用权;当CPU和DMA同时访问主存的时候,DMA优先(这是因为DMA一般是服务于一些高速设备,如果响应不及时的话原有数据可能被新的数据覆盖掉)。

关于中断和CPU的对比:

中断是由程序控制的,其实现需要进行程序的切换、现场保护、恢复现场等操作,而DMA的实现是由硬件实现的,除了预处理和后处理之外,不需要CPU进一步的操作。

对于中断来说,中断请求是用来传输数据的,而对于DMA来说,中断请求是用来进行后处理的(数据的校验,看有没有后续的数据需要进行传输)

对于中断来说,中断响应仅仅能在执行周期结束后才可以响应,而对于DMA来说,中断响应可以在任何机器周期结束后进行响应(取指周期、执行周期后均可),只要CPU不需要占用总线即可。

DMA的优先级高于中断;DMA仅仅能传输数据,不能处理异常;DMA常常用于一些高速设备。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值