日B视频 亚洲,啪啪啪网站一区二区,91色情精品久久,日日噜狠狠色综合久,超碰人妻少妇97在线,999青青视频,亚洲一区二卡,让本一区二区视频,日韩网站推荐

您好,歡迎來電子發(fā)燒友網(wǎng)! ,新用戶?[免費注冊]

當(dāng)前位置:電子發(fā)燒友網(wǎng) > 圖書頻道 > 電子 > 《微計算機原理》 > 第6章 中斷與DMA

第4節(jié) 內(nèi)存直接傳送(DMA)

                                                                                               第四節(jié) 內(nèi)存直接傳送(DMA) 

1、 問題的提出

  中斷方式較之查詢方式來說,可以提高CPU的利用率和保證對外設(shè)響應(yīng)的實時性,但對于高速外設(shè)(如磁盤、高速A/D等),中斷方式不能滿足數(shù)據(jù)傳輸速度的要求。因為,中斷方式下,每次中斷均需保存斷點(返回地址)和現(xiàn)場(各寄存器的值,包括標(biāo)志寄存器),中斷返回時,要恢復(fù)斷點和現(xiàn)場。同時,進入中斷和從中斷返回均使CPU指令隊列被清除。所有這些原因,使得中斷方式難以滿足高速外設(shè)對傳輸速度的要求。 對于高速外設(shè)的數(shù)據(jù)傳輸,一種有效的方式是使用DMA方式,即:使用DMA控制器(簡稱DMAC,典型芯片是Intel 8237),在外設(shè)和內(nèi)存之間直接進行數(shù)據(jù)塊傳輸。這種傳輸由DMAC硬件完成,不需CPU的干預(yù),因此可以達(dá)到較高的 速度,如Intel8237A(3MHz),傳輸速度可達(dá)1.5MB/S。


2、 DMA控制器的構(gòu)成

(1) 基地址寄存器和當(dāng)前地址寄存器。
(2) 字節(jié)計數(shù)器。
(3) 控制寄存器和狀態(tài)寄存器。
(4)其他電路,如數(shù)據(jù)緩沖器、請求寄存器、屏蔽寄存器、讀寫電路等。

3、 DMA控制器的功能

 ?、?當(dāng)外設(shè)準(zhǔn)備就緒,希望進行DMA傳送時,向DMA控制器發(fā)出DMA請求信號(DRQ)。DMAC收到此信號后,向CPU發(fā)出總線請求信號(HOLD或RQ/GT)。
 ?、?CPU收到總線請求信號后,如果允許,則發(fā)出DMA響應(yīng)信號(HLDA或RQ/GT)。此時,CPU便放棄對總線的控制,DMAC獲得總線的控制權(quán)。(除非CPU正在執(zhí)行總線封鎖指令LOCK,CPU在完成當(dāng)前總線操作后,會響應(yīng)總線請求。區(qū)別:如果IF=1,CPU在執(zhí)行完當(dāng)前指令后,會響應(yīng)INTR中斷請求。一條指令可能含有多個總線周期)。
 ?、?DMAC獲得總線的控制權(quán)后,向地址總線發(fā)出地址信號,指出傳送過程需使用的內(nèi)存地址。為此,DMAC內(nèi)部設(shè)有"地址寄存器"。在DMA操作過程中,每傳送一字節(jié)數(shù)據(jù),DMAC自動修改地址寄存器的值,以指向下一個內(nèi)存地址。同時,DMAC獲得總線的控制權(quán)后,向外設(shè)發(fā)出DMA應(yīng)答信號 DACK ,該外設(shè)與內(nèi)存之間進行DMA傳送。
  ④ 在DMA傳送期間,DMAC發(fā)出內(nèi)存和外設(shè)的讀/寫信號。
 ?、?為了決定數(shù)據(jù)塊傳輸?shù)淖止?jié)數(shù),在DMAC內(nèi)部必須有一個“字節(jié)計數(shù)器”。在開始時,由軟件設(shè)置數(shù)據(jù)塊的長度,在DMA傳送過程中,每傳送一字節(jié),字節(jié)計數(shù)器減1,減為0時,該次DMA傳輸結(jié)束。
 ?、?DMA過程結(jié)束時,DMAC向CPU發(fā)出結(jié)束信號(撤消HOLD請求),將總線控制權(quán)交還CPU。同時,DMAC發(fā)出EOP信號。

4、 DMA傳送的方法

(1) 周期挪用。將CPU不訪問存儲器的總線周期挪用來進行DMA操作。
(2) 周期擴展。進行DMA傳送時,使送給CPU的時鐘周期加大,而送給DMAC和存儲器的時鐘周期不變。
(3) CPU停機。在進行DMA傳送時CPU不工作。

DMA傳送的方式:
(1) 塊傳輸方式
DMAC一旦獲得總線控制權(quán),連續(xù)進行多個字節(jié)的傳輸,只有當(dāng)“字節(jié)計數(shù)器”減為0,才釋放總線。
(2)單字節(jié)傳輸方式
DMAC獲得總線控制權(quán)后僅傳送一字節(jié)就釋放總線。

