I/O接口
I/O接口的功能
IO接口的主要功能有:
- 进行地址译码和设备选择。(CPU送来选择外设的地址码后,接口必须对地址进行译码,以产生设备选择信息,使主机能和指定外设交换信息。)
- 实现主机和外设的通信联络控制。(解决主机与外设时序配合问题,协调不同工作速度的外设和主机之间交换信息,以保证整个计算机系统能统一、协调地工作。)
- 实现数据缓冲。(CPU与外设之间的速度往往不匹配,为消除速度差异,接口必须设置数据缓冲寄存器用于数据的暂存,以避免因速度不一致而丢失数据。)
- 信号格式的转换。(外设与主机两者的电平数据格式都可能存在差异,接口应提供计算机与外设的信号格式的转换功能,如电平转换、并/串或串/并转换、模/数或数/模转换等。)
- 传送控制命令和状态信息。
(简单来说就是①选址功能②传送命令功能③传送数据功能④反应IO设备工作状态的功能。)
I/O接口的基本结构
关于IO接口的基本结构,会考到到几个基本的部件,比如数据缓冲寄存器、状态/控制寄存器这些IO接口上的部件和它的相关功能。
IO接口在主机侧通过IO总线与内存、CPU相连。
通过数据总线,在数据缓冲寄存器与内存或CPU的寄存器之间进行数据传送,同时接口和设备的状态信息被记录在状态寄存器中。通过数据线将状态信息送到CPU。
CPU对外设的命令也通过数据线传送,一般将其送到IO接口的控制寄存器。状态寄存器和控制寄存器在传送方向上是相反的。
接口中的地址线:用于给出要访问的I/O接口中的寄存器的地址,它和读/写控制信号一起被送到IO接口的控制逻辑部件,通过控制线传送来的读写信号确认是读寄存器还是写寄存器。此外,控制线还会传送一些仲裁信号和握手信号。
I/O指令
对数据缓冲寄存器、状态/控制寄存器的访问操作是通过相应的指令来完成的,通常称这类指令为I/O指令,I/O指令只能在操作系统内核的底层I/O软件中使用,它是一种特权指令。
(接口和端口是两个不同的概念,端口是指接口电路中可以进行读写的寄存器,若干端口加上相应的控制逻辑才可以组成接口。)
I/O接口的类型
按数据传送方式可分为:并行接口(一个字节或一个字的所有位同时传送)和串行接口(一位一位地传送),接口要完成数据格式的转换。
按主机访问IO设备的控制方式:可分为程序查询接口、中断接口和DMA接口等。
还有按功能选择的灵活性可分为可编程接口和不可编程接口等。
I/O端口及其编址
分为与存储器统一编址和独立编址两种。
统一编址
优点:不需要专门的输入输出指令,可使CPU访问IO的操作更灵活,更方便,还可使端口有较大的编址空间。
缺点:端口占用存储器地址使内存容量变小,而且利用存储器编制的IO设备进行数据输入输出操作,执行速度较慢。
独立编址
IO端口的地址空间与主存地址空间是两个独立的地址空间,因而无法从地址码的形式上区分,需要设置专门的IO指令来访问IO端口。
优点:输入输出指令与存储器指令有明显区别。程序编制清晰,便于理解。
缺点:输入输出指令少,一般只能对端口进行传送操作,尤其需要CPU提供存储器读/写、I/O设备读/写两组控制信号,增加了控制的复杂性。
(在统一编址方式下,存储单元和IO设备是靠不同的地址码,而非地址线来区分的。在独立编址方式下,存储单元和IO设备是靠不同的指令来区分的。)
I/O方式
常用的IO方式有程序查询、程序中断、DMA和通道等,其中前两种方式更依赖于CPU中程序指令的执行。
1.程序查询方式
CPU啥都不干就像只舔狗一样守着IO端口一遍遍问“亲爱的你要发信息吗?”
在这种控制方式下,CPU一旦启动IO就必须停止现行程序的运行。
2.程序中断方式
(这一部分似乎跟OS的中断关系密切。大量内容都是OS相关的。)
中断请求标记触发器:为记录中断事件并区分不同的中断源,中断系统需对每个中断源设置中断请求标记触发器,当其状态为1时表示中断源有请求,这些触发器可组成中断请求标记寄存器,该寄存器可集中在CPU中,也可分散在各个中段源中。
通过INTR线发出的是可屏蔽中断,通过NMI线发出的是不可屏蔽中断。
中断响应优先级
①不可屏蔽中断>内部中断>可屏蔽中断。
②DMA中断请求优先于IO设备传送的中断请求。
(中断优先级包括响应优先级和处理优先级,响应优先级是在硬件线路上是固定的,不便于改动,处理优先级可利用中断屏蔽技术动态调整,以实现多重中断。)
CPU响应中断的时间是在每条指令执行阶段的结束时刻。
中断响应过程
CPU响应中断后,经过某些操作转去执行中断服务程序。这些操作是由硬件直接实现的,将其称为中断隐指令,中断隐指令,并不是指令系统中一条真正的指令,只是一种虚拟的说法,本质上是硬件的一系列自动操作。它所完成的操作如下:
- ①关中断
- ②保存断点
- ③引出中断服务程序
中断向量
啥是中断向量:每个中断都有一个唯一的类型号,每个中断类型号都对应一个中断服务程序,每个中断服务程序都有一个入口地址,CPU必须找到入口地址,即中断向量。
在中断向量的问题上,需要搞清楚几个容易错乱的概念:中断向量地址、中断向量、中断服务程序的入口。
中断向量是中断服务程序的入口地址,中断向量地址是内存中存放中断向量的地址,也就是说,中断向量地址是中断服务程序入口地址的地址(开始套娃)。
中断处理过程
- ①关中断
- ②保存断点
- ③中断服务程序寻址
- ④保存现场和屏蔽字
现场和断点这两类信息都不能被中断服务程序破坏,
现场信息,因为用指令可直接访问,所以在通常在中断服务程序中通过指令把它们保存到栈中,即由软件实现;
而断点信息,则由CPU在中断响应时自动保存到栈或指定的寄存器中,即由硬件实现。
- ⑤开中断
- ⑥执行中断服务程序
- ⑦关中断
- ⑧恢复现场和屏蔽字
- ⑨开中断、中断和返回
其中①~③是由中断隐指令(硬件自动)完成,④~⑨由中断服务程序完成。
恢复现场是指在中断返回前,必须将寄存器的内容恢复到中断处理前的状态。这部分工作由中断服务程序完成,中断返回由中断服务程序的最后一条中断返回指令完成。(是中断返回指令,不是随随便便一条无条件跳转指令就行哒!)
中断处理优先级
屏蔽触发器:1表示屏蔽该中断源的请求,0表示可以正常申请。
3.DMA方式
Dma方式是一种完全由硬件进行成组信息传送的控制方式,它具有程序中断方式的优点,即在数据准备阶段,CPU与外设并行工作,DMA方式在外设与内存之间开辟一条直接数据通道,信息传送不再经过CPU,降低了CPU在传送数据时的开销,因此称为直接存储器存取方式。由于数据传送不再经过CPU,也就不需要保护恢复CPU现场等繁琐操作。
在DMA传送过程中,DMA控制器将接管CPU的地址总线、数据总线和控制总线,CPU的主存控制信号被禁止使用,由此可见,DMA控制器必须具有控制系统总线的能力。
DMA的传送方式
主存和IO设备之间交换信息时不通过CPU,但当IO设备与CPU同时访问主存时可能发生冲突。为了有效地使用主存,DMA控制器与CPU通常采用以下三种方法使用主存:
1.停止CPU访存
2.周期挪用(或周期窃取):这个还要分成三种情况,当IO设备有DMA请求时,情况①:CPU没在访问主存,此时相安无事。②:CPU正在访存,此时必须待存取周期结束后,CPU再将总线占有权让出。③:CPU与IO设备同时请求访问主存,出现访存冲突,此时CPU要暂时放弃总线占有权,IO缓存优先级高于CPU缓存,因为IO不立即缓存就可能丢失数据,此时由IO设备挪用一个或几个存取周期,传送完一个数据后,立即释放总线,是一种单字传送方式。
3.DMA与CPU交替访存:将一个CPU周期分为C1、C2两个周期,一个专供CPU访存,一个专供DMA访存。这种方式不需要总线使用权的申请、建立和归还过程。
DMA的传送过程
1.预处理
2.数据传送:DMA的数据传输可以以单字节或字为基本单位,也可以以数据块为基本单位。数据传送阶段完全由DMA硬件控制,CPU不掺和。
3.后处理
1、3两个阶段是有CPU的参与的,数据传送阶段没有CPU的事。
DMA方式和中断方式的区别
- 中断方式是程序的切换,需要保护和恢复现场。而DMA方式不中断现行程序,无需保护现场。除了预处理和后处理,其他时候不占用任何CPU资源。
- 对中断请求的响应只能发生在每条指令执行结束时(即执行周期后),而对DMA请求的响应可以发生在任意一个机器周期结束时(取址、间址、执行周期后均可)。
- Dma请求的优先级高于中断请求。
- 中断方式具有处理异常事件的能力,而dma方式仅局限于大批数据的传送。
- 从数据传送来看,中断方式靠程序传送,dma方式靠硬件传送。
补充
在每条指令的执行过程中,每个总线周期要检查一次有无中断请求。(错误,每条指令周期结束后,CPU会统一扫描各个中断源,然后进行判优来决定响应哪个中断源,而不是在每条指令的执行过程中这样做。总线周期指的是像取址、间址这些操作的周期,进行这些操作时一条指令还没执行完呢,自然不能检查中断去了。)
检测有无DMA请求,一般安排在一条指令执行过程的末尾。(错误,CPU会在每个存储周期结束后检查是否有dma请求,而不是在指令执行过程的末尾这样做。)
中断响应由高到低的优先次序宜用:访管→程序性→重新启动。
在配有通道的计算机系统中,用户程序需要输入输出时,引起的中断是访管中断。
在中断响应周期中,CPU主要完成的工作是关中断、保护断点、发中断响应信号并形成向量地址。(也就是执行中断隐指令)
设置中断屏蔽标志可以改变多个中断源的中断请求优先级(错误,注意分清中断响应次序和中断处理次序,中断响应次序由硬件排队电路决定)多个中断服务程序执行完的次序(正确)。
在CPU响应中断中,保护两个关键的硬件状态是:PC和PSW。
在各种IO方式中,中断方式的特点是:CPU与外设并行工作,传送与主程序串行工作;DMA方式的特点是:CPU与外设并行工作,传送与主程序并行工作。
一个完整的DMA过程,部分由DMA控制器控制,部分由CPU控制。(注意表述,是完整的DMA过程,而不是单指数据传输的过程,预处理和后处理过程是需要CPU参与的。)
CPU响应DMA请求的条件是当前机器周期执行完。(DMA请求可不会等到指令周期执行完的时候才会被响应。)
在主机和外设的信息传送中,直接存储器存取(DMA)不是一种程序控制方式。(只有DMA方式是靠硬件电路实现的,三种基本的程序控制方式,即直接程序传送、程序中断、通道控制都需要程序的干预。)
标签:输出,传送,DMA,中断,笔记,指令,IO,CPU,输入 From: https://www.cnblogs.com/soaring27221/p/17558714.html