DMA數據傳輸過程

DMA方式具有如下特點:
  1、 外部設備的輸入輸出請求直接發給主儲存器。
   主存儲器既可以被CPU訪問,也可以被外圍設備訪問。因此,在主存儲器中通常要有一個存儲管理部件來為各種訪問主存儲器的申請排隊,一般計算機系統把外圍設備的訪問申請安排在最高優先級。
  2、 不需要做保存現場和恢復現場等工作,從而使DMA方式的工作速度大大加快。
  
由于在外圍設備與主存儲器之間傳送數據不需要執行程序,因此,也不動用CPU中的數據寄存器和指令計數器等。
  3、在DMA控制器中,除了需要設置數據緩沖寄存器、設備狀態寄存器或控制寄存器之外,還要設置主存儲器地址寄存器,設備地址寄存器和數據交換個數計數器。
  
外圍設備與主存儲器之間的整個數據交換過程全部要在硬件控制下完成。另外,由于外圍設備一般是以字節為單位傳送的,而主存儲器是以字為單位訪問的,因此,在DMA控制器中還要有從字節裝配成字和從字拆卸成字節的硬件。
  4、在DMA方式開始之前要對DMA控制器進行初始化,包括向DMA控制器傳送主存緩沖區首地址、設備地址、交換的數據塊的長度等,并啟動設備開始工作。在DMA方式結束之后,要向CPU申請中斷,在中斷服務程序中對主存儲器中數據緩沖區進行后處理。如果需要繼續傳送數據的話,要再次對DMA控制器進行初始化。
  5、在DMA方式中,CPU不僅能夠與外圍設備并行工作,而且整個數據的傳送過程不需要CPU的干預。如果主存儲器的頻帶寬度足夠的話,外圍設備的工作可以絲毫不影響CPU運行它自身的程序。
  DMA方式的工作流程如下:
  對于輸入設備:
  從輸入介質上讀一個字節或字到DMA控制器中的數據緩沖寄存器BD中,如果輸入設備是面向字符的,則要把讀入的字符裝配成字。
  若一個字還沒有裝配滿,則返回到上面;若校驗出錯,則發中斷申請;若一個字已經裝配滿,則將BD中的數據送入主存數據寄存器。
  把主存地址寄存器BA(在DMA控制器中)中的地址送入主存地址寄存器,并且將BA中的地址增值至下一個字地址。
  把DMA控制器內的數據交換個數計數器BC中的內容減"1"。
  若BC中的內容為"0",則整個DMA數據傳送過程全部結束,否則返回到最上面繼續進行。
  對于輸出設備:
  把主存地址寄存器BA(在DMA控制器中)中的地址送入主存地址寄存器,并啟動主存儲器,同時將BA中的地址增值至下一個字地址。
  將主存儲器數據寄存器中的數據送入DMA控制器的數據緩沖寄存器BD中。如果輸出設備是面向字符的,則要把BD中的數據拆卸字符。
  把BD中數據逐個字符(對于面向字符的設備)或整個字寫到輸出介質上。
  把DMA控制器內的數據交換個數計數器BC中的內容減"1"。
  若BC中的內容為"0",則整個DMA數據傳送過程全部結束,否則返回到最上面繼續進行。
  目前使用的DMA方式實際上有如下三種:

  1、周期竊取方式
  在每一條指令執行結束時,CPU測試有沒有DMA服務申請,如果有,則CPU進入一個DMA周期。在DMA周期中借用CPU完成上面所列出的DMA工作流程。包括數據和主存地址的傳送,交換個數計數器中的內容減"1",主存地址的增值及一些測試判斷等。
  
