io - DMA Controller 和I/O处理器有什么区别

标签 io hardware dma

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

那么 IOP 和 DMA Controller 在功能上的区别是什么?

最佳答案

在内存特定的 I/O 操作的情况下(简单的示例指令,例如 MIPS 处理器的 lw $r1,$r2,16),CPU 需要从内存中获取数据,以方便 I/O 操作。因此 CPU 必须暂停任何其他操作并监视内存 READ/WRITE 操作,直到它没有完成。换句话说只要在没有 DMA 的情况下进行读/写操作,CPU 就会被完全占用 .如果处理器在这段时间内空闲,那么处理器可能已经执行了一些其他指令。
直接内存访问(DMA):
DMA 提供了这种功能,可以以最少的 CPU 干预执行内存特定操作。当任何 I/O 设备需要内存访问时。它向 CPU 发送一个 DMA 请求(以中断的形式)。 CPU 通过向数据总线提供适当的授权信号来启动传输 .并将控制权传递给 DMA Controller ,后者控制其余的数据传输并将数据直接传输到 I/O 设备。在此期间,CPU 继续执行其他指令。一旦读/写操作完成(或发生任何异常),DMA Controller 将启动中断并通知处理器有关读/写操作的状态。
这样读/写操作也被执行,CPU 在此期间也执行一些其他指令。但是,DMA 的初始化仍然需要 CPU 干预。 因此,整体性能最大化。
输入输出处理器
您可以将 I/O 处理器视为 DMA 方法。
通常用于大型计算机系统的 I/O 处理器是一种协处理器,除了传输数据外,它还能够执行指令。 顺便说一下,协处理器指令系统不同于中央处理器。
CPU 可以通过初始化基本操作(如启用数据路径和设置参与操作的 I/O 设备)来执行 I/O 特定程序。 然后它将任务转移到 I/O 处理器,然后 I/O 处理器执行其余任务,并在完成后通知处理器。处理器同时执行其他重要指令。
I/O 处理器本质上是一个小型 DMA 专用处理器,可以执行有限的输入和输出指令,并且可以被多个外设共享。
I/O 处理器解决了两个问题:

  • 输入和输出的工作由 CPU 承担。
    DMA虽然不需要CPU进行外设和内存之间的数据交换,但只是减轻了CPU的负担。因为在DMA中,输入输出的初始化还是由CPU来完成的。
  • 大型计算机系统中高速设备的DMA接口(interface)共享问题。一个大型计算机系统的外围设备太多以至于它不得不共享有限的 DMA 接口(interface)(小型计算机系统如 PC 中的每个设备都分配了一个 DMA 高速接口(interface))。
  • 关于io - DMA Controller 和I/O处理器有什么区别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16200412/

    相关文章:

    java - Java 中的 PrintWriter 给出意外行为

    java - 从同一个文件java读取字符串和字节

    c# - 处理器的特性C#

    hardware - 是最近走向宽屏的趋势(16 :9) computer monitors a plus or minus for programmers?

    c - 重新提交 DMA 引擎事务

    c++ - 如何在不格式化的情况下写入 std::ostream?

    java - 无法用java写入文件

    android - 自己的 Android 硬件键盘快捷键

    arm - 在 OMAP 4460 上进行多个 DMA 传输时,CPU 是否被阻塞?

    c - 提高读取 volatile 存储器的性能