專利名稱:一種dma控制器的控制裝置及控制方法
技術(shù)領(lǐng)域:
本發(fā)明涉及一種控制裝置及控制方法,尤其涉及一種DMA(DirectMemory Access, 存儲器直接訪問)控制器的控制裝置及控制方法。
背景技術(shù):
計算機中的軟件在執(zhí)行過程中不可避免要產(chǎn)生訪存操作。軟件的執(zhí)行其實是由指 令在處理器內(nèi)的流水作業(yè)完成的,當(dāng)處理器接受到訪存操作指令后需要去位于處理器外部 的存儲設(shè)備中讀寫數(shù)據(jù),其數(shù)據(jù)流的速度大大慢于指令在處理器中的流動速度,這就造成 了流水級中的后續(xù)相關(guān)指令需要等待訪存操作完成才能繼續(xù)執(zhí)行。 DMA訪存方式不依靠處理器流水級中的訪存指令來讀取數(shù)據(jù),它使用專門的DMA 控制器,獨立的收發(fā)訪存請求,從而使得處理器可以僅僅配置一次DMA控制器就可以執(zhí)行 其他程序,等DMA控制器將訪存請求都執(zhí)行完畢,再通知處理器繼續(xù)進(jìn)行處理。這樣可以大 大提高處理器的工作效率。 然而當(dāng)處理器配置完DMA控制器后,如果后續(xù)的程序依賴于DMA控制器的執(zhí)行結(jié) 果,就不可避免的需要等待DMA控制器執(zhí)行完畢。最理想的情況是將所有的這種依賴關(guān)系 都消除,使得DMA控制器和處理器可以并行執(zhí)行。但是做到這一點很難,很多情況下即使可 以做到這一點,又會造成新的問題,即DMA控制器的每次配置和啟動需要一定的開銷。如果 頻繁的啟動DMA控制器往往會由于大量的啟動開銷造成程序執(zhí)行性能提升的困難。因此, 實時的掌握DMA控制器的運行狀態(tài),實時的改變DMA控制器的運行狀態(tài)對于避免大量的啟 動開銷,靈活的優(yōu)化軟件程序是十分重要的一項工作。 對于軟件的優(yōu)化來說,對訪存請求的類型控制也是非常重要的。將各種類型的數(shù) 據(jù)通過各種不同的方式,搬運(即根據(jù)讀取到的源地址信息,將源地址對應(yīng)的數(shù)據(jù)寫到目 的地址中去)到各種不同的地址中對于DMA控制器的設(shè)計是一種挑戰(zhàn),對訪存請求支持得 越全面越靈活,就越能對軟件的優(yōu)化設(shè)計提供強力的支持。
發(fā)明內(nèi)容
本發(fā)明針對現(xiàn)有技術(shù)的缺陷,提供一種對訪存請求支持更靈活的DMA控制器的控 制裝置及控制方法。 本發(fā)明所述的DMA控制器的控制裝置,包括配置寄存器、狀態(tài)寄存器、以及流控制 寄存器,其中, 所述配置寄存器用于接收外部實時輸入的配置信息,所述DMA控制器根據(jù)該外部 實時輸入的配置信息產(chǎn)生對應(yīng)的操作序列; 所述狀態(tài)寄存器用于指示當(dāng)前DMA控制器的工作狀態(tài),并可依據(jù)外部實時輸入的 配置信息改變其指示; 所述流控制寄存器用于根據(jù)外部實時輸入的配置信息設(shè)置DMA控制器的各存取 操作序列的時鐘周期及其占用的帶寬比例。
本發(fā)明所述的DMA控制器的控制裝置中,所述配置信息包括源數(shù)據(jù)起始地址、源 數(shù)據(jù)格式、源數(shù)據(jù)大小、源數(shù)據(jù)在中間介質(zhì)中的存儲類型、源數(shù)據(jù)經(jīng)過中間介質(zhì)的方式,源 數(shù)據(jù)被存放到新存儲區(qū)域的目的地址、源數(shù)據(jù)在目的存儲介質(zhì)中的存儲類型、目的數(shù)據(jù)大 小、目的存放地址是否為循環(huán)地址以及循環(huán)地址信息,狀態(tài)寄存器的觸發(fā)條件。其中,所述 目的地址為連續(xù)的地址,或者不連續(xù)的地址,或者循環(huán)重復(fù)的地址。 本發(fā)明所述的DMA控制器的控制裝置中,所述狀態(tài)寄存器根據(jù)DMA控制器產(chǎn)生的 操作序列確定當(dāng)前DMA控制器的工作狀態(tài)。 本發(fā)明所述的DMA控制器的控制裝置中,當(dāng)DMA控制器的各通道同時接收到請求 時,根據(jù)DMA控制器內(nèi)的計數(shù)器統(tǒng)計各通道使用總線情況,并依據(jù)設(shè)置的各存取操作序列 專用的帶寬比例選擇具有優(yōu)先權(quán)限的對應(yīng)通道。 本發(fā)明還提供一種DMA控制器的控制方法,設(shè)置有配置寄存器、狀態(tài)寄存器、流控 制寄存器,其中, 所述配置寄存器用于接收外部實時輸入的配置信息,所述DMA控制器根據(jù)該外部 實時輸入的配置信息產(chǎn)生對應(yīng)的操作序列; 所述狀態(tài)寄存器用于指示當(dāng)前DMA控制器的工作狀態(tài),并可依據(jù)外部實時輸入的 配置信息改變其指示; 所述流控制寄存器用于根據(jù)外部實時輸入的配置信息設(shè)置DMA控制器的各存取 操作序列的時鐘周期及其占用的帶寬比例;
并執(zhí)行如下步驟 步驟一,配置寄存器接收到外部實時輸入的配置信息,所述DMA控制器根據(jù)該配 置信息產(chǎn)生對應(yīng)的操作序列,所述流控制寄存器根據(jù)該配置信息設(shè)置DMA控制器的各對應(yīng) 操作序列的時鐘周期及其占用的帶寬比例; 步驟二,所述DMA控制器依上述產(chǎn)生的操作序列搬運數(shù)據(jù),并由狀態(tài)寄存器指示 其當(dāng)前的工作狀態(tài)。 本發(fā)明所述的DMA控制器的控制方法中,所述配置信息包括源數(shù)據(jù)起始地址、源 數(shù)據(jù)格式、源數(shù)據(jù)大小、源數(shù)據(jù)在中間介質(zhì)中的存儲類型、源數(shù)據(jù)經(jīng)過中間介質(zhì)的方式,源 數(shù)據(jù)被存放到新存儲區(qū)域的目的地址、源數(shù)據(jù)在目的存儲介質(zhì)中的存儲類型、目的數(shù)據(jù)大 小、目的存放地址是否為循環(huán)地址以及循環(huán)地址信息,狀態(tài)寄存器的觸發(fā)條件。其中,所述 目的地址為連續(xù)的地址,或者不連續(xù)的地址,或者循環(huán)重復(fù)的地址。 本發(fā)明所述的DMA控制器的控制方法中,所述狀態(tài)寄存器根據(jù)DMA控制器產(chǎn)生的 操作序列確定當(dāng)前DMA控制器的工作狀態(tài)。 本發(fā)明所述的DMA控制器的控制方法中,當(dāng)DMA控制器的各通道同時接收到請求 時,根據(jù)DMA控制器內(nèi)的計數(shù)器統(tǒng)計各通道使用總線情況,并依據(jù)設(shè)置的各存取操作序列 專用的帶寬比例選擇具有優(yōu)先權(quán)限的對應(yīng)通道。 本發(fā)明中,DMA控制器可以根據(jù)配置寄存器的值產(chǎn)生特定的DMA操作序列,可以根 據(jù)流控制寄存器的值來控制DMA操作的產(chǎn)生時間和相對次序,可以根據(jù)狀態(tài)寄存器的值來 觸發(fā)DMA操作的狀態(tài)改變,可以根據(jù)DMA操作當(dāng)前的執(zhí)行狀態(tài)改變狀態(tài)寄存器的值,也可以 根據(jù)DMA操作當(dāng)前的執(zhí)行狀態(tài)改變自身的狀態(tài)。本發(fā)明使得DMA控制硬件的狀態(tài)對于軟 件是完全實時可見的,并可以用極小的開銷來改變DMA的執(zhí)行狀態(tài)而不需要重新啟動一次DMA,并且對于DMA操作的產(chǎn)生時間和執(zhí)行次序都是完全可控。這就使得DMA控制硬件可以 靈活而全面的支持軟件的各種優(yōu)化,卻不需要額外的開銷。
圖1為本發(fā)明所述DMA控制器的控制裝置的結(jié)構(gòu)示意圖; 圖2為本發(fā)明所述控制裝置中配置寄存器與DMA控制器之間的結(jié)構(gòu)關(guān)系示意圖;
圖3為本發(fā)明所述控制裝置中狀態(tài)寄存器與DMA控制器之間的結(jié)構(gòu)關(guān)系示意圖;
圖4為本發(fā)明所述控制裝置中流控制寄存器與DMA控制器之間的結(jié)構(gòu)關(guān)系示意 圖; 圖5為本發(fā)明所述控制裝置中流控制寄存器的配置信息的示意圖;
圖6為DMA控制器的結(jié)構(gòu)示意圖; 圖7為本發(fā)明所述DMA控制器的控制方法的流程示意圖。
具體實施例方式
下面結(jié)合附圖對本發(fā)明做進(jìn)一步說明,以使本領(lǐng)域普通技術(shù)人員參照本說明書后 能夠據(jù)以實施。 如圖1所示,本發(fā)明所述DMA控制器的控制裝置,包括了配置寄存器、狀態(tài)寄存器、 以及流控制寄存器。 其中,所述配置寄存器用于接收外部實時輸入的配置信息,所述DMA控制器根據(jù) 該外部實時輸入的配置信息產(chǎn)生對應(yīng)的操作序列; 所述狀態(tài)寄存器用于指示當(dāng)前DMA控制器的工作狀態(tài),并可依據(jù)外部實時輸入的 配置信息改變其指示; 所述流控制寄存器用于根據(jù)外部實時輸入的配置信息設(shè)置DMA控制器的各存取 操作序列的時鐘周期及其占用的帶寬比例。 圖1中,所述配置總線用于向DMA控制器的控制裝置內(nèi)的配置寄存器、流控制寄存 器、和狀態(tài)寄存器輸入配置信息,所述DMA輸入總線用于將源數(shù)據(jù)輸入到DMA控制器中,所 述DMA輸出總線用于將DMA控制器產(chǎn)生的輸出數(shù)據(jù)流送到指定的存儲介質(zhì)中。
如圖2所示,所述配置寄存器與配置總線及其他模塊連接,配置總線傳送的配置 信息及其他模塊的配置信息經(jīng)過配置地址譯碼后寫入配置寄存器,或者,可由配置寄存器 中讀出當(dāng)前的配置信息并經(jīng)由配置總線傳送至上一級裝置。同時,所述配置寄存器還接收 DMA控制器發(fā)送的操作執(zhí)行結(jié)束的信息,并將該信息通過配置總線傳送至外部系統(tǒng)。所述的 配置信息可以包括源數(shù)據(jù)起始地址、源數(shù)據(jù)格式、源數(shù)據(jù)大小、源數(shù)據(jù)在中間介質(zhì)中的存儲 類型、源數(shù)據(jù)經(jīng)過中間介質(zhì)的方式,源數(shù)據(jù)被存放到新存儲區(qū)域的目的地址、源數(shù)據(jù)在目的 存儲介質(zhì)中的存儲類型、目的數(shù)據(jù)大小、目的存放地址是否為循環(huán)地址以及循環(huán)地址信息, 狀態(tài)寄存器的觸發(fā)條件。其中,所述目的地址可為連續(xù)的地址,或者不連續(xù)的地址,或者循 環(huán)重復(fù)的地址。 如圖3所示,為DMA控制器與狀態(tài)寄存器、配置寄存器之間的控制關(guān)系示意圖。所 述配置寄存器接收到外部的配置信息后,將該配置信息發(fā)送至DMA控制器,所述DMA控制器 的根據(jù)配置信息的不同而觸發(fā)出不同的狀態(tài),即產(chǎn)生不同的操作序列,并將當(dāng)前狀態(tài)信息由其狀態(tài)機輸出至狀態(tài)寄存器,由此,狀態(tài)寄存器得以確定當(dāng)前DMA控制器的工作狀態(tài),并 可將當(dāng)前的工作狀態(tài)指示出來。所述狀態(tài)寄存器的對應(yīng)當(dāng)前DMA控制器的工作狀態(tài)的指示 可被外部相應(yīng)軟件檢測到,根據(jù)該指示對應(yīng)的含義,軟件即可得知當(dāng)前DMA控制器處于何 種狀態(tài)。另外,本發(fā)明中,所述狀態(tài)寄存器還可接收外部輸入的要求狀態(tài)改變的配置信息 以改變當(dāng)前狀態(tài)寄存器的指示,并進(jìn)而觸發(fā)DMA控制器改變當(dāng)前的狀態(tài)。例如,配置寄存器 中設(shè)置了一個DMA控制器狀態(tài)改變的觸發(fā)條件,那么,在需要DMA控制器改變狀態(tài)時,不論 當(dāng)前處于何種狀態(tài),只需向狀態(tài)寄存器輸入對應(yīng)該觸發(fā)條件的狀態(tài)配置信息,則狀態(tài)寄存 器的指示即為該新輸入的狀態(tài),而所述配置寄存器根據(jù)狀態(tài)寄存器當(dāng)前變更的新的狀態(tài)指 示,即可觸發(fā)DMA控制器改變狀態(tài),進(jìn)入對應(yīng)前述配置信息輸入的工作狀態(tài)。
通過外部輸入的配置信息以改變DMA控制器的狀態(tài),而不是對DMA控制器進(jìn)行重 新配置,可以使得DMA控制器啟動開銷減小為原來的幾十分之一,并且由于能夠保存DMA控 制器的現(xiàn)場,可以進(jìn)一步減小配置開銷,使暫停的開銷幾乎可以忽略不計,這一點在很多情 況下可以大大提高軟件的效率。 所述流控制寄存器用于設(shè)置DMA控制器的各存取操作序列的時鐘周期及其占用 的帶寬比例。 如圖4所示,所述流控制寄存器是對DMA控制器的輸入流及輸出流進(jìn)行控制,通過 向流控制寄存器內(nèi)輸入配置信息可以控制DMA控制器產(chǎn)生操作序列的絕對時間和相對次 序,即通過配置各種DMA操作序列產(chǎn)生的時鐘周期以及各種匿A操作序列之間的比例關(guān)系 來控制DMA操作序列的產(chǎn)生時間和相對次序。在DMA控制器中,存在對不同的DMA操作序 列同時進(jìn)行讀取的情況,如果對輸入和輸出的流不進(jìn)行控制,就可能發(fā)生同一時段頻繁訪 問某一存儲空間,而另一時段線路卻又空轉(zhuǎn)的情況。因此流控制寄存器通過配置總線接收 到的配置信息進(jìn)而設(shè)置不同的DMA操作序列讀取和寫出的時鐘周期不同,當(dāng)幾個DMA操作 序列競爭輸入輸出通道時優(yōu)先權(quán)不同,來優(yōu)化和緩解DMA存取的沖突序列。
圖5所示為流控制寄存器對各個通道的請求頻率及相應(yīng)的帶寬比例進(jìn)行設(shè)置的 示意圖。其中的通道1、通道2、通道3各應(yīng)一個DMA操作產(chǎn)生的狀態(tài)機,而通道中的請求頻 率決定至少每隔多少個時鐘周期發(fā)送一個讀或?qū)懻埱?,通道中的帶寬比例則決定通道之間 的比例競爭關(guān)系。 當(dāng)輸入輸出不存在競爭時,各通道可由使用總線。而當(dāng)各通道同時有請求時,則根 據(jù)DMA控制器內(nèi)部的計數(shù)器統(tǒng)計的各通道使用總線情況,對比流控制寄存器設(shè)置的帶寬比 例來決定哪個通道有最優(yōu)先的權(quán)限。 圖6所示為DMA控制器的結(jié)構(gòu)示意圖。所述DMA控制器由多組狀態(tài)機組成,每組
狀態(tài)機對應(yīng)一個DMA操作序列產(chǎn)生通道,即通道1狀態(tài)機、通道2狀態(tài)機......通道N狀
態(tài)機分別對應(yīng)了 N個DMA操作序列產(chǎn)生通道,這些通道可產(chǎn)生不同的操作序列,以將輸入端 口的DMA的輸入數(shù)據(jù)由輸出端口以DMA輸出數(shù)據(jù)發(fā)送。所述配置寄存器的配置信息可作為 各通道狀態(tài)機的條件參數(shù)以產(chǎn)生DMA操作序列,而所述DMA操作序列產(chǎn)生的頻率則由流控 制寄存器的時間流信息控制(即請求頻率項),所述DMA操作序列的優(yōu)先次序則由流控制寄 存器的帶寬流信息控制以在輸入端口和輸出端口進(jìn)行選擇。各通道狀態(tài)機的狀態(tài)信息被傳 遞給狀態(tài)寄存器,當(dāng)需要改變狀態(tài)機的指示狀態(tài)時,可由外部配置信息輸入改變狀態(tài)機指 示的請求指令,各通道的狀態(tài)機根據(jù)此請求指令并結(jié)合配置寄存器中的配置信息而觸發(fā)變更為對應(yīng)的新狀態(tài)。 下面以應(yīng)用本發(fā)明所述的DMA控制器的控制裝置對一段固定地址區(qū)間的數(shù)據(jù)進(jìn) 行循環(huán)搬運為例進(jìn)行詳細(xì)說明。 通過外部設(shè)備將正確的配置信息寫入DMA控制器的配置寄存器,流控制寄存器。 所述配置信息的內(nèi)容包括要搬運的數(shù)據(jù)在目的地址和源地址中的存儲格式,目的地址空間 大小,每搬運多少個字節(jié)的數(shù)據(jù)產(chǎn)生一個標(biāo)記以便軟件查詢,循環(huán)的地址空間最大可以容 納多少個標(biāo)記次數(shù)所搬運的數(shù)據(jù),用哪個通道來搬運數(shù)據(jù),以及通道之間的總線控制權(quán)競 爭權(quán)。 將目的地址寫入配置寄存器后,即觸發(fā)DMA通道開始工作。DMA通道在工作時將配 置寄存器中的工作標(biāo)志位設(shè)置為1,以方便軟件查詢。 DMA控制器每搬運到一定數(shù)量的數(shù)據(jù)時將狀態(tài)寄存器的相應(yīng)位置為l,這樣狀態(tài)
寄存器的不同值可指示DMA控制器不同的工作狀態(tài)。外部軟件通過特定的指令可以直接訪
問狀態(tài)寄存器,以查詢DMA控制器目前工作情況,例如搬運了多少個數(shù)據(jù)。 對于一段固定的目的地址,如果需要循環(huán)搬運,則事先通過設(shè)置配置寄存器定義
狀態(tài)寄存器的狀態(tài)數(shù)量,所有狀態(tài)所標(biāo)記的數(shù)據(jù)數(shù)量之和要小于固定地址空間大小,這樣
當(dāng)所有狀態(tài)用完后,等待軟件來改變狀態(tài)寄存器的狀態(tài)才可以繼續(xù)搬運,也即觸發(fā)DMA控
制器轉(zhuǎn)變?yōu)榱硪还ぷ鳡顟B(tài)。 狀態(tài)寄存器的狀態(tài)跳轉(zhuǎn)是定義好的。但是狀態(tài)的跳轉(zhuǎn)條件需要軟件和硬件共同決 定。每一個狀態(tài)表示2個含義,一是當(dāng)前搬運了多少個數(shù)據(jù),二是地址空間的使用情況。根 據(jù)每次工作前對配置寄存器的配置,搬運的數(shù)據(jù)塊對應(yīng)的地址塊是已知的,這樣每計算一 次搬運標(biāo)記,也就知道了目前固定地址區(qū)間內(nèi)的數(shù)據(jù)存儲情況。當(dāng)狀態(tài)表示固定存儲區(qū)間 內(nèi)需要循環(huán)覆蓋的下一段區(qū)間還有數(shù)據(jù)時,DMA控制器不進(jìn)行搬運,進(jìn)入暫停狀態(tài),直到軟 件修改狀態(tài)寄存器,將其改為下段區(qū)間數(shù)據(jù)被清空狀態(tài),才開始繼續(xù)搬運數(shù)據(jù)。也就是說, 通過軟件修改狀態(tài)寄存器的指示,使DMA控制器得以在此新修改指示的基礎(chǔ)上方能根據(jù)配 置寄存器的配置信息繼續(xù)執(zhí)行之前的搬運操作。該DMA控制器執(zhí)行搬運操作一方面依賴于 配置寄存器的配置信息,另一方面也依賴于狀態(tài)寄存器的狀態(tài)指示。當(dāng)狀態(tài)寄存器的狀態(tài) 指示達(dá)到設(shè)定條件時,DMA控制器的數(shù)據(jù)搬運操作中止,此時,只有將狀態(tài)寄存器的狀態(tài)指 示修改為符合配置信息的設(shè)定條件,方可令DMA控制器繼續(xù)循環(huán)搬運數(shù)據(jù)。
通過軟件查詢狀態(tài)寄存器,可以知道一段地址區(qū)間內(nèi)的數(shù)據(jù)是否已經(jīng)搬運滿了, 如果滿了,那么可以使用這段數(shù)據(jù),不必等待DMA控制器工作全部完成。DMA控制器搬運完 這段數(shù)據(jù)后,如果其余空間為空,則繼續(xù)搬運,直到再次搬運到這段地址時,發(fā)現(xiàn)里面數(shù)據(jù) 是滿的,進(jìn)入暫停狀態(tài)。當(dāng)軟件使用完這段數(shù)據(jù)后,改變狀態(tài)寄存器的值,將這段區(qū)間的數(shù) 據(jù)狀態(tài)設(shè)置成空,DMA控制器才繼續(xù)搬運。通過軟件和硬件的合理配置,DMA控制器搬運和 軟件程序的運行同時工作,流水的作業(yè),可以極大提高CPU的工作效率,也可以極大提高對 一段有限空間的存儲利用效率,提高程序的局部性特征。 當(dāng)DMA控制器全部工作完成后,配置寄存器的工作標(biāo)志位被清0,軟件通過查詢可 以得到DMA控制器工作完畢的信息。 本發(fā)明中,通過實時改變配置寄存器的配置信息,從而使DMA控制器產(chǎn)生不同的 DMA操作序列;通過狀態(tài)寄存器指示DMA操作當(dāng)前的工作狀態(tài)。所述狀態(tài)寄存器可以被軟件修改其值,從而觸發(fā)DMA控制器進(jìn)入新的工作狀態(tài)。通過配置狀態(tài)寄存器和配置寄存器可以實現(xiàn)將大塊數(shù)據(jù)搬運到一小塊循環(huán)存儲空間,軟件可以實時控制DMA的搬運過程。通過流控制寄存器可以控制DMA操作序列產(chǎn)生的絕對時間和相對次序。DMA控制器可以根據(jù)配置寄存器的值產(chǎn)生特定的DMA操作序列,可以根據(jù)流控制寄存器的值來控制DMA操作的產(chǎn)生時間和相對次序,可以根據(jù)狀態(tài)寄存器的值來決定DMA操作的狀態(tài)改變,可以根據(jù)DMA操作當(dāng)前的執(zhí)行狀態(tài)改變狀態(tài)寄存器的值,也可以根據(jù)DMA操作當(dāng)前的執(zhí)行狀態(tài)改變自身的狀態(tài)。 本發(fā)明使得DMA控制硬件的狀態(tài)對于軟件是完全實時可見的,并可以用極小的開銷來改變DMA的執(zhí)行狀態(tài)而不需要重新啟動一次DMA,并且對于DMA操作的產(chǎn)生時間和執(zhí)行次序都是完全可控。這就使得DMA控制硬件可以靈活而全面的支持軟件的各種優(yōu)化,卻不需要額外的開銷。 本發(fā)明還提供一種DMA控制器的控制方法,該控制方法依賴于前述DMA控制器的控制裝置而執(zhí)行。 即所述的DMA控制器的控制裝置由配置寄存器、狀態(tài)寄存器、流控制寄存器組成,其中, 所述配置寄存器用于接收外部實時輸入的配置信息,所述DMA控制器根據(jù)該外部實時輸入的配置信息產(chǎn)生對應(yīng)的操作序列; 所述狀態(tài)寄存器用于指示當(dāng)前DMA控制器的工作狀態(tài),并可依據(jù)外部實時輸入的配置信息改變其指示; 所述流控制寄存器用于根據(jù)外部實時輸入的配置信息設(shè)置DMA控制器的各存取操作序列的時鐘周期及其占用的帶寬比例。 如圖7所示,本發(fā)明所述DMA控制器的控制方法,包括如下步驟
步驟101,配置寄存器接收到外部實時輸入的配置信息,所述DMA控制器根據(jù)該配置信息產(chǎn)生對應(yīng)的操作序列,所述流控制寄存器根據(jù)該配置信息設(shè)置DMA控制器的各對應(yīng)操作序列的時鐘周期及其占用的帶寬比例。 本步驟中,所述配置信息包括源數(shù)據(jù)起始地址、源數(shù)據(jù)格式、源數(shù)據(jù)大小、源數(shù)據(jù)在中間介質(zhì)中的存儲類型、源數(shù)據(jù)經(jīng)過中間介質(zhì)的方式,源數(shù)據(jù)被存放到新存儲區(qū)域的目的地址、源數(shù)據(jù)在目的存儲介質(zhì)中的存儲類型、目的數(shù)據(jù)大小、目的存放地址是否為循環(huán)地址以及循環(huán)地址信息,狀態(tài)寄存器的觸發(fā)條件。所述目的地址可為連續(xù)的地址,或者不連續(xù)的地址,或者循環(huán)重復(fù)的地址。 當(dāng)DMA控制器的各通道同時接收到請求時,根據(jù)DMA控制器內(nèi)的計數(shù)器統(tǒng)計各通道使用總線情況,并依據(jù)設(shè)置的各存取操作序列專用的帶寬比例選擇具有優(yōu)先權(quán)限的對應(yīng)通道。 步驟102,所述DMA控制器依上述產(chǎn)生的操作序列搬運數(shù)據(jù),并由狀態(tài)寄存器指示其當(dāng)前的工作狀態(tài)。本步驟中,所述狀態(tài)寄存器根據(jù)DMA控制器產(chǎn)生的操作序列確定當(dāng)前DMA控制器的工作狀態(tài)。 本發(fā)明中,經(jīng)過步驟101,即在對配置寄存器及流控制寄存器輸入配置信息后,DMA控制器即產(chǎn)生對應(yīng)的操作序列,進(jìn)入步驟102,由DMA控制器依據(jù)產(chǎn)生的操作序列對數(shù)據(jù)進(jìn)行搬運,在該搬運過程中,DMA控制器的工作狀態(tài)被狀態(tài)寄存器實時指示。
如此反復(fù)執(zhí)行步驟101及步驟102,可實現(xiàn)將源數(shù)據(jù)自源地址搬運至目的地址。當(dāng)搬運數(shù)據(jù)到達(dá)設(shè)定值,即狀態(tài)寄存器指示達(dá)到設(shè)定值時,若仍需繼續(xù)搬運數(shù)據(jù),則需要外部重新輸入配置信息,以觸發(fā)DMA控制器繼續(xù)執(zhí)行搬運數(shù)據(jù)。因此時狀態(tài)寄存器指示的是當(dāng)前DMA控制器的工作狀態(tài)(對應(yīng)為達(dá)到設(shè)定值而暫停搬運的狀態(tài)),那么,在重新輸入的配置信息中,需要對狀態(tài)寄存器的指示進(jìn)行更改,在更改后,配置寄存器依據(jù)此時狀態(tài)寄存器的指示和重新輸入的配置信息,繼續(xù)對源數(shù)據(jù)進(jìn)行搬運。如此,反復(fù)執(zhí)行步驟102及步驟102,直至源數(shù)據(jù)被搬運完畢。 盡管本發(fā)明的實施方案已公開如上,但其并不僅僅限于說明書和實施方式中所列運用,它完全可以被適用于各種適合本發(fā)明的領(lǐng)域,對于熟悉本領(lǐng)域的人員而言,可容易地實現(xiàn)另外的修改,因此在不背離權(quán)利要求及等同范圍所限定的一般概念下,本發(fā)明并不限于特定的細(xì)節(jié)和這里示出與描述的圖例。
權(quán)利要求
一種DMA控制器的控制裝置,其特征在于,包括配置寄存器、狀態(tài)寄存器、以及流控制寄存器,其中,所述配置寄存器用于接收外部實時輸入的配置信息,所述DMA控制器根據(jù)該外部實時輸入的配置信息產(chǎn)生對應(yīng)的操作序列;所述狀態(tài)寄存器用于指示當(dāng)前DMA控制器的工作狀態(tài),并可依據(jù)外部實時輸入的配置信息改變其指示;所述流控制寄存器用于根據(jù)外部實時輸入的配置信息設(shè)置DMA控制器的各存取操作序列的時鐘周期及其占用的帶寬比例。
2. 如權(quán)利要求l所述的DMA控制器的控制裝置,其特征在于,所述配置信息包括源數(shù)據(jù) 起始地址、源數(shù)據(jù)格式、源數(shù)據(jù)大小、源數(shù)據(jù)在中間介質(zhì)中的存儲類型、源數(shù)據(jù)經(jīng)過中間介 質(zhì)的方式,源數(shù)據(jù)被存放到新存儲區(qū)域的目的地址、源數(shù)據(jù)在目的存儲介質(zhì)中的存儲類型、 目的數(shù)據(jù)大小、目的存放地址是否為循環(huán)地址以及循環(huán)地址信息,狀態(tài)寄存器的觸發(fā)條件。
3. 如權(quán)利要求2所述的DMA控制器的控制裝置,其特征在于,所述目的地址為連續(xù)的地 址,或者不連續(xù)的地址,或者循環(huán)重復(fù)的地址。
4. 如權(quán)利要求1所述的DMA控制器的控制裝置,其特征在于,所述狀態(tài)寄存器根據(jù)DMA 控制器產(chǎn)生的操作序列確定當(dāng)前DMA控制器的工作狀態(tài)。
5. 如權(quán)利要求1所述的DMA控制器的控制裝置,其特征在于,當(dāng)DMA控制器的各通道同 時接收到請求時,根據(jù)DMA控制器內(nèi)的計數(shù)器統(tǒng)計各通道使用總線情況,并依據(jù)設(shè)置的各存取操作序列專用的帶寬比例選擇具有優(yōu)先權(quán)限的對應(yīng)通道。
6. —種DMA控制器的控制方法,其特征在于,設(shè)置有配置寄存器、狀態(tài)寄存器、流控制寄存器,其中,所述配置寄存器用于接收外部實時輸入的配置信息,所述DMA控制器根據(jù)該外部實時 輸入的配置信息產(chǎn)生對應(yīng)的操作序列;所述狀態(tài)寄存器用于指示當(dāng)前DMA控制器的工作狀態(tài),并可依據(jù)外部實時輸入的配置 信息改變其指示;所述流控制寄存器用于根據(jù)外部實時輸入的配置信息設(shè)置DMA控制器的各存取操作 序列的時鐘周期及其占用的帶寬比例; 并執(zhí)行如下步驟步驟一,配置寄存器接收到外部實時輸入的配置信息,所述DMA控制器根據(jù)該配置信 息產(chǎn)生對應(yīng)的操作序列,所述流控制寄存器根據(jù)該配置信息設(shè)置DMA控制器的各對應(yīng)操作 序列的時鐘周期及其占用的帶寬比例;步驟二,所述DMA控制器依上述產(chǎn)生的操作序列搬運數(shù)據(jù),并由狀態(tài)寄存器指示其當(dāng) 前的工作狀態(tài)。
7. 如權(quán)利要求6所述的DMA控制器的控制方法,其特征在于,所述配置信息包括源數(shù)據(jù) 起始地址、源數(shù)據(jù)格式、源數(shù)據(jù)大小、源數(shù)據(jù)在中間介質(zhì)中的存儲類型、源數(shù)據(jù)經(jīng)過中間介 質(zhì)的方式,源數(shù)據(jù)被存放到新存儲區(qū)域的目的地址、源數(shù)據(jù)在目的存儲介質(zhì)中的存儲類型、 目的數(shù)據(jù)大小、目的存放地址是否為循環(huán)地址以及循環(huán)地址信息,狀態(tài)寄存器的觸發(fā)條件。
8. 如權(quán)利要求7所述的DMA控制器的控制裝置,其特征在于,所述目的地址為連續(xù)的地 址,或者不連續(xù)的地址,或者循環(huán)重復(fù)的地址。
9. 如權(quán)利要求6所述的DMA控制器的控制裝置,其特征在于,所述狀態(tài)寄存器根據(jù)DMA 控制器產(chǎn)生的操作序列確定當(dāng)前DMA控制器的工作狀態(tài)。
10. 如權(quán)利要求6所述的DMA控制器的控制裝置,其特征在于,當(dāng)DMA控制器的各通道 同時接收到請求時,根據(jù)DMA控制器內(nèi)的計數(shù)器統(tǒng)計各通道使用總線情況,并依據(jù)設(shè)置的 各存取操作序列專用的帶寬比例選擇具有優(yōu)先權(quán)限的對應(yīng)通道。
全文摘要
本發(fā)明公開了一種DMA控制器的控制裝置及控制方法,所述控制裝置包括配置寄存器、狀態(tài)寄存器、以及流控制寄存器,其中,所述配置寄存器用于接收外部實時輸入的配置信息,所述DMA控制器根據(jù)該外部實時輸入的配置信息產(chǎn)生對應(yīng)的操作序列;所述狀態(tài)寄存器用于指示當(dāng)前DMA控制器的工作狀態(tài),并可依據(jù)外部實時輸入的配置信息改變其指示;所述流控制寄存器用于根據(jù)外部實時輸入的配置信息設(shè)置DMA控制器的各存取操作序列的時鐘周期及其占用的帶寬比例。本發(fā)明用極小的開銷來改變DMA的執(zhí)行狀態(tài)而不需要重新啟動一次DMA,并且對于DMA操作的產(chǎn)生時間和執(zhí)行次序都是完全可控,可以靈活而全面的支持軟件的各種優(yōu)化。
文檔編號G06F13/28GK101702144SQ20091023803
公開日2010年5月5日 申請日期2009年11月23日 優(yōu)先權(quán)日2009年11月23日
發(fā)明者王玲, 錢誠, 陳云霽 申請人:北京天童芯源科技有限公司