采用周期竊取方式時,主存儲器可以不與外圍設備直接相連接,而只與CPU連接,即仍然可以采用如圖4.4那樣的連接方式,因為外圍設備與主存儲器的數據交換與程序控制輸入輸出方式和中斷輸入輸出方式一樣都是要經過CPU的。
  周期竊取方式與程序控制輸入輸出方式和中斷輸入輸出方式的不同處主要在:它不需要使用程序來完成數據的輸入或輸出,只是借用了一個CPU的周期來完成DMA流程。因此,其工作速度是很快的。
  周期竊取方式的優點是硬件結構很簡單,比較容易實現。缺點是在數據輸入或輸出過程種實際上占用了CPU的時間。

  2、直接存取方式
  這是一種真正的DMA方式。DMA控制器的數據傳送申請不是發向CPU,而是直接發往主存儲器。在得到主存儲器的響應之后,整個DMA工作流程全部在DMA控制器中用硬件完成。
  直接存取方式的優點與缺點正好與周期竊取方式相反。
  目前的多數計算機系統均采用直接存取方式工作。

  3、數據塊傳送方式
  在設備控制器中設置一個比較大的數據緩沖存儲器,一般要能夠存放下一個數據塊,如在軟磁盤存儲器中通常設置512個字節的數據緩沖存儲器。與設備介質之間的數據交換在數據緩沖存儲器中進行。設備控制器與主存儲器之間的數據交換以數據塊為單位,并采用程序中斷方式進行。
  數據塊傳送方式實際上并不是DMA方式,只是它在每次中斷輸入輸出過程中是以數據塊為單位獲得或發送數據的,這一點與上面兩種DMA方式相同,因此,通常也把這種輸入輸出方式歸入DMA方式。
  
采用數據塊傳送方式的外圍設備還有行式打印機,激光打印機,卡片閱讀機,部分繪圖儀等。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/253343.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/253343.shtml
英文地址,請注明出處:http://en.pswp.cn/news/253343.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

Android JNI開發系列(二)HelloWorld

2019獨角獸企業重金招聘Python工程師標準>>> 入門HelloWorld 新建項目 Configure your new project部分選中 Include C Support 復選框 Next 正常填寫所有其他字段并完成向導接下來幾個部分 在向導的Customize C Support 部分,您可以使用謝列選項自定…

sublime text3安裝js提示的插件

今天安裝Sublime Text3的js插件,在網上查了很多資料,為了方便以后看,寫一個安裝插件的總結和方法。 要安裝js相關的插件,就要先安裝一個Package Control(插件管理器)的插件,通過這個插件再去安裝…

SPI接口詳細介紹

1. 概述 SPI Serial Peripheral Interface,是串行外圍設備接口,是一種高速,全雙工,同步的通信總線。常規只占用四根線,節約了芯片管腳,PCB的布局省空間。現在越來越多的芯片集成了這種通信協議&#xff0…

駐扎博客園

今天把之前hexo里的一些文章全部轉移到博客園了,之后就在博客園寫點東西,記錄一些生活的瑣事。為什么要移至博客園呢?其實很簡單,這邊可以和一些同意從事前端的小伙伴一起互動。技術還是需要多討論的,希望之后能多更新…

H.264 Profile、Level、Encoder三張簡圖

H.264有四種畫質級別,分別是BP、EP、MP、HP: 1、BP-Baseline Profile:基本畫質。支持I/P 幀,只支持無交錯(Progressive)和CAVLC;   2、EP-Extended profile:進階畫質。支持I/P/B/SP/SI 幀&…

require.js學習記錄

1、簡介 官方對requirejs的描述:RequireJS is a JavaScript file and module loader. It is optimized for in-browser use, but it can be used in other JavaScript environments, like Rhino and Node. Using a modular script loader like RequireJS will impro…

iOS-AFNetworking參數和多文件同時上傳【多文件上傳】

1. 前言 在項目開發中,我們經常需要上傳文件,例如:上傳圖片,上傳各種文件,而有時也需要將參數和多個文件一起上傳,不知道大家的項目中遇到了沒有,我在最近的項目中,就需要這樣的一個…

智能音箱 之 平臺方案簡介

智能音箱,被認為是物聯網時代的入口,在去年成為了各大廠商爭相投入的風口。在當今互聯網時代,它不僅僅是一臺單純的音樂播放器,在其背后支撐的 AI 技術才是整個產品的核心,也是各大公司覬覦物聯網入口的最根本原因。經…

Linux Kconfig及Makefile學習

內核源碼樹的目錄下都有兩個文檔 Kconfig (2.4版本是Config.in)和Makefile。分布到各目錄的Kconfig構成了一個分布式的內核配置數據庫,每個Kconfig分別描述了 所屬目錄源文檔相關的內核配置菜單。在內核配置make menuconfig時,從K…

