• 直接內存訪問

    編輯
    本詞條由“匿名用戶” 建檔。

    直接內存訪問

    編輯

    直接內存訪問(DMA)是計算機系統的一項功能,它允許某些硬件子系統獨立于中央處理單元(CPU)訪問主系統內存(隨機存取內存)。

    如果沒有直接內存訪問,當CPU使用編程的輸入/輸出時,它通常在讀或寫操作的整個持續時間內都被完全占用,因此無法執行其他工作。對于DMA,CPU首先啟動傳輸,然后在傳輸過程中執行其他操作,最后在操作完成時收到來自DMA控制器(DMAC)的中斷。在CPU無法跟上數據傳輸速率的任何時候,或者當CPU需要在等待相對較慢的I/O數據傳輸時執行工作時,此功能非常有用。許多硬件系統使用直接內存訪問,包括磁盤驅動器控制器、圖形卡、網卡和聲卡。.DMA還用于多核處理器中的片內數據傳輸。與沒有DMA通道的計算機相比,具有DMA通道的計算機可以以更少的CPU開銷在設備之間傳輸數據。類似地,多核處理器內的處理元件可以在不占用其處理器時間的情況下將數據傳入和傳出其本地存儲器,從而允許計算和數據傳輸并行進行。

    直接內存訪問還可用于“內存到內存”復制或移動內存中的數據。DMA可以將昂貴的內存操作(例如大副本或分散收集操作)從CPU卸載到專用DMA引擎。一個實現示例是I/O加速技術。DMA對片上網絡和內存計算架構很感興趣。

    直接內存訪問原則

    編輯

    第三方

    標準直接內存訪問,也稱為第三方DMA,使用DMA控制器。DMA控制器可以生成內存地址并啟動內存讀取或寫入周期。它包含幾個可由CPU寫入和讀取的硬件寄存器。這些包括存儲器地址寄存器、字節計數寄存器和一個或多個控制寄存器。根據DMA控制器提供的功能,這些控制寄存器可能指定源、目標、傳輸方向(從I/O設備讀取或寫入I/O設備)、傳輸單位,和/或一次突發傳輸的字節數。

    為了執行輸入、輸出或內存到內存操作,主機處理器使用要傳輸的字數和要使用的內存地址的計數來初始化直接內存訪問控制器。然后CPU命令xxx設備啟動數據傳輸。DMA控制器然后向系統存儲器提供地址和讀/寫控制線。每次準備好在xxx設備和存儲器之間傳輸一個字節的數據時,直接內存訪問控制器都會遞增其內部地址寄存器,直到傳輸完整的數據塊。

    總線控制

    在總線主控系統(也稱為xxx方DMA系統)中,CPU和外設都可以被授予對內存總線的控制權。當一個外設可以成為總線主控時,它可以直接寫入系統內存而不需要CPU的參與,根據需要提供內存地址和控制信號。必須采取一些措施將處理器置于保持狀態,以免發生總線爭用。

    操作模式

    編輯

    突發模式

    在突發模式下,整個數據塊以一個連續的序列傳輸。一旦DMA控制器被CPU授予訪問系統總線的權限,它會在將系統總線的控制權釋放回CPU之前傳輸數據塊中的所有數據字節,但會使CPU在相對較長的時間內處于非活動狀態。該模式也稱為“塊傳輸模式”。

    循環竊取模式

    的周期挪用模式是在其中CPU不應是所需的突發傳輸模式的時間長度禁用系統中使用。在周期竊取模式下,直接內存訪問控制器以與突發模式相同的方式獲得對系統總線的訪問,使用BR(總線請求)和BG(總線授權)信號,這是控制CPU和直接內存訪問控制器之間接口的兩個信號。然而,在周期竊取模式下,在傳輸一個單位(例如字節)的數據后,系統總線的控制權通過BG被取消斷言給CPU。然后通過BR再次連續請求,每個請求傳輸一個單位(例如字節)的數據,直到傳輸了整個數據塊。通過不斷地獲得和釋放系統總線的控制權,DMA控制器實質上交錯了指令和數據傳輸。CPU處理一條指令,然后直接內存訪問控制器傳輸一個數據值,依此類推。數據傳輸速度不快,但CPU不會像突發模式下那樣閑置。循環竊取模式對于實時監控數據的控制器很有用。

    透明模式

    透明模式傳輸一個數據塊需要最多的時間,但它也是整體系性能最有效的模式。在透明模式下,DMA控制器僅在CPU執行不使用系統總線的操作時傳輸數據。透明模式的主要優點是CPU永遠不會停止執行它的程序并且直接內存訪問傳輸在時間上是免費的,而缺點是硬件需要確定CPU何時不使用系統總線,這可能很復雜.這也稱為“隱藏DMA數據傳輸模式”。

    直接內存訪問

    緩存一致性

    編輯

    直接內存訪問會導致緩存一致性問題。想象一下配備緩存和外部存儲器的CPU,這些存儲器可以由使用DMA的設備直接訪問。當CPU訪問內存中的位置X時,當前值將存儲在緩存中。X上的后續操作將更新X的緩存副本,但不會更新X的外部存儲器版本,假設是回寫緩存。如果在下一次設備嘗試訪問X之前沒有將緩存刷新到內存中,則該設備將收到一個陳舊的X值。

    類似地,如果在設備向內存寫入新值時X的緩存副本沒有失效,則CPU將對X的陳舊值進行操作。

    這個問題可以通過系統設計中的兩種方式之一解決:緩存一致性系統在硬件中實現一種稱為總線監聽的方法,其中外部寫入被發送到緩存控制器,然后緩存控制器為DMA寫入或緩存刷新執行緩存失效DMA讀取。非相干系統將這一點留給軟件,其中操作系統必須確保在開始傳出DMA傳輸之前刷新緩存行,并在訪問受傳入DMA傳輸影響的內存范圍之前使緩存行無效。操作系統必須確保在此期間任何正在運行的線程都不會訪問內存范圍。后一種方法為DMA操作引入了一些開銷,因為大多數硬件需要一個循環來單獨使每個緩存行無效。

    內容由匿名用戶提供,本內容不代表www.gelinmeiz.com立場,內容投訴舉報請聯系www.gelinmeiz.com客服。如若轉載,請注明出處:http://www.gelinmeiz.com/130761/

    (1)
    詞條目錄
    1. 直接內存訪問
    2. 直接內存訪問原則
    3. 第三方
    4. 總線控制
    5. 操作模式
    6. 突發模式
    7. 循環竊取模式
    8. 透明模式
    9. 緩存一致性

    輕觸這里

    關閉目錄

    目錄
    91麻精品国产91久久久久