从计组和操作系统详解IO控制方式

IO控制方式

实际上IO在操作系统和计组里面都有讲到,这两个内容各有侧重,又有很大的重合,这里就整理一下。

操作系统里面就讲了一下基本的过程,计组还讲了各个接口电路。

1、直接程序控制方式

直接程序控制方式由用户进程直接控制主存或 CPU 和外围设备之间的信息传送。**直接程序控制方式又称为询问方式,或忙/等待方式。**通过 I/O 指令或询问指令测试 I/O 设备的忙/闲标志位,决定主存与外围设备之间是否交换一个字符或一个字。

直接程序控制方式的工作流程如下:

  • ① 当用户进程需要输入数据时,通过 CPU 向控制器发出一条 I/O 指令,启动设备输入数据,同时把状态寄存器中的忙/闲状态 busy 置为1
  • ② 用户进程进入测试等待状态,在等待过程中,CPU 不断地用一条测试指令检查外围设备状态寄存器中的 busy 位,而外围设备只有在数据传入控制器的数据寄存器之后,才将该 busy 位置为0,。
  • ③ 处理器将数据寄存器中的数据取出,送入主存指定单元,完成一个字符的I/O操作,接着进行下一个数据的 I/O 操作

总而言之:就是会有一个IO控制进程,CPU会一直陷入在询问的循环中,一直等待着IO设备准备号数据。

直接程序控制方式虽然简单,不需要多少硬件的支持,但由于高速的 CPU 和低速的 I/O 设备之间的速度上不匹配,因此,CPU 与外围设备只能串行工作,使 CPU 的绝大部分时间都处于等待是否完成 I/O 操作的循环测试中,造成 CPU 的极大浪费,外围设备也不能得到合理的使用,整个系统的效率很低。因此,这种I/O控制方式只适合于 CPU 执行速度较慢,且外围设备较少的系统。

2、中断驱动控制方式

IO设备的中断请求引发CPU的外中断。

为了减少程序直接控制方式下 CPU 的等待时间以及提高系统的并行程度,系统引入了中断机制。中断机制引入后,外围设备仅当操作正常结束或异常结束时才向 CPU 发出中断请求。

在 I/O 设备输入每个数据的过程中,由于无需 CPU 的干预,一定程度上实现了 CPU 与 I/O设备的并行工作。仅当输入或输出完一个数据时,才需 CPU 花费极短的时间做中断处理。

这里参照的文章没有写清楚,实际上IO中断时这样的,首先CPU先是要发生一个中断去启动我们的IO设备,之后我们就认为设备时一直开启的了。然后CPU就继续干自己的事情,同时设备也在干自己的事情。也就是说,IO设备准备数据是不关CPU的事情的,当IO设备数据准备完成以后,才会发出中断请求,要求CPU处理IO设备这边准备好的数据(进入中断处理程序,但是很多时候就是要求CPU访存把数据存进去)。

(中断的详细流程就不细讲了,留给中断那里吧)

存在的问题:由于I/O操作直接由 CPU 控制,每传送一个字符或一个字,都要发生一次中断,仍然占用了大量的 CPU 处理时间,因此可以通过为外围设备增加缓冲寄存器存放数据来减少中断次数。(数据准备过程的暂存是可以)

上述两种方法的特点都是以 CPU 为中心,数据传送通过一段程序来实现,软件的传送手段限制了数据传送的速度。

3.直接存储器访问控制方式

直接存储器访问控制方式又称 DMA(Direct Memory Access)方式。为了进一步减少 CPU 对 I/O 操作的干预,防止因并行操作设备过多使 CPU 来不及处理或因速度不匹配而造成的数据丢失现象,引入了 DMA 控制方式。在 DMA 控制器的控制下,采用窃取或挪用总线控制权,在设备和主存之间开辟直接数据交换通道,成批地交换数据,而不必让 CPU 干预。

最重要的就是开辟了DMA通路,IO设备不再借道CPU再存入内存了。

实际上我一直喜欢加上DMA通道,但是这里的DMA还没有通道,所以改口了。

DMA方式的特点:

  • 数据传送以数据块为基本单位,一开始CPU就规划好了存到内存哪个块
  • ② 所传送的数据从设备直接送入主存,或者从主存直接输出到设备上。
  • ③ 仅在传送一个或多个数据块的开始和结束时才需 CPU 的干预,而整块数据的传送则是在控制器的控制下完成。
    • 也就是DMA方式需要CPU给出我们数据是存到内存的哪里,只能是一段连续的空间,再最开始就要预测完成。

DMA方式和中断驱动控制方式相比,减少了 CPU 对 I/O 操作的干预,进一步提高了 CPU 与 I/O 设备的并行操作程度。

DMA方式的线路简单、价格低廉,适合高速设备与主存之间的成批数据传送,小型、微型机中的快速设备均采用这种方式,但其功能较差,不能满足复杂的 I/O 要求。

DMA通路使用的三种方式

首先为什么要考虑这个,这个的问题就是主存一次只能有一个设备进行访问,DMA跟CPU都要直接跟主存交互,那么我们要怎么分配。

  1. 停止CPU访问主存
    1. 这个很暴力了,DMA会跟CPU发一个信号,叫CPU停下来。
  2. 周期窃取
    1. 实际上是总线占用权以及主存周期
    2. 当IO发出DMA请求,就停下几个主存周期CPU占用主存(没有中断)
  3. 交替访问
    1. 这个一般要CPU指令(书上是工作,但是我觉得是指令)周期比主存存储周期长,一个工作周期里面会有不访存的,不访存的那部分就固定给DMA了。

DMA接口组成

只能说计组这个地方是真的比操作系统细很多了。

name
AR(MAR) 老熟人了,内存地址寄存器 CPU激活DMA方式的时候必须先指定存放的内存首地址
WC 字计数器 用来记录一共存了多少字,CPU激活时设置,一直递减(是指数值上的,因为可能是补码),到0的时候触发中断。
BR 数据缓冲寄存器 这个就不用多说了
DMA控制逻辑 一个是负责向CPU申请初始化,一个是后面的所有过程都由它负责,接口的寄存器修改、取址、设备信号识别与发出。
中断机构 负责中断信号的发出
DAR设备地址寄存器 针对IO设备信息的寄存器,因为我们也要对IO设备做选择。 设备号、设备存储器的信息。(特别注意外存也是IO设备,所以磁盘数据地址可能会存这里)

4、通道控制方式

总结一句话:通道也是一个处理器,CPU把IO设备与内存交互的管理工作(管理程序首地址+IO设备号)下发给通道,这个管理工作在内存中由通道程序进行描述。

虽然DMA方式比起中断方式来已经显著地减少了CPU的干预,即已由以字(节)为单位的干预减少到以数据块为单位的干预。**但CPU每发出一条I/O指令,也只能去读/写一个连续的数据块。**而当我们需要一次去读多个数据块且将它们分别传送到不同的内存区域,或者相反时,则需由CPU分别发出多条I/O指令及进行多次中断处理才能完成。

通道控制方式,实现了CPU、通道和I/O设备三者的并行操作,从而更加有效地提高整个系统的资源利用率。例如,当 CPU 要完成一组相关的读(或写)操作时,只需要向 I/O 通道发出一条 I/O 指令,指出其所要执行的通道程序的首址和要访问的I/O设备,通道接收到该指令后,通过执行通道程序便可完成 CPU 指定的 I/O 任务。可见,通道只是在 I/O 操作的起始和结束时向 CPU 发出 I/O 中断申请,相对于之前的控制方式进一步减少了 CPU 的干预程度。

1、通道控制方式的引入

通道控制方式与DMA控制方式类似,也是一种以内存为中心,实现设备与内存直接交换数据的控制方式。

与DMA控制方式相比,通道方式所需要的CPU干预更少,而且可以做到一个通道控制多台设备,从而进一步减轻了CPU负担。

通道本质上是一个简单的处理器,专门负责输入、输出控制,具有执行I/O指令的能力,并通过执行通道I/O程序来控制I/O操作。

  • 通道,独立于 CPU 的专门负责输入输出控制的处理机,它控制设备与内存直接进行数据交换。有自己的通道指令,这些指令由 CPU 启动,并在操作结束时向 CPU 发出中断信号。

通道的指令系统比较简单,一般只有数据传送指令、设备控制指令等。

I/O通道控制方式是对DMA控制方式的发展,它进一步使CPU参与到数据传输的控制减少,即把对一个数据块的读/写为单位的干预,减少为对一组数据块的读/写及有关的控制和管理为单位的干预。同时,又可实现CPU、通道和I/O设备的并行操作,从而更有效地提高整个系统的资源利用率。在通道控制方式中,CPU只需发出启动指令,指出要求通道执行的操作和使用的I/O设备,该指令就可以启动通道并使该通道从内存中调出相应的通道程序执行。

以数据输入为例:当用户进程需要数据时,**CPU发出启动指令指明要执行的I/O操作、所使用的设备和通道。**当对应通道接收到CPU发来的启动指令后,把存放在内存中的通道程序读出,并执行通道程序,控制设备将数据传送到内存中指定的区域。在设备进行输入的同时,CPU可以去做其他工作。**当数据传送结束时,设备控制器向CPU发送一个中断请求。**CPU收到中断请求后转中断处理程序执行,中断结束后返回被中断程序。

  • 优点:通道控制方式解决了I/O操作的独立性和各部件工作的并行性。把CPU从繁琐的输入/输出操作中解放出来。采用通道技术后,不仅能实现CPU和通道的并行操作,而且通道与通道之间也能实现并行操作,各通道上的外设也能实现并行操作,从而可提高整个系统的效率。
  • 缺点:由于需要更多硬件(通道处理器),因此其成本较高。通道控制方式通常应用于大型数据交互的场合。

直接程序控制方式和中断程序控制方式适合于低速设备的数据传送,而 DMA 方式虽然适合于高速设备的数据传送,但一个 DMA 控制器只能控制少量的同类设备,这远远不能满足大型计算机系统的需要。通常,一个大型计算机需要连接大量的高速和低速设备,通道控制方式可以满足这个要求。(DMA和通道控制方式的主要区别——能否满足大型计算机系统的既能处理高速设备又能处理低速设备的需要)

2、通道程序

通道是通过执行通道程序,并与设备控制器共同实现对I/O设备的控制的。通道程序是由一系列通道指令所构成的。通道指令和一般的机器

指令不同,在它的每条指令中都包含下列诸信息:

  • 1)操作码。操作码规定了指令所执行的操作,如读、写、控制等操作。
  • 2)内存地址。内存地址标明字符送入内存(读操作)和从内存取出(写操作)时的内存首址。
  • 3)计数。该信息表示本条指令所要读/写数据的字节数。
  • 4)通道程序结束位P。该位用于表示通道程序是否结束。P=1表示本条指令是通道程序的最后一条指令。
  • 5)记录结束标志R。R=0表示本通道指令与下一条指令所处理的数据是同属于一个记录;R=1表示这是处理某记录的最后一条指令。

通道控制方式与DMA控制方式的区别:

  • 1)DMA控制方式中需要CPU来控制所传输数据块的大小,传输的内存地址;通道控制方式中这些信息都是由通道来控制管理的。
  • 2)一个DMA控制器对应一台设备与内存传递数据,而一个通道可以控制多台设备与内存的数据交换。

I/O通道与一般处理器的区别:I/O通道的指令类型单一,其所能执行的命令主要局限于与I/O操作有关的指令;通道没有自己的内存,通道所执行的通道程序放在主机的内存中,也就是说通道是与CPU共享内存的

猜你喜欢

转载自blog.csdn.net/interval_package/article/details/124524041