Linux編程 23 shell編程(結構化條件判斷 命令if -then , if-then ... elif-then ...else,if test)...

一.概述 在上一篇里講到了shell腳本,shell按照命令在腳本中出現的順序依次進行處理,對于順序操作已經足夠了,但許多程序要求對shell腳本中的命令加入一些邏輯流程控制,這樣的命令通常叫做 結構化命令。 1.1 使用if - then語句 --最…

Scala-Spark digamma stackoverflow問題

這兩天在用spark做點擊率的貝葉斯平滑,參考雅虎的論文進行了一番嘗試。 先上代碼: 1 # click_count, show_count # this method takes time2 def do_smooth(data_list):3 import scipy.special as sp4 a, b, i 1.0, 1.0, 05 da, db a, b6 …

IIS接口詳細介紹

1. 概述 I2S Inter-IC Sound Integrated Interchip Sound IIS,是飛利浦在1986年定義(1996年修訂)的數字音頻傳輸標準,用于數字音頻數據在系統內器件之間傳輸,例如編解碼器CODEC、DSP、數字輸入/輸出接口、ADC、DAC…

UVA - 10934 Dropping water balloons(裝滿水的氣球)(dp)

題意:有k個氣球,n層樓,求出至少需要多少次實驗能確定氣球的硬度。氣球不會被實驗所“磨損”。 分析: 1、dp[i][j]表示第i個氣球,測試j次所能確定的最高樓層。 2、假設第i-1個氣球測試j-1次所確定的最高樓層是a, 若第i個…

繼承進階

先講一個例子&#xff1a; #老師有生日&#xff0c;怎么組合哪&#xff1f; class Birthday: # 生日def __init__(self,year,month,day):self.year yearself.month monthself.day dayclass Teacher: # 老師<br>def __init__(self,name,birth):self.name nameself.b…

PCM接口詳細介紹--TDM方式

1. 概述 PCM = Pulse Code Modulation 是通過等時間隔(即采樣率時鐘周期)采樣將模擬信號數字化的方法。圖為4 bit 采樣深度的PCM數據量化示意圖: PCM數字音頻接口,說明接口傳輸的音頻數據是通過PCM方式采樣得到的,區別于PDM形式;IIS傳輸的也是PCM類型數據,屬于其一個特…

網站同源策略

所謂"同源"指的是"三個相同"&#xff1a;協議&#xff0c;域名&#xff0c;端口。 舉例來說&#xff0c;http://www.example.com/dir/page.html這個網址&#xff0c;協議是http://&#xff0c;域名是www.example.com&#xff0c;端口是80&#xff08;默認端…

Kconfig文件結構(圖文)簡介

1 Kconfig和Makefile 毫不夸張地說&#xff0c;Kconfig和Makefile是我們瀏覽內核代碼時最為依仗的兩個文件。基本上&#xff0c;Linux 內核中每一個目錄下邊都會有一個Kconfig文件和一個Makefile文件。Kconfig和Makefile就好似一個城市的地圖&#xff0c;地圖引導我們去 認識一…

PDM接口介紹

1. 概述 PDM Pulse Density Modulation是一種用數字信號表示模擬信號的調制方法。 PDM則使用遠高于PCM采樣率的時鐘采樣調制模擬分量&#xff0c;只有1位輸出&#xff0c;要么為0&#xff0c;要么為1。因此通過PDM方式表示的數字音頻也被稱為Oversampled 1-bit Audio。相比P…

js正則學習分享

http://www.cnblogs.com/rubylouvre/archive/2010/03/09/1681222.htmlhttp://www.cnblogs.com/tylerdonet/p/4262251.html //正整數 /^[0-9]*[1-9][0-9]*$/; //負整數 /^-[0-9]*[1-9][0-9]*$/; //正浮點數 /^(([0-9]\.[0-9]*[1-9][0-9]*)|([0-9]*[1-9][0-9]*\.[0-9])|([0-9]*[1…

Linux系統下UDP發送和接收廣播消息小例子

分類&#xff1a; 網絡通信 2013-01-07 10:54 1336人閱讀 評論(6) 收藏 舉報 [cpp] view plaincopyprint?// 發送端 #include <iostream> #include <stdio.h> #include <sys/socket.h> #include <unistd.h> #include <sys/types.h>…