5、 DMAC編程 (1) DMAC和接口電路的初始化程序
  為了使DMA過程能正確進行,必須使用程序?qū)MA控制器和接口電路進行初始化,初始化包括下列設(shè)置:
 ?、?設(shè)置DMAC的字節(jié)計數(shù)器初值,以決定數(shù)據(jù)塊的長度。
  ② 設(shè)置DMAC的地址寄存器初值,以確定數(shù)據(jù)傳輸所用的存儲區(qū)首地址。
 ?、?設(shè)置DMAC的控制寄存器,指出數(shù)據(jù)傳送方向、是否進行塊傳輸,并啟動DMA操作。
 ?、?設(shè)置接口電路的控制寄存器,指出數(shù)據(jù)傳輸方向,并啟動I/O操作。

  設(shè):(INT-interface接口,CON-control register控制寄存器,“輸入”指I/O->存儲器,“輸出”指存儲器->I/O)接口狀態(tài)寄存器地址INTSTAT, bit2=1---I/O設(shè)備忙
  接口控制寄存器地址INTCON, bit0=1為輸入,bit0=0為輸出
  bit2=1---啟動I/O操作
  DMAC控制寄存器地址DMACON
  bit0=1為輸入,bit0=0為輸出
  bit3=1,可接收DMA請求
  bit6=0為字節(jié)傳輸模式,bit6=1為塊傳輸模式
  DMAC字節(jié)計數(shù)器地址BYTE-REG
  DMAC地址寄存器地址ADD-REG

存儲器->I/O的數(shù)據(jù)塊傳輸初始化程序為:

    IDLE: IN AL, INTSTAT ??;讀接口狀態(tài)
    TEST AL, 04H       ;是否忙(bit2)
    JNZ IDLE        ??;bit2=1,忙
    MOV AX, COUNT     ??;塊傳輸字節(jié)數(shù)
    OUT BYTE_REG, AX
    LEA AX, BUFFER     ;塊傳輸內(nèi)存首地址
    OUT ADD_REG, AX
    MOV AL, DMAC      ;DMAC原控制字
    OR AL, 49H      ?。粔K傳輸、允許接收DMA請求、輸入
    OUT DMACON, AL
    MOV AL, INTC     ?。唤涌陔娐返脑刂谱?br />     OR AL, 05H       ??;輸入,啟動操作
    OUT INTCON, AL
      ┆

  程序?qū)涌陔娐泛虳MAC初始化后,當(dāng)接口準(zhǔn)備就緒,向DMAC請求傳輸,DMAC再向CPU請求總線。當(dāng)DMAC獲得總線控制權(quán)后,按初始化程序規(guī)定的方式執(zhí)行傳輸。傳輸過程本身不需CPU干預(yù)。在DMAC傳輸完成后,發(fā)出結(jié)束信號EOP ,CPU可以查詢EOP信號,以便進行后續(xù)數(shù)據(jù)處理?;蛘甙袳OP信號作為中斷請求信號,CPU在中斷處理程序中進行后續(xù)數(shù)據(jù)處理。

6、 DMA控制器的工作特點

?。?) DMAC是一個接口電路,CPU可以通過其端口地址對DMAC進行讀/寫操作,以便對DMAC進行初始化或查詢其狀態(tài)。但它與一般的接口電路有顯著的不同,DMAC可以獲得系統(tǒng)總線控制權(quán),當(dāng)其獲得系統(tǒng)總線控制權(quán)后,能提供一系列控制信號,像CPU一樣操縱外設(shè)和內(nèi)存之間的數(shù)據(jù)傳輸。即,DMAC有兩種工作狀態(tài):
從模塊狀態(tài)(或稱被動態(tài)):作為接口電路,受CPU控制
主模塊狀態(tài)(或稱主動態(tài)):控制系統(tǒng)總線
?。?) DMAC控制內(nèi)存和外設(shè)的數(shù)據(jù)傳輸方式,與CPU的方式完全不同。

CPU:
 ?、?通過執(zhí)行指令傳輸數(shù)據(jù)。
 ?、?被傳輸?shù)臄?shù)據(jù)必須通過CPU累加器(AL/AX)中轉(zhuǎn)。
DMAC:
 ?、?通過硬件邏輯電路,用固定的順序地址信號和讀/寫信號進行數(shù)據(jù)傳輸。
 ?、?被傳輸?shù)臄?shù)據(jù)不送入DMAC內(nèi)部中轉(zhuǎn),從“源”讀得的數(shù)據(jù)保存在數(shù)據(jù)總線上,然后立即開始寫操作,將數(shù)據(jù)寫入“目的”。

 正是由于DMAC的上述數(shù)據(jù)傳輸特點,使DMA傳輸可以達(dá)到很高的速度,這也是DMA(Direct Memory Access直接內(nèi)存訪問)的含義.
 

?
萝北县| 湘潭市| 资讯 | 崇阳县| 罗江县| 买车| 宁乡县| 天津市| 马龙县| 邵武市| 新蔡县| 永昌县| 礼泉县| 兴业县| 汪清县| 吴川市| 象山县| 慈溪市| 黄龙县| 石门县| 洛浦县| 南康市| 鲜城| 潼关县| 古田县| 葫芦岛市| 临夏市| 积石山| 大余县| 丹棱县| 自贡市| 平舆县| 临沧市| 徐闻县| 东至县| 牟定县| 汶川县| 仁布县| 乐业县| 山东省| 汶川县|