專利名稱:多通道直接存儲(chǔ)器存取控制器的制作方法
技術(shù)領(lǐng)域:
本發(fā)明涉及數(shù)據(jù)通信領(lǐng)域,具體地,涉及一種多通道直接存儲(chǔ)器存取控制器。
背景技術(shù):
直接存儲(chǔ)器存取(DMA,Direct Memory Access)是一種高速的數(shù)據(jù)傳輸操作,允許在外部設(shè)備和存儲(chǔ)器之間直接讀寫(xiě)數(shù)據(jù),整個(gè)數(shù)據(jù)傳輸操作在DMA控制器的控制下進(jìn)行,在傳輸過(guò)程中不需要中央處理器(CPU, Central ProcessUnit)的干預(yù),CPU可以進(jìn)行其他工作,從而極大地提高了 CPU的運(yùn)行效率。圖1a是現(xiàn)有技術(shù)中典型的DMA系統(tǒng)的結(jié)構(gòu)框圖。CPU、DMA控制器、片內(nèi)外存儲(chǔ)器(包括片內(nèi)RAM、RAM控制器、片內(nèi)Flash、Flash控制器、片外存儲(chǔ)器、存儲(chǔ)器控制器)和高速I(mǎi)/O連接在高速總線上,各種低速外設(shè)(包括低速外設(shè)1、低速外設(shè)2、低速外設(shè)3)連接在低速總線上,并且通過(guò)總線橋和高速總線相連??偩€上的設(shè)備如果要進(jìn)行DMA傳輸,則向DMA控制器發(fā)起請(qǐng)求,DMA控制器在獲得總線使用權(quán)后,控制在CPU內(nèi)存和其它設(shè)備進(jìn)行數(shù)據(jù)傳輸,并在傳輸結(jié)束后歸還總線使用權(quán)。DMA傳輸過(guò)程中無(wú)需CPU參與,節(jié)省CPU的額外開(kāi)銷(xiāo)。中國(guó)專利(申請(qǐng)?zhí)?00910080751,公開(kāi)號(hào)101504633)公開(kāi)了一種多通道DMA控制器,該DMA控制器包括多個(gè)DMA通道模塊和一個(gè)多路復(fù)用模塊,每個(gè)DMA通道模塊分別包括一個(gè)數(shù)據(jù)緩沖存儲(chǔ)及其控制模塊和一組控制寄存器,所有通道的數(shù)據(jù)緩沖存儲(chǔ)及其控制模塊都連接到一個(gè)多路復(fù)用模塊。這種DMA控制器可以在一定程度上降低片上系統(tǒng)上總線仲裁塊和存儲(chǔ)單元的開(kāi)銷(xiāo),并提高系統(tǒng)的重用性。但是,在該中國(guó)專利的技術(shù)方案中,每個(gè)DMA通道均執(zhí)行數(shù)據(jù)控制和數(shù)據(jù)傳輸工作,具體地,DMA通道對(duì)需讀取的數(shù)據(jù)生成讀取數(shù)據(jù)請(qǐng)求,并向CPU內(nèi)存發(fā)送讀取數(shù)據(jù)請(qǐng)求后,必須等到CPU內(nèi)存返回所請(qǐng)求讀取的數(shù)據(jù),才能進(jìn)行下一個(gè)生成讀取數(shù)據(jù)請(qǐng)求的操作,但是,CPU內(nèi)存返回?cái)?shù)據(jù)通常會(huì)存在時(shí)延,這就造成數(shù)據(jù)傳輸速度慢的問(wèn)題,導(dǎo)致該DMA控制器不適合高速數(shù)據(jù)傳輸?shù)膽?yīng)用場(chǎng)景。
發(fā)明內(nèi)容
有鑒于此,本發(fā)明實(shí)施例提供了一種多通道DMA控制器,用以解決現(xiàn)有技術(shù)中的DMA控制器的傳輸速度慢、不適合高速數(shù)據(jù)傳輸應(yīng)用場(chǎng)景的問(wèn)題。本發(fā)明實(shí)施例技術(shù)方案如下一種DMA控制器,包括若干個(gè)DMA通道和數(shù)據(jù)傳輸單元;所述DMA通道,用于接收到來(lái)自中央處理器CPU的緩存標(biāo)識(shí)符(BD,Buffer Descriptor)更新消息后,從CPU內(nèi)存中讀取BD,根據(jù)BD和外設(shè)緩存中的數(shù)據(jù)存儲(chǔ)情況,生成傳輸指令;所述數(shù)據(jù)傳輸單元,用于對(duì)來(lái)自若干個(gè)所述DMA通道的傳輸指令進(jìn)行仲裁,根據(jù)仲裁得到的排序順序,依次執(zhí)行各個(gè)傳輸指令、在所述CPU內(nèi)存和所述外設(shè)緩存之間傳輸數(shù)據(jù)。本發(fā)明實(shí)施例通過(guò)在DMA控制器中設(shè)置若干個(gè)DMA通道和數(shù)據(jù)傳輸單元,將數(shù)據(jù)傳輸?shù)目刂撇僮骱蛿?shù)據(jù)傳輸?shù)臄?shù)據(jù)搬運(yùn)工作分離開(kāi)來(lái),也即由若干個(gè)DMA通道處理DMA數(shù)據(jù)傳輸?shù)目刂撇僮?,具體地,各個(gè)DMA通道進(jìn)行BD管理操作和生成傳輸指令操作,由一個(gè)數(shù)據(jù)傳輸單元處理全部的DMA數(shù)據(jù)傳輸?shù)臄?shù)據(jù)搬運(yùn)工作,具體地,數(shù)據(jù)傳輸單元對(duì)來(lái)自若干個(gè)DMA通道的傳輸指令進(jìn)行仲裁,根據(jù)仲裁得到的排序順序,依次執(zhí)行各個(gè)傳輸指令,在CPU內(nèi)存和外設(shè)緩存之間傳輸數(shù)據(jù),可見(jiàn),數(shù)據(jù)傳輸單元執(zhí)行的數(shù)據(jù)控制操作不必依賴于數(shù)據(jù)傳輸單元執(zhí)行的數(shù)據(jù)搬運(yùn)操作,能夠在DMA通道側(cè)形成數(shù)據(jù)傳輸?shù)目刂撇僮鞯牧魉鳂I(yè),數(shù)據(jù)傳輸單元依次對(duì)來(lái)自若干個(gè)DMA通道的傳輸指令進(jìn)行處理,在數(shù)據(jù)傳輸單元側(cè)形成數(shù)據(jù)傳輸?shù)臄?shù)據(jù)搬運(yùn)操作的流水作業(yè),進(jìn)而能夠提高DMA控制器的數(shù)據(jù)傳輸速度,能夠適用于高速數(shù)據(jù)傳輸?shù)膽?yīng)用場(chǎng)景。本發(fā)明的其它特征和優(yōu)點(diǎn)將在隨后的說(shuō)明書(shū)中闡述,并且,部分地從說(shuō)明書(shū)中變得顯而易見(jiàn),或者通過(guò)實(shí)施本發(fā)明而了解。本發(fā)明的目的和其他優(yōu)點(diǎn)可通過(guò)在所寫(xiě)的說(shuō)明書(shū)、權(quán)利要求書(shū)、以及附圖中所特別指出的結(jié)構(gòu)來(lái)實(shí)現(xiàn)和獲得。
圖1a是現(xiàn)有技術(shù)中典型的DMA系統(tǒng)的結(jié)構(gòu)框圖;圖1b是本發(fā)明實(shí)施例提供的多通道DMA控制器的結(jié)構(gòu)框圖;圖1c是圖1b所示多通道DMA控制器的工作流程圖;圖2是圖1b所示的多通道DMA控制器的優(yōu)選結(jié)構(gòu)框圖;圖3是圖2所示的多通道DMA控制器的優(yōu)選結(jié)構(gòu)框圖;圖4是圖3中的下行指令生成模塊的工作流程圖;圖5是圖3中的讀數(shù)據(jù)模塊對(duì)下行數(shù)據(jù)的處理工作流程圖;圖6是圖3中的下行回寫(xiě)模塊的工作流程圖;圖7是圖2所示的多通道DMA控制器的另一優(yōu)選結(jié)構(gòu)框圖;圖8是圖7中的上行指令生成模塊的工作流程圖;圖9是圖7中的寫(xiě)數(shù)據(jù)模塊對(duì)上行數(shù)據(jù)的處理工作流程圖;圖10是圖7中的上行回寫(xiě)模塊的工作流程圖。
具體實(shí)施例方式以下結(jié)合附圖對(duì)本發(fā)明的實(shí)施例進(jìn)行說(shuō)明,應(yīng)當(dāng)理解,此處所描述的實(shí)施例僅用于說(shuō)明和解釋本發(fā)明,并不用于限定本發(fā)明。本發(fā)明實(shí)施例針對(duì)現(xiàn)有技術(shù)中的DMA控制器數(shù)據(jù)傳輸速度慢、不適用于高速數(shù)據(jù)傳輸?shù)膽?yīng)用場(chǎng)景的問(wèn)題,提出一種多通道DMA控制器,以解決該問(wèn)題。本發(fā)明實(shí)施例將DMA數(shù)據(jù)傳輸?shù)目刂撇僮骱蛿?shù)據(jù)搬運(yùn)工作分離開(kāi)來(lái),在DMA控制器中設(shè)置若干個(gè)DMA通道和數(shù)據(jù)傳輸單元,DMA通道處理DMA數(shù)據(jù)傳輸?shù)目刂撇僮?,即生成用于指示如何進(jìn)行數(shù)據(jù)搬運(yùn)的傳輸指令,由數(shù)據(jù)傳輸單元處理DMA數(shù)據(jù)傳輸?shù)臄?shù)據(jù)搬運(yùn)工作,即根據(jù)傳輸指令進(jìn)行具體的數(shù)據(jù)搬運(yùn)操作,DMA通道的控制操作不依賴于數(shù)據(jù)傳輸單元的數(shù)據(jù)搬運(yùn)工作,能夠在DMA通道側(cè)形成控制操作的流水作業(yè),數(shù)據(jù)傳輸單元依次對(duì)來(lái)自若干個(gè)DMA通道的傳輸指令進(jìn)行處理,在數(shù)據(jù)傳輸單元側(cè)形成數(shù)據(jù)搬運(yùn)操作的流水作業(yè),進(jìn)而能夠提高DMA控制器的數(shù)據(jù)傳輸速度,能夠適用于高速數(shù)據(jù)傳輸?shù)膽?yīng)用場(chǎng)景。下面詳細(xì)說(shuō)明本發(fā)明實(shí)施例提供的多通道DMA控制器。
圖1b示出了本發(fā)明實(shí)施例提供的多通道DMA控制器的結(jié)構(gòu)框圖,該多通道DMA控制器包括若干個(gè)DMA通道11和數(shù)據(jù)傳輸單元12。DMA通道11,用于接收到來(lái)自CPU的BD更新消息后,從CPU內(nèi)存中讀取BD,根據(jù)BD和外設(shè)緩存中的數(shù)據(jù)存儲(chǔ)情況,生成傳輸指令;數(shù)據(jù)傳輸單元12,連接至DMA通道11,用于對(duì)來(lái)自若干個(gè)DMA通道的傳輸指令進(jìn)行仲裁,根據(jù)仲裁得到的排序順序,依次執(zhí)行各個(gè)傳輸指令、在CPU內(nèi)存和外設(shè)緩存之間傳輸數(shù)據(jù)。圖1c所示多通道DMA控制器的工作流程圖,如圖1c所示,包括步驟101、若干個(gè)DMA通道11分別接收到來(lái)自CPU的BD更新消息后,從CPU內(nèi)存中讀取BD,并分別根據(jù)讀取的BD和外設(shè)緩存中的數(shù)據(jù)存儲(chǔ)情況,生成傳輸指令;步驟102、數(shù)據(jù)傳輸單元12接收來(lái)自各個(gè)DMA通道11的傳輸指令,對(duì)接收到的若干個(gè)傳輸指令進(jìn)行仲裁,得到對(duì)傳輸指令的排序順序;步驟103、數(shù)據(jù)傳輸單元12根據(jù)仲裁得到的排序順序,依次執(zhí)行各個(gè)傳輸指令、在CPU內(nèi)存和外設(shè)緩存之間傳輸數(shù)據(jù)。通過(guò)如圖1b所示的多通道DMA控制器和圖1c所示的工作原理,能夠?qū)MA數(shù)據(jù)傳輸?shù)目刂撇僮骱蛿?shù)據(jù)傳輸?shù)臄?shù)據(jù)搬運(yùn)工作分離開(kāi)來(lái),也即由若干個(gè)DMA通道處理數(shù)據(jù)傳輸?shù)目刂撇僮?,由?shù)據(jù)傳輸單元處理DMA數(shù)據(jù)傳輸?shù)臄?shù)據(jù)搬運(yùn)工作,DMA通道的控制操作不依賴于數(shù)據(jù)傳輸單元的數(shù)據(jù)搬運(yùn) 工作,并且數(shù)據(jù)傳輸單元對(duì)來(lái)自若干個(gè)DMA通道的傳輸指令進(jìn)行仲裁,根據(jù)仲裁得到的排序順序,依次執(zhí)行各個(gè)傳輸指令所指示的數(shù)據(jù)搬運(yùn)操作,DMA通道不必等數(shù)據(jù)傳輸單元的數(shù)據(jù)搬運(yùn)操作結(jié)束后再進(jìn)行下一次控制操作,能夠在DMA通道側(cè)形成控制操作的流水作業(yè),以及在數(shù)據(jù)傳輸單元側(cè)形成數(shù)據(jù)搬運(yùn)操作的流水作業(yè),進(jìn)而能夠提高DMA控制器的數(shù)據(jù)傳輸速度,能夠適用于高速數(shù)據(jù)傳輸?shù)膽?yīng)用場(chǎng)景。對(duì)圖1b所示裝置的工作原理進(jìn)行詳細(xì)說(shuō)明之前,先對(duì)BD進(jìn)行說(shuō)明。BD是一個(gè)用于描述數(shù)據(jù)讀寫(xiě)操作的控制信息的數(shù)據(jù)結(jié)構(gòu),若干個(gè)BD在CPU內(nèi)存中占據(jù)一片連續(xù)的存儲(chǔ)空間,BD的結(jié)構(gòu)如表I所示,包括數(shù)據(jù)地址、數(shù)據(jù)長(zhǎng)度、數(shù)據(jù)片是否為數(shù)據(jù)包的起始部分的指示(Sop)、數(shù)據(jù)片是否為數(shù)據(jù)包的結(jié)束部分的指示(Εορ)、錯(cuò)誤信息指示(Err )、控制權(quán)信息指示(Owner )、BD是否有效的指示(Val id)。表I
數(shù)據(jù)地址數(shù)據(jù)長(zhǎng)度SOP EOP Err Owner validCPU將總線控制權(quán)交給多通道DMA控制器之前,會(huì)將待讀取數(shù)據(jù)的地址和數(shù)據(jù)長(zhǎng)度分別寫(xiě)入BD的數(shù)據(jù)地址域和數(shù)據(jù)長(zhǎng)度域中,并將Owner域改寫(xiě)為表示多通道DMA控制器的信息,然后向多通道DMA控制器發(fā)送BD更新消息,多通道DMA控制器接收到BD更新消息后,從CPU內(nèi)存中讀取BD,根據(jù)BD中Owner域中的信息判斷總線控制權(quán)屬于自身,從而能夠根據(jù)BD中的數(shù)據(jù)地址域和數(shù)據(jù)長(zhǎng)度域中的信息從CPU內(nèi)存中讀取數(shù)據(jù)。多通道DMA控制器向CPU內(nèi)存中寫(xiě)數(shù)據(jù)時(shí),根據(jù)BD中數(shù)據(jù)地址域中的信息將數(shù)據(jù)寫(xiě)入CPU內(nèi)存中,并將存入數(shù)據(jù)的數(shù)據(jù)長(zhǎng)度寫(xiě)入BD的數(shù)據(jù)長(zhǎng)度域中,以及將Owner域改寫(xiě)為表示CPU的信息,將改寫(xiě)后的BD發(fā)送給CPU內(nèi)存,CPU通過(guò)監(jiān)控CPU內(nèi)存中新存入的BD的Owner域的信息,得知總線控制權(quán)重新回到CPU。具體地,DMA通道11用于分別對(duì)DMA數(shù)據(jù)傳輸?shù)南滦袛?shù)據(jù)的控制操作和上行數(shù)據(jù)的控制操作進(jìn)行處理,下行數(shù)據(jù)為從CPU內(nèi)存讀出并寫(xiě)入到外設(shè)緩存中的數(shù)據(jù),上行數(shù)據(jù)為從外設(shè)緩存讀出并寫(xiě)入到CPU內(nèi)存中的數(shù)據(jù),相應(yīng)地,傳輸指令也分為讀指令和寫(xiě)指令,數(shù)據(jù)傳輸單元12也相應(yīng)地根據(jù)讀指令對(duì)下行數(shù)據(jù)進(jìn)行數(shù)據(jù)搬運(yùn)操作、根據(jù)寫(xiě)指令對(duì)上行數(shù)據(jù)進(jìn)行數(shù)據(jù)搬運(yùn)操作。圖2示出了圖1b所示的多通道DMA控制器的優(yōu)選結(jié)構(gòu)框圖,DMA通道11中具體包括下行通道111和上行通道112,數(shù)據(jù)傳輸單元12包括讀數(shù)據(jù)模塊121和寫(xiě)數(shù)據(jù)模塊122。下行通道111,用于接收到來(lái)自CPU的BD更新消息后,從CPU內(nèi)存中讀取BD,根據(jù)讀取的BD中的讀取數(shù)據(jù)長(zhǎng)度信息和外設(shè)緩存中所存儲(chǔ)的已接收數(shù)據(jù)的數(shù)據(jù)量大小,生成讀指令;讀數(shù)據(jù)模塊121,連接至若干個(gè)DMA通道11的下行通道111,用于對(duì)來(lái)自若干個(gè)DMA通道11的下行通道111的讀指令進(jìn)行仲裁,根據(jù)仲裁得到的排序順序,依次根據(jù)各個(gè)讀指令從CPU內(nèi)存中讀出相應(yīng)的數(shù)據(jù),并將讀出的數(shù)據(jù)發(fā)送給外設(shè)緩存。上行通道112,用于接收到來(lái)自CPU的BD更新消息后,從CPU內(nèi)存中讀取BD,根據(jù)外設(shè)緩存中所存儲(chǔ)的待發(fā)送數(shù)據(jù)的數(shù)據(jù)量大小和讀取的BD中的待寫(xiě)入數(shù)據(jù)的地址信息,生成寫(xiě)指令;寫(xiě)數(shù)據(jù)模塊122,連接至若干個(gè)DMA通道11的上行通道112,用于對(duì)來(lái)自若干個(gè)DMA通道的上行通道112的寫(xiě)指令進(jìn)行仲裁,根據(jù)仲裁得到的排序順序,依次根據(jù)各個(gè)寫(xiě)指令從外設(shè)緩存中讀出相應(yīng)的數(shù)據(jù),并將讀出的數(shù)據(jù)發(fā)送給CPU內(nèi)存。通過(guò)在DMA通道中設(shè)置上行通道和下行通道,以及在數(shù)據(jù)傳輸單元中設(shè)置讀數(shù)據(jù)模塊和寫(xiě)數(shù)據(jù)模塊,能夠?qū)⑸闲袛?shù)據(jù)處理和下行數(shù)據(jù)處理區(qū)分開(kāi)來(lái),并且對(duì)于下行數(shù)據(jù)和上行數(shù)據(jù)都將數(shù)據(jù)傳輸?shù)目刂撇僮骱蛿?shù)據(jù)搬運(yùn)操作區(qū)分開(kāi)來(lái),能夠有效地在DMA通道側(cè)分別形成上行數(shù)據(jù)和下行數(shù)據(jù)的控制操作的流水作業(yè),以及在數(shù)據(jù)傳輸單元側(cè)分別形成上行數(shù)據(jù)和下行數(shù)據(jù)的數(shù)據(jù)搬運(yùn)操作的流水作業(yè),進(jìn)而能夠提高DMA控制器的數(shù)據(jù)傳輸速度,能夠適用于高速數(shù)據(jù)傳輸?shù)膽?yīng)用場(chǎng)景。并且,由于本發(fā)明實(shí)施例中根據(jù)下行數(shù)據(jù)和上行數(shù)據(jù)來(lái)分別設(shè)置相應(yīng)的功能單元,使得本發(fā)明實(shí)施提供的DMA控制器具有很好的可裁剪性,即根據(jù)應(yīng)用場(chǎng)景的不同,當(dāng)只需要DMA控制器處理下行數(shù)據(jù)時(shí),可以僅在DMA通道中設(shè)置下行通道、在數(shù)據(jù)傳輸單元中設(shè)置讀數(shù)據(jù)模塊,當(dāng)只需要DMA控制器處理上行數(shù)據(jù)時(shí),可以僅在DMA通道中設(shè)置上行通道、在數(shù)據(jù)傳輸單元中設(shè)置寫(xiě)數(shù)據(jù)模塊,當(dāng)需要DMA控制器處理下行數(shù)據(jù)和上行數(shù)據(jù)時(shí),可設(shè)置如圖2所示的DMA控制器。下面分別詳細(xì)說(shuō)明圖2所示的多通道DMA控制器對(duì)下行數(shù)據(jù)和上行數(shù)據(jù)的處理。(一)、下行數(shù)據(jù)處理圖3示出了圖2所示多通道DMA控制器優(yōu)選結(jié)構(gòu)框圖,該多通道DMA控制器包括下行通道111和讀數(shù)據(jù)模塊121,下行通道111包括下行讀BD模塊1111、下行指令生成模塊1112和下行回寫(xiě)模塊1113。1、下行讀BD模塊1111,用于接收到來(lái)自CPU的BD更新消息后,從所述CPU內(nèi)存中讀取若干個(gè)BD,并保存讀取的若干個(gè)BD。
具體地,下行讀BD模塊1111接收到來(lái)自CPU的BD更新消息后,向CPU內(nèi)存發(fā)送下行讀BD請(qǐng)求,下行讀BD請(qǐng)求中攜帶有請(qǐng)求讀取的BD的數(shù)量,其中,該請(qǐng)求讀取的BD的數(shù)量為來(lái)自CPU的BD更新消息中指示的可讀BD的數(shù)量、BD環(huán)中當(dāng)前BD指針至BD環(huán)尾所示的BD的數(shù)量、以及預(yù)設(shè)的讀取BD的數(shù)量這三者中的數(shù)量最小者的BD數(shù)量,根據(jù)應(yīng)用場(chǎng)景的不同,預(yù)設(shè)的讀取BD的數(shù)量也不同,因此,可見(jiàn)每次所請(qǐng)求讀取的BD的數(shù)量是不定的,可以是一條、也可以是多條;并,接收來(lái)自CPU內(nèi)存針對(duì)該下行讀BD請(qǐng)求的若干個(gè)BD,并保存接收到的若干個(gè)BD。2、下行指令生成模塊1112,用于根據(jù)下行讀BD模塊1111讀取的BD中的讀取數(shù)據(jù)長(zhǎng)度信息和外設(shè)緩存中所存儲(chǔ)的已接收數(shù)據(jù)的數(shù)據(jù)量大小,生成讀指令;具體地,下行指令生成模塊1112執(zhí)行以下操作讀取當(dāng)前BD操作、判斷操作、生成讀指令操作和發(fā)送讀指令操作;其中,(I)、讀取當(dāng)前BD操作包括在當(dāng)前時(shí)間片內(nèi),在下行指令生成模塊1112中具有空閑存儲(chǔ)空間的情況下,下行指令生成模塊1112從下行讀BD模塊1111中獲取一個(gè)BD作為當(dāng)前BD;在下行指令生成模塊1112中沒(méi)有空閑存儲(chǔ)空間的情況下,下行指令生成模塊1112繼續(xù)等待,直到具有空閑存儲(chǔ)空間的情況下,從下行讀BD模塊1111中獲取一個(gè)BD作為當(dāng)前BD ;(2)、判斷操作包括判斷對(duì)比條件是否成立,對(duì)比條件為對(duì)比當(dāng)前BD中的讀取數(shù)據(jù)長(zhǎng)度信息所示的數(shù)據(jù)長(zhǎng)度和下行指令生成模塊1112中存儲(chǔ)的已經(jīng)對(duì)應(yīng)生成讀指令的各個(gè)BD中的讀取數(shù)據(jù)長(zhǎng)度信息所示的數(shù)據(jù)長(zhǎng)度之和,是否小于外設(shè)緩存中與該DMA通道的下行通道相對(duì)應(yīng)的存儲(chǔ)空間中的空閑存儲(chǔ)空間的大小,在判斷對(duì)比條件成立的情況下,執(zhí)行生成讀指令操作,否則,繼續(xù)等待,直到對(duì)比條件成立,即等待外設(shè)緩存中的數(shù)據(jù)被讀取出去,外設(shè)緩存中的存儲(chǔ)空間的得到釋放,使得對(duì)比條件成立;(3)、生成讀指令操作包括生成與當(dāng)前BD對(duì)應(yīng)的讀指令,在讀指令中攜帶當(dāng)前BD中的讀取數(shù)據(jù)長(zhǎng)度信息和當(dāng)前BD中的讀取數(shù)據(jù)的地址信息;并,保存當(dāng)前BD,優(yōu)選地,可以采用先進(jìn)先出隊(duì)列來(lái)保存已對(duì)應(yīng)生成了讀指令的BD ;(4、)發(fā)送讀指令操作將生成的對(duì)應(yīng)當(dāng)前BD的讀指令發(fā)送給讀數(shù)據(jù)模塊121。3、讀數(shù)據(jù)模塊121,連接至各個(gè)下行通道111的下行指令生成模塊1112,用于對(duì)于仲裁得到的排序順序中的當(dāng)前讀指令,根據(jù)當(dāng)前讀指令中的地址信息和讀取數(shù)據(jù)長(zhǎng)度信息,從CPU內(nèi)存中相應(yīng)地址的存儲(chǔ)空間中讀出相應(yīng)長(zhǎng)度的數(shù)據(jù),并將讀出的數(shù)據(jù)發(fā)送到外設(shè)緩存中與發(fā)送當(dāng)前讀指令的DMA通道相對(duì)應(yīng)的存儲(chǔ)空間中;具體地,讀數(shù)據(jù)模塊121對(duì)來(lái)自若干個(gè)DMA通道11的下行通道111的讀指令進(jìn)行仲裁,例如根據(jù)輪叫(Round Robin)調(diào)度的原則來(lái)仲裁,對(duì)于仲裁得到的排序順序中的當(dāng)前讀指令,根據(jù)當(dāng)前讀指令中的地址信息和讀取數(shù)據(jù)長(zhǎng)度信息,向CPU內(nèi)存發(fā)送讀數(shù)據(jù)請(qǐng)求,讀數(shù)據(jù)請(qǐng)求中包括當(dāng)前讀指令中的地址信息和讀取數(shù)據(jù)長(zhǎng)度信息;接收來(lái)自CPU內(nèi)存針對(duì)讀數(shù)據(jù)請(qǐng)求的數(shù)據(jù)包,并將接收到的數(shù)據(jù)發(fā)送到外設(shè)緩存中與發(fā)送當(dāng)前讀指令的DMA通道相對(duì)應(yīng)的存儲(chǔ)空間中;并且,輪詢到當(dāng)前讀指令時(shí),讀數(shù)據(jù)模塊121向發(fā)送當(dāng)前讀指令的DMA通道的下行通道(即下行通道111的下行指令生成模塊1112)反饋?zhàn)x響應(yīng);在從CPU內(nèi)存中讀出數(shù)據(jù)并發(fā)送給外設(shè)緩存后,還向發(fā)送當(dāng)前讀指令的DMA通道的下行通道(即下行通道111的下行指令生成模塊1112)反饋?zhàn)x完成響應(yīng);相應(yīng)地,下行指令生成模塊1112,還用于在接收到來(lái)自讀數(shù)據(jù)模塊121的讀響應(yīng)之后,保存當(dāng)如BD ;在接收到來(lái)自讀數(shù)據(jù)I旲塊121的讀完成響應(yīng)之后,從下彳丁指令生成I旲塊1112保存的BD中取出一個(gè)BD發(fā)送給下行回寫(xiě)模塊1113;優(yōu)選地,如上所述,下行指令生成模塊1112通過(guò)先進(jìn)先出隊(duì)列保存已經(jīng)對(duì)應(yīng)生成了讀指令的BD,此處,從先進(jìn)先出隊(duì)列的隊(duì)頭取出一個(gè)BD發(fā)送給下行回寫(xiě)模塊1113。4、下行回寫(xiě)模塊1113,用于將接收到的BD中的控制權(quán)信息改寫(xiě)為CPU,將改寫(xiě)后的BD發(fā)送給CPU內(nèi)存。具體地,下行回寫(xiě)模塊1113保存改寫(xiě)后的BD,在判斷下行回寫(xiě)模塊1113中存儲(chǔ)有改寫(xiě)后的BD的情況下,對(duì)預(yù)定的回寫(xiě)周期進(jìn)行計(jì)時(shí);在計(jì)時(shí)周期內(nèi),在所保存的改寫(xiě)后的BD的數(shù)量大于或等于預(yù)定數(shù)量的情況下,將預(yù)定數(shù)量的改寫(xiě)后的BD作為待發(fā)送的BD,將待發(fā)送的BD發(fā)送給CPU內(nèi)存,在所保存的改寫(xiě)后的BD的數(shù)量小于預(yù)定數(shù)量的情況下,在計(jì)時(shí)到時(shí)候,將所保存的改寫(xiě)后的BD作為待發(fā)送的BD,將待發(fā)送的BD發(fā)送給CPU內(nèi)存。圖4示出了圖3中的下行指令生成模塊1112的工作流程圖,也即圖4示出了下行通道進(jìn)行下行數(shù)據(jù)傳輸?shù)目刂撇僮鞯墓ぷ髟恚ㄈ缦绿幚磉^(guò)程 步驟401、下行讀BD模塊1111在接收到來(lái)自CPU的BD更新消息后,從CPU內(nèi)存中讀取若干個(gè)BD,具體地,下行讀BD模塊1111向CPU內(nèi)存發(fā)送下行讀BD請(qǐng)求,下行讀BD請(qǐng)求中攜帶有請(qǐng)求讀取的BD的數(shù)量;如上所述,BD的數(shù)量可以是一個(gè)BD或者多個(gè)BD ;下行讀BD模塊1111接收來(lái)自CPU內(nèi)存的針對(duì)該下行讀BD請(qǐng)求的若干個(gè)BD,并保存接收到的若干個(gè)BD ;下行讀BD模塊1111批量讀取BD,能夠減少占用的總線帶寬,提高處理效率;步驟402、下行指令生成模塊1112在當(dāng)前時(shí)間片內(nèi),在下行指令生成模塊1112中具有空閑存儲(chǔ)空間的情況下,從下行讀BD模塊1111中獲取一個(gè)BD作為當(dāng)前BD ;具體地,在當(dāng)前時(shí)間片內(nèi),下行指令生成模塊1112判斷下行讀BD模塊1111中存儲(chǔ)有BD,且下行指令生成模塊1112中有空閑存儲(chǔ)空間的情況下,從下行讀BD模塊1111中獲取一個(gè)BD作為當(dāng)前BD ;步驟403、下行指令生成模塊1112根據(jù)當(dāng)前BD中的讀取數(shù)據(jù)長(zhǎng)度信息和外設(shè)緩存中所存儲(chǔ)的已接收數(shù)據(jù)的數(shù)據(jù)量大小,生成讀指令;具體地,判斷對(duì)比條件成立的情況下,即當(dāng)前BD中的讀取數(shù)據(jù)長(zhǎng)度信息所示的數(shù)據(jù)長(zhǎng)度和下行指令生成模塊1112中存儲(chǔ)的已經(jīng)對(duì)應(yīng)生成讀指令的各個(gè)BD中的讀取數(shù)據(jù)長(zhǎng)度信息所示的數(shù)據(jù)長(zhǎng)度之和,小于外設(shè)緩存中與該DMA通道的下行通道相對(duì)應(yīng)的存儲(chǔ)空間中的空閑存儲(chǔ)空間的大小的情況下,生成與當(dāng)前BD對(duì)應(yīng)的讀指令,在讀指令中攜帶當(dāng)前BD中的讀取數(shù)據(jù)長(zhǎng)度信息和當(dāng)前BD中的讀取數(shù)據(jù)的地址信息,處理進(jìn)行到步驟404 ;判斷對(duì)比條件不成立的情況下,在當(dāng)前BD中的讀取數(shù)據(jù)長(zhǎng)度信息所示的數(shù)據(jù)長(zhǎng)度和下行指令生成模塊1112中存儲(chǔ)的已經(jīng)對(duì)應(yīng)生成讀指令的各個(gè)BD中的讀取數(shù)據(jù)長(zhǎng)度信息所示的數(shù)據(jù)長(zhǎng)度之和,大于或等于所述外設(shè)緩存中與該DMA通道的下行通道相對(duì)應(yīng)的存儲(chǔ)空間中的空閑存儲(chǔ)空間的大小的情況下,處理返回到步驟403,直至對(duì)比條件成立;在對(duì)比條件中,需要判斷當(dāng)前BD中的讀取數(shù)據(jù)長(zhǎng)度信息所示的數(shù)據(jù)長(zhǎng)度和下行指令生成模塊1112中存儲(chǔ)的已經(jīng)對(duì)應(yīng)生成讀指令的各個(gè)BD中的讀取數(shù)據(jù)長(zhǎng)度信息所示的數(shù)據(jù)長(zhǎng)度之和,與外設(shè)緩存中與該DMA通道的下行通道相對(duì)應(yīng)的存儲(chǔ)空間中的空閑存儲(chǔ)空間的大小的對(duì)比關(guān)系,其原因是如下步驟405所述,讀數(shù)據(jù)模塊121在輪詢到一個(gè)讀指令后,會(huì)給發(fā)送該讀指令的下行指令生成模塊1112反饋?zhàn)x響應(yīng),讀數(shù)據(jù)模塊121此時(shí)并未從CPU內(nèi)存中讀取數(shù)據(jù),因?yàn)樽x數(shù)據(jù)模塊121等待CPU內(nèi)存返回?cái)?shù)據(jù)是需要一定時(shí)間的,所以,當(dāng)讀數(shù)據(jù)模塊121向下行指令生成模塊1112發(fā)送讀響應(yīng)后,在下行指令生成模塊1112中與該讀響應(yīng)對(duì)應(yīng)的讀指令所指示的數(shù)據(jù)并未真正讀出,此時(shí),下行指令生成模塊1112應(yīng)當(dāng)保存與該讀響應(yīng)對(duì)應(yīng)的BD,即保存已經(jīng)對(duì)應(yīng)生成了讀指令的BD ;所以,在下行指令生成模塊1112生成讀指令時(shí),要判斷待搬運(yùn)的數(shù)據(jù)的長(zhǎng)度是否要小于外設(shè)緩存中與該DMA通道的下行通道相對(duì)應(yīng)的存儲(chǔ)空間中的空閑存儲(chǔ)空間的大小,而待搬運(yùn)的數(shù)據(jù)的長(zhǎng)度就包括當(dāng)前BD中的讀取數(shù)據(jù)長(zhǎng)度和已經(jīng)對(duì)應(yīng)生成讀指令的各個(gè)BD中的讀取數(shù)據(jù)長(zhǎng)度之和;步驟404、下行指令生成模塊1112將生成的對(duì)應(yīng)當(dāng)前BD的讀指令發(fā)送給讀數(shù)據(jù)模塊121,以使讀數(shù)據(jù)模塊121根據(jù)讀指令進(jìn)行數(shù)據(jù)搬運(yùn)操作;步驟405 ;下行指令生成模塊1112在接收到來(lái)自讀數(shù)據(jù)模塊121的讀響應(yīng)之后,保存當(dāng)前BD,優(yōu)選地,保存BD的緩存隊(duì)列可以是先進(jìn)先出隊(duì)列,其中讀響應(yīng)是讀數(shù)據(jù)模塊121對(duì)輪詢到下行指令生成模塊1112發(fā)送的讀指令時(shí),讀數(shù)據(jù)模塊121向下行指令生成模塊1112反饋的;處理返回步驟403。圖5示出了圖3中讀數(shù)據(jù)模塊121對(duì)下行數(shù)據(jù)的處理工作流程圖,即圖5示出了讀數(shù)據(jù)模塊121對(duì)下行數(shù)據(jù)進(jìn)行數(shù)據(jù)搬運(yùn)的工作原理圖,包括如下處理步驟步驟501、讀數(shù)據(jù)模塊121對(duì)來(lái)自若干個(gè)DMA通道11的下行通道111的讀指令進(jìn)行仲裁;優(yōu)選地,可以采用RR調(diào)度進(jìn)行仲裁,具體可根據(jù)若干個(gè)DMA通道11的排序順序?qū)ψx指令進(jìn)行排序得到排序順序,也即該排序順序與若干個(gè)DMA通道11的排序順序一致;步驟502、讀數(shù)據(jù)模塊121對(duì)于仲裁得到的排序順序中的當(dāng)前讀指令,根據(jù)當(dāng)前讀指令中的地址信息和讀取數(shù)據(jù)長(zhǎng)度信息,從CPU內(nèi)存中相應(yīng)地址的存儲(chǔ)空間中讀出相應(yīng)長(zhǎng)度的數(shù)據(jù);具體地,讀數(shù)據(jù)模塊121向CPU內(nèi)存發(fā)送讀數(shù)據(jù)請(qǐng)求,讀數(shù)據(jù)請(qǐng)求中包括當(dāng)前讀指令中的地址信息和讀取數(shù)據(jù)長(zhǎng)度信息;并向發(fā)送當(dāng)前讀指令的DMA通道的下行通道的下行指令生成模塊1112反饋?zhàn)x響應(yīng);步驟503、讀數(shù)據(jù)模塊121將讀出的數(shù)據(jù)發(fā)送到外設(shè)緩存中與發(fā)送當(dāng)前讀指令的DMA通道相對(duì)應(yīng)的存儲(chǔ)空間中,具體地,讀數(shù)據(jù)模塊121接收來(lái)自CPU內(nèi)存的針對(duì)讀數(shù)據(jù)請(qǐng)求的數(shù)據(jù)包,并將接收到的數(shù)據(jù)發(fā)送到外設(shè)緩存中與發(fā)送當(dāng)前讀指令的DMA通道相對(duì)應(yīng)的存儲(chǔ)空間中;處理返回步驟501。在上述處理過(guò)程中,下行讀BD模塊1111從CPU內(nèi)存中批量讀取若干個(gè)BD并保存讀取的BD,以便于下行指令生成模塊1112逐一取出BD并根據(jù)BD來(lái)生成讀指令,以使讀數(shù)據(jù)模塊121根據(jù)讀指令進(jìn)行數(shù)據(jù)搬運(yùn)工作;并且,下行指令生成模塊1112根據(jù)讀數(shù)據(jù)模塊121反饋的讀響應(yīng),保存與讀響應(yīng)相應(yīng)的BD后,根據(jù)下一個(gè)BD生成讀指令,使得下行指令生成模塊1112執(zhí)行的生成讀指令的操作不依賴于讀數(shù)據(jù)模塊121是否將數(shù)據(jù)從CPU內(nèi)存中讀出,能夠形成對(duì)下行數(shù)據(jù)的控制操作的流水作業(yè);以及,讀數(shù)據(jù)模塊121對(duì)來(lái)自若干個(gè)DMA通道的下行通道的讀指令進(jìn)行仲裁,根據(jù)仲裁得到的排序順序,依次根據(jù)各個(gè)讀指令進(jìn)行數(shù)據(jù)搬運(yùn)操作,能夠形成對(duì)下行數(shù)據(jù)的數(shù)據(jù)搬運(yùn)操作的流水作業(yè);從而能夠提高下行DMA數(shù)據(jù)傳輸?shù)膫鬏斔俣?,能夠適用于高速下行數(shù)據(jù)傳輸?shù)膽?yīng)用場(chǎng)景。在上述下行數(shù)據(jù)傳輸?shù)墓ぷ髟淼幕A(chǔ)上,對(duì)于采用BD環(huán)的應(yīng)用場(chǎng)景中,DMA數(shù)據(jù)傳輸還包括下行BD回寫(xiě)的處理過(guò)程。這里先說(shuō)明BD環(huán)的結(jié)構(gòu)及其作用進(jìn)行說(shuō)明。BD環(huán)是由若干個(gè)BD組成的首尾相接的環(huán)狀結(jié)構(gòu),每個(gè)BD的結(jié)構(gòu)可以如上表I所示,BD環(huán)在CPU內(nèi)存中占據(jù)一片連續(xù)的存儲(chǔ)空間,下行讀BD模塊1111從CPU內(nèi)存中讀取了若干個(gè)BD后,下行指令生成模塊1112根據(jù)各個(gè)BD依次生成讀指令,讀數(shù)據(jù)模塊121讀取數(shù)據(jù)后,下行DMA通道111應(yīng)當(dāng)對(duì)BD進(jìn)行改寫(xiě),將BD中的Owner域改寫(xiě)為表示CPU的信息,然后將改寫(xiě)后的BD發(fā)送回CPU內(nèi)存中,以使CPU監(jiān)測(cè)到總線控制權(quán)的變化。圖6示出了圖3中的下行回寫(xiě)模塊1113的工作流程圖,也即圖6示出了對(duì)下行數(shù)據(jù)的BD回寫(xiě)的工作原理,包括如下處理過(guò)程步驟601、下行指令生成模塊1112接收來(lái)自讀數(shù)據(jù)模塊121的讀完成響應(yīng),讀完成響應(yīng)是讀數(shù)據(jù)模塊121輪詢處理完下行指令生成模塊1112發(fā)送的讀指令,也即從CPU內(nèi)存中讀出數(shù)據(jù)并發(fā)送給外設(shè)緩存后,向下行指令生成模塊1112反饋的;步驟602、下行指令生成模塊1112從下行指令生成模塊1112保存的BD中取出一個(gè)BD發(fā)送給下行回寫(xiě)模塊1113,優(yōu)選地,從保存BD的先進(jìn)先出的隊(duì)列中取出排在隊(duì)頭的一個(gè)BD發(fā)送給下行回寫(xiě)模塊1113 ;步驟603、下行回寫(xiě)模塊1113將接收到的BD中的控制權(quán)信息改寫(xiě)為CPU,將改寫(xiě)后的BD發(fā)送給CPU內(nèi)存;具體地,下行回寫(xiě)模塊1113根據(jù)計(jì)時(shí)機(jī)制來(lái)發(fā)送改寫(xiě)后的BD;下行回寫(xiě)模塊1113將接收到的BD中的控制權(quán)信息改寫(xiě)為CPU,保存改寫(xiě)后的BD ;下行回寫(xiě)模塊1113判斷自身的存儲(chǔ)空間中存儲(chǔ)有改寫(xiě)后的BD的情況下,對(duì)預(yù)定的回寫(xiě)周期進(jìn)行計(jì)時(shí);在計(jì)時(shí)周期內(nèi),在所保存的改寫(xiě)后BD的數(shù)量大于或等于預(yù)定數(shù)量的情況下,將預(yù)定數(shù)量的改寫(xiě)后的BD作為待發(fā)送的BD,將待發(fā)送的BD發(fā)送給CPU內(nèi)存,在所保存的改寫(xiě)后的BD的數(shù)量小于預(yù)定數(shù)量的情況下,在計(jì)時(shí)到時(shí)后,將所保存的改寫(xiě)后的BD作為待發(fā)送的BD,將待發(fā)送的BD發(fā)送給CPU內(nèi)存。通過(guò)上述處理過(guò)程,下行回寫(xiě)模塊1113能夠批量地回寫(xiě)B(tài)D,能夠減少回寫(xiě)B(tài)D的次數(shù),減少由于回寫(xiě)B(tài)D所占用的總線帶寬,從而提高DMA數(shù)據(jù)傳輸?shù)乃俣?。并且,引入?jì)時(shí)機(jī)制在向CPU內(nèi)存發(fā)送改寫(xiě)后的BD,能夠在改寫(xiě)后的BD的數(shù)量大于或等于預(yù)定數(shù)量時(shí),及時(shí)地將預(yù)定數(shù)量的改寫(xiě)后的BD發(fā)送給CPU內(nèi)存,能夠避免下行通道111中的改寫(xiě)后的BD的數(shù)量瞬間增加過(guò)多時(shí)造成BD擁塞或BD丟失,在改寫(xiě)后的BD的數(shù)量小于預(yù)定數(shù)量時(shí),在計(jì)時(shí)到時(shí)后,將改寫(xiě)后的BD發(fā)送給CPU內(nèi)存,避免改寫(xiě)后的BD的數(shù)量長(zhǎng)期小于預(yù)定數(shù)量的情況下,無(wú)法向CPU返回改寫(xiě)后的BD,造成CPU監(jiān)測(cè)等待回寫(xiě)的BD的時(shí)間過(guò)長(zhǎng)的問(wèn)題,能夠使CPU及時(shí)地監(jiān)測(cè)到總線控制權(quán)變化的情況。(二)上行數(shù)據(jù)處理圖7示出了圖2所示多通道DMA控制器優(yōu)選結(jié)構(gòu)框圖,該多通道DMA控制器包括上行通道112和寫(xiě)數(shù)據(jù)模塊122,上行通道112包括上行讀BD模塊1121、上行指令生成模塊1122和上行回寫(xiě)模塊1123。上行讀BD模塊1121,用于在接收到來(lái)自CPU的BD更新消息后,從所述CPU內(nèi)存中讀取若干個(gè)BD,并保存讀取的若干個(gè)BD ;具體地,上行讀BD模塊1121向CPU內(nèi)存發(fā)送上行讀BD請(qǐng)求,上行讀BD請(qǐng)求中攜帶有請(qǐng)求讀取的BD的數(shù)量;接收來(lái)自CPU內(nèi)存針對(duì)該上行讀BD請(qǐng)求的若干個(gè)BD ;上行指令生成模塊1122,用于根據(jù)外設(shè)緩存中所存儲(chǔ)的待發(fā)送數(shù)據(jù)的數(shù)據(jù)量大小和上行讀BD模塊1121讀取的BD中的待寫(xiě)入數(shù)據(jù)的地址信息,生成所述寫(xiě)指令;具體地,在當(dāng)前時(shí)間片內(nèi),上行指令生成模塊1122從上行讀BD模塊1121中獲取一個(gè)BD作為當(dāng)前BD,根據(jù)外設(shè)緩存中存儲(chǔ)的待發(fā)送數(shù)據(jù)的數(shù)據(jù)量大小生成寫(xiě)指令,在生成的寫(xiě)指令中攜帶外設(shè)緩存中待發(fā)送的數(shù)據(jù)的數(shù)據(jù)長(zhǎng)度信息和當(dāng)前BD中的CPU內(nèi)存中待寫(xiě)入數(shù)據(jù)的地址信息;保存當(dāng)前BD ;將生成的寫(xiě)指令發(fā)送給寫(xiě)數(shù)據(jù)模塊122。寫(xiě)數(shù)據(jù)模塊122,用于對(duì)于仲裁得到的排序順序中的當(dāng)前寫(xiě)指令,根據(jù)當(dāng)前寫(xiě)指令中的數(shù)據(jù)長(zhǎng)度信息,從外設(shè)緩存中與發(fā)送當(dāng)前寫(xiě)指令的DMA通道相對(duì)應(yīng)的存儲(chǔ)控制中讀出相應(yīng)長(zhǎng)度的數(shù)據(jù),并將讀出的數(shù)據(jù)發(fā)送到當(dāng)前寫(xiě)指令中的地址信息所指的所述CPU內(nèi)存中的相應(yīng)存儲(chǔ)空間中;并且,輪詢到當(dāng)前寫(xiě)指令時(shí),向發(fā)送當(dāng)前寫(xiě)指令的DMA通道的上行通道(即上行通道112的上行指令生成模塊1122)反饋寫(xiě)響應(yīng);在從外設(shè)緩存中讀出數(shù)據(jù)并發(fā)送到CPU內(nèi)存后,還向發(fā)送當(dāng)前寫(xiě)指令的DMA通道的上行通道(即上行通道112的上行指令生成模塊1122)反饋寫(xiě)完成響應(yīng);上行指令生成模塊1123,還用于在接收到來(lái)自寫(xiě)數(shù)據(jù)模塊122的寫(xiě)響應(yīng)之后,保存當(dāng)前BD ;在接收到來(lái)自寫(xiě)數(shù)據(jù)模塊122的寫(xiě)完成響應(yīng)之后,從上行指令生成模塊1122保存的BD中取出一個(gè)BD發(fā)送給上行回寫(xiě)模塊1123 ;上行回寫(xiě)模塊1123,用于將接收到的BD中的控制權(quán)信息改寫(xiě)為CPU,將寫(xiě)指令中的數(shù)據(jù)長(zhǎng)度信息寫(xiě)入到BD中,將改寫(xiě)后的BD發(fā)送給CPU內(nèi)存;具體地,上行回寫(xiě)模塊1123保存改寫(xiě)后的BD,在判斷上行回寫(xiě)模塊1123中存儲(chǔ)有改寫(xiě)后的BD的情況下,對(duì)預(yù)定的回寫(xiě)周期進(jìn)行計(jì)時(shí);在計(jì)時(shí)周期內(nèi),在所保存的改寫(xiě)后的BD的數(shù)量大于或等于預(yù)定數(shù)量的情況下,將預(yù)定數(shù)量的改寫(xiě)后的BD作為待發(fā)送的BD,將待發(fā)送的BD發(fā)送給CPU內(nèi)存,在所保存的改寫(xiě)后的BD的數(shù)量小于預(yù)定數(shù)量的情況下,在計(jì)時(shí)到時(shí)后,將所保存的改寫(xiě)后的BD作為待發(fā)送的BD,將待發(fā)送的BD發(fā)送給CPU內(nèi)存,即將待發(fā)送的BD發(fā)送給調(diào)度單元13。圖8示出了圖7中上行指令生成模塊1122的工作流程圖,也即圖8示出了上行通道進(jìn)行上行數(shù)據(jù)傳輸?shù)目刂撇僮鞯墓ぷ髟?,包括如下處理過(guò)程步驟801、上行讀BD模塊1121接收到來(lái)自CPU的BD更新消息后,從CPU內(nèi)存中讀取若干個(gè)BD,并保存讀取的若干個(gè)BD ;具體地,上行讀BD模塊1121向CPU內(nèi)存發(fā)送上行讀BD請(qǐng)求,上行讀BD請(qǐng)求中攜帶有請(qǐng)求讀取的BD的數(shù)量;如上所述,BD的數(shù)量可以是一個(gè),也可以是多個(gè);上行讀BD模塊1121接收來(lái)自CPU內(nèi)存的針對(duì)該上行讀BD請(qǐng)求的若干個(gè)BD,并保存接收到的若干個(gè)BD ;步驟802、在當(dāng)前時(shí)間片內(nèi),在上行指令生成模塊1122中具有空閑存儲(chǔ)空間的情況下,上行指令生成模塊1122從上行讀BD模塊1121中獲取一個(gè)BD作為當(dāng)前BD ;具體地,上行指令生成模塊1122判斷上行讀BD模塊1121中存儲(chǔ)有BD,且上行指令生成模塊1122中有空閑存儲(chǔ)空間的情況下,在當(dāng)前時(shí)間片內(nèi),從上行讀BD模塊1121中獲取一個(gè)BD作為當(dāng)前BD ;步驟803、上行指令生成模塊1122生成與當(dāng)前BD對(duì)應(yīng)的寫(xiě)指令,在生成的寫(xiě)指令中攜帶外設(shè)緩存中待發(fā)送的數(shù)據(jù)的數(shù)據(jù)長(zhǎng)度信息和當(dāng)前BD中的CPU內(nèi)存中待寫(xiě)入數(shù)據(jù)的地址信息;
步驟804、上行指令生成模塊1122將生成的寫(xiě)指令發(fā)送給寫(xiě)數(shù)據(jù)模塊122,以使寫(xiě)數(shù)據(jù)模塊122根據(jù)寫(xiě)指令進(jìn)行數(shù)據(jù)搬運(yùn)操作;步驟805、上行指令生成模塊1122在接收到來(lái)自寫(xiě)數(shù)據(jù)模塊122的寫(xiě)響應(yīng)之后,保存當(dāng)前BD,保存BD的緩存隊(duì)列是先進(jìn)先出隊(duì)列,其中寫(xiě)響應(yīng)是寫(xiě)數(shù)據(jù)模塊122對(duì)輪詢到上行指令生成模塊1122發(fā)送的寫(xiě)指令時(shí),寫(xiě)數(shù)據(jù)模塊122向上行指令生成模塊1122反饋的;處理返回步驟803。圖9示出了圖7中寫(xiě)數(shù)據(jù)模塊122對(duì)上行數(shù)據(jù)的處理工作流程圖,即圖9示出了寫(xiě)數(shù)據(jù)模塊122對(duì)上行數(shù)據(jù)進(jìn)行數(shù)據(jù)搬運(yùn)的工作原理圖,包括如下處理步驟步驟901、寫(xiě)數(shù)據(jù)模塊122對(duì)來(lái)自若干個(gè)DMA通道11的上行通道112的寫(xiě)指令進(jìn)行仲裁,優(yōu)選地,可以采用RR調(diào)度進(jìn)行仲裁,得到對(duì)讀指令的排序順序;步驟902、寫(xiě)數(shù)據(jù)模塊122對(duì)于仲裁得到的排序順序中的當(dāng)前寫(xiě)指令,向發(fā)送當(dāng)前寫(xiě)指令的DMA通道的上行通道的上行指令生成模塊1122發(fā)送寫(xiě)響應(yīng);步驟903、寫(xiě)數(shù)據(jù)模塊122根據(jù)當(dāng)前寫(xiě)指令中的數(shù)據(jù)長(zhǎng)度信息,從外設(shè)緩存中與發(fā)送當(dāng)前寫(xiě)指令的DMA通道相對(duì)應(yīng)的存儲(chǔ)空間中讀出相應(yīng)長(zhǎng)度的數(shù)據(jù),將讀出的數(shù)據(jù)發(fā)送給CPU內(nèi)存,處理返回步驟901。在上述處理過(guò)程中,上行讀BD模塊1121從CPU內(nèi)存中批量讀取BD并保存讀取的BD,以便于上行指令生成模塊1122逐一取出BD并根據(jù)BD來(lái)生成寫(xiě)指令,以使寫(xiě)數(shù)據(jù)模塊122根據(jù)寫(xiě)指令進(jìn)行數(shù)據(jù)搬運(yùn)工作,上行指令生成模塊1122根據(jù)寫(xiě)數(shù)據(jù)模塊122反饋的寫(xiě)響應(yīng),保存與寫(xiě)響應(yīng)相應(yīng)的BD后,根據(jù)下一個(gè)BD生成寫(xiě)指令,使得上行讀BD模塊1121執(zhí)行的生成寫(xiě)指令的操作不依賴于寫(xiě)數(shù)據(jù)模塊122是否將數(shù)據(jù)寫(xiě)入CPU內(nèi)存中,能夠?qū)π纬蓪?duì)上行數(shù)據(jù)的控制操作的流水作業(yè);并且,寫(xiě)數(shù)據(jù)模塊122對(duì)來(lái)自若干個(gè)DMA通道的上行通道的寫(xiě)指令進(jìn)行仲裁,根據(jù)仲裁得到的排序順序,依次根據(jù)各個(gè)寫(xiě)指令進(jìn)行數(shù)據(jù)搬運(yùn)操作,能夠形成對(duì)上行數(shù)據(jù)的數(shù)據(jù)搬運(yùn)操作的流水作業(yè);從而能夠提高上行DMA數(shù)據(jù)傳輸?shù)膫鬏斔俣龋軌蜻m用于高速上行數(shù)據(jù)傳輸?shù)膽?yīng)用場(chǎng)景。在上述上行數(shù)據(jù)傳輸?shù)奶幚碓淼幕A(chǔ)上,對(duì)于采用BD環(huán)的應(yīng)用場(chǎng)景中,DMA數(shù)據(jù)傳輸還包括上行BD回寫(xiě)的處理過(guò)程。圖10示出了圖7中的上行回寫(xiě)模塊1123的工作流程圖,也即圖10示出了對(duì)上行數(shù)據(jù)的BD回寫(xiě)的工作原理,包括如下處理過(guò)程步驟1001、上行指令生成模塊1122接收來(lái)自寫(xiě)數(shù)據(jù)模塊122的寫(xiě)完成響應(yīng),寫(xiě)完成響應(yīng)是寫(xiě)數(shù)據(jù)模塊122輪詢處理完上行指令生成模塊1112發(fā)送的寫(xiě)指令,也即從外設(shè)緩存中讀出數(shù)據(jù)并發(fā)送給CPU內(nèi)存后,向上行指令生成模塊1122反饋的;步驟1002、上行指令生成模塊1122從上行指令生成模塊1122保存的BD中取出一個(gè)BD發(fā)送給上行回寫(xiě)模塊1123,也即從保存BD的先進(jìn)先出的隊(duì)列中取出排在隊(duì)頭的一個(gè)BD發(fā)送給上行回寫(xiě)模塊1123;步驟1003、上行回寫(xiě)模塊1123將接收到的BD中的控制權(quán)信息改寫(xiě)為CPU,將寫(xiě)指令中的數(shù)據(jù)長(zhǎng)度信息寫(xiě)入到BD中,將改寫(xiě)后的BD發(fā)送給CPU內(nèi)存;具體地,上行回寫(xiě)模塊1123將接收到的BD中的控制權(quán)信息改寫(xiě)為CPU,保存改寫(xiě)后的BD ;上行回寫(xiě)模塊1123判斷自身的存儲(chǔ)空間中存儲(chǔ)有改寫(xiě)后的BD的情況下,對(duì)預(yù)定的回寫(xiě)周期進(jìn)行計(jì)時(shí);在計(jì)時(shí)周期內(nèi),在所保存的改寫(xiě)后BD的數(shù)量大于或等于預(yù)定數(shù)量的情況下,將預(yù)定數(shù)量的改寫(xiě)后的BD作為待發(fā)送的BD,將待發(fā)送的BD發(fā)送給CPU內(nèi)存,在所保存的改寫(xiě)后的BD的數(shù)量小于預(yù)定數(shù)量的情況下,在計(jì)時(shí)到時(shí)后,將所保存的改寫(xiě)后的BD作為待發(fā)送的BD,將待發(fā)送的BD發(fā)送給CPU內(nèi)存。通過(guò)上述處理過(guò)程,上行回寫(xiě)模塊1123能夠批量地回寫(xiě)B(tài)D,能夠減少回寫(xiě)B(tài)D的次數(shù),減少由于回寫(xiě)B(tài)D所占用的總線帶寬,從而提高DMA數(shù)據(jù)傳輸?shù)乃俣?。還能夠避免下行通道111中的改寫(xiě)后的BD的數(shù)量瞬間增加過(guò)多時(shí)造成BD擁塞或BD丟失,避免改寫(xiě)后的BD的數(shù)量長(zhǎng)期小于預(yù)定數(shù)量的情況下,無(wú)法向CPU返回改寫(xiě)后的BD。綜上所述,根據(jù)本發(fā)明實(shí)施例的技術(shù)方案,在DMA控制器中設(shè)置若干個(gè)DMA通道和數(shù)據(jù)傳輸單元,將數(shù)據(jù)傳輸?shù)目刂撇僮骱蛿?shù)據(jù)傳輸?shù)臄?shù)據(jù)搬運(yùn)工作分離開(kāi)來(lái),也即由若干個(gè)DMA通道處理DMA數(shù)據(jù)傳輸?shù)目刂撇僮?,具體地,各個(gè)DMA通道進(jìn)行BD管理操作和生成傳輸指令操作,由一個(gè)數(shù)據(jù)傳輸單元處理全部的DMA數(shù)據(jù)傳輸?shù)臄?shù)據(jù)搬運(yùn)工作,具體地,數(shù)據(jù)傳輸單元對(duì)來(lái)自若干個(gè)DMA通道的傳輸指令進(jìn)行仲裁,根據(jù)仲裁得到的排序順序,依次執(zhí)行各個(gè)傳輸指令,在CPU內(nèi)存和外設(shè)緩存之間傳輸數(shù)據(jù),可見(jiàn),DMA通道執(zhí)行的數(shù)據(jù)控制操作不必依賴于數(shù)據(jù)傳輸單元執(zhí)行的數(shù)據(jù)搬運(yùn)操作,能夠在DMA通道側(cè)形成數(shù)據(jù)傳輸?shù)目刂撇僮鞯牧魉鳂I(yè),數(shù)據(jù)傳輸單元依次對(duì)來(lái)自若干個(gè)DMA通道的傳輸指令進(jìn)行處理,在數(shù)據(jù)傳輸單元側(cè)形成數(shù)據(jù)傳輸?shù)臄?shù)據(jù)搬運(yùn)操作的流水作業(yè),進(jìn)而能夠提高DMA控制器的數(shù)據(jù)傳輸速度,能夠適用于高速數(shù)據(jù)傳輸?shù)膽?yīng)用場(chǎng)景。顯然,本領(lǐng)域的技術(shù)人員可以對(duì)本發(fā)明進(jìn)行各種改動(dòng)和變型而不脫離本發(fā)明的精神和范圍。這樣,倘若本發(fā)明的這些修改和變型屬于本發(fā)明權(quán)利要求及其等同技術(shù)的范圍之內(nèi),則本發(fā)明也意圖包含這些改動(dòng)和變型在內(nèi)。
權(quán)利要求
1.一種多通道直接存儲(chǔ)器存取DMA控制器,其特征在于,包括若干個(gè)DMA通道和數(shù)據(jù)傳輸單兀; 所述DMA通道,用于接收到來(lái)自中央處理器CPU的緩存標(biāo)識(shí)符BD更新消息后,從CPU內(nèi)存中讀取BD,根據(jù)BD和外設(shè)緩存中的數(shù)據(jù)存儲(chǔ)情況,生成傳輸指令; 所述數(shù)據(jù)傳輸單元,用于對(duì)來(lái)自若干個(gè)所述DMA通道的傳輸指令進(jìn)行仲裁,根據(jù)仲裁得到的排序順序,依次執(zhí)行各個(gè)傳輸指令、在所述CPU內(nèi)存和所述外設(shè)緩存之間傳輸數(shù)據(jù)。
2.根據(jù)權(quán)利要求1所述的多通道DMA控制器,其特征在于,所述傳輸指令包括讀指令;則, 所述DMA通道,具體包括下行通道,用于在接收到來(lái)自CPU的BD更新消息后,從所述CPU內(nèi)存中讀取BD,根據(jù)讀取的BD中的讀取數(shù)據(jù)長(zhǎng)度信息和所述外設(shè)緩存中所存儲(chǔ)的已接收數(shù)據(jù)的數(shù)據(jù)量大小,生成所述讀指令; 所述數(shù)據(jù)傳輸單元,具體包括讀數(shù)據(jù)模塊,用于對(duì)來(lái)自若干個(gè)所述DMA通道的下行通道的讀指令進(jìn)行仲裁,根據(jù)仲裁得到的排序順序,依次根據(jù)各個(gè)讀指令從所述CPU內(nèi)存中讀出相應(yīng)的數(shù)據(jù),并將讀出的數(shù)據(jù)發(fā)送給所述外設(shè)緩存。
3.根據(jù)權(quán)利要求2所述的多通道DMA控制器,其特征在于,所述下行通道,具體包括 下行讀BD模塊,用于在接收到來(lái)自CPU的BD更新消息后,從所述CPU內(nèi)存中讀取若干個(gè)BD,并保存讀取的若干個(gè)BD ; 下行指令生成模塊,用于根據(jù)所述下行讀BD模塊讀取的BD中的讀取數(shù)據(jù)長(zhǎng)度信息和所述外設(shè)緩存中所存儲(chǔ)的已接收數(shù)據(jù)的數(shù)據(jù)量大小,生成所述讀指令。
4.根據(jù)權(quán)利要求3所述的多通道DMA控制器,其特征在于,所述下行指令生成模塊,具體用于執(zhí)行讀取當(dāng)前BD操作、判斷操作、生成讀指令操作和發(fā)送讀指令操作;其中, 讀取當(dāng)前BD操作在當(dāng)前時(shí)間片內(nèi),在所述下行指令生成模塊中具有空閑存儲(chǔ)空間的情況下,從所述下行讀BD模塊中獲取一個(gè)BD作為當(dāng)前BD ; 判斷操作判斷對(duì)比條件是否成立,對(duì)比條件為對(duì)比當(dāng)前BD中的讀取數(shù)據(jù)長(zhǎng)度信息所示的數(shù)據(jù)長(zhǎng)度和所述下行指令生成模塊中存儲(chǔ)的已經(jīng)對(duì)應(yīng)生成讀指令的各個(gè)BD中的讀取數(shù)據(jù)長(zhǎng)度信息所示的數(shù)據(jù)長(zhǎng)度之和,是否小于所述外設(shè)緩存中與該DMA通道的下行通道相對(duì)應(yīng)的存儲(chǔ)空間中的空閑存儲(chǔ)空間的大小,在判斷對(duì)比條件成立的情況下,執(zhí)行生成讀指令操作,否則,繼續(xù)等待,直到對(duì)比條件成立; 生成讀指令操作生成與當(dāng)前BD對(duì)應(yīng)的讀指令,在讀指令中攜帶當(dāng)前BD中的讀取數(shù)據(jù)長(zhǎng)度信息和當(dāng)前BD中的讀取數(shù)據(jù)的地址信息;并在所述下行指令生成模塊中保存當(dāng)前BD ; 發(fā)送讀指令操作將生成的與當(dāng)前BD對(duì)應(yīng)的讀指令發(fā)送給所述讀數(shù)據(jù)模塊。
5.根據(jù)權(quán)利要求4所述的多通道DMA控制器,其特征在于,所述讀數(shù)據(jù)模塊,具體用于 對(duì)于仲裁得到的排序順序中的當(dāng)前讀指令,根據(jù)當(dāng)前讀指令中的地址信息和讀取數(shù)據(jù)長(zhǎng)度信息,從所述CPU內(nèi)存中相應(yīng)地址的存儲(chǔ)空間中讀出相應(yīng)長(zhǎng)度的數(shù)據(jù),并將讀出的數(shù)據(jù)發(fā)送到所述外設(shè)緩存中與發(fā)送當(dāng)前讀指令的DMA通道相對(duì)應(yīng)的存儲(chǔ)空間中。
6.根據(jù)權(quán)利要求4所述的多通道DMA控制器,其特征在于,所述讀數(shù)據(jù)模塊,還用于對(duì)于仲裁得到的排序順序中的當(dāng)前讀指令,輪詢到當(dāng)前讀指令時(shí),向發(fā)送當(dāng)前讀指令的DMA通道的下行通道反饋?zhàn)x響應(yīng);在從所述CPU內(nèi)存中讀出數(shù)據(jù)并發(fā)送給所述外設(shè)緩存后,還向發(fā)送當(dāng)前讀指令的DMA通道的下行通道反饋?zhàn)x完成響應(yīng);則, 所述下行通道,還包括下行回寫(xiě)模塊;其中, 所述下行指令生成模塊,還用于在接收到來(lái)自所述讀數(shù)據(jù)模塊的讀響應(yīng)之后,在所述下打指令生成1旲塊中保存當(dāng)如BD ;在接收到來(lái)自所述讀數(shù)據(jù)|旲塊的讀完成響應(yīng)之后,從所述下行指令生成模塊保存的BD中取出一個(gè)BD發(fā)送給所述下行回寫(xiě)模塊; 所述下行回寫(xiě)模塊,用于將接收到的BD中的控制權(quán)信息改寫(xiě)為CPU,將改寫(xiě)后的BD發(fā)送給所述CPU內(nèi)存。
7.根據(jù)權(quán)利要求6所述的多通道DMA控制器,其特征在于,所述下行回寫(xiě)模塊,具體用于 保存改寫(xiě)后的BD,在判斷所述下行回寫(xiě)模塊中存儲(chǔ)有改寫(xiě)后的BD的情況下,對(duì)預(yù)定的回寫(xiě)周期進(jìn)行計(jì)時(shí);在計(jì)時(shí)周期內(nèi),在所保存的改寫(xiě)后BD的數(shù)量大于或等于預(yù)定數(shù)量的情況下,將預(yù)定數(shù)量的改寫(xiě)后的BD作為待發(fā)送的BD,將待發(fā)送的BD發(fā)送給所述CPU內(nèi)存,在所保存的改寫(xiě)后的BD的數(shù)量小于預(yù)定數(shù)量的情況下,在計(jì)時(shí)到時(shí)后,將所保存的改寫(xiě)后的BD作為待發(fā)送的BD,將待發(fā)送的BD發(fā)送給所述CPU內(nèi)存。
8.根據(jù)權(quán)利要求1所述的多通道DMA控制器,其特征在于,所述傳輸指令包括寫(xiě)指令;則, 所述DMA通道,具體包括上行通道,用于接收到來(lái)自CPU的BD更新消息后,從所述CPU內(nèi)存中讀取BD,根據(jù)所述外設(shè)緩存中所存儲(chǔ)的待發(fā)送數(shù)據(jù)的數(shù)據(jù)量大小和讀取的BD中的待寫(xiě)入數(shù)據(jù)的地址信息,生成所述寫(xiě)指令; 所述數(shù)據(jù)傳輸單元,具體包括寫(xiě)數(shù)據(jù)模塊,用于對(duì)來(lái)自若干個(gè)所述DMA通道的上行通道的寫(xiě)指令進(jìn)行仲裁,根據(jù)仲裁得到的排序順序,依次根據(jù)各個(gè)寫(xiě)指令從所述外設(shè)緩存中讀出相應(yīng)的數(shù)據(jù),并將讀出的數(shù)據(jù)發(fā)送給所述CPU內(nèi)存。
9.根據(jù)權(quán)利要求8所述的多通道DMA控制器,其特征在于,所述上行通道,具體包括 上行讀BD模塊,用于在接收到來(lái)自CPU的BD更新消息后,從所述CPU內(nèi)存中讀取若干個(gè)BD,并保存讀取的若干個(gè)BD ; 上行指令生成模塊,用于根據(jù)所述外設(shè)緩存中所存儲(chǔ)的待發(fā)送數(shù)據(jù)的數(shù)據(jù)量大小和所述上行讀BD模塊讀取的BD中的待寫(xiě)入數(shù)據(jù)的地址信息,生成所述寫(xiě)指令。
10.根據(jù)權(quán)利要求9所述的多通道DMA控制器,其特征在于,所述上行指令生成模塊,具體用于 在當(dāng)前時(shí)間片內(nèi),在所述上行指令生成模塊中具有空閑存儲(chǔ)空間的情況下,從所述上行讀BD模塊中獲取一個(gè)BD作為當(dāng)前BD ; 生成與當(dāng)前BD對(duì)應(yīng)的寫(xiě)指令,在生成的寫(xiě)指令中攜帶所述外設(shè)緩存中待發(fā)送的數(shù)據(jù)的數(shù)據(jù)長(zhǎng)度信息和當(dāng)前BD中的CPU內(nèi)存中待寫(xiě)入數(shù)據(jù)的地址信息; 在所述上行指令生成模塊中保存當(dāng)前BD ; 將生成的寫(xiě)指令發(fā)送給所述寫(xiě)數(shù)據(jù)模塊。
11.根據(jù)權(quán)利要求10所述的多通道DMA控制器,其特征在于,所述寫(xiě)數(shù)據(jù)模塊,具體用于 對(duì)于仲裁得到的排序順序中的當(dāng)前寫(xiě)指令,根據(jù)當(dāng)前寫(xiě)指令中的數(shù)據(jù)長(zhǎng)度信息,從所述外設(shè)緩存中與發(fā)送當(dāng)前寫(xiě)指令的DMA通道相對(duì)應(yīng)的存儲(chǔ)控制中讀出相應(yīng)長(zhǎng)度的數(shù)據(jù),并將讀出的數(shù)據(jù)發(fā)送到當(dāng)前寫(xiě)指令中的地址信息所指的所述CPU內(nèi)存中的相應(yīng)存儲(chǔ)空間中。
12.根據(jù)權(quán)利要求11所述的多通道DMA控制器,其特征在于,所述寫(xiě)數(shù)據(jù)模塊,還用于輪詢到當(dāng)前寫(xiě)指令時(shí),向發(fā)送當(dāng)前寫(xiě)指令的DMA通道的上行通道反饋寫(xiě)響應(yīng);在從所述外設(shè)緩存中讀出數(shù)據(jù)并發(fā)送到所述CPU內(nèi)存后,還向發(fā)送當(dāng)前寫(xiě)指令的DMA通道的上行通道反饋寫(xiě)完成響應(yīng);則, 所述上行通道,還包括上行回寫(xiě)模塊;其中, 所述上行指令生成模塊,還用于在接收到來(lái)自所述寫(xiě)數(shù)據(jù)模塊的寫(xiě)響應(yīng)之后,在所述上行指令生成模塊保存當(dāng)前BD;在接收到來(lái)自所述寫(xiě)數(shù)據(jù)模塊的寫(xiě)完成響應(yīng)之后,從所述上行指令生成模塊保存的BD中取出一個(gè)BD發(fā)送給所述上行回寫(xiě)模塊; 所述上行回寫(xiě)模塊,用于將接收到的BD中的控制權(quán)信息改寫(xiě)為CPU,將所述寫(xiě)指令中的數(shù)據(jù)長(zhǎng)度信息寫(xiě)入到BD中,將改寫(xiě)后的BD發(fā)送給所述CPU內(nèi)存。
13.根據(jù)權(quán)利要求12所述的多通道DMA控制器,其特征在于,所述上行回寫(xiě)模塊,具體用于 保存改寫(xiě)后的BD ;在判斷所述上行回寫(xiě)模塊中存儲(chǔ)有改寫(xiě)后的BD的情況下,對(duì)預(yù)定的回寫(xiě)周期進(jìn)行計(jì)時(shí);在計(jì)時(shí)周期內(nèi),在所保存的改寫(xiě)后BD的數(shù)量大于或等于預(yù)定數(shù)量的情況下,將預(yù)定數(shù)量的改寫(xiě)后的BD作為待發(fā)送的BD,將待發(fā)送的BD發(fā)送給所述CPU內(nèi)存,在所保存的改寫(xiě)后的BD的數(shù)量小于預(yù)定數(shù)量的情況下,在計(jì)時(shí)到時(shí)后,將所保存的改寫(xiě)后的BD作為待發(fā)送的BD,將待發(fā)送的BD發(fā)送給所述CPU內(nèi)存。
全文摘要
本發(fā)明公開(kāi)了一種多通道DMA控制器,在DMA控制器中設(shè)置若干個(gè)DMA通道和數(shù)據(jù)傳輸單元,將數(shù)據(jù)傳輸?shù)目刂撇僮骱蛿?shù)據(jù)搬運(yùn)工作分離開(kāi)來(lái),由若干個(gè)DMA通道處理DMA數(shù)據(jù)傳輸?shù)目刂撇僮?,各個(gè)DMA通道進(jìn)行BD管理操作和生成傳輸指令操作,由一個(gè)數(shù)據(jù)傳輸單元處理全部的DMA數(shù)據(jù)傳輸?shù)臄?shù)據(jù)搬運(yùn)工作,數(shù)據(jù)傳輸單元對(duì)來(lái)自若干個(gè)DMA通道的傳輸指令進(jìn)行仲裁,根據(jù)仲裁得到的排序順序,依次執(zhí)行各個(gè)傳輸指令,在CPU內(nèi)存和外設(shè)緩存之間傳輸數(shù)據(jù),能夠在DMA通道中形成數(shù)據(jù)傳輸?shù)目刂撇僮鞯牧魉鳂I(yè),在數(shù)據(jù)傳輸單元中形成數(shù)據(jù)傳輸?shù)臄?shù)據(jù)搬運(yùn)操作的流水作業(yè),能夠提高DMA控制器的數(shù)據(jù)傳輸速度,適用于高速數(shù)據(jù)傳輸?shù)膽?yīng)用場(chǎng)景。
文檔編號(hào)G06F13/28GK103064807SQ201210550249
公開(kāi)日2013年4月24日 申請(qǐng)日期2012年12月17日 優(yōu)先權(quán)日2012年12月17日
發(fā)明者王瑤寶 申請(qǐng)人:福建星網(wǎng)銳捷網(wǎng)絡(luò)有限公司