CPU与IO的数据交换

CPU与外设的交互

CPU是整个计算机系统的主体,几乎所有决策都是由CPU决定的。无论是输出和输出都只是数据的流向不同,但决定进行输出还是输出操作的主体仍然是CPU。

IO与CPU之间是存在总线连接的,信息的传输就是通过总线实现的。

交互过程如下:

  1. CPU在需要与外设进行信息交互时,执行初始化程序,并预置传送参数
  2. 发送命令字到IO设备,控制启动IO设备
  3. 进行数据传送操作

IO设备的启动是需要时间的,CPU也不知道什么时候IO设备就会准备好,为了解决这个问题,CPU与外设有如下通信方式:

  • 程序查询方式
  • 程序中断方式
  • DMA方式
  • 通道方式

最主要解决的问题:让接收方知道什么时候需要发送数据的

程序控制方式

程序控制方式中,CPU对IO的处理是符合其正常执行逻辑的。

即以CPU为主体去发出做出相应的操作,根据获取到的信息,决定下一步需要进行的操作。

无条件传送方式

使用此类方式的外设,默认在任何时候都已经准备好,因此可以随时进行数据的传送。

程序查询方式

在此类方式中,CPU发出命令字后,即等待IO设备的准备完成,即存在“踏步”等待现象

程序中断方式

由于对于某些交互情况来说,CPU的查询无法达到实时性要求,而中断是计算机系统中一个特殊的体系,CPU会默认中断为紧急事务,因此会对中断的处理会更加即时。

IO接口可以帮CPU分担部分压力,CPU不需要进行过多的查询。

以中断的方式引起CPU的关注,通过中断服务子程序的形式进行数据的传输

具体的处理流程是中断处理的内容。

DMA不适用于大型计算机的原因

  • 大型计算机外设很多,使用DMA方式时,无法做到每个高速设备分配一个DMA接口,因此只能共享有限的DMA接口

DMA

程序中断方式实现了在数据准备阶段对CPU的释放,CPU可以不用进行踏步等待。在数据传输阶段,再通过CPU实现数据的传输。

但当IO与主存进行信息传递时,CPU似乎只是起到了一个转手的作用。相比于CPU在计算机系统的重要性来说,这种操作对CPU的占用会显得很浪费。因此,DMA方式提供了一种IO与主存可以直接进行数据传输的方式,而不必占用CPU资源。

要进行数据的传输:

  • 实现对该过程的控制——使用DMA控制器实现
  • 数据传输需要总线——DMA控制器可以暂时获取总线的控制权

通道

DMA通常只控制一台或少数几台同类设备,为了同时控制许多台同类或不同类的设备,因此引入了通道设备

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

在通道方式中,CPU只需要发出启动指令,指出要求通道执行的操作和使用的IO设备,该指令就可以启动通道并使该通道从内存中调出相应的通道程序执行。

  • DMA方式需要CPU控制对DMA控制器进行预处理,将所需的信息写入相应的寄存器中。
通道程序

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

采用通道技术后,不仅能实现CPU和通道的并行操作,而且通道与通道之间也能实现并行操作,各通道上的外设也能实现并行操作,从而可提高整个系统的效率。

DMA与通道的区别

  • DMA方式中需要CPU来控制所传输数据块的大小传输的内存地址;通道控制方式中这些信息都是由通道来控制管理的。
  • 一个DMA控制器对应一台设备与内存传递数据,而一个通道可以控制多台设备与内存的数据交换。
posted @ 2023-06-21 09:53  一顿十个汉堡  阅读(826)  评论(0)    收藏  举报