專利名稱:一種直接存儲器存取裝置及方法
技術(shù)領(lǐng)域:
本發(fā)明涉及微機(jī)系統(tǒng)的數(shù)據(jù)存取領(lǐng)域,尤指一種直接存儲器存取裝置及方法。
背景技術(shù):
直接存儲器存取(DMA,Direct Memory Access)是微機(jī)系統(tǒng)提高數(shù)據(jù)傳輸效率的一項重要技術(shù)。DMA技術(shù)可以在中央處理器(CPU,CentralProcess Unit)執(zhí)行任務(wù)的同時,對系統(tǒng)設(shè)備中的數(shù)據(jù)塊進(jìn)行存取操作;也可以在CPU不參與的情況下,由專用的硬件電路控制數(shù)據(jù)塊的存取。本申請所述系統(tǒng)設(shè)備包括存儲設(shè)備和輸入輸出設(shè)備,在以下說明中,發(fā)送區(qū)指的是獲取數(shù)據(jù)塊的設(shè)備區(qū)域,接收區(qū)指的是保存數(shù)據(jù)塊的設(shè)備區(qū)域。采用DMA方式實現(xiàn)的數(shù)據(jù)傳輸就是在一定時間段內(nèi),由專用的硬件電路取代CPU獲得系統(tǒng)的總線控制權(quán),將數(shù)據(jù)塊從發(fā)送區(qū)取出,送入接收區(qū)保存,從而實現(xiàn)系統(tǒng)設(shè)備之間,包括存儲器與輸入輸出設(shè)備之間、或者存儲器的不同區(qū)域之間數(shù)據(jù)傳輸?shù)倪^程。在所述數(shù)據(jù)傳輸?shù)膶崿F(xiàn)過程中,數(shù)據(jù)傳輸完全由專用的硬件電路控制,CPU對此不進(jìn)行干預(yù),所以這種DMA方式實現(xiàn)的數(shù)據(jù)傳輸速率很高?,F(xiàn)有技術(shù)中,將上述專用的硬件電路稱為DMA控制器(DMAC)。
在支持DMA方式實現(xiàn)數(shù)據(jù)傳輸?shù)奈C(jī)系統(tǒng)中,DMAC和CPU都掛接在系統(tǒng)總線上,由總線提供數(shù)據(jù)傳輸?shù)耐ǖ?。一般情況下,CPU控制著系統(tǒng)總線,DMAC只是一個工作在從屬狀態(tài)的受控模塊。當(dāng)系統(tǒng)設(shè)備產(chǎn)生直接存儲器存取需求時,該系統(tǒng)設(shè)備將向DMAC發(fā)出DMA請求,DMAC收到該請求后,通過HOLD控制信號向CPU申請占用系統(tǒng)總線。CPU接收到HOLD控制信號后處理DMAC的請求,由系統(tǒng)軟件通過總線向DMAC寫入控制信息、待傳輸數(shù)據(jù)塊的長度和數(shù)據(jù)塊的存取地址等信息;然后CPU將系統(tǒng)的總線控制權(quán)移交給DMAC,由DMAC控制系統(tǒng)總線數(shù)據(jù)傳輸工作。此處的系統(tǒng)軟件類似于計算機(jī)的操作系統(tǒng),用于將CPU分配給各個任務(wù)或者處理存儲器的使用分配等。所述存取地址指的是數(shù)據(jù)塊在接收區(qū)的地址和數(shù)據(jù)塊在發(fā)送區(qū)的地址,由于數(shù)據(jù)塊具有一定長度,這兩個地址都是一段地址范圍,其中數(shù)據(jù)塊在發(fā)送區(qū)的地址又稱為源地址,數(shù)據(jù)塊在接收區(qū)的地址又稱為目的地址。系統(tǒng)軟件給系統(tǒng)設(shè)備中的數(shù)據(jù)塊所分配的地址都是虛擬地址,而不是數(shù)據(jù)塊在內(nèi)存中的實際物理地址,系統(tǒng)軟件中的存儲管理單元(MMU,Memory Management Unit)負(fù)責(zé)將數(shù)據(jù)塊的虛擬地址映射到可用的物理內(nèi)存中,數(shù)據(jù)塊在內(nèi)存中的位置用物理地址表示。系統(tǒng)軟件給數(shù)據(jù)塊分配的虛擬地址可以是連續(xù)的,而數(shù)據(jù)塊保存在內(nèi)存中的物理地址可以是離散的,所以虛擬地址連續(xù)的數(shù)據(jù)塊在內(nèi)存中并非連續(xù)保存,而是分成多個物理地址連續(xù)的小塊,各小塊之間的物理地址不連續(xù),本申請中將物理地址連續(xù)的小塊稱為數(shù)據(jù)子塊。系統(tǒng)軟件將數(shù)據(jù)塊的虛擬地址到物理地址的映射關(guān)系采用地址頁表的方式保存,供數(shù)據(jù)塊操作時調(diào)用。由MMU管理的物理內(nèi)存具有最小連續(xù)區(qū),MMU以最小連續(xù)區(qū)為單位保存數(shù)據(jù),現(xiàn)有技術(shù)中將最小連續(xù)區(qū)稱為頁。
圖1是包含DMAC的系統(tǒng)工作原理圖,下面將結(jié)合圖1詳細(xì)說明DMA方式實現(xiàn)數(shù)據(jù)傳輸?shù)倪^程。
A、輸入輸出設(shè)備101或存儲器105通過DMA請求觸發(fā)器102向DMA控制器103發(fā)出DMA請求。
B、DMAC通過HOLD控制信號向中央處理器104發(fā)出DMA請求。
C、CPU對DMA請求做出響應(yīng)。CPU的響應(yīng)包括兩方面內(nèi)容其一,CPU將控制總線、數(shù)據(jù)總線和地址總線接口的輸出端設(shè)置成高阻態(tài),表明CPU放棄對總線的控制權(quán);其二,CPU將其放棄總線控制權(quán)的消息通過HLDA控制信號告知DMAC。
D、DMAC接管系統(tǒng)的總線控制權(quán)后,向DMA請求觸發(fā)器發(fā)送DMA響應(yīng)。
E、DMAC通過系統(tǒng)總線來控制存儲器105與輸入輸出設(shè)備101之間、或者存儲器105的不同區(qū)域之間的數(shù)據(jù)傳輸。
本步驟中數(shù)據(jù)傳輸?shù)倪^程分為兩小步首先,DMAC將數(shù)據(jù)塊從發(fā)送區(qū)讀出,存到DMAC的寄存器單元,該步驟可以用一個DMA讀周期完成;其次,DMAC將寄存器單元中的數(shù)據(jù)塊寫到接收區(qū),該步驟可以用一個DMA寫周期完成。
F、DMAC完成數(shù)據(jù)傳輸后,通過HOLD控制信號向CPU發(fā)出撤消DMA請求消息。CPU收到DMAC發(fā)出的撤消DMA請求消息后,通過HLDA控制信號告知DMAC結(jié)束對系統(tǒng)總線的控制,同時CPU重新控制總線,DMA數(shù)據(jù)傳輸過程結(jié)束。
現(xiàn)有的DMAC結(jié)構(gòu)如圖2,包括總線接口201、寄存器單元202、控制邏輯單元203和請求處理單元204。由于DMAC只能根據(jù)數(shù)據(jù)塊的物理地址進(jìn)行數(shù)據(jù)傳輸,而且DMAC每次只能傳輸一段物理地址連續(xù)的數(shù)據(jù)子塊,所以對虛擬地址連續(xù)但物理地址不連續(xù)的數(shù)據(jù)塊,DMAC只能以每次傳輸一段數(shù)據(jù)子塊的方式通過多次傳輸完成整個DMA數(shù)據(jù)傳輸過程。
假設(shè)某系統(tǒng)設(shè)備需要通過DMA方式對虛擬地址范圍為0x000~0x7FF,大小為2KB的數(shù)據(jù)塊進(jìn)行傳輸,MMU設(shè)定的每頁數(shù)據(jù)大小為1KB,待傳輸?shù)臄?shù)據(jù)塊在內(nèi)存中保存成兩頁,這兩頁數(shù)據(jù)子塊的物理地址不連續(xù),所以DMAC只能分兩次傳輸,整個數(shù)據(jù)塊的傳輸過程如圖3所示。
步驟301系統(tǒng)設(shè)備向DMAC發(fā)出DMA請求,DMAC通過HOLD控制信號向CPU申請系統(tǒng)的總線控制權(quán),然后系統(tǒng)軟件將待發(fā)送數(shù)據(jù)塊的虛擬地址映射為物理地址。經(jīng)過地址映射,系統(tǒng)軟件判定本實施例中的數(shù)據(jù)塊需要分成兩次數(shù)據(jù)子塊傳輸,每個數(shù)據(jù)子塊的大小為1KB。
步驟302系統(tǒng)軟件送控制信息給DMAC,啟動DMAC的數(shù)據(jù)傳輸,并將第一個數(shù)據(jù)子塊的物理地址通過系統(tǒng)總線發(fā)送到DMAC的寄存器單元。
步驟303DMAC獲得總線控制權(quán),進(jìn)行第一個數(shù)據(jù)子塊的數(shù)據(jù)傳輸,同時系統(tǒng)軟件可以執(zhí)行圖1所示系統(tǒng)產(chǎn)生的其它程序。
步驟304第一個數(shù)據(jù)子塊的數(shù)據(jù)傳輸結(jié)束,DMAC通過控制邏輯單元產(chǎn)生中斷請求,并通過HOLD控制信號將總線控制權(quán)交還給CPU。
步驟305系統(tǒng)軟件響應(yīng)DMAC的中斷請求,停止執(zhí)行其它程序,將第二個數(shù)據(jù)子塊的物理地址通過系統(tǒng)總線發(fā)送到DMAC的寄存器單元,DMAC再次通過HOLD控制信號申請總線控制權(quán)。
步驟306DMAC獲得總線控制權(quán)進(jìn)行第二個數(shù)據(jù)子塊的數(shù)據(jù)傳輸,同時系統(tǒng)軟件可以執(zhí)行圖1所示系統(tǒng)產(chǎn)生的其它程序。
步驟307第二個數(shù)據(jù)子塊的數(shù)據(jù)傳輸結(jié)束,DMAC產(chǎn)生中斷請求并將總線控制權(quán)交還給CPU。系統(tǒng)軟件響應(yīng)DMAC的中斷請求,停止執(zhí)行其它程序,并通過DMAC的中斷請求判定本次DMA數(shù)據(jù)傳輸過程結(jié)束。
從上述步驟可以看出,由于現(xiàn)有的DMAC無法將待傳輸數(shù)據(jù)塊的虛擬地址映射成物理地址,所以需要依靠系統(tǒng)軟件完成這一地址映射過程。另外,DMAC在執(zhí)行數(shù)據(jù)傳輸時只能將物理地址連續(xù)的數(shù)據(jù)塊從發(fā)送區(qū)送至接收區(qū)。所以,對于物理地址不連續(xù)的數(shù)據(jù)塊,需要分成物理地址連續(xù)的數(shù)據(jù)子塊分次傳輸才能完成DMA數(shù)據(jù)傳輸任務(wù)。上述情況造成DMAC必須重復(fù)步驟302~304的過程中斷系統(tǒng)軟件對其它程序的執(zhí)行,以獲得每個數(shù)據(jù)子塊的物理地址,而對系統(tǒng)進(jìn)行中斷操作會給整個系統(tǒng)運行增加額外負(fù)擔(dān),也降低了數(shù)據(jù)傳輸?shù)乃俾省?br>
發(fā)明內(nèi)容
有鑒于此,本發(fā)明的主要目的在于提供一種直接存儲器存取裝置,由DMAC自身就能實現(xiàn)待傳輸數(shù)據(jù)塊的虛擬地址到物理地址的映射,從而減小系統(tǒng)運行負(fù)擔(dān),加快DMA數(shù)據(jù)傳輸?shù)乃俾省?br>
本發(fā)明的另一目的在于提供一種直接存儲器存取方法,在執(zhí)行DMA數(shù)據(jù)傳輸時,減少中斷操作次數(shù),加快DMA數(shù)據(jù)傳輸?shù)乃俾省?br>
為達(dá)到上述目的,本發(fā)明的技術(shù)方案具體是這樣實現(xiàn)的一種直接存儲器存取裝置,其特征在于,該裝置包括總線接口,用于從系統(tǒng)總線獲取數(shù)據(jù)或信息送至寄存器單元,或?qū)⒓拇嫫鲉卧械臄?shù)據(jù)或信息發(fā)送到系統(tǒng)總線;寄存器單元,用于將待傳輸數(shù)據(jù)塊的虛擬地址送入地址轉(zhuǎn)換單元,并將所存儲的控制信息送入邏輯控制單元;邏輯控制單元,用于接收請求處理單元送入的信息,并輸出控制信號到總線接口、寄存器單元、地址轉(zhuǎn)換單元和請求處理單元;請求處理單元,用于處理并響應(yīng)需要進(jìn)行數(shù)據(jù)傳輸?shù)脑O(shè)備發(fā)出的直接存儲器存取請求;地址轉(zhuǎn)換單元,用于接收總線接口輸入的虛擬地址和物理地址的映射關(guān)系信息,并將寄存器單元輸入的虛擬地址映射為物理地址輸出至總線接口。
所述地址轉(zhuǎn)換單元中設(shè)置有地址頁表,用于保存虛擬地址和物理地址的映射關(guān)系信息。
所述寄存器單元包括數(shù)據(jù)寄存器、地址寄存器和控制寄存器。
一種直接存儲器存取方法,其特征在于,該方法包括以下步驟a、需要進(jìn)行數(shù)據(jù)傳輸?shù)脑O(shè)備發(fā)出直接存儲器存取請求,并提供待傳輸數(shù)據(jù)塊的虛擬地址;b、確定待傳輸數(shù)據(jù)塊虛擬地址與物理地址的映射關(guān)系,并將所確定的映射關(guān)系信息發(fā)送給DMAC;c、DMAC根據(jù)所收到的映射關(guān)系信息將待傳輸數(shù)據(jù)塊的虛擬地址映射為物理地址,并分次傳輸具有連續(xù)物理地址的數(shù)據(jù)。
所述步驟c之前進(jìn)一步包括DMAC的寄存器單元通過總線接口接收待傳輸數(shù)據(jù)塊的虛擬地址;
則步驟c中所述虛擬地址映射為物理地址的操作具體包括c11、寄存器單元將待傳輸數(shù)據(jù)塊的虛擬地址送入地址轉(zhuǎn)換單元;c12、地址轉(zhuǎn)換單元根據(jù)步驟b所述的映射關(guān)系信息獲知待傳輸數(shù)據(jù)塊在內(nèi)存中具有連續(xù)物理地址的數(shù)據(jù)子塊個數(shù)和每個數(shù)據(jù)子塊的物理地址信息。
進(jìn)一步地,步驟b所述的映射關(guān)系信息保存為地址頁表。
所述物理地址包括源物理地址和目的物理地址,則步驟c中所述的具有連續(xù)物理地址的數(shù)據(jù)的傳輸過程包括c21、地址轉(zhuǎn)換單元將該數(shù)據(jù)的源物理地址送入總線接口,總線接口通過系統(tǒng)總線從源物理地址處取該數(shù)據(jù)到DMAC,并將該數(shù)據(jù)存入寄存器單元;c22、地址轉(zhuǎn)換單元將該數(shù)據(jù)的目的物理地址送入總線接口,寄存器單元根據(jù)目的物理地址將該數(shù)據(jù)存到相應(yīng)位置,該數(shù)據(jù)的傳輸過程結(jié)束。
由上述技術(shù)方案可見,本發(fā)明的這種直接存儲器存取裝置和方法在DMAC中增加了地址轉(zhuǎn)換單元,通過地址轉(zhuǎn)換單元保存待傳輸數(shù)據(jù)塊的地址頁表,該地址頁表記錄待傳輸數(shù)據(jù)塊的虛擬地址和物理地址的映射關(guān)系。這樣,DMAC無需通過中斷請求向系統(tǒng)軟件獲取待傳輸數(shù)據(jù)塊的物理地址,只需查詢地址轉(zhuǎn)換單元中的地址頁表就能連續(xù)處理物理地址分散的數(shù)據(jù)塊傳輸。本發(fā)明這種裝置和方法在實現(xiàn)DMA數(shù)據(jù)傳輸?shù)那疤嵯?,減少中斷操作次數(shù),從而降低系統(tǒng)負(fù)擔(dān),提高DMA數(shù)據(jù)傳輸?shù)乃俾省?br>
圖1為現(xiàn)有技術(shù)中包含DMAC的系統(tǒng)工作原理圖;圖2為現(xiàn)有技術(shù)中DMAC的結(jié)構(gòu)示意圖;圖3為現(xiàn)有技術(shù)中DMAC實現(xiàn)DMA數(shù)據(jù)傳輸?shù)牧鞒虉D;圖4為本發(fā)明一個較佳實施例中DMAC的結(jié)構(gòu)示意圖;圖5為本發(fā)明中DMAC實現(xiàn)DMA數(shù)據(jù)傳輸?shù)牧鞒虉D。
具體實施例方式
為使本發(fā)明的目的、技術(shù)方案及優(yōu)點更加清楚明白,以下參照附圖并舉實施例,對本發(fā)明進(jìn)一步詳細(xì)說明。
如圖4所示,本發(fā)明一個較佳實施例所提供的直接存儲器存取裝置包括總線接口401、寄存器單元402、控制邏輯單元403、請求處理單元404,以及地址轉(zhuǎn)換單元405。
其中,總線接口401負(fù)責(zé)收發(fā)數(shù)據(jù)到系統(tǒng)總線和處理系統(tǒng)總線的時序邏輯。系統(tǒng)軟件以及系統(tǒng)設(shè)備發(fā)給DMAC的數(shù)據(jù)和控制信息都是通過總線接口401送入寄存器單元402,而寄存器單元402也是通過總線接口401送出數(shù)據(jù)的。
寄存器單元402包括數(shù)據(jù)寄存器、地址寄存器和控制寄存器。數(shù)據(jù)寄存器用于暫時存儲從發(fā)送區(qū)取回的數(shù)據(jù)塊,并等待將該數(shù)據(jù)塊寫到接收區(qū);地址寄存器存儲DMA數(shù)據(jù)傳輸?shù)脑吹刂泛湍康牡刂罚豢刂萍拇嫫鞔鎯刂茢?shù)據(jù)和DMA狀態(tài)信息。上述寄存器都是通過總線接口401實現(xiàn)與存儲器105、輸入輸出設(shè)備101,以及CPU的數(shù)據(jù)交互。
控制邏輯單元403從寄存器單元402中的控制寄存器讀入控制信息,并接收從請求處理單元404送入的DMA請求,通過控制信號對總線接口401、寄存器單元402以及請求處理單元404執(zhí)行控制操作,同時產(chǎn)生中斷請求。
請求處理單元404負(fù)責(zé)處理輸入輸出設(shè)備101向DMAC發(fā)出的DMA請求,并做出DMA響應(yīng)。
地址轉(zhuǎn)換單元405用于接收總線接口401輸入的地址頁表,并將接收到的寄存器單元402送入的虛擬地址映射為物理地址,并將物理地址輸出至總線接口401。
基于圖4所示的裝置,本發(fā)明的直接存儲器存取方法如圖5所示,該方法包括以下步驟步驟501系統(tǒng)設(shè)備向DMAC發(fā)出DMA請求,DMAC通過HOLD控制信號向CPU申請系統(tǒng)的總線控制權(quán)。然后,系統(tǒng)軟件將待發(fā)送數(shù)據(jù)塊的虛擬地址映射為物理地址,并生成記錄待發(fā)送數(shù)據(jù)塊的虛擬地址和物理地址的映射關(guān)系的地址頁表。
所述虛擬地址包括源地址和目的地址,經(jīng)過MMU映射,源地址和目的地址的物理地址都變?yōu)殡x散的地址范圍。
本實施例中,假設(shè)待傳輸數(shù)據(jù)塊的虛擬地址和物理地址的映射關(guān)系如下虛擬地址的范圍為0x000~0x7FF,而數(shù)據(jù)塊在內(nèi)存中保存成兩頁,這兩頁數(shù)據(jù)子塊的物理地址不連續(xù)。
隨后,系統(tǒng)軟件將本次數(shù)據(jù)傳輸任務(wù)的地址頁表通過DMAC的總線接口傳到地址轉(zhuǎn)換單元保存,并將本次數(shù)據(jù)傳輸任務(wù)的虛擬地址通過DMAC的總線接口傳到寄存器單元。
步驟502系統(tǒng)軟件送控制信息給DMAC,啟動DMAC的數(shù)據(jù)傳輸,并將待傳輸數(shù)據(jù)塊的地址頁表通過DMAC的總線接口傳到地址轉(zhuǎn)換單元保存,還將待傳輸數(shù)據(jù)塊的虛擬地址通過DMAC的總線接口傳到寄存器單元。
上述控制信息可以設(shè)置為0或1,如果控制信息為1,表明系統(tǒng)啟動DMAC的數(shù)據(jù)傳輸。
步驟503DMAC獲得總線控制權(quán),利用地址頁表將待傳輸數(shù)據(jù)塊按照物理地址的連續(xù)性分成數(shù)據(jù)子塊傳輸。DMA數(shù)據(jù)傳輸過程中,系統(tǒng)軟件可以執(zhí)行圖1所示系統(tǒng)產(chǎn)生的其它程序。所述數(shù)據(jù)塊的DMA數(shù)據(jù)傳輸過程如下首先、寄存器單元將待傳輸數(shù)據(jù)塊的虛擬地址送入地址轉(zhuǎn)換單元。
其次、地址轉(zhuǎn)換單元通過查詢地址頁表獲知待傳輸數(shù)據(jù)塊在內(nèi)存中的保存情況,包括具有連續(xù)物理地址的數(shù)據(jù)子塊個數(shù),以及每個數(shù)據(jù)子塊的物理地址等信息。
再次、地址轉(zhuǎn)換單元先將第一個數(shù)據(jù)子塊的源物理地址送入總線接口,總線接口通過系統(tǒng)總線從發(fā)送區(qū)的源物理地址處取該數(shù)據(jù)子塊到DMAC,并將該數(shù)據(jù)子塊存入寄存器單元。
隨后、地址轉(zhuǎn)換單元將第一個數(shù)據(jù)子塊的目的物理地址送入總線接口,寄存器單元根據(jù)目的物理地址將該數(shù)據(jù)子塊存到接收區(qū)的相應(yīng)位置,該數(shù)據(jù)子塊的存取過程結(jié)束。
接著、DMAC重復(fù)上述取數(shù)據(jù)和存數(shù)據(jù)的過程,直至待傳輸?shù)臄?shù)據(jù)塊全部保存到接收區(qū)。
步驟504DMAC產(chǎn)生中斷請求并將總線控制權(quán)交還給CPU。系統(tǒng)軟件響應(yīng)DMAC的中斷請求,停止執(zhí)行其它程序,并通過DMAC的中斷請求判定本次DMA數(shù)據(jù)傳輸過程結(jié)束。
由上述的實施例可見,本發(fā)明的這種直接存儲器存取裝置在現(xiàn)有裝置的基礎(chǔ)上增加地址轉(zhuǎn)換單元,使DMAC自身能實現(xiàn)待傳輸數(shù)據(jù)塊的虛擬地址到物理地址的映射,使該裝置在實現(xiàn)DMA數(shù)據(jù)傳輸?shù)那疤嵯?,減少中斷操作次數(shù),降低系統(tǒng)負(fù)擔(dān),并提高數(shù)據(jù)傳輸?shù)乃俾省?br>
權(quán)利要求
1.一種直接存儲器存取裝置,其特征在于,該裝置包括總線接口,用于從系統(tǒng)總線獲取數(shù)據(jù)或信息送至寄存器單元,或?qū)⒓拇嫫鲉卧械臄?shù)據(jù)或信息發(fā)送到系統(tǒng)總線;寄存器單元,用于將待傳輸數(shù)據(jù)塊的虛擬地址送入地址轉(zhuǎn)換單元,并將所存儲的控制信息送入邏輯控制單元;邏輯控制單元,用于接收請求處理單元送入的信息,并輸出控制信號到總線接口、寄存器單元、地址轉(zhuǎn)換單元和請求處理單元;請求處理單元,用于處理并響應(yīng)需要進(jìn)行數(shù)據(jù)傳輸?shù)脑O(shè)備發(fā)出的直接存儲器存取請求;地址轉(zhuǎn)換單元,用于接收總線接口輸入的虛擬地址和物理地址的映射關(guān)系信息,并將寄存器單元輸入的虛擬地址映射為物理地址輸出至總線接口。
2.根據(jù)權(quán)利要求1所述的裝置,其特征在于,所述地址轉(zhuǎn)換單元中設(shè)置有地址頁表,用于保存虛擬地址和物理地址的映射關(guān)系信息。
3.根據(jù)權(quán)利要求1或2所述的裝置,其特征在于,所述寄存器單元包括數(shù)據(jù)寄存器、地址寄存器和控制寄存器。
4.一種直接存儲器存取方法,其特征在于,該方法包括以下步驟a、需要進(jìn)行數(shù)據(jù)傳輸?shù)脑O(shè)備發(fā)出直接存儲器存取請求,并提供待傳輸數(shù)據(jù)塊的虛擬地址;b、確定待傳輸數(shù)據(jù)塊虛擬地址與物理地址的映射關(guān)系,并將所確定的映射關(guān)系信息發(fā)送給DMAC;c、DMAC根據(jù)所收到的映射關(guān)系信息將待傳輸數(shù)據(jù)塊的虛擬地址映射為物理地址,并分次傳輸具有連續(xù)物理地址的數(shù)據(jù)。
5.根據(jù)權(quán)利要求4所述的方法,其特征在于,所述步驟c之前進(jìn)一步包括DMAC的寄存器單元通過總線接口接收待傳輸數(shù)據(jù)塊的虛擬地址;則步驟c中所述虛擬地址映射為物理地址的操作具體包括c11、寄存器單元將待傳輸數(shù)據(jù)塊的虛擬地址送入地址轉(zhuǎn)換單元;c12、地址轉(zhuǎn)換單元根據(jù)步驟b所述的映射關(guān)系信息獲知待傳輸數(shù)據(jù)塊在內(nèi)存中具有連續(xù)物理地址的數(shù)據(jù)子塊個數(shù)和每個數(shù)據(jù)子塊的物理地址信息。
6.根據(jù)權(quán)利要求5所述的方法,其特征在于,步驟b所述的映射關(guān)系信息保存為地址頁表。
7.根據(jù)權(quán)利要求4、5或6所述的方法,其特征在于,所述物理地址包括源物理地址和目的物理地址,則步驟c中所述的具有連續(xù)物理地址的數(shù)據(jù)的傳輸過程包括c21、地址轉(zhuǎn)換單元將該數(shù)據(jù)的源物理地址送入總線接口,總線接口通過系統(tǒng)總線從源物理地址處取該數(shù)據(jù)到DMAC,并將該數(shù)據(jù)存入寄存器單元;c22、地址轉(zhuǎn)換單元將該數(shù)據(jù)的目的物理地址送入總線接口,寄存器單元根據(jù)目的物理地址將該數(shù)據(jù)存到相應(yīng)位置,該數(shù)據(jù)的傳輸過程結(jié)束。
全文摘要
本發(fā)明公開了一種直接存儲器存取裝置。該裝置包括總線接口,用于在系統(tǒng)總線和寄存器單元之間傳輸數(shù)據(jù)或信息;寄存器單元,用于將待傳輸數(shù)據(jù)塊的虛擬地址送入地址轉(zhuǎn)換單元,并將所存儲的控制信息送入邏輯控制單元;邏輯控制單元,用于接收請求處理單元送入的信息,并輸出控制信號;請求處理單元,用于處理并響應(yīng)需要進(jìn)行數(shù)據(jù)傳輸?shù)脑O(shè)備發(fā)出的直接存儲器存取請求;地址轉(zhuǎn)換單元,用于接收總線接口輸入的地址頁表,并將寄存器單元送入的虛擬地址映射為物理地址輸出至總線接口。本發(fā)明還同時公開了一種直接存儲器存取方法,采用該裝置和方法在實現(xiàn)DMA數(shù)據(jù)傳輸?shù)那疤嵯拢瑴p少中斷操作次數(shù),從而降低系統(tǒng)負(fù)擔(dān),提高DMA數(shù)據(jù)傳輸?shù)乃俾省?br>
文檔編號G06F13/20GK1622071SQ20041010312
公開日2005年6月1日 申請日期2004年12月31日 優(yōu)先權(quán)日2004年12月31日
發(fā)明者白鋒 申請人:北京中星微電子有限公司