计算机组成原理重要知识点摘录(考研用)——第七章:输入/输出系统
本文参考于《2021年计算机组成原理考研复习指导》(王道考研),《计算机组成原理》
I/O指令与通道指令:
I/O指令:
操作码字段可作为I/O指令与其他指令(如访存指令、算逻指令、控制指令等)的判别代码;命令码体现I/O设备的具体操作;设备码是多台I/O设备的选择码。
I/O指令的命令码一般可表述为如下几种情况:
- 将数据从I/O设备输入主机。例如,将某台设备接口电路的数据缓冲寄存器中的数据读入CPU的某个寄存器(如累加器ACC)
- 将数据从主机输出至I/O设备。例如,将CPU的某个寄存器(如ACC)中的数据写入某台设备接口电路的数据缓冲寄存器内
- 状态测试。利用命令码检测各个I/O设备所处的状态是忙还是准备就绪,以便决定下一步是否可进入主机与I/O设备交换信息的阶段
- 形成某些操作命令。不同I/O设备与主机交换信息时,需要完成不同的操作
I/O指令的设备码相当于设备的地址。
通道指令:
通道指令是对具有通道的I/O系统专门设置的指令,这类指令一般用以指明参与传送(写入或读取)的数据组在主存中的首地址;指明需要传送的字节数或所传送数据组的末地址;指明所选设备的设备码及完成某种操作的命令码。
通道指令又称通道控制字,它是通道用于执行I/O操作的指令,可以由管理程序存放在主存的任何地方,由通道从主存中取出并执行。通道程序即由通道指令组成,它完成某种外围设备与主存之间传送信息的操作。
a.磁盘的容量
一个磁盘所能存储的字节总数称为磁盘容量, 磁盘容量有非格式化容量和格式化容量之分。 非格式化容量是指磁记录表面可以利用的磁化单元总数,格式化容量是指按照某种特定的记录格式所能存储信息的容量。
c.平均存取时间
平均存取时间由寻道时间(磁头移动到目的磁道的时间)、旋转延迟时间(磁头定位到要读写扇区的时间,即旋转一周时间的一半)和传输时间(传输数据所花费的时间)三部分构成。 由于寻道和找扇区的距离远近不一,因此前两部分通常取平均值。
d.数据传输率
磁盘存储器在单位时间内向主机传送数据的字节数,称为数据传输率。 假设磁盘转速为r转/s,每条磁道容量为N字节,则数据传输率为
Dr=rN
(4)磁盘地址
主机向磁盘控制器发送寻址信息, 磁盘的地址如图:
若系统中有4个驱动器,每个驱动器带一个磁盘,每个磁盘256个磁道、16个盘面,每个盘面划分为16个扇区,则每个扇区地址要18位二进制代码,格式如图:
2.磁盘阵列
RAID(廉价冗余磁盘阵列)是指将多个独立的物理磁盘组成一个独立的逻辑盘,数据在多个物理盘上分割交叉存储、并行访问 ,具有更好的存储性能、可靠性和安全性。
RAID0把连续多个数据块交替地存放在不同物理磁盘的扇区中,几个磁盘交叉并行读写,不仅扩大了存储容量,而且提高了磁盘数据存取速度,但RAID0没有容错能力。
为了提高可靠性,RAID1使两个磁盘同时进行读写,互为备份,若一个磁盘出现故障,可从另一磁盘中读出数据。 两个磁盘当一个磁盘使用,意味着容量减少一半。
RAID通过同时使用多个磁盘,提高了传输率;通过在多个磁盘上并行存取来大幅提高存储系统的数据吞吐量;通过镜像功能,提高安全可靠性;通过数据校验,提供容错能力。
7.3 I/O接口
I/O接口(I/O控制器)是主机和外设之间的交接界面,通过接口可以实现主机和外设之间的信息交换。 主机和外设具有各自的工作特点,它们在信息形式和工作速度上具有很大的差异,接口正是为了解决这些差异而设置的。
7.3.1 I/O接口的功能
I/O接口的主要功能如下:
(1)实现主机和外设的通信联络控制。 解决主机与外设时序配合问题,协调不同工作速度的外设和主机之间交换信息,以保证整个计算机系统能统一、协调地工作。
(2)进行地址译码和设备选择。 CPU送来选择外设的地址码后,接口必须对地址进行译码以产生设备选择信息,使主机能和指定外设交换信息。
(3)进行数据缓冲。 CPU与外设之间的速度往往不匹配,为消除速度差异,接口必须设置数据缓冲寄存器,用于数据的暂存,以避免因速度不一致而丢失数据
(4)信号格式的转换。 外设与主机两者的电平、数据格式都可能存在差异,接口应提供计算机与外设的信号格式的转换功能,如电平转换、并/串或串/并转换、模/数或数/模转换等
(5)传送控制命令和状态信息。 CPU要启动某一外设时,通过接口中的命令寄存器向外设发出启动命令;外设准备就绪时,则将“准备好”状态信息送回接口中的状态寄存器,并反馈给CPU。外设向CPU提出中断请求时,CPU也应有相应的响应信号反馈给外设。
7.3.2 I/O接口的基本结构
I/O接口在主机侧通过I/O总线与内存、CPU相连。通过数据总线,在数据缓冲寄存器与内存或CPU的寄存器之间进行数据传送。同时接口和设备的状态信息被记录在状态寄存器中,通过数据线将状态信息送到CPU。CPU对外设的控制命令也通过数据线传送,一般将其送到I/O接口的控制寄存器。 状态寄存器和控制寄存器在传送方向上是相反的。
接口中的地址线用于给出要访问的I/O接口中的寄存器的地址,它和读/写控制信号一起被送到I/O接口的控制逻辑部件, 其中地址信号用以选择和主机交换信息的寄存器,通过控制线传送来的读/写信号确认是读寄存器还是写寄存器,此外控制线还会传送一些仲裁信号和握手信号。
接口中的I/O控制逻辑还要能对控制寄存器中的命令字进行译码,并将译码得到的控制信号通过外设界面控制逻辑送到外设,同时将数据缓冲寄存器的数据发送到外设或从外设接收数据到数据缓冲寄存器。 另外,它还要具有收集外设状态到状态寄存器的功能,
对数据缓冲寄存器、状态/控制寄存器的访问操作是通过相应的指令来完成的,通常称这类指令为I/O指令, I/O指令只能在OS内核的底层I/O软件中使用,它们是一种特权指令。
注意接口和端口是两个不同的概念。端口是指接口电路中可以进行读/写的寄存器,若干端口加上相应的控制逻辑才可以组成接口。
7.3.4 I/O端口及其编址
I/O端口是指接口电路中可被CPU直接访问的寄存器,主要有数据端口、状态端口和控制端口, 若干端口加上相应的控制逻辑电路组成接口。通常,CPU能对数据端口执行读写操作,但对状态端口只能执行读操作,对控制端口只能执行写操作。
I/O端口要想能够被CPU访问,就必须要对各个端口进行编号,每个端口对应一个端口地址。而对I/O端口的编址方式有与存储器统一编址和独立编址两种。
(1)统一编址,又称存储器映射方式
统一编址是指把I/O端口当做存储器的单元进行地址分配,这种方式CPU不需要设置专门的I/O指令,用统一的访存指令就可以访问I/O端口。
优点:不需要专门的输入/输出指令,可使CPU访问I/O的操作更灵活、更方便,还可使端口有较大的编址空间。缺点:端口占用存储器地址,使内存容量变小,而且利用存储器编址的I/O设备进行数据输入/输出操作,执行速度较慢。
(2)独立编址,又称I/O映射方式
I/O端口的地址空间与主存地址空间是两个独立的地址空间,因而无法从地址码的形式上区分,需要设置专门的I/O指令来访问I/O端口。
优点:输入/输出指令与存储器指令有明显区别,程序编制清晰,便于理解。缺点:输入/输出指令少,一般只能对端口进行传送操作,尤其需要CPU提供存储器读/写、I/O设备读/写两组控制信号,增加了控制的复杂性。
I/O指令与通道指令的区别:
I/O指令是CPU指令系统的一部分,是CPU用来控制输入/输出操作的指令,由CPU译码后执行。在具有通道结构的机器中,I/O指令不实现I/O数据传送,主要完成启、停I/O设备,查询通道和I/O设备的状态,及控制通道进行其他一些操作等。具有通道指令的计算机,一旦CPU执行了启动I/O设备的指令,就由通道来代替CPU对I/O设备的管理
通道指令是通道本身的指令,用来执行I/O操作,如读、写、磁带走带及磁盘找道等操作。
2.程序中断方式工作流程
一次中断处理过程可分为5个阶段:中断请求、中断判优、中断响应、中断服务、中断返回。
(1)中断请求
中断请求是指中断源向CPU发送中断请求信号
a.内中断和外中断
中断源是请求CPU中断的设备或事件,一台计算机允许有多个中断源。根据中断源的类别,可把中断源分为内中断 和 外中断两种。
每个中断源向CPU发出中断请求的时间是随机的。为记录中断事件并区分不同的中断源,中断系统需对每个中断源设置中断请求标记触发器INTR,当其状态为1时,表示中断源有请求。这些触发器可组成中断请求标记寄存器,该寄存器可集中在CPU中,也可分散在各个中断源中。
外中断是指来自处理器和内存以外的部件引起的中断,包括I/O设备发出的I/O中断、外部信号中断(如用户按Esc键),以及各种定时器引起的时钟中断等。 外中断在狭义上一般称为中断。
内中断主要是指在处理器和内存内部产生的中断,包括程序运算引起的各种错误,如地址非法、校验错、页面失效、存取访问控制错、算术操作溢出、数据格式非法、除数为零、非法指令、用户程序执行特权指令、分时系统中的时间片中断及用户态到核心态的切换等。
(4)中断隐指令
CPU响应中断后,经过某些操作,转去执行中断服务程序。这些操作是由硬件直接实现的,称为中断隐指令。 中断隐指令并不是指令系统中的一条真正的指令, 它没有操作码,所以中断隐指令是一种不允许也不可能为用户使用的特殊指令。它所完成的操作如下:
a.关中断
在中断服务程序中,为了保护中断现场(即CPU主要寄存器中的内容)期间不被新的中断所打断,必须关中断,从而保证被中断的程序在中断服务程序执行完毕后能接着正确地执行。
b.保存断点
为保证在中断服务程序执行完毕后能正确地返回到原来的程序,必须将原来程序的断点(即PC的内容)保存起来
c.引出中断服务程序
引出中断服务程序的实质是,取出中断服务程序的入口地址并传送给PC。
(5)中断向量
不同的设备有不同的中断服务程序,每个中断服务程序都有一个入口地址,CPU必须找到这个入口地址,即中断向量,把系统中的全部中断向量集中存放到存储器的某个区域内,这个存放中断向量的存储区就称为中断向量表,即中断服务程序的入口地址表。
CPU响应中断后,中断硬件会自动将中断向量地址传送到CPU,由CPU实现程序的切换,这种方法称为中断向量法,采用中断向量法的中断称为向量中断。
中断向量是中断服务程序的入口地址,中断向量地址是指中断服务程序的入口地址的地址。
向量中断、中断向量、向量地址:
中断向量:每个中断源都有对应的处理程序,这个处理程序称为中断服务程序,其入口地址称为中断向量。所有中断的中断服务程序入口地址构成一个表,称为中断向量表;也有的机器把中断服务程序入口的跳转指令构成一张表,称为中断向量跳转表
向量地址:中断向量表或中断向量跳转表中每个表项所在的内存地址或表项的索引值,称为向量地址或中断类型号。
向量中断:指一种识别中断源的技术或方式。识别中断源的目的是找到中断源对应的中断服务程序的入口地址的地址,即获得向量地址。
(6)中断处理过程
a.关中断
处理器响应中断后,首先要保护程序的现场状态,在保护现场的过程中,CPU不应响应更高级中断的请求。否则,若现场保存不完整,在中断服务程序结束后,也就不能正确地恢复并继续执行现行程序。
b.保存断点
为保证中断服务程序执行完毕后,能正确地返回到原来的程序,必须将原来的程序的断点保存起来。断点可以压入堆栈,也可以存入主存的特定单元中。
c.引出中断服务程序
引出中断服务程序的实质是,取出中断服务程序的入口地址送入PC
通常有两种方法寻址中断服务程序的入口地址:硬件向量法和软件查询法。
硬件向量法通过硬件产生中断向量地址,再由中断向量地址找到中断服务程序的入口地址。软件查询法用软件编程的办法寻找入口地址。
硬件产生的实际上是中断类型号,而中断类型号指出了中断向量存放的地址,因此能产生中断向量地址。
d.保存现场和屏蔽字
进入中断服务程序后首先要保存现场,现场信息一般是指程序状态字、中断屏蔽寄存器和CPU中某些寄存器的内容
e.开中断
允许更高级中断请求得到响应,实现中断嵌套
f.执行中断服务程序
这是中断请求的目的
g.关中断
保证在恢复现场和屏蔽字时不被中断
h.恢复现场和屏蔽字
将现场和屏蔽字恢复到原来的状态
i.开中断、中断返回
中断服务程序的最后一条指令通常是一条中断返回指令,使其返回到原程序的断点处,以便继续执行原程序
其中,a,b,c在CPU进入中断周期后,由中断隐指令(硬件自动)完成;其余由中断服务程序完成,中断服务程序的流程分为四大部分:保护现场、中断服务、恢复现场、中断返回
恢复现场是指在中断返回前,必须将寄存器的内容恢复到中断处理前的状态,这部分工作由中断服务程序完成。中断返回由中断服务程序的最后一条中断返回指令完成。
每个中断源都有一个屏蔽触发器,1表示屏蔽该中断源的请求,0表示可以正常申请,所有屏蔽触发器组合在一起便构成一个屏蔽字寄存器,屏蔽字寄存器的内容称为屏蔽字。
中断响应优先级与中断处理优先级:
中断响应优先级是由硬件排队线路或中断查询程序的查询顺序决定的,不可动态地改变;而中断处理优先级可以由中断屏蔽字来改变, 反映的是正在处理的中断是否比新发生的中断的处理优先级低(屏蔽位为0,对新中断开放),若是,则中止正在处理的中断,转到新中断去处理,处理完后再回到刚才被中止的中断继续处理。
在DMA方式中,中断的作用仅限于故障和正常传送结束时的处理。
(5)DMA在传送开始前要通过程序进行预处理,结束后要通过中断方式进行后处理。
在DMA方式中,对数据传送过程进行控制的硬件称为DMA控制器(DMA接口)。 当I/O设备需要进行数据传送时,通过DMA控制器向CPU提出DMA传送请求,CPU响应之后将让出系统总线,由DMA控制器接管总线进行数据传送。 其主要功能如下:
(1)接受外设发出的DMA请求,并向CPU发出总线请求
(2)CPU响应此总线请求,发出总线响应信号,接管总线控制权,进入DMA操作周期
(3)确定传送数据的主存单元地址及长度,并自动修改主存地址计数和传送长度计数
(4)规定数据在主存和外设间的传送方向,发出读写等控制信号,执行数据传送操作
(5)向CPU报告DMA操作的结束
3.DMA的传送方式
主存和DMA控制器之间有一条数据通路,由此主存和I/O设备之间交换信息时,不通过CPU。但当I/O设备和CPU同时访问主存时,可能发生冲突,为了有效地使用主存,DMA控制器与CPU通常采用以下3种方式使用主存:
(1)停止CPU访问主存:
这种方式是当外设需要传送成组数据时,由DMA接口向CPU发送一个信号,要求CPU放弃地址线、数据线和有关控制线的使用权,DMA接口获得总线控制权后,开始进行数据传送。数据传送结束后,DMA接口通知CPU可以使用主存,并把总线控制权交还给CPU。在这种传送过程中,CPU基本处于不工作状态或保持原始状态。
(2)DMA与CPU交替访存:
这种方式适用于CPU的工作周期比主存存取周期长的情况。 例如,若CPU的工作周期是1.2μs,主存的存取周期小于0.6μs,则可将一个CPU周期分为C1和C2两个周期,其中C1专供DMA访存,C2专供CPU访存。这种方式不需要总线使用权的申请、建立和归还过程,总线使用权是通过C1和C2分时控制的。
(3)周期挪用(或周期窃取)
这种方式是前两种方式的折中。当I/O设备没有DMA请求时,CPU按程序的要求访问主存,一旦I/O设备有了DMA请求,就会遇到3种情况:a.此时CPU不在访存(如CPU正在执行乘法指令),因此I/O的访存请求与CPU未发生冲突;b.CPU正在访存,此时必须待存取周期结束后,CPU再将总线占有权让出;c.I/O和CPU同时请求访存,出现访存冲突,此时CPU要暂时放弃总线占有权,由I/O设备挪用一个或几个存取周期。
4.DMA的传送过程
DMA的数据传送过程分为预处理、数据传送和后处理3个阶段
(1)预处理
由CPU完成一些必要的准备工作。 首先,CPU执行几条I/O指令,用以测试I/O设备状态,向DMA控制器的有关寄存器置初值、设置传送方向、启动该设备等。然后,CPU继续执行原来的程序,直到I/O设备准备好发送的数据(输入情况)或接收的数据(输出情况)时,I/O设备向DMA控制器发送DMA请求,再由DMA控制器向CPU发送总线请求(有时将这两个过程统称为DMA请求),用以传输数据。
(2)数据传送
DMA的数据传输可以以单字节(或字)为基本单位,也可以以数据块为基本单位。 对于以数据块为单位的传送(如硬盘),DMA占用总线后的数据输入和输出操作都是通过循环来实现的。这一循环也是由DMA控制器(而非通过CPU执行程序)实现的,即数据传送阶段完全由DMA(硬件)控制
(3)后处理
DMA控制器向CPU发送中断请求,CPU执行中断服务程序做DMA结束处理,包括校验送入主存的数据是否正确、测试传送过程中是否出错(错误则转入诊断程序)及决定是否继续使用DMA传送其他数据块等。
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/153789.html