当前位置:首页 > 内存 > 正文

直接内存访问控制器

  • 内存
  • 2024-05-02 08:52:59
  • 1247

一、什么是直接内存访问(DMA)DMA(DirectMemoryAccess),即直接内存访问,是一种高速传输数据的机制。数据传输可以从适配卡到存储器、从存储器到适配卡或从一个存储器到另一个存储器。
用于数据传输时,不需要CPU参与。所有计算机主板都有DMA控制器,并且计算机通常使用适配器上的ROM(例如软盘驱动器控制器中的ROM)来传输数据。一旦控制器初始化完成并开始数据传输,DMA就可以与CPU断开并独立完成数据传输。
在DMA传输开始的短时间内,本质上有两个处理器在工作,一个执行程序代码,另一个传输数据。使用DMA传输数据的另一个优点是数据直接在源地址和目标地址之间传输,无需中介。通过CPU将字节从适配卡传输到内存需要两步操作。首先,CPU从适配卡读取该字节到内部寄存器中,并将其从寄存器传输到存储器中的适当地址。DMA控制器将这些操作简化为一步,操作总线上的控制信号,以便字节仅写入一次。这将大大提高您计算机的运行速度和工作效率。
随着当今计算机的进步,DMA不再用于在存储器之间传输数据。这比使用DMA控制更快,因为CPU非常快,但必须在适配器之间完成。DMA仍然是卡和内存之间传输数据的最佳选择。为了将数据从适配卡传输到内存,DMA触发总线从适配卡读取数据(即I/O读操作),并触发总线将数据写入内存。激活I/O读取操作允许适配器卡将一个数据单元(通常是字节或字)放置到PC数据总线上。此时,内存写总线也处于活动状态,因此从内存中读取数据。同时将PC总线复制到内存。
直接内存访问(DMA)方法是一种完全由硬件完成I/O交换的实用方法。DMA控制器从CPU手中接管总线的完全控制权。数据交换直接发生在内存和I/O设备之间,绕过CPU。DMA控制器采用三种方法:
①停止CPU访问内存:当外围设备请求发送一批数据时,DMA控制器向CPU发送信号。DMA控制器获得总线控制权后,开始数据传输。一组数据传输完毕后,DMA控制器通知CPU内存可用,并将总线控制权返回给CPU。
②循环旁路:如果I/O设备上没有DMA请求,则CPU按照程序要求访问内存。当I/O设备接收到DMA请求时,I/O设备绕过DMA请求。或者几个循环。
③DMA和CPU之间交替进行内部访问:CPU周期可分为两个周期,一个专用于DMA控制器访问,另一个专用于CPU访问。无需申请、设置或返还公交车使用权。


二、直接内存访问(DMA)对内存的访问为什么比CPU对内存的访问的优先级更高?DMA处理的对象通常是快速外设,数据被放置在高速缓冲区中。如果缓冲区已满并且请求处理器没有收到及时响应,则缓冲区中的数据可能会被覆盖。,因此DMA内存访问优先级将高于CPU内存访问。