DMA控制器和I/O处理器有什么区别

Sac*_*ach 5 hardware io dma

给定起始内存地址和字数,DMA 控制器在 CPU 处理其他进程时传输数据。输入输出处理器也处理给定起始地址和字数的 I/O 进程..(如果我有错误,请纠正我)

那么 IOP 和 DMA 控制器在功能上有什么区别呢?

axi*_*qia 3

在内存特定的 I/O 操作中(简单的示例指令,如 MIPS 处理器中的 lw $r1,$r2,16),CPU 需要从内存中获取数据,以方便 I/O 操作。因此CPU必须暂停任何其他操作并监视内存读/写操作,直到它未完成。换句话说,只要在没有 DMA 的情况下进行读/写操作,CPU 就会被完全占用。如果处理器在这段时间是空闲的,那么处理器可以执行一些其他指令。

直接内存访问(DMA):

DMA 提供了这种功能,以最少的 CPU 干预来执行内存特定操作。当任何 I/O 设备需要内存访问时。它向CPU发送DMA请求(以中断的形式)。CPU 通过向数据总线提供适当的授权信号来启动传输。并将控制权传递给 DMA 控制器,后者控制其余的数据传输并将数据直接传输到 I/O 设备。在此期间,CPU 继续执行其他指令。一旦读/写操作完成(或发生任何异常),DMA 控制器就会启动中断并通知处理器有关读/写操作的状态。

这样,读/写操作也被执行,并且CPU在此期间还执行一些其他指令。然而,DMA的初始化仍然需要CPU的干预。因此整体性能得到最大化。

输入/输出处理器

您可以按照 DMA 方法来思考 I/O 处理器。 I/O处理器通常用于大型计算机系统,是一种协处理器,除了传输数据之外还能够执行指令。顺便说一句,协处理器指令系统与中央处理器不同。

CPU可以通过初始化基本操作(例如启用数据路径和设置参与操作的I/O设备)来执行I/O特定程序。然后它将任务传输给I/O处理器,然后I/O处理器执行其余的任务并在完成后通知处理器。同时处理器执行其他重要指令。

I/O处理器本质上是一个小型DMA专用处理器,可以执行有限的输入和输出指令,并且可以被多个外设共享。

I/O处理器解决了两个问题:

  • 输入和输出的工作由CPU承担。虽然DMA不需要CPU来进行外设和内存之间的数据交换,但它只是减轻了CPU的负担。因为在DMA中,输入输出的初始化仍然是由CPU完成的。
  • 大型计算机系统中高速设备DMA接口共享问题。大型计算机系统的外设如此之多,以至于它所共享的DMA接口有限(小型计算机系统如PC中的每个设备都分配有一个DMA高速接口)。