📜  I / O接口(中断和DMA模式)

📅  最后修改于: 2021-06-28 15:35:33             🧑  作者: Mango

在内部存储器和外部I / O设备之间传输信息的方法称为I / O接口。通过连接到任何计算机系统的外围设备,使用特殊的通信链接来连接CPU。这些通信链接用于解决CPU与外围设备之间的差异。 CPU和外设之间存在特殊的硬件组件,以监督和同步所有称为接口单元的输入和输出传输。

转移方式:

从外部设备接收到的二进制信息通常存储在存储单元中。从CPU传输到外部设备的信息源自存储单元。 CPU仅处理信息,而源和目标始终是存储单元。 CPU和I / O设备之间的数据传输可以以不同的模式进行。

可以通过三种可能的方式中的任何一种与外围设备进行数据传输

  1. 编程的I / O。
  2. 中断启动的I / O。
  3. 直接内存访问(DMA)。

现在让我们逐一讨论每种模式。

  1. 编程的I / O:这是由于计算机程序中写入的I / O指令的结果。每次数据项传输均由程序中的一条指令启动。通常,传输是从CPU寄存器和内存进行的。在这种情况下,需要外围设备的CPU进行持续监视。

    编程I / O的示例:在这种情况下,I / O设备无法直接访问存储单元。从I / O设备到内存的传输需要CPU执行几条指令,包括将数据从设备传输到CPU的输入指令,以及将数据从CPU传输到内存的存储指令。在已编程的I / O中,CPU停留在程序循环中,直到I / O单元指示已准备好进行数据传输为止。这是一个耗时的过程,因为它不必要地使CPU繁忙。通过使用中断工具可以避免这种情况。这将在下面讨论。

  2. 中断启动的I / O:由于在上述情况下,我们看到CPU不必要地处于繁忙状态。通过使用中断驱动的方法进行数据传输可以很好地避免这种情况。通过使用中断功能和特殊命令来通知接口,只要有任何设备可用的数据,便发出中断请求信号。同时,CPU可以继续执行其他任何程序。同时,该界面会持续监控设备。只要确定设备已准备好进行数据传输,它就会向计算机发出中断请求信号。在检测到外部中断信号时,CPU会立即停止其已经在执行的任务,分支到服务程序以处理I / O传输,然后返回到其最初正在执行的任务。

    注意:编程的I / O和中断驱动的I / O均需要主动干预。
    处理器在内存和I / O模块之间传输数据,并且任何数据传输都必须横向进行
    通过处理器的路径。因此,这两种形式的I / O都有两个固有的缺点。

    • I / O传输速率受处理器测试和服务处理器速度的限制。
      设备。
    • 处理器与管理I / O传输密切相关。必须执行许多指令
      每个I / O传输。
  3. 直接内存访问:快速存储介质(例如磁盘)和存储单元之间的数据传输受CPU速度的限制。因此,我们可以允许外设使用内存总线直接相互通信,从而消除了CPU的干预。这种类型的数据传输技术称为DMA或直接内存访问。在DMA期间,CPU处于空闲状态,并且无法控制内存总线。 DMA控制器接管总线以直接管理I / O设备与存储单元之间的传输。

    总线请求: DMA控制器使用它来请求CPU放弃对总线的控制。

    总线授权:由CPU激活,以通知外部DMA控制器总线处于高阻抗状态,并且请求的DMA可以控制总线。 DMA控制了总线后,便会传输数据。这种转移可以通过多种方式进行。

    使用DMA控制器的DMA传输类型:

    突发传输:
    DMA在完成数据传输后返回总线。寄存器用作字节数,
    在每次字节传输时递减,并且当字节计数达到零时,DMAC将
    放下巴士。当DMAC在突发模式下运行时,CPU在数据持续时间内暂停
    转移。
    涉及的步骤有:

    1. 总线授予请求时间。
    2. 以设备的传输速率传输整个数据块,因为设备通常比传输速度慢
      数据可以传输到CPU的速度。
    3. 将总线的控制权释放回CPU
      因此,传输N个字节所需的总时间
      =总线授予请求时间+(N)*(内存传输速率)+总线释放控制时间。
    Where,
    X µsec =data transfer time or preparation time (words/block)
    Y µsec =memory cycle time or cycle time or transfer time (words/block)
    % CPU idle (Blocked)=(Y/X+Y)*100
    % CPU Busy=(X/X+Y)*100

    循环偷窃:
    一种替代方法,其中DMA控制器一次传输一个字,然后必须将总线的控制权返回给CPU。 CPU仅将其操作延迟一个内存周期,以允许直接内存I / O传输“窃取”一个内存周期。
    涉及的步骤是:

    1. 将字节缓冲到缓冲区中
    2. 通知CPU设备有1个字节要传输(即总线授权请求)
    3. 传输字节(以系统总线速度)
    4. 将总线的控制权释放回CPU。

      在继续传输数据的下一个字节之前,设备会再次执行步骤1,以使总线不会被束缚,并且
      传输将不取决于设备的传输速率。
      因此,对于1字节的数据传输,使用周期窃取模式(T)需要花费时间。
      =授予总线所需的时间+ 1个总线周期来传输数据+释放总线所需的时间,将为
      净重

    在循环窃取模式下,我们始终遵循流水线概念,即当传输一个字节时,设备将并行准备下一个字节。如果询问“ CPU时间与数据传输时间的比例”,则使用周期窃取模式。

    Where,
    X µsec =data transfer time or preparation time
    (words/block)
    Y µsec =memory cycle time or cycle time or transfer
    time (words/block)
    % CPU idle (Blocked) =(Y/X)*100
    % CPU busy=(X/Y)*100 
    

    交错模式:在这种技术中,当
    微处理器不使用它。另一个半周期,即半周期DMA +半周期处理器。注意:在Gate Exam中,您可以直接将上述公式应用于DMA传输的不同模式。