DMA方式的数据传送过程
DMA方式具有如下特點(diǎn):
1、 外部設(shè)備的輸入輸出請(qǐng)求直接發(fā)給主儲(chǔ)存器。
主存儲(chǔ)器既可以被CPU訪問(wèn),也可以被外圍設(shè)備訪問(wèn)。因此,在主存儲(chǔ)器中通常要有一個(gè)存儲(chǔ)管理部件來(lái)為各種訪問(wèn)主存儲(chǔ)器的申請(qǐng)排隊(duì),一般計(jì)算機(jī)系統(tǒng)把外圍設(shè)備的訪問(wèn)申請(qǐng)安排在最高優(yōu)先級(jí)。
2、 不需要做保存現(xiàn)場(chǎng)和恢復(fù)現(xiàn)場(chǎng)等工作,從而使DMA方式的工作速度大大加快。
由于在外圍設(shè)備與主存儲(chǔ)器之間傳送數(shù)據(jù)不需要執(zhí)行程序,因此,也不動(dòng)用CPU中的數(shù)據(jù)寄存器和指令計(jì)數(shù)器等。
3、在DMA控制器中,除了需要設(shè)置數(shù)據(jù)緩沖寄存器、設(shè)備狀態(tài)寄存器或控制寄存器之外,還要設(shè)置主存儲(chǔ)器地址寄存器,設(shè)備地址寄存器和數(shù)據(jù)交換個(gè)數(shù)計(jì)數(shù)器。
外圍設(shè)備與主存儲(chǔ)器之間的整個(gè)數(shù)據(jù)交換過(guò)程全部要在硬件控制下完成。另外,由于外圍設(shè)備一般是以字節(jié)為單位傳送的,而主存儲(chǔ)器是以字為單位訪問(wèn)的,因此,在DMA控制器中還要有從字節(jié)裝配成字和從字拆卸成字節(jié)的硬件。
4、在DMA方式開(kāi)始之前要對(duì)DMA控制器進(jìn)行初始化,包括向DMA控制器傳送主存緩沖區(qū)首地址、設(shè)備地址、交換的數(shù)據(jù)塊的長(zhǎng)度等,并啟動(dòng)設(shè)備開(kāi)始工 作。在DMA方式結(jié)束之后,要向CPU申請(qǐng)中斷,在中斷服務(wù)程序中對(duì)主存儲(chǔ)器中數(shù)據(jù)緩沖區(qū)進(jìn)行后處理。如果需要繼續(xù)傳送數(shù)據(jù)的話,要再次對(duì)DMA控制器進(jìn) 行初始化。
5、在DMA方式中,CPU不僅能夠與外圍設(shè)備并行工作,而且整個(gè)數(shù)據(jù)的傳送過(guò)程不需要CPU的干預(yù)。如果主存儲(chǔ)器的頻帶寬度足夠的話,外圍設(shè)備的工作可以絲毫不影響CPU運(yùn)行它自身的程序。
DMA方式的工作流程如下:
對(duì)于輸入設(shè)備:
從輸入介質(zhì)上讀一個(gè)字節(jié)或字到DMA控制器中的數(shù)據(jù)緩沖寄存器BD中,如果輸入設(shè)備是面向字符的,則要把讀入的字符裝配成字。
若一個(gè)字還沒(méi)有裝配滿,則返回到上面;若校驗(yàn)出錯(cuò),則發(fā)中斷申請(qǐng);若一個(gè)字已經(jīng)裝配滿,則將BD中的數(shù)據(jù)送入主存數(shù)據(jù)寄存器。
把主存地址寄存器BA(在DMA控制器中)中的地址送入主存地址寄存器,并且將BA中的地址增值至下一個(gè)字地址。
把DMA控制器內(nèi)的數(shù)據(jù)交換個(gè)數(shù)計(jì)數(shù)器BC中的內(nèi)容減"1"。
若BC中的內(nèi)容為"0",則整個(gè)DMA數(shù)據(jù)傳送過(guò)程全部結(jié)束,否則返回到最上面繼續(xù)進(jìn)行。
對(duì)于輸出設(shè)備:
把主存地址寄存器BA(在DMA控制器中)中的地址送入主存地址寄存器,并啟動(dòng)主存儲(chǔ)器,同時(shí)將BA中的地址增值至下一個(gè)字地址。
將主存儲(chǔ)器數(shù)據(jù)寄存器中的數(shù)據(jù)送入DMA控制器的數(shù)據(jù)緩沖寄存器BD中。如果輸出設(shè)備是面向字符的,則要把BD中的數(shù)據(jù)拆卸字符。
把BD中數(shù)據(jù)逐個(gè)字符(對(duì)于面向字符的設(shè)備)或整個(gè)字寫到輸出介質(zhì)上。
把DMA控制器內(nèi)的數(shù)據(jù)交換個(gè)數(shù)計(jì)數(shù)器BC中的內(nèi)容減"1"。
若BC中的內(nèi)容為"0",則整個(gè)DMA數(shù)據(jù)傳送過(guò)程全部結(jié)束,否則返回到最上面繼續(xù)進(jìn)行。
目前使用的DMA方式實(shí)際上有如下三種:
1、周期竊取方式
在每一條指令執(zhí)行結(jié)束時(shí),CPU測(cè)試有沒(méi)有DMA服務(wù)申請(qǐng),如果有,則CPU進(jìn)入一個(gè)DMA周期。在DMA周期中借用CPU完成上面所列出的DMA工作流程。包括數(shù)據(jù)和主存地址的傳送,交換個(gè)數(shù)計(jì)數(shù)器中的內(nèi)容減"1",主存地址的增值及一些測(cè)試判斷等。
采用周期竊取方式時(shí),主存儲(chǔ)器可以不與外圍設(shè)備直接相連接,而只與CPU連接,即仍然可以采用如圖4.4那樣的連接方式,因?yàn)橥鈬O(shè)備與主存儲(chǔ)器的數(shù)據(jù)交換與程序控制輸入輸出方式和中斷輸入輸出方式一樣都是要經(jīng)過(guò)CPU的。
周期竊取方式與程序控制輸入輸出方式和中斷輸入輸出方式的不同處主要在:它不需要使用程序來(lái)完成數(shù)據(jù)的輸入或輸出,只是借用了一個(gè)CPU的周期來(lái)完成DMA流程。因此,其工作速度是很快的。
周期竊取方式的優(yōu)點(diǎn)是硬件結(jié)構(gòu)很簡(jiǎn)單,比較容易實(shí)現(xiàn)。缺點(diǎn)是在數(shù)據(jù)輸入或輸出過(guò)程種實(shí)際上占用了CPU的時(shí)間。
2、直接存取方式
這是一種真正的DMA方式。DMA控制器的數(shù)據(jù)傳送申請(qǐng)不是發(fā)向CPU,而是直接發(fā)往主存儲(chǔ)器。在得到主存儲(chǔ)器的響應(yīng)之后,整個(gè)DMA工作流程全部在DMA控制器中用硬件完成。
直接存取方式的優(yōu)點(diǎn)與缺點(diǎn)正好與周期竊取方式相反。
目前的多數(shù)計(jì)算機(jī)系統(tǒng)均采用直接存取方式工作。
3、數(shù)據(jù)塊傳送方式
在設(shè)備控制器中設(shè)置一個(gè)比較大的數(shù)據(jù)緩沖存儲(chǔ)器,一般要能夠存放下一個(gè)數(shù)據(jù)塊,如在軟磁盤存儲(chǔ)器中通常設(shè)置512個(gè)字節(jié)的數(shù)據(jù)緩沖存儲(chǔ)器。與設(shè)備介質(zhì)之間的數(shù)據(jù)交換在數(shù)據(jù)緩沖存儲(chǔ)器中進(jìn)行。設(shè)備控制器與主存儲(chǔ)器之間的數(shù)據(jù)交換以數(shù)據(jù)塊為單位,并采用程序中斷方式進(jìn)行。
數(shù)據(jù)塊傳送方式實(shí)際上并不是DMA方式,只是它在每次中斷輸入輸出過(guò)程中是以數(shù)據(jù)塊為單位獲得或發(fā)送數(shù)據(jù)的,這一點(diǎn)與上面兩種DMA方式相同,因此,通常也把這種輸入輸出方式歸入DMA方式。
采用數(shù)據(jù)塊傳送方式的外圍設(shè)備還有行式打印機(jī),激光打印機(jī),卡片閱讀機(jī),部分繪圖儀等。
總結(jié)
以上是生活随笔為你收集整理的DMA方式的数据传送过程的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 《九部的检察官》张译又遭质疑,好演员为何
- 下一篇: 小S因送大女儿赴美留学停工?经纪人回应: