專利名稱:在直接存儲(chǔ)器存取任務(wù)請(qǐng)求之間進(jìn)行仲裁的裝置和方法
在直接存儲(chǔ)器存取任務(wù)請(qǐng)求之間進(jìn)行仲裁的裝置和方法 發(fā)明領(lǐng)域本發(fā)明涉及在DMA任務(wù)請(qǐng)求之間進(jìn)行仲裁的裝置和方法。 發(fā)明背景最近十年以來,集成電路的復(fù)雜性極大地提高了。為了支持各種 應(yīng)用,例如,但不局限于,多媒體應(yīng)用、實(shí)時(shí)應(yīng)用等,正在研究芯片 上系統(tǒng)和其他多核集成電路?,F(xiàn)代的集成電路能夠?qū)嵸|(zhì)上并行執(zhí)行大量任務(wù)。其中某些任務(wù)要 求在存儲(chǔ)器映射裝置之間傳輸相對(duì)大量數(shù)據(jù)。多通道直接存儲(chǔ)器存取 (DMA)控制器可以管理多個(gè)數(shù)據(jù)傳輸,同時(shí)減少了來自集成電路核 心(處理器)的加載。然而,DMA控制器還可以通過每當(dāng)完成特定 DMA任務(wù)時(shí)發(fā)布中斷來加載這些核心。以下所有的在此引用作為參考的專利和專利申請(qǐng)描述了各種 DMA控制器:Olivier等人的美國專利6738881、 Wunderlich的美國專 利6122679、 Amini等人的美國專利5450551、 Farazmandnia等人的美 國專利6728795、 Kihara的美國專利4502117、 Brewer等人的美國專利 4556952、 Riley等人的美國專利5838993、 Wolford等人的美國專利 5692216、5603050和5884095、Loyer等人的美國專利6298396、Morrison 等人的美國專利6542940、 Leichty等人的美國專利6041060、 Goff等 人的序列號(hào)為2004/0073721A1的美國專利申請(qǐng)、Takashi等人的序列號(hào) 為20040037156A1的美國專利申請(qǐng)、Cheung的序列號(hào)為2004021618A1 的美國專利申請(qǐng)、Hedeki等人的公開號(hào)為JP07168741A2的日本專利、 Masahiko的公開號(hào)為JP06187284A2的日本專利、Yoshihiro的公開號(hào) 為 JP2004252533A2的日本專利、Tadayoshi等人的公開號(hào)為JP04324755A2的日本專禾U、Hiroyuki的公開號(hào)為JP2004013395A2的日 本專利、Tetsuya的公開號(hào)為JP08249267A2的日本專利、Katsuyuki等 人的公開號(hào)為JP02048757A2的日本專利以及Simon等人的公開號(hào)為 WO2005/013084的PCT專利申請(qǐng)。由于DMA任務(wù)的復(fù)雜性,所以大量DMA任務(wù)研究員在定義每一 個(gè)DMA任務(wù)的優(yōu)先級(jí)上花費(fèi)了許多資源。這些優(yōu)先級(jí)可以被定制于專用程序。這就需要提供一種在DMA任務(wù)請(qǐng)求之間進(jìn)行仲裁的有效的裝置 和方法發(fā)明內(nèi)容一種正如所附權(quán)利要求所述的在DMA任務(wù)請(qǐng)求之間進(jìn)行仲裁的 裝置和方法。
從以下結(jié)合附圖的詳細(xì)描述將更加全面地了解和理解本發(fā)明,其中圖1示出了一種根據(jù)本發(fā)明實(shí)施例的裝置;圖2示出了 一種根據(jù)本發(fā)明實(shí)施例的DMA控制器;圖3示出了一種根據(jù)本發(fā)明實(shí)施例的總線接口;圖4示出了根據(jù)本發(fā)明實(shí)施例的文件寄存器的各個(gè)寄存器;圖5示出了一種根據(jù)本發(fā)明實(shí)施例的緩沖器描述符表;圖6示出了一種根據(jù)本發(fā)明實(shí)施例的四維緩沖器;圖7示出了一種根據(jù)本發(fā)明實(shí)施例的DMA通道和選定的DMA通道邏輯;圖8示出了根據(jù)本發(fā)明實(shí)施例在示范性數(shù)據(jù)傳輸操作中涉及的各 個(gè)緩沖器;圖9是一種根據(jù)本發(fā)明實(shí)施例的在多個(gè)DMA任務(wù)請(qǐng)求之間進(jìn)行仲裁的方法的流程圖;圖IO是一種根據(jù)本發(fā)明實(shí)施例的用于控制第一個(gè)DMA任務(wù)的執(zhí) 行的方法的流程圖;圖11是一種根據(jù)本發(fā)明實(shí)施例的用于執(zhí)行DMA任務(wù)的方法的流程圖;圖12是一種根據(jù)本發(fā)明實(shí)施例的用于控制多個(gè)DMA任務(wù)的方法 的流程圖。優(yōu)選實(shí)施例的詳細(xì)描述以下附圖示出了本發(fā)明的示范性實(shí)施例。它們并不是打算用來限 定本發(fā)明的范圍,而是幫助理解本發(fā)明的某些實(shí)施例。還要注意所有 附圖都不是按照比例繪制的。DMA任務(wù)包括從一個(gè)位置到另一個(gè)位置的信息傳輸。DMA任務(wù) 可以要求許多DMA事務(wù)處理(transaction)。每個(gè)DMA任務(wù)的DMA 事務(wù)處理的數(shù)量響應(yīng)于在DMA任務(wù)期間應(yīng)當(dāng)傳輸?shù)臄?shù)據(jù)的總大小與 在單個(gè)DMA事務(wù)處理期間能夠傳輸?shù)臄?shù)據(jù)的大小之間的關(guān)系。還要注 意,DMA事務(wù)處理的數(shù)量可以響應(yīng)于DMA事務(wù)處理的成功,這是因 為在失敗的DMA事務(wù)處理后面可以有數(shù)據(jù)的重發(fā),該數(shù)據(jù)是在失敗的 DMA事務(wù)處理過程中要傳輸?shù)臄?shù)據(jù)。單個(gè)DMA任務(wù)可以包括多個(gè)DMA子任務(wù)。單個(gè)DMA子任務(wù)可 以包括要求多個(gè)DMA事務(wù)處理。DMA子任務(wù)與對(duì)多維緩沖器中單個(gè) 維度的寫入(或從其讀出)有關(guān)。周期性DMA任務(wù)可以包括多個(gè)DMA任務(wù)循環(huán)(iteration)。每 一個(gè)周期性DMA任務(wù)操作可以包括多個(gè)DMA事務(wù)處理,并且可以包 括多個(gè)DMA子任務(wù)。 一個(gè)DMA循環(huán)可以認(rèn)為是重復(fù)性的DMA任務(wù), 除非它被掩蔽、凍結(jié)、去使能(disabled)或者要不然就被停止。多維緩沖器包括多個(gè)相互鏈接的緩沖器段。這些段可以形成連貫 的地址范圍,但這不是必需的。緩沖器通常與多個(gè)邏輯組件例如寄存器有關(guān)。 一個(gè)多維緩沖器比 一組獨(dú)立的緩沖器(雖然其中每一個(gè)緩沖器對(duì)應(yīng)于多維緩沖器中一個(gè) 單獨(dú)的維度)要求更少的邏輯。方便地,多維緩沖器包括多個(gè)存儲(chǔ)器 段。由每一個(gè)維度的大小信息來定義存儲(chǔ)器段的數(shù)量。特定維度的大 小信息表示在之前維度的大小與當(dāng)前維度的大小之間的比率。比如說, 如果第一個(gè)維度包括Z個(gè)基本存儲(chǔ)器段,而第二個(gè)維度的大小信息為Y,則該二維緩沖器包括(ZxY)個(gè)存儲(chǔ)器段。根據(jù)本發(fā)明的實(shí)施例,多個(gè)DMA任務(wù)可以是基于周期時(shí)間的 DMA任務(wù)。基于周期時(shí)間的DMA任務(wù)是重復(fù)的DMA任務(wù),但是它 的重復(fù)率受到DMA任務(wù)執(zhí)行周期的限制。方便地,在單個(gè)DMA任務(wù) 執(zhí)行周期內(nèi)應(yīng)當(dāng)僅執(zhí)行基于單 一 周期時(shí)間的D M A任務(wù)。根據(jù)本發(fā)明的實(shí)施例,可以將大量的DMA任務(wù)定義為基于周期 時(shí)間的DMA任務(wù),因此降低了 DMA控制器預(yù)編程的復(fù)雜性。而且, 利用基于周期時(shí)間的DMA任務(wù)防止了在每一個(gè)周期對(duì)DMA控制器進(jìn) 行編程。方便地,提供了一種裝置(例如圖1的裝置90)。該裝置包括至 少一個(gè)存儲(chǔ)器單元以及適用來訪問該存儲(chǔ)器單元的DMA控制器。裝置 90適用來在該至少一個(gè)存儲(chǔ)器單元內(nèi)實(shí)現(xiàn)多維緩沖器。該裝置包括 DMA控制器100,它適用來執(zhí)行多個(gè)DMA子任務(wù),其中該執(zhí)行包括 在緩沖器間的跳變點(diǎn)上在緩沖器之間跳轉(zhuǎn);其中,所述緩沖器間的跳 變點(diǎn)基本被定義在多個(gè)多維緩沖器當(dāng)中的每一個(gè)多維緩沖器的一個(gè)或 多個(gè)維度的末端。方便地,提供了一種裝置(例如圖1的裝置90)。裝置90包括一個(gè)或多個(gè)存儲(chǔ)器單元(例如圖1的存儲(chǔ)器單元93、 94)。裝置90還包 括DMA控制器IOO,它適用來(i)訪問為多個(gè)DMA通道中的每一 個(gè)DMA通道而定義的多個(gè)緩沖器描述符當(dāng)中的至少一個(gè)緩沖器描述 符,其中至少兩個(gè)緩沖器描述符包括計(jì)時(shí)信息,該計(jì)時(shí)信息控制基于 周期時(shí)間的DMA任務(wù)的執(zhí)行;(ii)接收多個(gè)DMA任務(wù)請(qǐng)求,(iii) 從該多個(gè)DMA任務(wù)請(qǐng)求當(dāng)中選擇DMA任務(wù)請(qǐng)求,以及(iv)執(zhí)行DMA 任務(wù)或DMA任務(wù)循環(huán),并更新與所選定的DMA任務(wù)請(qǐng)求有關(guān)的緩沖 器描述符,以此來反映該執(zhí)行。以下的說明描述了各種計(jì)數(shù)器。本領(lǐng)域技術(shù)人員將理解可以使用 向上計(jì)數(shù)器和向下計(jì)數(shù)器而不脫離本發(fā)明的范圍。因此,可以用計(jì)數(shù) 器減量操作來代替計(jì)數(shù)器增量操作。為了簡單起見,以下附圖并不包括在實(shí)際系統(tǒng)中要求的本領(lǐng)域技 術(shù)人員所理解的特定細(xì)節(jié)。比如說,沒有顯示某些控制路徑和供電路 徑。這些將從以下進(jìn)一步的描述中顯而易見。通常地,存在許多可能 的方法來在硬件中實(shí)現(xiàn)系統(tǒng)90和DMA控制器100的邏輯功能,而附 圖僅僅是用于圖示說明的目的。本領(lǐng)域技術(shù)人員將基于此處的描述而 理解如何實(shí)現(xiàn)系統(tǒng)90,尤其是DMA控制器100。圖1示出了根據(jù)本發(fā)明實(shí)施例的系統(tǒng)90。系統(tǒng)90包括DMA控制 器100以及附加組件。方便地,裝置90具有第一DAM任務(wù)控制性能。它包括存儲(chǔ)器單 元和DMA控制器,該DMA控制器適用來監(jiān)視第一 DMA任務(wù)的執(zhí)行, 該執(zhí)行包括訪問存儲(chǔ)器單元,并適用來在第一DMA任務(wù)執(zhí)行子間隔期 間未完成第一個(gè)DMA任務(wù)的情況下執(zhí)行第一可能的計(jì)時(shí)沖突(timing violation)響應(yīng)操作。DMA控制器IOO可以連接到多個(gè)存儲(chǔ)器映射組件,并且可以是各種片上系統(tǒng)的系統(tǒng)的一部分。發(fā)明人使用了一種32通道DMA控制器 100,但是可以改變DMA通道的數(shù)量。多個(gè)寄存器和邏輯與每一個(gè) DMA通道有關(guān)。方便地,多個(gè)諸如但不局限于外圍設(shè)備、核心和存儲(chǔ) 器單元的組件可以連接到DMA控制器100。方便地,DMA控制器可 以動(dòng)態(tài)地選擇運(yùn)行哪一個(gè)組件。因此,僅僅是在DMAS控制器與組件 之間的連接并不必然意味著DMA通道被分配給該組件。總線91連接到DMA控制器100、總線媒體訪問控制器(用MAC 表示)98、多個(gè)核心92、多個(gè)存儲(chǔ)器單元94、外部高級(jí)存儲(chǔ)器接口 95 和通信端口,例如以太網(wǎng)端口 97和PCI99。另外,多個(gè)(M個(gè))外圍 設(shè)備98連接到DMA控制器100。注意,DMA控制器100的不同端口可以連接到不同的總線,可以 用多個(gè)總線來代替總線91,方便地,每一個(gè)總線都具有它自己的MAC。系統(tǒng)90包括多個(gè)存儲(chǔ)器單元,包括在DMA控制器100內(nèi)的內(nèi)部 存儲(chǔ)器單元(未顯示)??梢栽诟鱾€(gè)存儲(chǔ)器單元內(nèi)存儲(chǔ)各種信息。方 便地,在存儲(chǔ)器單元94內(nèi)存儲(chǔ)緩沖器描述符。注意,可以在DMA控 制器100本身內(nèi)存儲(chǔ)至少一個(gè)緩沖器描述符,但是這不是必需的。緩 沖器描述符所指示的緩沖器可以實(shí)現(xiàn)在存儲(chǔ)器單元94或外部高級(jí)存儲(chǔ) 器單元93內(nèi)。預(yù)先對(duì)緩沖器描述符進(jìn)行編程,而且該緩沖器描述符包括用于控 制DMA任務(wù)的信息。圖2示出了根據(jù)本發(fā)明實(shí)施例的DMA控制器100。DMA控制器100包括兩個(gè)I/O端口 172和174、1/0端口接口 160、 總線接口 140、多個(gè)FIF0 150、 PRAM 130、 DMA邏輯120、通道邏輯 與仲裁器110以及寄存器文件200。DMA邏輯120連接到總線接口 140、通道邏輯與仲裁器IIO、寄 存器文件200、參數(shù)RAM (PRAM) 130和FIFO 150。 PRAM 130連接 到總線接口 140和通道邏輯與仲裁器110。寄存器文件200連接到通道 邏輯與仲裁器100。 FIFO 150連接到總線接口 140。 1/0端口接口 160 連接到I/0端口 172和174以及總線接口 140。注意,DMA控制器100可以包括對(duì)于每一個(gè)I/O端口的總線接口 和I/0端口接口,但是為了解釋的簡單性,只示例了一個(gè)I/0端口 160 和一個(gè)單獨(dú)的總線接口 140。兩個(gè)I/O端口 172和174連接到總線176,該總線連接到像存儲(chǔ)器 單元94那樣的外部存儲(chǔ)器單元。雙I/0端口有利于并行執(zhí)行兩個(gè)DMA 任務(wù)。注意,1/0端口的數(shù)量可以不同于兩個(gè)。存儲(chǔ)器單元94存儲(chǔ)緩沖器描述符,而且還用來實(shí)現(xiàn)緩沖器。這些 緩沖器可以包括單維緩沖器或多維緩沖器。多維緩沖器包括多個(gè)相互 鏈接的地址范圍。注意,可以在一個(gè)或多個(gè)存儲(chǔ)器單元內(nèi)存儲(chǔ)緩沖器 描述符,同時(shí)可以用一個(gè)或多個(gè)其他存儲(chǔ)器單元來實(shí)現(xiàn)緩沖器。緩沖 器描述符定義了 DMA任務(wù)的各種特性,例如緩沖器的位置、為完成 DMA任務(wù)或DMA子任務(wù)而要傳輸?shù)氖S鄶?shù)據(jù)(所述大小還稱為剩余 大小)、緩沖器維度數(shù)、DMA任務(wù)的計(jì)時(shí)、 一旦DMA任務(wù)結(jié)束和/ 或緩沖器為滿或空時(shí)要執(zhí)行的操作等等。比如說,緩沖器描述符可以包括指令或控制信息,它們使DMA 控制器在一旦緩沖器為滿的情況下執(zhí)行以下操作中的一種(i)關(guān)閉 DMA通道(比如說,通過阻止DMA通道向仲裁器發(fā)送DMA任務(wù)請(qǐng) 求),(ii)重新初始化(由此實(shí)現(xiàn)周期性緩沖),(iii) 一旦特定的 重新寫入周期期滿進(jìn)行重新初始化(由此實(shí)現(xiàn)基于時(shí)間的周期性緩沖),(iv)重新設(shè)置緩沖器大小(由此實(shí)現(xiàn)增量緩沖),或者(v)切換到另一個(gè)緩沖器(由此實(shí)現(xiàn)鏈接緩沖)等。方便地,通過用戶或另一個(gè)實(shí)體來定義緩沖器描述符,并且在一 個(gè)或多個(gè)存儲(chǔ)器單元94內(nèi)存儲(chǔ)該緩沖器描述符。每一個(gè)DMA通道可 以與多個(gè)緩沖器描述符相關(guān)??梢园凑斩喾N方式來布置這些緩沖器描述符,例如,但不局限于,緩沖器描述符表(BDT)。每一個(gè)DMA通 道可以與唯一的BDT相關(guān)。對(duì)于與緩沖器描述符,可以應(yīng)用多種數(shù)據(jù)檢索(retrieval)方法。 方便地,在第一次通過仲裁器選擇特定的DMA任務(wù)請(qǐng)求時(shí),從存儲(chǔ)器 單元94中檢索相關(guān)的緩沖器描述符。然后在PRAM 130中存儲(chǔ)該緩沖 器描述符,通過DMA控制器100更新該緩沖器描述符,并最終將其寫 回到存儲(chǔ)器單元94。所述寫回操作可以發(fā)生在DMA任務(wù)結(jié)束時(shí),但 這不是必需的。通道邏輯與仲裁器110包括接口 420和仲裁器410。它接收來自于 各種存儲(chǔ)器管理組件(諸如但不局限于外圍設(shè)備96)的DMA任務(wù)請(qǐng) 求,并執(zhí)行仲裁序列以從這些DMA任務(wù)請(qǐng)求當(dāng)中選擇一個(gè)請(qǐng)求。接口 420可以適用來在向仲裁器410發(fā)送DMA任務(wù)請(qǐng)求之前, 檢驗(yàn)是否可以進(jìn)行DMA任務(wù)(如果相關(guān)的DMA任務(wù)請(qǐng)求贏得了仲裁 對(duì)話)。該檢驗(yàn)可以包括確定DMA通道是否為使能的、非凍結(jié)的,是 否可以1/0端口可以服務(wù),禾P/或是否暫時(shí)掩蔽DMA任務(wù)請(qǐng)求等。比如說,如果特定的DMA任務(wù)是基于時(shí)間的周期性DMA任務(wù), 以及如果在預(yù)定的DMA任務(wù)周期內(nèi)執(zhí)行之前的DMA任務(wù),就可以暫 時(shí)掩蔽DMA任務(wù)請(qǐng)求。根據(jù)本發(fā)明的實(shí)施例,仲裁器410適用來響應(yīng)于與DMA任務(wù)有 關(guān)的計(jì)時(shí)期限而從多個(gè)DMA任務(wù)請(qǐng)求當(dāng)中選擇DMA任務(wù)請(qǐng)求。方便地,仲裁器410適用來響應(yīng)于預(yù)定的優(yōu)先級(jí)而在與基本相同的計(jì)時(shí)期限有關(guān)的DMA任務(wù)請(qǐng)求之間進(jìn)行選擇。
方便地,仲裁器410適用來通過應(yīng)用計(jì)時(shí)無差異仲裁方案(timing indifferent arbitration scheme)來在與基本相同的計(jì)時(shí)期限有關(guān)的DMA 任務(wù)請(qǐng)求之間進(jìn)行選擇。這樣的一種仲裁方案并不響應(yīng)于計(jì)時(shí)期限, 并可以包括任何眾所周知的現(xiàn)有技術(shù)仲裁方案,例如循環(huán)復(fù)用(round robin)、加權(quán)的循環(huán)復(fù)用、固定優(yōu)先級(jí)、動(dòng)態(tài)分配的優(yōu)先級(jí)、加權(quán)的 公平隊(duì)列、低延遲隊(duì)列等。動(dòng)態(tài)分配的優(yōu)先級(jí)可以每一個(gè)或多個(gè)仲裁 周期改變DMA請(qǐng)求的優(yōu)先級(jí)。其中至少某些仲裁方案可以限制特定的 DMA通道所消耗的帶寬量。
方便地,仲裁器410適用來響應(yīng)于至少一個(gè)可用帶寬參數(shù)(ABP) 來選擇DMA任務(wù)。該可用帶寬參數(shù)可以是連接到總線的裝置的數(shù)量、 總線帶寬、總線狀態(tài)(總線是否繁忙)等,其中該總線還連接到DMA 控制器100。根據(jù)本發(fā)明的實(shí)施例,仲裁器就忽略那些一旦仲裁結(jié)束無 法執(zhí)行的DMA任務(wù)請(qǐng)求。比如說,某些DMA任務(wù)要求總線不繁忙, 而且數(shù)據(jù)接收方可用。如果不滿足這些條件,仲裁器410就可以忽略 包括在繁忙的總線上傳輸數(shù)據(jù)和/或向繁忙的數(shù)據(jù)接收方傳輸數(shù)據(jù)的 DMA請(qǐng)求。
方便地,仲裁器410適用來響應(yīng)于至少一個(gè)請(qǐng)求的帶寬參數(shù)(RBP) 來選擇DMA任務(wù)。所述請(qǐng)求的帶寬參數(shù)可以是為完成DMA任務(wù)而要 求的數(shù)據(jù)傳輸操作的數(shù)量、在每一個(gè)數(shù)據(jù)傳輸過程中傳輸?shù)臄?shù)據(jù)的大 小等。根據(jù)本發(fā)明的實(shí)施例,仲裁器410可以響應(yīng)于一個(gè)或多個(gè)RBP以 及一個(gè)或多個(gè)ABP來選擇DMA任務(wù)。根據(jù)本發(fā)明的實(shí)施例,每一個(gè)DMA任務(wù)可以與I/O端口 172和174中的一個(gè)相關(guān)。在這樣一種情況下,仲裁器410可以執(zhí)行兩個(gè)獨(dú)立的仲裁對(duì)話。第一個(gè)仲裁對(duì)話選擇與I/0端口 172相關(guān)的DMA任務(wù), 而另一個(gè)對(duì)話選擇與1/0端口 174相關(guān)的DMA任務(wù)??梢圆⑿袌?zhí)行這 兩個(gè)仲裁對(duì)話。根據(jù)本發(fā)明的另一個(gè)實(shí)施例,DMA任務(wù)并不是一開始與特定的 1/0端口相關(guān)的。在這種情況下,仲裁器410可以選擇兩個(gè)DMA任務(wù), 然后DMA控制器100將判定哪一個(gè)I/O端口將服務(wù)于DMA任務(wù)。根據(jù)本發(fā)明的實(shí)施例,仲裁處理包括兩個(gè)階段。在第一階段期間, 仲裁器410將DMA任務(wù)劃分到預(yù)定的計(jì)時(shí)期限范圍。然后,它在與最 短的計(jì)時(shí)期限范圍相關(guān)的DMA任務(wù)之間進(jìn)行選擇。發(fā)明人使用了 8比 特計(jì)時(shí)期限值和四個(gè)計(jì)時(shí)期限范圍(0和1) 、 (2到7) 、 (8到63) 和(64到255),但是也可以定義其他范圍。DMA控制器100包括多個(gè)FIFO 150。方便地,對(duì)每一個(gè)DMA通 道分配一個(gè)FIFO??梢韵駾MA邏輯120提供FIFO的狀態(tài),DMA邏 輯120可以響應(yīng)于該狀態(tài)而向通道邏輯與仲裁器110發(fā)送一個(gè)或多個(gè) DMA請(qǐng)求。比如說,如果特定的FIFO為空,則DMA邏輯120可以 判定填滿它(通過執(zhí)行寫操作),而且當(dāng)它為滿時(shí),DMA邏輯120可 以決定清空它(通過執(zhí)行讀操作)。通道邏輯與仲裁器110可以決定 在DMA任務(wù)之間進(jìn)行仲裁,或者響應(yīng)于DMA通道狀態(tài)(凍結(jié)、去使 能、解凍、使能)、1/0端口可用性、與DMA通道相關(guān)以參與到DMA 傳輸中的組件的當(dāng)前性能等而暫時(shí)忽略它們。之前提到,如果在DMA任務(wù)期間應(yīng)當(dāng)使用的I/O端口繁忙,DMA 任務(wù)請(qǐng)求就不進(jìn)入仲裁對(duì)話。注意,DMA控制器的不同部件可以執(zhí)行 這一檢驗(yàn)。根據(jù)本發(fā)明的另一實(shí)施例,不檢驗(yàn)I/0端口的狀態(tài),而且如 果這一 DMA任務(wù)請(qǐng)求贏得了仲裁對(duì)話,就可以將它存儲(chǔ)在DMA控制 器100的內(nèi)部隊(duì)列中,忽略或暫時(shí)忽略該DMA任務(wù)請(qǐng)求。圖3示出了根據(jù)本發(fā)明實(shí)施例的總線接口 140??偩€接口 140包括DMA任務(wù)請(qǐng)求采樣單元(RSU) 142,寫FIFO 144,讀FIFO 146和任 務(wù)管理器148。 RSU 142對(duì)DMA邏輯提供的DMA任務(wù)請(qǐng)求進(jìn)行采樣, 并將其發(fā)送到I/0端口接口 160。RSU 142對(duì)DMA邏輯發(fā)送的DMA任務(wù)請(qǐng)求進(jìn)行采樣。 一旦檢測 到DMA任務(wù)請(qǐng)求,就將它發(fā)送到I/O端口接口 160。如果與該DMA 任務(wù)請(qǐng)求相關(guān)的I/0端口不繁忙,則對(duì)該請(qǐng)求提供服務(wù)。方便地,在一 個(gè)時(shí)鐘周期之后對(duì)該請(qǐng)求提供服務(wù),但這不是必需的。如果與該DMA任務(wù)請(qǐng)求相關(guān)的I/0端口繁忙,則RSN 142可以 向DMA邏輯120發(fā)送RSU繁忙信號(hào)。方便地,在任務(wù)管理器148的 隊(duì)列內(nèi)存儲(chǔ)該DMA任務(wù)請(qǐng)求直至對(duì)該DMA任務(wù)請(qǐng)求提供服務(wù)為止。任務(wù)管理器148包括能夠存儲(chǔ)少量(例如8個(gè))DMA任務(wù)請(qǐng)求的 隊(duì)列。 一旦任務(wù)管理器148滿了,它就向DMA邏輯發(fā)送任務(wù)管理器繁 忙指示信號(hào),以暫時(shí)阻斷來自于DMA邏輯的新的請(qǐng)求。注意,可以對(duì) 每一個(gè)I/0端口分配隊(duì)列??偩€接口 140包括內(nèi)部的讀FIFO 146和寫FIFO 148。這些FIFO 使計(jì)時(shí)約束緩和并提供一種用于通過I/0端口接口 160和1/0端口 172 和174的讀和寫操作的流水線(pipelined)結(jié)構(gòu)。圖4示出了根據(jù)本發(fā)明實(shí)施例的文件寄存器200的多種寄存器。根據(jù)本發(fā)明的實(shí)施例,文件寄存器200包括一個(gè)或多個(gè)影子寄存 器(shadow register)。影子寄存器與相應(yīng)的寄存器相關(guān),而且即使是 當(dāng)寄存器正在使用時(shí),也可以允許更新該寄存器的內(nèi)容。文件寄存器200包括多個(gè)可編程寄存器,例如DMA緩沖器描述 符基本寄存器、DMA通道配置寄存器、DMA全局配置寄存器220、 DMA通道使能寄存器230、 DMA通道去使能寄存器232、 DMA通道 凍結(jié)寄存器234、 DMA通道解凍寄存器236、 DMA EDF寄存器、DMA EDF掩蔽寄存器250、 DMA EDF狀態(tài)寄存器254、 DMA錯(cuò)誤寄存器 260以及多種調(diào)試寄存器、輪廓(profiling)寄存器、附加狀態(tài)寄存器 和更新寄存器。每一個(gè)DMA通道都與一個(gè)緩沖器描述符表(BDT)相關(guān)。BDT 包括多個(gè)緩沖器描述符。每一個(gè)DMA通道都具有DMA緩沖器描述符 基本寄存器,例如寄存器202,它存儲(chǔ)該DMA通道的緩沖器描述符表 的基本地址。每一個(gè)DMA通道都與一個(gè)DMA通道配置寄存器相關(guān),例如DMA 通道配置寄存器210。它包括以下字段DMA通道激活(ACTV)字 段212、源I/0端口 (SPRT)字段213、目的I/O端口 (DPRT)字段 214、源多維(SMDC)字段215、目的多維(DMDC)字段216、源 BDT指針217、目的BDT指針218、循環(huán)復(fù)用優(yōu)先級(jí)組(RRPG)字段 219。另外,這些寄存器可以包括諸如源/目的延遲或使用最優(yōu)方案等。ACTV 212指示DMA通道是否為激活的。SPRT 213指示源I/O端 口,而DPRT 214指示目的I/O端口。 SMDC 215指示源緩沖器是否為 多維緩沖器。DMDC 216指示目的緩沖器是否為多維緩沖器。源BDT指針217包括在BDT內(nèi)對(duì)源緩沖器描述符的偏移量。目 的BDT指針218包括在BDT內(nèi)對(duì)目的緩沖器描述符的偏移量。根據(jù) 緩沖器描述符基本地址與該偏移量計(jì)算選定的緩沖器描述符的地址。RRPG 219指示在循環(huán)復(fù)用仲裁方案中DMA通道的優(yōu)先級(jí)。DMA全局配置寄存器220包括多種字段,諸如內(nèi)部的或外部的緩 沖器描述符使能字段222、仲裁類型字段224等。配置仲裁類型字段以 便在多個(gè)可用仲裁方案之間進(jìn)行選擇。比如說,這些仲裁方案可以包 括基于計(jì)時(shí)期限的仲裁方案、計(jì)時(shí)期限無差異仲裁方案、和/或它們的 組合。DMA通道使能寄存器230包括多個(gè)比特。每一個(gè)置位比特指示相 關(guān)的DMA通道被使能。忽略復(fù)位比特。DMA通道去使能寄存器232 對(duì)于每一個(gè)DMA通道都包括一個(gè)比特。如果設(shè)置該比特,則去使能 DMA通道。忽略復(fù)位比特。DMA通道凍結(jié)寄存器234對(duì)于每一個(gè)DMA 通道都包括一個(gè)比特。如果設(shè)置該比特,則凍結(jié)DMA通道。凍結(jié)的 DMA通道與去使能的DMA通道之間的差異在于,凍結(jié)的DMA通道 的請(qǐng)求被考慮而不服務(wù)該請(qǐng)求,而忽略去使能的DMA通道的請(qǐng)求。凍 結(jié)的DMA通道的DMA通道設(shè)置并不改變且保持有效。DMA通道解 凍寄存器236對(duì)于每一個(gè)DMA通道都包括一個(gè)比特。如果設(shè)置該比特, 則該DMA通道被解凍,其離開凍結(jié)狀態(tài)。每一個(gè)DMA通道都與一個(gè)DMA EDF寄存器相關(guān),例如DMA EDF寄存器240。它包括三個(gè)計(jì)時(shí)字段。第一個(gè)計(jì)時(shí)字段稱為當(dāng)前計(jì)數(shù) 器字段242,而且它存儲(chǔ)與該DMA字段相關(guān)的計(jì)時(shí)計(jì)數(shù)器的當(dāng)前值(當(dāng) 前時(shí)間)。第二個(gè)計(jì)時(shí)字段稱為閾值字段244,而且它存儲(chǔ)閾值,該閾 值反映當(dāng)DMA任務(wù)按期時(shí)的計(jì)時(shí)計(jì)數(shù)器的值。第三個(gè)計(jì)時(shí)字段稱為基 本計(jì)數(shù)器字段246,而且它存儲(chǔ)基本計(jì)數(shù)器值,在初始化計(jì)時(shí)計(jì)數(shù)器時(shí) 向計(jì)數(shù)器加載該基本計(jì)數(shù)器值。方便地,DMA任務(wù)執(zhí)行周期反映了基 本計(jì)數(shù)器值與閾值之間的差異。計(jì)時(shí)期限反映了當(dāng)前計(jì)數(shù)器值與閾值 之間的差異。方便地, 一旦DMA通道被去使能,與該DMA通道相關(guān)的計(jì)時(shí)計(jì) 數(shù)器就停止。在該DMA通道被使能時(shí),該通道的計(jì)時(shí)計(jì)數(shù)器重新加載 以基本計(jì)數(shù)器值。DMA EDF掩蔽寄存器250包括多個(gè)比特,它們?cè)谟?jì)時(shí)期限一旦發(fā) 生或者將要發(fā)生時(shí),要么使能中斷請(qǐng)求的生成,要么掩蔽中斷請(qǐng)求的 生成。根據(jù)本發(fā)明的實(shí)施例,如果在DMA任務(wù)執(zhí)行周期的預(yù)定子周期 內(nèi)沒有完成特定的DMA任務(wù),就可以指示出現(xiàn)了可能的計(jì)時(shí)沖突。可 由子周期闊值來定義該子周期。 一旦經(jīng)過該閾值,DMA控制器100或 另一個(gè)裝置(例如核心92)可以執(zhí)行以下操作中至少一種操作(i) 刪除DMA任務(wù),(ii)增加DMA任務(wù)的優(yōu)先級(jí),(iii)迫使DMA任 務(wù)的執(zhí)行,(iv)如果這是基于周期時(shí)間的DMA任務(wù),允許將要在下 一個(gè)DMA任務(wù)執(zhí)行周期內(nèi)執(zhí)行多于一個(gè)DMA任務(wù),(v)迫使一個(gè) 或多個(gè)DMA事務(wù)處理的執(zhí)行,(vi)迫使一個(gè)或多個(gè)DMA子任務(wù)的 執(zhí)行等。DMA EDF狀態(tài)寄存器254指示是否出現(xiàn)一個(gè)或多個(gè)計(jì)時(shí)沖突。 DMA錯(cuò)誤寄存器260包括多個(gè)字段,這些字段指示各種錯(cuò)誤的出現(xiàn)。 這些錯(cuò)誤可以包括各種1/0端口錯(cuò)誤、地址錯(cuò)誤、PRAM奇偶校驗(yàn)失敗、 FIFO錯(cuò)誤、計(jì)時(shí)沖突錯(cuò)誤等。圖5示出了一種根據(jù)本發(fā)明實(shí)施例的緩沖器描述符表300。每一個(gè)DMA通道都與緩沖器描述符表(BDT)相關(guān)。便利地, BDT 300存儲(chǔ)在一個(gè)或多個(gè)存儲(chǔ)器單元94內(nèi),并開始于一個(gè)BDT基 本地址。BDT 300包括緩沖器描述符的列表,這些緩沖器描述符可以 與DMA通道的各種DMA任務(wù)相關(guān)。預(yù)先對(duì)BDT 300進(jìn)行編程,盡管 可以以各種方式來更新BDT 300。方便地,存在讀緩沖器描述符和寫緩沖器描述符。其中每一個(gè)緩 沖器描述符都可以是單維緩沖器描述符或多維緩沖器描述符。BDT 300包括共同地用302來表示的多維讀緩沖器描述符和共同地用304來表示的多個(gè)單維寫緩沖器描述符。注意,讀緩沖器描述符 可以包括一個(gè)或多個(gè)單維緩沖器描述符和/或一個(gè)或多個(gè)多維緩沖器描 述符。寫緩沖器描述符可以包括一個(gè)或多個(gè)單維緩沖器描述符和/或一 個(gè)或多個(gè)多維緩沖器描述符。注意,每一個(gè)BDT都可以包括大量緩沖器描述符。發(fā)明人使用了 一種具有高達(dá)1024個(gè)單維寫緩沖器描述符的DMA控制器,但是可以 使用其他數(shù)量和類型的緩沖器描述符。方便地,如果僅僅使用少量的 緩沖器描述符,則可以在DMA控制器100內(nèi)存儲(chǔ)這些緩沖器描述符。像BD 310那樣的單維緩沖器描述符包括四個(gè)字段BD_ADDR 312、 BD—SIZE 314、 BD—BSIZE 316禾B BD—ATTR 320。每一個(gè)字段為 32個(gè)比特長。BD—ADDR 312包括指向當(dāng)前緩沖器條目(entry)的指 針。該指針掃描緩沖器,并在每一個(gè)DMA事務(wù)處理時(shí)遞增。BD—SIZE 314指示為了完成DMA任務(wù)或DMA子任務(wù)而要傳輸?shù)氖S鄶?shù)據(jù)的大 小。每當(dāng)完成DMA事務(wù)處理時(shí),就將該值減去DMA事務(wù)處理大小。 方便地,當(dāng)該字段達(dá)到0時(shí),DMA任務(wù)完成。BD—BSIZE 308存儲(chǔ)該 緩沖器的基本大小(將要在整個(gè)DMA任務(wù)期間傳輸?shù)臄?shù)據(jù)的總大小)。BD—ATTR 320包括以下字段(i)SST321,它指示是否在DMA 任務(wù)結(jié)束時(shí)生成掩蔽的中斷請(qǐng)求,(ii) CYC 322,它指示緩沖器是否 為周期性的或是遞增的,(iii) CONT 323,它指示當(dāng)BD—SIZE達(dá)到0 時(shí)是否關(guān)閉緩沖器,(iv)NPRT 324,它指示在下一個(gè)DMA任務(wù)期間 要使用哪一個(gè)I/O端口, (v) NO—INC 325,它指示是否在完成一個(gè) DMA任務(wù)之后遞增緩沖器地址(通常通過改變緩沖器偏移量),(vi) NBD 326,它選擇將用于下一個(gè)DMA任務(wù)的緩沖器,(vii)PP 328, 它設(shè)置將由MAC98考慮的緩沖器優(yōu)先級(jí),(viii) TSZ 330,它指示在 單個(gè)DMA任務(wù)期間可以傳輸?shù)淖畲髷?shù)據(jù)量,(ix) RFZ 331,它指示 一旦BD—SIZE達(dá)到0時(shí),是否凍結(jié)緩沖器,(x)MR 332, 它指示在 DMA控制器發(fā)送的數(shù)據(jù)達(dá)到其目的地之前,是否掩蔽來自于DMA通道的請(qǐng)求,(xi) BTSZ 333,它指示DMA事務(wù)處理大小,以及(xii) EDF 327,它指示如果選擇了基于計(jì)時(shí)期限的仲裁, 一旦BD—SIZE達(dá) 到0如何激活該緩沖器。EDF 327可以指示(a) DMA通道與仲裁器是否可以繼續(xù)正常工 作(以連續(xù)的方式),(b)是否應(yīng)當(dāng)為EDF計(jì)數(shù)器加載基本計(jì)數(shù)器值, 或者(c)是否可以掩蔽DMA通道的DMA任務(wù)請(qǐng)求直至從該任務(wù)的 開始經(jīng)過了預(yù)定的時(shí)間周期(比如說,EDF計(jì)數(shù)器達(dá)到O)。 一旦后者 出現(xiàn),則將計(jì)數(shù)器加載以基本計(jì)數(shù)器值。為了便于進(jìn)行解釋,示例了四維緩沖器和四維緩沖器描述符340。 注意,多維緩沖器可以具有兩個(gè)、三個(gè)或多于四個(gè)的維度。四維緩沖 器的DMA任務(wù)包括四個(gè)DMA子任務(wù)。多維緩沖器描述符340包括單維緩沖器描述符的字段以及附加字 段。它還包括比單維緩沖器描述符更多的屬性字段。當(dāng)使用多維緩沖器描述符時(shí),可以分別監(jiān)視每一個(gè)維度(DMA子 任務(wù))。因此,代替指示將要在DMA任務(wù)期間傳輸?shù)臄?shù)據(jù)的剩余大小 的單個(gè)值(BD_SIZE),存在三個(gè)附加計(jì)數(shù)器,它們計(jì)數(shù)第一維度的 剩余重復(fù)(C2DIM 362),第二維度的剩余的重復(fù)(C3DIM 363),第 三維度的剩余的重復(fù)(C4DIM 364),以便完成第二、第三和第四維度。 另外,每一附加維度具有它自己的偏移量(代替單維BD—ADDR 312 字段)及其重復(fù)基本計(jì)數(shù)(BC2DIM 272、BC3DIM 273和BC4DIM 274), 它們指示第二、第三和第四維度中每一個(gè)的重復(fù)的總數(shù)。除了字段321-327之外,附加的屬性字段也屬于屬性字段320', 并且包括LAST 341、 BD 342、 SSTD 343、 FRZD 344、 CONTD 345 和MRD 346。LAST 341指示緩沖器是否是成鏈的緩沖器鏈中最后一個(gè),以及如 果是的話一旦填滿(寫操作)或清空(讀操作)緩沖器就關(guān)閉DMA通 道。BD 342指示緩沖器的維數(shù)(例如4) 。 SSTD 343指示第一、第二、 第三或第四DMA子任務(wù)的完成是否將設(shè)置完成狀態(tài)比特。FRZD 344 指示第一、第二、第三或第四DMA子任務(wù)的完成是否將致使DMA控 制器凍結(jié)該DMA通道。CONTD 345通過指示在第一、第二、第三或 第四DMA子任務(wù)完成之后,何時(shí)DMA通道將會(huì)切換到下一個(gè)緩沖器 描述符,來定義緩沖器間的跳變點(diǎn)。CONTD 345便于在完成整個(gè)DMA 任務(wù)之前切換緩沖器。MRD 346指示何時(shí)掩蔽DMA通道請(qǐng)求。圖6示出了一種根據(jù)本發(fā)明實(shí)施例的四維緩沖器350。緩沖器350包括64個(gè)字節(jié)的128x256x128個(gè)存儲(chǔ)器段。在屬于第 一維度的連續(xù)的存儲(chǔ)器段之間的偏移量是448個(gè)字節(jié)。因此,BD—BSIZE 等于64, BC2DIM等于128, BC3DIM等于256,而BC4DIM等于128。整個(gè)緩沖器可以包括多個(gè)緩沖器間的跳變點(diǎn),它們對(duì)應(yīng)于各個(gè)維 度的末端點(diǎn)。比如說,第一組可能的緩沖器間的跳變點(diǎn)可以位于每一 個(gè)存儲(chǔ)器段的末端(對(duì)應(yīng)于第一維度的大小)。第二組可能的緩沖器 間的跳變點(diǎn)可以位于每一個(gè)128個(gè)存儲(chǔ)器段(對(duì)應(yīng)于第一維度的大小)。 第三組可能的緩沖器間的跳變點(diǎn)可以位于每一個(gè)32768個(gè)存儲(chǔ)器段(對(duì) 應(yīng)于第三維度的大小)。比如說,可以將緩沖器間的跳變點(diǎn)定義在這些可能的末端點(diǎn)中任 意一個(gè)上。在緩沖器間的跳變點(diǎn)之間的選擇響應(yīng)于CONTD 345的值。 比如說,如果COND等于l,則每當(dāng)訪問存儲(chǔ)器段時(shí),該處理都跳轉(zhuǎn)。 因此,如果存在多個(gè)例如350的多維緩沖器,則訪問其中每一個(gè)存儲(chǔ) 器的第一維度,然后訪問其中每一個(gè)緩沖器的第二維度,直至訪問了 所有維度為止。比如說,如果COND 345等于2,則選擇第二組緩沖 器間的跳變點(diǎn)。注意,根據(jù)本發(fā)明的實(shí)施例,該跳轉(zhuǎn)響應(yīng)于對(duì)繼續(xù)該DMA任務(wù)的確定。在某些情況下, 一旦達(dá)到特定的緩沖器間的跳變點(diǎn),裝置90 就鑒于至少一個(gè)參數(shù),例如所接收的信息的內(nèi)容、之前的DMA子任務(wù) 的成功等,來確定是否進(jìn)行下去。如果將四維緩沖器350定義為周期性的緩沖器,則在訪問最后一 個(gè)存儲(chǔ)器段之后,訪問第一個(gè)存儲(chǔ)器段。圖7示出了根據(jù)本發(fā)明實(shí)施例的DMA通道邏輯440和選定的 DMA通道邏輯460。DMA控制器100可以管理多個(gè)DMA通道。為了解釋的簡單性, 圖7示出了 DMA通道邏輯440和選定的DMA通道邏輯460,其管理 單一 DMA通道。DMA通道邏輯440位于通道邏輯與仲裁器110內(nèi)。通道邏輯與仲 裁器110對(duì)于每一個(gè)DMA通道都包括這樣的邏輯。選定的DMA通道邏輯460位于DMA邏輯120內(nèi)。DMA邏輯120 包括單一的DMA通道邏輯460,它管理選定的DMA任務(wù)請(qǐng)求。比如 說,如果DMA控制器IOO適用來基本上同時(shí)管理多于一個(gè)的DMA任 務(wù),它應(yīng)當(dāng)包括例如邏輯460那樣的附加邏輯。比如說,如果DMA控 制器100適用來管理每I/O端口 ( 172和174) —個(gè)DMA任務(wù),它應(yīng) 當(dāng)包括兩個(gè)選定的DMA通道邏輯。DMA通道邏輯440包括計(jì)時(shí)計(jì)數(shù)器單元442和附加的通道邏輯448。計(jì)時(shí)計(jì)數(shù)器單元442包括至少一個(gè)計(jì)時(shí)計(jì)數(shù)器,例如計(jì)算從各個(gè)事件開始所經(jīng)過的時(shí)間的計(jì)時(shí)計(jì)數(shù)器444,所述事件例如(i)執(zhí)行DMA 任務(wù)、DMA子任務(wù)或DMA事務(wù)處理的開始,(ii)對(duì)DMA任務(wù)請(qǐng)求 的接收,(iii)在DMA任務(wù)請(qǐng)求的選擇時(shí)等等??捎筛郊拥耐ǖ肋壿?48采樣并重新加載計(jì)時(shí)計(jì)數(shù)器444。另外, 附加的通道邏輯444可以只有在這些DMA任務(wù)請(qǐng)求是有效的和/或可 由I/O端口對(duì)其提供服務(wù)的情況下,才允許向通道邏輯與仲裁器110 發(fā)送DMA任務(wù)請(qǐng)求。為了執(zhí)行該任務(wù),附加的通道邏輯448訪問寄存 器文件200中的不同字段,并且方便地,可以訪問緩沖器描述符。比 如說,它訪問DMA通道使能寄存器230、DMA通道去使能寄存器232、 DMA通道凍結(jié)寄存器234等??梢酝ㄟ^附加的通道邏輯448掩蔽由外 圍設(shè)備或其他存儲(chǔ)器映射裝置接收的DMA任務(wù)請(qǐng)求和/或由FIFO 150 的一個(gè)FIFO初始化的請(qǐng)求,或者可以將其提供給仲裁器410。根據(jù)本發(fā)明的實(shí)施例,附加的通道邏輯448可以通過檢驗(yàn)在計(jì)數(shù) 器達(dá)到預(yù)定值之前DMA任務(wù)是否完成了,來檢測可能的計(jì)時(shí)沖突(并 發(fā)送可能的計(jì)時(shí)沖突信號(hào)),其中該預(yù)定值指示DMA任務(wù)執(zhí)行子間隔 已經(jīng)過去。DMA任務(wù)執(zhí)行子間隔可以被包括在緩沖器文件200或緩沖 器描述符內(nèi)??梢韵蜓b置90的各個(gè)組件包括核心92,或DMA控制器 100的另一部分,發(fā)送該信號(hào)。附加的通道邏輯448可以接收來自于選定的DMA通道邏輯420 或來自緩沖器描述符的指示,它指示該DMA任務(wù)完成。選定的DMA通道邏輯460管理選定的DMA任務(wù)或子任務(wù)。它訪 問選定的DMA任務(wù)的緩沖器描述符,并執(zhí)行多種操作,例如地址計(jì)算, 確定何時(shí)結(jié)束DMA任務(wù)或DMA任務(wù),判定何時(shí)執(zhí)行緩沖器間的跳轉(zhuǎn) 等。選定的DMA通道邏輯460包括至少一個(gè)進(jìn)程計(jì)數(shù)器462。 一旦DMA任務(wù)開始,就為進(jìn)程計(jì)數(shù)器462加載基本地址,并在完成這一 DMA事務(wù)處理時(shí),將進(jìn)程計(jì)數(shù)器462減去要在DMA任務(wù)或DMA子 任務(wù)期間利用DMA事務(wù)處理大小傳輸?shù)臄?shù)據(jù)的剩余大小。 一旦DMA 任務(wù)或DMA子任務(wù)結(jié)束,就把更新的緩沖器描述符發(fā)送回PRAM 130 和存儲(chǔ)器單元94。方便地,在管理多維緩沖器時(shí),為了計(jì)算每一個(gè)維度的重復(fù),應(yīng) 當(dāng)使用多個(gè)計(jì)數(shù)器。選定的DMA通道邏輯460還包括地址計(jì)算單元464,它接收各個(gè) 地址,并利用這些地址來訪問緩沖器的選定條目(entry)(由緩沖器 描述符指示的),執(zhí)行跳轉(zhuǎn)操作等。圖8示出了根據(jù)本發(fā)明實(shí)施例的在示范性數(shù)據(jù)傳輸操作中涉及的 各個(gè)緩沖器70、 71、 72、 73、 75和75。緩沖器71和72存儲(chǔ)源圖像,而寄存器72和73存儲(chǔ)參考圖像。 在通過編碼和/或壓縮處理源圖像時(shí),需要來自于這兩圖像的數(shù)據(jù)。緩沖器70和71是源緩沖器,緩沖器72和73是參考緩沖器,而 緩沖器74和75是目的緩沖器。緩沖器71和72中的每一個(gè)都是三維 緩沖器。緩沖器71的第一維度包括用Sl表示的存儲(chǔ)器段。緩沖器71的第 二維度包括存儲(chǔ)器段Sl和S2。緩沖器71的第三維度包括用S1-S50來 表示的50個(gè)存儲(chǔ)器段。緩沖器72的第一維度包括用S51表示的存儲(chǔ)器段。緩沖器72的 第二維度包括存儲(chǔ)器段S51和S52。緩沖器72的第三維度包括用 S51-S100來表示的50個(gè)存儲(chǔ)器段。緩沖器73的第一維度包括用Rl來表示的存儲(chǔ)器段。緩沖器73的第二維度包括存儲(chǔ)器段Rl和R2。緩沖器73的第三維度包括用 R1-R50來表示的50個(gè)存儲(chǔ)器段。緩沖器74的第一維度包括用R51來表示的存儲(chǔ)器段。緩沖器74 的第二維度包括存儲(chǔ)器段R51和R52。緩沖器74的第三維度包括用 R51-R100來表示的50個(gè)存儲(chǔ)器段。每當(dāng)DMA控制器100完成對(duì)每一緩沖器的第二維度的讀取時(shí), 它就執(zhí)行緩沖器間的跳轉(zhuǎn)。因此,在48個(gè)跳轉(zhuǎn)之后,它完成對(duì)緩沖器 71和72的讀取。緩沖器間的跳轉(zhuǎn)的結(jié)果是,緩沖器以易于對(duì)視頻幀的處理的方式 存儲(chǔ)圖像數(shù)據(jù)。因此,寄存器74存儲(chǔ)以下存儲(chǔ)器段Sl、 S2、 S51、 S52、 S3、 S4、 S53、 S54...S100,而寄存器75存儲(chǔ)以下存儲(chǔ)器段Rl、 R2、 R51、 R52、 R3、 R4、 R53、 R54…R100。以下的附圖是根據(jù)本發(fā)明各個(gè)實(shí)施例的各種方法的流程圖。方便 地,由本發(fā)明的系統(tǒng)90來執(zhí)行這些方法。僅僅是為了便于解釋而提供 了系統(tǒng)90以及尤其是DMA控制器90的各個(gè)組件作為參考。本領(lǐng)域技 術(shù)人員還能夠基于在此的描述而將方法應(yīng)用到其他系統(tǒng)上。方便地,可以組合各種方法的步驟,可以通過應(yīng)用另一種方法的 一個(gè)或多個(gè)步驟來執(zhí)行特定的方法的步驟。在以下的描述中具體地描 述了這些組合中的某些組合,但是這僅僅是為了便于進(jìn)行解釋。圖9是一種根據(jù)本發(fā)明實(shí)施例在多個(gè)DMA任務(wù)請(qǐng)求之間進(jìn)行仲 裁的方法500的流程圖。方法500由可選的步驟505開始,該步驟505定義了計(jì)時(shí)期限范 圍。該計(jì)時(shí)期限范圍可以彼此相等,但這不是必需的。發(fā)明人使用了 四個(gè)長度不同的計(jì)時(shí)期限范圍。在步驟505后面有步驟510,該步驟510接收多個(gè)DMA任務(wù)請(qǐng)求。 方便地,在通道邏輯與仲裁器110上從使能的DMA通道接收這些DMA 任務(wù)請(qǐng)求。在仲裁周期內(nèi)可以對(duì)這些請(qǐng)求進(jìn)行采樣。由DMA通道BDT 內(nèi)預(yù)定的緩沖器描述符來描述每一個(gè)DMA任務(wù)請(qǐng)求。在步驟510后面有步驟520,該步驟520響應(yīng)于與DMA任務(wù)相關(guān) 的計(jì)時(shí)期限而從多個(gè)DMA任務(wù)請(qǐng)求當(dāng)中選擇DMA任務(wù)請(qǐng)求。該選擇 可以由仲裁器410施行。根據(jù)本發(fā)明的實(shí)施例,步驟520包括響應(yīng)于預(yù)定的優(yōu)先級(jí)而在與 基本上相同的計(jì)時(shí)期限相關(guān)的DMA任務(wù)請(qǐng)求之間進(jìn)行選擇。該優(yōu)先級(jí) 可以是固定的或者能夠動(dòng)態(tài)變化。根據(jù)本發(fā)明的實(shí)施例,該選擇可以包括應(yīng)用計(jì)時(shí)期限無差異仲裁 方案。方便地,步驟520響應(yīng)于至少一個(gè)可用帶寬參數(shù)和/或響應(yīng)于至少 一個(gè)請(qǐng)求的帶寬參數(shù)。方便地,至少一個(gè)DMA任務(wù)是重復(fù)性任務(wù),甚至是基于周期時(shí) 間的DMA任務(wù)。根據(jù)本發(fā)明的實(shí)施例,步驟520包括在與屬于一個(gè)(或多個(gè))計(jì) 時(shí)期限范圍的計(jì)時(shí)期限相關(guān)的多個(gè)DMA任務(wù)請(qǐng)求之間進(jìn)行選擇。方便 地,方法500搜索非空且包括最短時(shí)間期限的范圍。如果該范圍包括 多于一個(gè)的DMA任務(wù)請(qǐng)求,則方法500選擇其中一個(gè)DMA任務(wù)請(qǐng)求。方便地,每一個(gè)DMA任務(wù)請(qǐng)求都與特定的1/0端口相關(guān)。在這樣一種情況下,該方法可以執(zhí)行每一個(gè)端口的仲裁序列??梢圆⑿袌?zhí)行 不同的仲裁方案。方便地,至少一個(gè)DMA任務(wù)涉及從(或向)多維緩沖器檢索信息。方便地,方法500進(jìn)一步包括監(jiān)視DMA任務(wù)的執(zhí)行。方便地, 方法500包括步驟530,它響應(yīng)于計(jì)時(shí)期限沖突而生成中斷請(qǐng)求。注意, 可以在該DMA任務(wù)的執(zhí)行期間應(yīng)用方法600、 700和/或800的各個(gè)步 驟。注意,方法500可以包括選擇另一種仲裁方案的步驟(未顯示), 例如計(jì)時(shí)期限無差異仲裁方案。圖IO是根據(jù)本發(fā)明實(shí)施例用于控制第一DMA任務(wù)的執(zhí)行的方法 600的流程圖。根據(jù)本發(fā)明的實(shí)施例,通過一旦成功地完成DMA任務(wù)則不生成 中斷請(qǐng)求來減少核心加載。方法600由步驟610開始,該步驟610定義了第一 DMA任務(wù)執(zhí) 行間隔和第一DMA任務(wù)執(zhí)行子間隔。方便地,在一個(gè)或多個(gè)緩沖器描 述符內(nèi)存儲(chǔ)這些定義。在步驟610后面有步驟620,該步驟620在多個(gè)DMA任務(wù)請(qǐng)求之 間選擇該第一 DMA任務(wù)請(qǐng)求,其中該選擇響應(yīng)于第一DMA請(qǐng)求的優(yōu) 先級(jí)。該選擇可以包括應(yīng)用方法500的一個(gè)或多個(gè)步驟。在步驟620后面有步驟650,該步驟650監(jiān)視第一 DMA任務(wù)的執(zhí)行。在步驟650后面有步驟660:如果在第一 DMA任務(wù)執(zhí)行子間隔期 間沒有完成該第一DMA任務(wù),則執(zhí)行第一可能的計(jì)時(shí)沖突響應(yīng)操作。根據(jù)本發(fā)明的各個(gè)實(shí)施例,可以將方法600應(yīng)用到多個(gè)DMA任 務(wù)。比如說,方法600可以包括定義第二 DMA任務(wù)執(zhí)行間隔和第二 DMA任務(wù)執(zhí)行子間隔,監(jiān)視第二DMA任務(wù)的執(zhí)行,以及在第二DMA 任務(wù)執(zhí)行子間隔期間沒有完成該第二 DMA任務(wù)的情況下,執(zhí)行第二可 能的計(jì)時(shí)沖突響應(yīng)操作。根據(jù)本發(fā)明的實(shí)施例,第一 D M A認(rèn)為是基于周期時(shí)間的D M A任 務(wù)。 一旦檢測到可能的計(jì)時(shí)沖突,就可以改變?cè)谖磥淼腄MA任務(wù)間隔 期間DMA任務(wù)的執(zhí)行。根據(jù)本發(fā)明的各個(gè)實(shí)施例,步驟660可以包括以下步驟中任意一 個(gè)步驟或一個(gè)或多個(gè)步驟的組合(i)生成中斷請(qǐng)求;(ii)停止DMA 任務(wù);(iii)改變第一DMA任務(wù)請(qǐng)求的優(yōu)先級(jí);(iv)允許在單獨(dú)的 第一 DMA任務(wù)執(zhí)行間隔內(nèi)執(zhí)行多個(gè)第一 DMA任務(wù);(v)迫使完成 DMA任務(wù);(vi)迫使完成DMA子任務(wù)。參照之前附圖所示的DMA控制器100, DMA控制器100可以旁 路仲裁器,或者要不然就暫時(shí)凍結(jié)其他DMA請(qǐng)求并使得重新向1/0端 口接口提供該DMA任務(wù)請(qǐng)求。根據(jù)本發(fā)明的實(shí)施例,可能的計(jì)時(shí)沖突響應(yīng)操作響應(yīng)于導(dǎo)致可能 的計(jì)時(shí)沖突的DMA任務(wù)進(jìn)程禾B/或響應(yīng)于DMA任務(wù)的優(yōu)先級(jí)。比如說,如果DMA任務(wù)幾乎完成了 (和/或具有高優(yōu)先級(jí)),則該方法將傾向 于完成該DMA任務(wù)而不停止它。圖11是根據(jù)本發(fā)明實(shí)施例用于執(zhí)行DMA任務(wù)的方法700的流程圖。方法700由步驟710開始,該步驟710將緩沖器間的跳變點(diǎn)定義 在多個(gè)多維緩沖器當(dāng)中的每一個(gè)多維緩沖器的一個(gè)或多個(gè)維度的末端 點(diǎn)上。在步驟710后面有步驟750,該步驟750接收?qǐng)?zhí)行DMA任務(wù)的請(qǐng)求。在步驟750后面有步驟770,該步驟770執(zhí)行多個(gè)DMA子任務(wù), 其中所述執(zhí)行包括在緩沖器間的跳變點(diǎn)上在緩沖器之間跳轉(zhuǎn)。方便地,步驟770包括在至少一個(gè)緩沖器間的跳變點(diǎn)中判斷是否 繼續(xù)執(zhí)行DMA任務(wù)。因此,響應(yīng)于該判斷,方法700可以繼續(xù)執(zhí)行 DMA任務(wù),放棄該任務(wù),或者甚至是重新執(zhí)行至少一個(gè)DMA子任務(wù)。根據(jù)本發(fā)明各個(gè)實(shí)施例,該判斷可以(i)響應(yīng)于在該判斷之前執(zhí) 行的DMA子任務(wù)的成功;(ii)響應(yīng)于在該判斷之前執(zhí)行的至少一個(gè) DMA子任務(wù)期間檢索的數(shù)據(jù)的內(nèi)容,等等。方便地,方法700包括在判斷期間凍結(jié)至少一個(gè)DMA通道。方便地,該DMA任務(wù)是基于時(shí)間的周期性DMA任務(wù)。方便地,該DMA任務(wù)包括從一個(gè)多維緩沖器向多個(gè)單維緩沖器 寫數(shù)據(jù)。方便地,方法700包括執(zhí)行與多個(gè)多維緩沖器中每一個(gè)多維緩沖器的特定維度相關(guān)的DMA子任務(wù),然后執(zhí)行與該多個(gè)多維緩沖器中每一個(gè)多維緩沖器的另一個(gè)維度相關(guān)的DMA子任務(wù)。方便地, 一旦選擇相應(yīng)的DMA任務(wù)請(qǐng)求,就執(zhí)行該DMA任務(wù)。 該選擇可以響應(yīng)于DMA任務(wù)的優(yōu)先級(jí)。方便地,與多個(gè)多維緩沖器相 關(guān)的DMA任務(wù)的優(yōu)先級(jí)響應(yīng)于這些多維緩沖器中的至少一個(gè)的優(yōu)先 級(jí)。圖12是根據(jù)本發(fā)明實(shí)施例用于控制多個(gè)DMA任務(wù)的方法800的 流程圖。方法800由步驟810開始,該步驟810為多個(gè)DMA通道中的每 一個(gè)通道定義了多個(gè)緩沖器描述符;其中至少兩個(gè)緩沖器描述符包括 計(jì)時(shí)信息,該計(jì)時(shí)信息控制基于周期時(shí)間的DMA任務(wù)的執(zhí)行。在圖5 中示例了緩沖器描述符內(nèi)所包括的各種信息的實(shí)例。方便地,計(jì)時(shí)信息定義了DMA任務(wù)執(zhí)行間隔和DMA任務(wù)優(yōu)先級(jí)。 可由諸如方法600的方法來使用這些字段。方便地,至少一個(gè)緩沖器 描述符包括當(dāng)前循環(huán)I/O端口選擇信息和下一個(gè)循環(huán)I/O端口選擇信 息。如果DMA控制器(例如DMA控制器100)包括多個(gè)I/0端口, 則這些字段定義在當(dāng)前DMA任務(wù)、DMA子任務(wù)和/或DMA事務(wù)處理 期間應(yīng)當(dāng)使用的I/0端口,以及在下一DMA任務(wù)、DMA子任務(wù)和/或 DMA事務(wù)處理期間應(yīng)當(dāng)使用的I/0端口。方便地,至少一個(gè)緩沖器描 述符包括仲裁類型信息。因此,鑒于該字段,DMA控制器可以選擇仲 裁方法,諸如,但不局限于,方法500的仲裁方案。在步驟810后面有步驟850,該步驟850接收多個(gè)DMA任務(wù)請(qǐng)求。在步驟850后面有步驟860,該步驟860從該多個(gè)DMA任務(wù)請(qǐng)求 當(dāng)中選擇DMA任務(wù)請(qǐng)求。該選擇可以包括方法500的任意步驟。在步驟860后面有步驟870,該步驟870執(zhí)行DAM任務(wù)或DMA 任務(wù)循環(huán),并更新與選定的DMA任務(wù)請(qǐng)求相關(guān)的緩沖器描述符,以反 映該執(zhí)行。在步驟870后面有步驟860。方便地,在步驟870后面有步驟880: —旦檢測到可能的計(jì)時(shí)沖突 則生成中斷請(qǐng)求。在步驟880和可能的計(jì)時(shí)沖突操作后面有步驟860。注意,可以在方法800的執(zhí)行期間更新緩沖器描述符,盡管為了 便于解釋而沒有在圖11中示出該更新步驟。方便地,在連接到DMA控制器的存儲(chǔ)器單元內(nèi)存儲(chǔ)至少一個(gè)緩 沖器描述符,而且基于周期時(shí)間的DMA任務(wù)的第一循環(huán)的執(zhí)行包括 從該存儲(chǔ)器單元檢索與該基于周期時(shí)間的DMA任務(wù)相關(guān)的緩沖器描 述符。方便地,至少一個(gè)基于周期時(shí)間的DMA任務(wù)包括多個(gè)與多維緩 沖器相關(guān)的DMA子任務(wù)。方便地,方法800包括在不同的DMA任務(wù) 循環(huán)期間使用不同的1/0端口。本領(lǐng)域普通技術(shù)人員在不脫離所請(qǐng)求保護(hù)的本發(fā)明的精神和范圍 的情況下將會(huì)想到對(duì)此處所描述內(nèi)容的變形、修改和其他執(zhí)行方式。 因此,本發(fā)明并不由之前的示范性描述所限定,而是由以下權(quán)利要求 的精神和范圍所限定。
權(quán)利要求
1. 一種用于在直接存儲(chǔ)器存取(DMA)任務(wù)請(qǐng)求之間進(jìn)行仲裁的方法(500),所述方法(500)包括接收多個(gè)DMA任務(wù)請(qǐng)求(510);所述方法的特征在于響應(yīng)于與所述DMA任務(wù)相關(guān)的計(jì)時(shí)期限而從所述多個(gè)DMA任務(wù)請(qǐng)求當(dāng)中選擇DMA任務(wù)請(qǐng)求(520)。
2. 根據(jù)權(quán)利要求l所述的方法(500),其中所述選擇(520)進(jìn) 一步包括響應(yīng)于預(yù)定的優(yōu)先級(jí)而在與基本相同的計(jì)時(shí)期限相關(guān)的DMA 任務(wù)請(qǐng)求之間進(jìn)行選擇。
3. 根據(jù)權(quán)利要求l所述的方法(500),其中所述選擇(520)進(jìn) 一步包括通過應(yīng)用計(jì)時(shí)期限無差異仲裁方案來在與基本相同的計(jì)時(shí)期 限相關(guān)的DMA任務(wù)請(qǐng)求之間進(jìn)行選擇。
4. 根據(jù)權(quán)利要求1-3中任一項(xiàng)所述的方法(500),其中所述選擇 進(jìn)一步響應(yīng)于至少一個(gè)可用帶寬參數(shù)。
5. 根據(jù)權(quán)利要求l-4中任一項(xiàng)所述的方法(500),其中所述選擇 進(jìn)一步響應(yīng)于至少一個(gè)請(qǐng)求的帶寬參數(shù)。
6. 根據(jù)權(quán)利要求1-5中任一項(xiàng)所述的方法(500),其中至少一個(gè) DMA任務(wù)是重復(fù)性任務(wù)。
7. 根據(jù)權(quán)利要求1-6中任一項(xiàng)所述的方法(500),進(jìn)一步包括定 義計(jì)時(shí)期限范圍(505),以及其中所述選擇(520)包括在與屬于一 個(gè)計(jì)時(shí)期限范圍的計(jì)時(shí)期限相關(guān)的多個(gè)DMA任務(wù)請(qǐng)求之間進(jìn)行選擇。
8. 根據(jù)權(quán)利要求1-7中任一項(xiàng)所述的方法(500),其中每一個(gè) DMA任務(wù)與1/0端口相關(guān),以及其中所述選擇(520)包括在與所述相同I/O端口相關(guān)的DMA任務(wù)請(qǐng)求之間進(jìn)行仲裁。
9. 根據(jù)權(quán)利要求1-8中任一項(xiàng)所述的方法(500),其中至少一個(gè) DMA任務(wù)涉及從多維緩沖器檢索信息。
10. 根據(jù)權(quán)利要求1-9中任一項(xiàng)所述的方法(500),進(jìn)一步包括 響應(yīng)于可能的計(jì)時(shí)期限沖突生成中斷(530)。
11. 一種裝置(90),包括接口 (420),其適用來接收DMA任 務(wù)請(qǐng)求;所述裝置(90)的特征在于包括仲裁器(410),其適用來響 應(yīng)于與DMA任務(wù)相關(guān)的計(jì)時(shí)期限而從多個(gè)DMA任務(wù)請(qǐng)求當(dāng)中選擇 DMA任務(wù)請(qǐng)求。
12. 根據(jù)權(quán)利要求11所述的裝置(90),其中所述仲裁器(410) 適用來響應(yīng)于預(yù)定的優(yōu)先級(jí)而在與基本相同的計(jì)時(shí)期限相關(guān)的DMA 任務(wù)請(qǐng)求之間進(jìn)行選擇。
13. 根據(jù)權(quán)利要求11所述的裝置(90),其中所述仲裁器(410) 適用來通過應(yīng)用計(jì)時(shí)期限無差異仲裁方案來在與基本相同的計(jì)時(shí)期限 相關(guān)的DMA任務(wù)請(qǐng)求之間進(jìn)行選擇。
14. 根據(jù)權(quán)利要求11-13中任一項(xiàng)所述的裝置(90),其中所述仲 裁器適用來響應(yīng)于至少一個(gè)可用帶寬參數(shù)來進(jìn)行選擇。
15. 根據(jù)權(quán)利要求11-14中任一項(xiàng)所述的裝置(90),其中所述仲 裁器適用來響應(yīng)于至少一個(gè)請(qǐng)求的帶寬參數(shù)來進(jìn)行選擇。
16. 根據(jù)權(quán)利要求11-15中任一項(xiàng)所述的裝置(90),其中至少一 個(gè)DMA在務(wù)是重復(fù)性任務(wù)。
17. 根據(jù)權(quán)利要求11-16中任一項(xiàng)所述的裝置(卯),其中至少一個(gè)DMA任務(wù)涉及從多維緩沖器檢索信息。
18. 根據(jù)權(quán)利要求11-17中任一項(xiàng)所述的裝置(90),其進(jìn)一步適 用來響應(yīng)于可能的計(jì)時(shí)期限沖突而生成中斷。
19. 根據(jù)權(quán)利要求11-18中任一項(xiàng)所述的裝置(90),包括多個(gè)端 口,而且其中所述仲裁器(410)適用來在與單個(gè)端口相關(guān)的DMA任 務(wù)之間進(jìn)行仲裁。
20. 根據(jù)權(quán)利要求11-19中任一項(xiàng)所述的裝置(90),其進(jìn)一步適 用來定義計(jì)時(shí)期限范圍,而且其中所述仲裁器(410)適用來在與屬于 一個(gè)計(jì)時(shí)期限范圍的計(jì)時(shí)期限相關(guān)的多個(gè)DMA任務(wù)請(qǐng)求之間進(jìn)行選 擇。
全文摘要
本發(fā)明涉及一種用于在直接存儲(chǔ)器存取(DMA)任務(wù)請(qǐng)求之間進(jìn)行仲裁的方法(500),該方法(500)包括接收多個(gè)DMA任務(wù)請(qǐng)求(510);該方法的特征在于響應(yīng)于與DMA任務(wù)有關(guān)的計(jì)時(shí)期限而從多個(gè)DMA任務(wù)請(qǐng)求當(dāng)中選擇DMA任務(wù)請(qǐng)求(520)。本發(fā)明還涉及一種裝置(90),它包括接口(420),其適用來接收DMA任務(wù)請(qǐng)求;該裝置(90)特征在于,包括仲裁器(410),其適用來響應(yīng)于與DMA任務(wù)有關(guān)的計(jì)時(shí)期限而從多個(gè)DMA任務(wù)請(qǐng)求當(dāng)中選擇DMA任務(wù)請(qǐng)求。
文檔編號(hào)G06F13/30GK101218570SQ200580050954
公開日2008年7月9日 申請(qǐng)日期2005年6月30日 優(yōu)先權(quán)日2005年6月30日
發(fā)明者烏里·沙沙, 吉拉德·阿西, 埃蘭·坎, 沙吉·古芬克爾, 耶胡達(dá)·施瓦格爾 申請(qǐng)人:飛思卡爾半導(dǎo)體公司