亚洲成年人黄色一级片,日本香港三级亚洲三级,黄色成人小视频,国产青草视频,国产一区二区久久精品,91在线免费公开视频,成年轻人网站色直接看

動態(tài)調(diào)整傳輸數(shù)據(jù)寬度的直接存儲器存取控制器與方法

文檔序號:6608405閱讀:182來源:國知局
專利名稱:動態(tài)調(diào)整傳輸數(shù)據(jù)寬度的直接存儲器存取控制器與方法
技術領域
本發(fā)明涉及一種直接存儲器存取控制器,且特別涉及一種具有動態(tài)調(diào)整 傳輸數(shù)據(jù)寬度的直接存儲器存取控制器。
背景技術
新世代電子產(chǎn)品以輕、薄、短、小以及低功耗為設計趨勢,使得系統(tǒng)芯
片(System-on-Chip, SoC )成為近年來熱門的研究焦點之一 。其中,電子裝 置在數(shù)字信號處理與多媒體處理的應用中,逐漸成為整體作業(yè)負載的重心。 而數(shù)據(jù)傳輸?shù)乃俾矢嵌嗝襟w應用重要的關鍵。
目前,直接存儲器存取控制器(direct memory access controller,腿C) 廣泛地應用在數(shù)據(jù)傳輸。這是因為直接存儲器存取控制器能夠獨立地在周邊 裝置與存儲器之間直接傳輸數(shù)據(jù),而處理器不需全程直接參與數(shù)據(jù)傳輸?shù)墓?作。此外,當有大量數(shù)據(jù)要傳輸時,只需通過直接存^諸器存取控制器的參數(shù) 設定,就可以由直接存儲器存取控制器完成數(shù)據(jù)的傳輸。此時,處理器能夠 平行地執(zhí)行其它的運算。因此,直接存儲器存取控制器除了節(jié)省處理器需額 外傳輸數(shù)據(jù)的時間之外,也提升系統(tǒng)效能的目標。
目前多々某體應用,例如MPEG-4和H. 264標準,包含動態(tài)估測(Motion Estimation)及動態(tài)補償(Motion Compensation)等算法。在實際運作上,這 些算法不但須要大量的數(shù)據(jù)傳輸,且傳輸數(shù)據(jù)的數(shù)據(jù)i也址(Address)還經(jīng)常呈 現(xiàn)不連續(xù)的分布。
現(xiàn)有的數(shù)據(jù)寬度傳輸模式是字符傳輸模式(word mode)、半字符傳輸模式 (half-word mode)以及字節(jié)傳輸4莫式(byte mode) 。 J見有的數(shù)據(jù)傳輸方式是采 用一般寬度固定的傳輸模式(Aligned Mode)。此種傳輸^模式必須在數(shù)據(jù)傳輸 之前,就要決定使用何種數(shù)據(jù)寬度傳輸模式。在數(shù)據(jù)傳輸?shù)倪^程中,無法轉 換數(shù)據(jù)寬度傳輸模式。例如,若一開始選擇以字符傳輸模式作為數(shù)據(jù)寬度傳 輸才莫式,則在數(shù)據(jù)傳輸?shù)倪^程中,都是以字符傳輸才莫式傳輸數(shù)據(jù)。圖1為現(xiàn)有數(shù)據(jù)的傳輸方式。圖中每一個方格表示一字節(jié)數(shù)據(jù)。在現(xiàn)有傳輸數(shù)據(jù)A1-A7的方式中, 一開始就要決定數(shù)據(jù)寬度傳輸模式。若以字符傳 輸模式(即每次以四個字節(jié)做為傳輸單位)作為數(shù)據(jù)寬度傳輸模式,則完成 數(shù)據(jù)Al-A7的傳輸需要3個步驟(即分成3次傳送),分別是SIOI、 S102以 及S103。在圖1中,可以明顯看出,當數(shù)據(jù)Al-A7完成傳輸后,還必須舍棄 多余的數(shù)據(jù)B1-B5,會造成時間的浪費。若使用者要減化傳輸方式,則會采 用字節(jié)模式(即每次以一個字節(jié)做為傳輸單位)作為數(shù)據(jù)寬度傳輸模式。但 是以字節(jié)模式作為數(shù)據(jù)寬度傳輸模式,則完成數(shù)據(jù)Al-A7的傳輸需要7個步 驟(即分成7次傳送)。雖然以字節(jié)模式作為數(shù)據(jù)寬度傳輸模式最簡單,但 這卻不是最有效率的做法。在美國專利公告第5,628,026號專利所公開的技術,利用計數(shù)器電路實 現(xiàn)可執(zhí)行多維度數(shù)據(jù)搬運的直接存儲器存取控制器。在此專利中,數(shù)據(jù)搬運 的總數(shù)據(jù)長度必須剛好是DCOH x DCOM x DCOL,其中DCOL、 DC0M、 DC0H分 別是第一維度、第二維度及第三維度的數(shù)據(jù)長度。然而,在實際應用上,并 非所有的數(shù)據(jù)長度皆滿足此一條件。發(fā)明內(nèi)容本發(fā)明提供一種動態(tài)調(diào)整傳輸數(shù)據(jù)寬度的方法,可以提高數(shù)據(jù)傳輸?shù)男?。本發(fā)明提供一種計算機可讀取存儲媒體,可執(zhí)行上述的作業(yè)流程的時程 控管方法的各個步驟。本發(fā)明提供一種具有動態(tài)調(diào)整傳輸數(shù)據(jù)寬度的直4妄存儲器存取控制器, 可以動態(tài)選擇最佳數(shù)據(jù)寬度作為數(shù)據(jù)寬度傳輸模式。為解決上述問題,本發(fā)明提出一種動態(tài)調(diào)整傳輸數(shù)據(jù)寬度的方法。首先, 檢測傳輸數(shù)據(jù)的數(shù)據(jù)筆數(shù)。依據(jù)傳輸數(shù)據(jù)的數(shù)據(jù)地址,以決定傳輸數(shù)據(jù)的數(shù) 據(jù)寬度傳輸模式。該數(shù)據(jù)寬度傳輸模式包括一第一傳輸模式以及一第二傳輸 模式。依據(jù)傳輸數(shù)據(jù)的數(shù)據(jù)地址、數(shù)據(jù)寬度傳輸模式與^t據(jù)筆數(shù)以傳輸數(shù)據(jù)。本發(fā)明提出一種計算機可讀取存儲媒體,用于存儲一計算機程序。計算 機程序用于加載至一計算機系統(tǒng)中并且使得計算機系統(tǒng)執(zhí)行上述作業(yè)流程的 時程控管方法的任一步驟。本發(fā)明提出 一種具有動態(tài)調(diào)整傳輸數(shù)據(jù)寬度的直接存儲器存取控制器,包括來源地址與寬度產(chǎn)生器、目的地地址與寬度產(chǎn)生器和先進先出援沖器。 其中,來源地址與寬度產(chǎn)生器用于傳送包括一傳輸數(shù)據(jù)的來源數(shù)據(jù)地址和來 源數(shù)據(jù)寬度。目的地地址與寬度產(chǎn)生器用于傳送包括一傳輸數(shù)據(jù)的目的地數(shù) 據(jù)地址和目的地數(shù)據(jù)寬度。先進先出緩沖器耦接至來源:地址與寬度產(chǎn)生器以 及目的地地址與寬度產(chǎn)生器,以暫時存放該傳輸數(shù)據(jù)。此外,傳輸數(shù)據(jù)的傳 輸方式為依據(jù)傳輸數(shù)據(jù)的數(shù)據(jù)地址,以決定傳輸數(shù)據(jù)的 一數(shù)據(jù)寬度傳輸模式, 其中數(shù)據(jù)寬度傳輸模式包括一第 一傳輸模式以及一第二傳輸模式。在本發(fā)明的一實施例中,上述的數(shù)據(jù)寬度傳輸模式更包括一第三傳輸模 式。其中,假設數(shù)據(jù)總線最大寬度為一字符,則該第一傳輸模式、該第二傳 輸模式與該第三傳輸模式可以是字符傳輸模式、半字符傳輸模式以及字節(jié)傳輸模式。綜上所述,本發(fā)明依據(jù)傳輸數(shù)據(jù)的數(shù)據(jù)地址,以決定傳輸數(shù)據(jù)的數(shù)據(jù)寬 度傳輸模式。因此,本發(fā)明的動態(tài)調(diào)整傳輸數(shù)據(jù)寬度的方法與其直接存儲器 存取控制器,可以使用最佳的數(shù)據(jù)寬度傳輸。藉此,不^f又可以提高傳輸效率, 更可以符合實際上的需求。為讓本發(fā)明的上述特征和優(yōu)點能更明顯易懂,下文特舉較佳實施例,并 配合附圖,作詳細說明如下。


圖1為現(xiàn)有數(shù)據(jù)的傳輸方式。圖2為本發(fā)明一實施例的具有動態(tài)調(diào)整傳輸數(shù)據(jù)寬度的直接存儲器存取 控制器的電路圖。圖3為本發(fā)明一實施例的先進先出緩沖器的有限狀態(tài)機圖。圖4為本發(fā)明一實施例的動態(tài)調(diào)整傳輸數(shù)據(jù)寬度的方法的步驟流程圖。圖5為依據(jù)本發(fā)明實施例說明的彰:據(jù)的傳輸方式。附圖符號說明103、 501、 503:傳輸數(shù)據(jù)200:直接存儲器存取控制器210:信號控制模塊212:來源地址與寬度產(chǎn)生器214:目的地地址與寬度產(chǎn)生器 216:先進先出緩沖器 220:來源端 222:目的地端S401、 S405、 S410、 S412、 S415、 S420、 S425、 S430、 S435、 S437、 S440、 S443、 S450、 S452:步驟具體實施方式
圖2為本發(fā)明一實施例的具有動態(tài)調(diào)整傳輸數(shù)據(jù)寬度的直接存儲器存取 控制器的電路圖。請參照圖2,本實施例的具有動態(tài)調(diào)整傳輸數(shù)據(jù)寬度的直 接存儲器存取控制器200包括來源地址與寬度產(chǎn)生器(source address and size generator, SASG)212、目的地地址與寬度產(chǎn)生器(destination address and size generator, DASG)214、信號控制才莫塊210以及先進先出(first in first out, FIFO)緩沖器216。其中,信號控制模塊210耦接至來源地址與 寬度產(chǎn)生器212和目的地地址與寬度產(chǎn)生器214。而來源地址與寬度產(chǎn)生器 212和目的地地址與寬度產(chǎn)生器214則分別耦接至先進先出緩沖器216。當信號控制模塊210接收到前一級的控制信號CS時,例如是中央處理單 元(未繪示)的控制信號,則表示要傳輸數(shù)據(jù)。此時,信號控制模塊210會 將多數(shù)個參數(shù)設定值傳送至來源地址與寬度產(chǎn)生器212和目的地地址與寬度 產(chǎn)生器214。在本實施例中,來源地址與寬度產(chǎn)生器212包括數(shù)個寄存器, 用于存儲信號控制模塊210所提供的多數(shù)個參數(shù)設定值。該些參數(shù)設定值包 括總傳輸數(shù)據(jù)筆數(shù)p-bszl、 一連續(xù)數(shù)據(jù)段的數(shù)據(jù)筆凄tp—countl、傳輸數(shù)據(jù)的 起始數(shù)據(jù)地址p—saddrl以及相鄰連續(xù)數(shù)據(jù)段起始地址之間的距離p—offsetl 等參數(shù)。來源地址與寬度產(chǎn)生器212用于將來源數(shù)據(jù)地址Sra傳送給來源端220, 并將來源數(shù)據(jù)寬度Srs傳送給來源端220和先進先出緩沖器216。此時,來 源端所提供的輸入數(shù)據(jù)Din可以暫時存放至先進先出緩沖器216。另外,先 進先出緩沖器216也可以依據(jù)目的地地址與寬度產(chǎn)生器214的控制而調(diào)整傳 輸給目的地端222的輸出數(shù)據(jù)Dout的數(shù)據(jù)寬度。例如,當先進先出緩沖器 216依據(jù)目的地地址與寬度產(chǎn)生器214的控制而要輸出一字符(即四個字節(jié)) 數(shù)據(jù)給目的地端222,此時若先進先出緩沖器216所暫存的輸入數(shù)據(jù)只剩一個字節(jié),則先進先出緩沖器216會等待下一筆輸入數(shù)據(jù)Din寫入,且直到暫 存的數(shù)據(jù)量足夠時,即可輸出數(shù)據(jù)寬度為字符的數(shù)據(jù)Dout給目的地端222。請繼續(xù)參照圖2,類似地,在本實施例中,目的地地址與寬度產(chǎn)生器214 包括數(shù)個寄存器,用于存儲信號控制模塊210所提供的總傳輸數(shù)據(jù)筆數(shù) p_bsz2、 一連續(xù)數(shù)據(jù)段的數(shù)據(jù)筆數(shù)p—count2、傳輸凄欠據(jù)的起始數(shù)據(jù)地址 p_saddr2以及相鄰連續(xù)數(shù)據(jù)段起始地址之間的距離p—offset2等參數(shù)設定 值。此外,目的地地址與寬度產(chǎn)生器214用于將目的地Jt梧地址Dwa傳送給 目的地端222,并將目的地數(shù)據(jù)寬度Dws傳送給目的地端222和先進先出緩 沖器216。值得注意的是,在本實施例中,來源地址與寬度產(chǎn)生器212和目的地地 址與寬度產(chǎn)生器214是以不定邊界模式(nonaligned mode)來傳輸數(shù)據(jù)。不定 邊界模式為依據(jù)傳輸數(shù)據(jù)的數(shù)據(jù)地址而動態(tài)決定傳輸數(shù)據(jù)的數(shù)據(jù)寬度傳輸模 式。此數(shù)據(jù)寬度傳輸模式可能包括第一傳輸模式與第二傳輸模式,也可能更 包括第三傳輸模式,甚至包括更多種傳輸模式。例如,動態(tài)決定的數(shù)據(jù)寬度傳輸模式可能為字符傳輸模式(即每次以四個字節(jié)做為傳輸單位)、半字符 傳輸模式(即每次以二個字節(jié)做為傳輸單位)以及字節(jié)傳輸模式(即每次以 一個字節(jié)做為傳輸單位)其中一者或多者。在本實施例中將假設數(shù)據(jù)總線最 大寬度為一字符,則其中數(shù)據(jù)寬度傳輸模式包括字符傳輸模式、半字符傳輸 模式以及字節(jié)傳輸模式。動態(tài)決定傳輸數(shù)據(jù)的數(shù)據(jù)寬度傳輸模式的優(yōu)先級為字符傳輸模式,其次 為半字符傳輸模式,最后是字節(jié)傳l餘模式。若總線的最大寬度為32bits,當傳輸數(shù)據(jù)的數(shù)據(jù)地址位于字符邊界,例如是0x0、 0x4、 0x8、…等,則是以 字符傳輸模式為數(shù)據(jù)寬度傳輸模式。當傳輸數(shù)據(jù)的數(shù)據(jù)地址位于半字符邊界, 例如是0x2、 0x6、 0xa等,則是以半字符傳輸模式為^t據(jù)寬度傳輸模式。當 傳輸數(shù)據(jù)的數(shù)據(jù)地址位于字節(jié)邊界,例如是Oxl, 0x3, 0x5等,則是以字節(jié)傳輸模式為數(shù)據(jù)寬度傳輸模式。圖3為本發(fā)明一實施例的先進先出緩沖器的有限狀態(tài)機圖。請合并參照 圖2和圖3,本實施例的先進先出緩沖器216包括三種狀態(tài)Sl、 S2以及S3。 一開始先進先出緩沖器216尚未存儲任何數(shù)據(jù),因此緩沖器216操作于狀態(tài) Sl而設定信號Swr = 1 (表示先進先出緩沖器216具有足夠的空間可以寫入數(shù)據(jù))。另外,由于緩沖器216目前還沒有數(shù)據(jù)可供輸出,因此設定信號Srr =0 (表示先進先出緩沖器中并無足夠的數(shù)據(jù))。在來源地址與寬度產(chǎn)生器212發(fā)出寫入請求而將來源端220的數(shù)據(jù)Din 寫入緩沖器216后,緩沖器216便依其所剩存儲空間而決定切換至狀態(tài)S2或 狀態(tài)S3。若緩沖器216尚有足夠的未使用存儲空間,則1£沖器216操作于狀 態(tài)S2而設定信號Swr = 1以及信號Srr = 1 (表示先進先出緩沖器216中有 足夠的暫存數(shù)據(jù)可以寫入或讀取)。在狀態(tài)S2中,來源端220的輸入數(shù)據(jù) Din可以寫入先進先出緩沖器216,而先進先出緩沖器216亦可以因應目的地 地址與寬度產(chǎn)生器214的讀取請求而將數(shù)據(jù)Dout輸出給目的地端222。理想 上,若來源地址與寬度產(chǎn)生器212發(fā)出寫入請求以及目的地地址與寬度產(chǎn)生 器214發(fā)出讀取請求二者供需平衡,則緩沖器216將會保持操作在狀態(tài)S2。若輸出數(shù)據(jù)Dout的量大于輸入數(shù)據(jù)Din的量,則緩沖器216便可能會因 為無法滿足目的地地址與寬度產(chǎn)生器214的讀取請求而切換至狀態(tài)Sl。若輸 入數(shù)據(jù)Din的量大于輸出數(shù)據(jù)Dout的量,則緩沖器216便可能會因為存儲空 間不足而切換至狀態(tài)S3。在狀態(tài)S3中,緩沖器216操作設定信號Swr = 0 (表示先進先出緩沖器 216沒具有足夠的空間可以寫入數(shù)據(jù))以及信號Srr = 1。 一直到目的地地址 與寬度產(chǎn)生器214發(fā)出讀取請求而將緩沖器216內(nèi)的凄t據(jù)讀出,緩沖器216 才會改操作在狀態(tài)S2 (或S1)。若信號Srr-l,則表示先進先出緩沖器216 中,有足夠的暫存數(shù)據(jù)可以讀取。以下將依本發(fā)明提供一種作業(yè)流程的時程控管方法的實施例。此領域具 有通常知識者可以計算機程序的形式實現(xiàn)下述諸實施例,并利用計算機可讀 取存儲媒體存儲此一計算機程序,以利計算機執(zhí)行之,讓動態(tài)調(diào)整傳輸數(shù)據(jù) 寬度的方法以電子自動化的方式完成。在下述諸實施例中,將以直接存儲器 存取控制器做為本發(fā)明的實施范例,而前述配置圖例為具有動態(tài)調(diào)整傳輸數(shù) 據(jù)寬度的直接存儲器存取控制器的電路圖。圖4為本發(fā)明一實施例的動態(tài)調(diào)整傳輸數(shù)據(jù)寬度的方法的步驟流程圖。 以下就本實施例的動態(tài)調(diào)整傳輸數(shù)據(jù)寬度的方法所進行的步驟作詳盡說明。 本發(fā)明的動態(tài)調(diào)整傳輸數(shù)據(jù)寬度的方法,適用于來源地址與寬度產(chǎn)生器212 和目的地地址與寬度產(chǎn)生器214,在此以來源地址與寬度產(chǎn)生器212為例說 明。請參照圖4,如數(shù)據(jù)筆數(shù)p-bszl、 一連續(xù)數(shù)據(jù)段的數(shù)據(jù)筆數(shù)p-countl、以及傳輸數(shù)據(jù)的起始 數(shù)據(jù)地址p-saddrl等參數(shù)而設定各個寄存器的參數(shù)起始值r—bsz *~ p —bszl r—coimt — p_countl r—saddr — p_saddrl r—addr — p—saddrl 亦即,將總傳輸數(shù)據(jù)筆數(shù)p-bszl寫入寄存器r_bsz,將連續(xù)數(shù)據(jù)段的數(shù) 量p—countl寫入寄存器r-count,以及將起始數(shù)據(jù)地址p — saddrl寫入寄存 器r —saddr與寄存器r —addr。再來進行步驟S405,判斷寄存器r_bsz的內(nèi)容是否大于0。若寄存器 r_bsz=0,表示已完成數(shù)據(jù)傳輸,則結束此次DMA操作。若寄存器r-bsz>0, 則進行步驟S410。步驟S410說明,若寄存器r-bsz的值大于寄存器r-count的值,則表示 目前還沒有處理到最后一段連續(xù)數(shù)據(jù)段。此時,設定X-r-coimt。若寄存器 r-bsz的值小于或等于寄存器r-count的值,則表示目前所處理的連續(xù)數(shù)據(jù) 段是最后一個連續(xù)數(shù)據(jù)段。此時,步驟S410設定X-r — bsz。接下來的步驟,是要決定傳輸數(shù)據(jù)的數(shù)據(jù)寬度傳輸模式。步驟S412判斷 是否要使用一般模式(aligned mode)。若要使用一般模式,則進行步驟S415。 若要使用不定邊界模式(nonaligned mode),則進行步驟S420。其中,不定 邊界模式為本發(fā)明提出的一種數(shù)據(jù)傳輸模式,可以提高數(shù)據(jù)傳輸?shù)男?,?下將以實施例作更詳盡的說明。步驟S420判斷X是否大于等于4。若X大于等于4 (表示目前連續(xù)數(shù)據(jù) 段中尚未處理的數(shù)據(jù)量足夠使用字符傳輸模式進行數(shù)據(jù)傳輸),則進行步驟 S425,否則進行步驟S430。步驟S425會去判斷寄存器r_addr的值(表示目 前要處理的地址)是落在字符邊界(word boundary )、半字符邊界(half-word boundary)、或是字節(jié)邊界(byte boundary )。在此,i設數(shù)據(jù)總線最大寬度 為一字符(即4個字節(jié)),以下將配合圖1說明邊界的定義。以選擇最大的 數(shù)據(jù)傳輸量為優(yōu)先考量,若目前要處理的地址為Gx00(或是0x04、 0x08、…), 則一次存取4筆數(shù)據(jù)B1、 B2、 Al、 A2將是比較有效率的處理方式。因此,地 址為0x00、 0x04、 0x08、…等處便選擇字符邊界。若目前要處理的地址為0x02 (或是0x06、 0x0a、…),則一次存取2筆數(shù)據(jù)A1、 A2將是比較好的處理方式。因此,地址為0x02、 0x06、 0x0a、…等處便選擇半字符邊界。另外, 其余地址皆選擇字節(jié)邊界。在本實施例中,步驟S425可以4企查寄存器r —addr的值的最后2個位是 否為r00bJ ,便可以判斷寄存器r —addr的值是否落在字符邊界。若寄存器 r—addr的值落在字符邊界,則來源地址與寬度產(chǎn)生器212便在步驟S425設 定寄存器r — size-W (在此W的值可以為4 ),以便后續(xù)步驟進行字符傳輸模 式。若步驟S425檢查寄存器r-addr的值的最后2個位為「10b」,則可以判 斷寄存器r_ad(ir的值落在半字符邊界。若寄存器r_addr的值落在半字符邊 界,則來源地址與寬度產(chǎn)生器2i2便在步驟S425設定寄存器r-size-HW (在 此HW的值可以為2),以便后續(xù)步驟進行半字符傳輸沖莫式。若步驟S425檢 查寄存器r-addr的值的最后2個位為r Olb」或「 lib」,則可以判斷寄存器 r—addr的值落在字節(jié)邊界。若寄存器r_addr的值落在字節(jié)邊界,則來源地 址與寬度產(chǎn)生器212便在步驟S425設定寄存器r —size-B (在此B的值可以 為l),以便后續(xù)步驟進行字節(jié)傳輸模式。步驟S430判斷X是否大于等于2。若X大于等于2 (表示目前連續(xù)數(shù)據(jù) 段中尚未處理的數(shù)據(jù)量足夠使用半字符傳輸模式進行凄t據(jù)傳輸).,則進行步 驟S435,否則進行步驟S437。步驟S435會去判斷寄存器r_addr的值是落在 半字符邊界、或是字節(jié)邊界。在本實施例中,步驟S435可以檢查寄存器r —addr 的值的最后2個位是否為「 G0b」或HOb」,便可以判斷寄存器r_addr的值 落在半字符邊界;否則,判斷寄存器r-addr的值落在字節(jié)邊界。若寄存器 r_addr的值落在半字符邊界,則來源地址與寬度產(chǎn)生器212便在步驟S435 設定寄存器r —size=HW,以便后續(xù)步驟進行半字符傳輸模式。若寄存器r —addr 的值落在字節(jié)邊界,則來源地址與寬度產(chǎn)生器212便在步驟S435設定寄存器 r_size=B,以便后續(xù)步驟進行字節(jié)傳輸模式。當進行步驟S437時,表示此時X-1 (表示目前連續(xù)數(shù)據(jù)段中尚未處理的 數(shù)據(jù)量不足以使用字符/半字符傳輸模式進行數(shù)據(jù)傳輸)。因此,來源地址與 寬度產(chǎn)生器212便在步驟S437設定寄存器r —size=B,以便后續(xù)步驟進行字 節(jié)傳輸模式。當完成寄存器r —size的設定后,便進行步驟S"0。步驟S"0依據(jù)寄存 器r_addr (即目前要處理的地址)與寄存器r — size (表示一次存取的數(shù)據(jù)筆 數(shù),也代表目前采取的數(shù)據(jù)寬度傳輸模式)的內(nèi)容來傳輸數(shù)據(jù)。接著,來源地址與寬度產(chǎn)生器212進行步驟S443以判斷寄存器r—count - r_size的值 是否大于0。若此時寄存器r-count - r_size的值等于0,則表示目前連續(xù)數(shù)據(jù)段已 傳輸完成,因此接下來來源地址與寬度產(chǎn)生器212可以進^f亍步驟S452。在步 驟S452中,來源地址與寬度產(chǎn)生器212會將寄存器p-offsetl的值加入寄存 器r-saddr中,使起始數(shù)據(jù)地址指向下一個連續(xù)數(shù)據(jù)^殳。除此之外,來源地 址與寬度產(chǎn)生器2H更重置寄存器r—addr與r—count (即r — count — p_countl以及r—addr — r — saddr ),以便處理起始翁:才居地址r —saddr所指 的連續(xù)數(shù)據(jù)段。由于在步驟S440中已經(jīng)依據(jù)寄存器r-size完成指定數(shù)量的 數(shù)據(jù)傳輸,因此必需將代表目前未處理數(shù)據(jù)總筆數(shù)的r-bsz值減去r —size值, 以更新目前未處理數(shù)據(jù)的總筆數(shù)紀錄。另外,若寄存器r —count - r —size的值大于0,則表示目前連續(xù)數(shù)據(jù)段 還沒完成傳輸,因此接下來來源地址與寬度產(chǎn)生器212可以進行步驟S450。 由于在步驟S440中已經(jīng)依據(jù)寄存器r_size完成指定凄t量的數(shù)據(jù)傳輸,因此, 在步驟S450中,必需將代表一次存取數(shù)據(jù)筆數(shù)的r —size值加入r — addr值中 (即r—addr — r—addr + r —size),以更新目前欲處理凄史據(jù)的地址。來源 地址與寬度產(chǎn)生器212亦會在步驟S450中將寄存器r-count的值減去r_size 值(即r — count — r_count - r —size),以更新目前連續(xù)數(shù)據(jù)段中尚未處 理的數(shù)據(jù)筆數(shù)。除此之外,來源地址與寬度產(chǎn)生器212亦會在步驟S450中將 代表目前未處理數(shù)據(jù)總筆數(shù)的r-bsz值減去r —size值(即r —bsz — r —bsz-r_size),以更新目前未處理數(shù)據(jù)的總筆數(shù)紀錄。另外,若信號控制模塊210依據(jù)控制信號CS而決定4吏用一般模式(即步 驟S412判斷要使用一般模式),則來源地址與寬度產(chǎn)生器212進行步驟S415。 來源地址與寬度產(chǎn)生器212依據(jù)信號控制模塊210所指定的數(shù)據(jù)寬度傳輸模 式而進行S415。前述決定的數(shù)據(jù)寬度傳輸模式的手段可以任何現(xiàn)有技術來加 以實現(xiàn),在此不再贅述。在步驟S415中,來源地址與寬度產(chǎn)生器212依據(jù)信 號控制模塊210的控制而選擇字符傳輸模式、半字符傳輸模式、位傳輸模式 其中一種數(shù)據(jù)寬度傳輸模式,并依據(jù)此一預定的數(shù)據(jù)寬度傳輸模式而將 r-size的值設定為W、 HW或B。需注意的是,在一般才莫式(即步驟S415 )中, 一旦在初始傳輸之時(例如在步驟S401之時)決定了數(shù)據(jù)寬度傳輸模式,則在DMA的操作過程必須使用同一種數(shù)據(jù)寬度傳輸模式完成數(shù)據(jù)傳輸而無法動 態(tài)切換傳輸模式。圖5為依據(jù)本發(fā)明實施例說明數(shù)據(jù)的傳輸方式。在本實施例中,共有l(wèi)l 筆數(shù)據(jù)(分為兩個連續(xù)數(shù)據(jù)段)要進行存取,而第一筆^:據(jù)(即數(shù)據(jù)A1)的 地址為0x02。此兩個連續(xù)數(shù)據(jù)段分別為數(shù)據(jù)A1-A7和^t據(jù)A8-A11。兩個連續(xù) 數(shù)據(jù)段之間的距離為5,而連續(xù)數(shù)據(jù)段的最大數(shù)據(jù)筆數(shù)是7。請合并參照圖4 和圖5,如步驟S401所述,設定寄存器的參數(shù)起始值為r_bsz=ll、 r_count =7、 r —saddr=0x02、 r—addr=0x02、 p—offsetl=ll。 "l妄著,進行步驟S405, 判斷總傳輸數(shù)據(jù)筆數(shù)r-bsz是否大于O (此時r-bsz-ll)。因此,進行步驟 S410。在步驟S410中,(r_bsz=ll) > (r—count =7),因此設定X=r_count=7。 接著,進行步驟S412。在本實施例中假設使用不定邊界才莫式來傳輸數(shù)據(jù),因 此不再說明步驟S415。由于目前X-r—count-7,因此進行步驟S425。步驟S425檢查寄存器r_addr 的值(此時為0x02)的最后2個位為rlOb」,因此判斷寄存器r—addr的值 落在半字符邊界,則來源地址與寬度產(chǎn)生器212便在步驟S425設定寄存器 r —size=HW=2。步驟S440依據(jù)寄存器r—addr (此時為0x02 )與寄存器r_size (此時為2)來存取數(shù)據(jù)Al-A2。完成步驟S440后,由于連續(xù)數(shù)據(jù)段A1-A7尚有未處理的數(shù)據(jù),因此進行步驟S450。由于在步驟S440中已經(jīng)依據(jù)寄存器r — size完成指定數(shù)量的數(shù)據(jù)傳輸, 因此在步驟S450必需將r — size值(目前為2)加入r — addr值中,以更新目 前欲處理數(shù)據(jù)的地址r — addr=0x04;將寄存器r — count的值減去r —size值, 以更新目前連續(xù)數(shù)據(jù)段中尚未處理的數(shù)據(jù)筆數(shù)r_count=5;將r — bsz值減去 r - s i ze值,以更新目前未處理數(shù)據(jù)的總筆數(shù)紀錄r _bs z=9 。接下來進行步驟S405,判斷總傳輸數(shù)據(jù)筆數(shù)r-bsz是否大于0(此時r—bsz =9)。因此,進行步驟S410。在步驟S410中,(r—bsz=9) 〉 (r — count =5), 因此設定X-r-count-5。由于目前X=r_count=5,因此進行步驟S425。步驟S425檢查寄存器r一addr的值(此時為0x04 )的最后2個位為r 00b J, 因此判斷寄存器r-addr的值落在字符邊界,則來源地址與寬度產(chǎn)生器212便 在步驟S425設定寄存器r_size=W=4。步驟S44Q依據(jù)寄存器r_addr=0x04與 寄存器r — size=4來存取數(shù)據(jù)A3 ~ A6。完成步驟S440后,由于連續(xù)數(shù)據(jù)段Al ~ A7尚有未處理的凝:據(jù),因此進行步驟S450。步驟S"0將r —size=4加入r—addr值中,以更新目前名欠處理數(shù)據(jù)的地址 r一addr = 0x04 + 4 = 0x08;將寄存器r_count的值減去r — size值,以更新 目前連續(xù)數(shù)據(jù)段中尚未處理的數(shù)據(jù)筆數(shù)r-count = 5-4 = 1;將r—bsz值減去 r-size值,以更新目前未處理數(shù)據(jù)的總筆數(shù)紀錄r_bsz = 9-4 = 5。接下來進行步驟S405,判斷總傳輸數(shù)據(jù)筆數(shù)r-bsz是否大于0(此時r — bsz =5)。因此,進行步驟S410。在步驟S410中,(r—bsz = 5) > (r — count = 1),因此設定X = r —count = 1。由于目前X = r—count = 1,因此進行步驟 S437。步驟S437設定寄存器r — size-B-l。步驟S440依據(jù)寄存器r_addr=0x08與寄存器r_size=l來存取數(shù)據(jù)A7。 完成步驟S440后,由于連續(xù)數(shù)據(jù)段A1 A7全部處理完畢,因此進行步驟S452。步驟S452將寄存器p—offsetl的值加入寄存器r —saddr中(即r_saddr =0x02 + 11 = OxOd),使起始數(shù)據(jù)地址指向下一個連續(xù)^據(jù)段A8-All;重 置寄存器r—addr與r — count,使r—addr = r — saddr = 0x0d以及r — count = p-count = 7;將r — bsz值減去r —size值,以更新目前未處理數(shù)據(jù)的總筆數(shù) 紀錄r一bsz = 5-1 = 4。接下來進行步驟S405,判斷總傳輸數(shù)據(jù)筆數(shù)r-bsz是否大于0(此時r-bsz =4)。因此,進行步驟S410。在步驟S410中,(r—bsz = 4) < (r —count = 7),因此設定X = r—bsz = 4。由于目前X = 4,因此進行步驟S425。步驟S425檢查寄存器r—addr的值(此時為0x0d )的最后2個位為「 01b J, 因此判斷寄存器r-addr的值落在字節(jié)邊界,則來源地址與寬度產(chǎn)生器212便 在步驟S425設定寄存器r_size = B = 1。步驟S440依據(jù)寄存器r — addr = 0x0d 與寄存器r_size = 1來存取數(shù)據(jù)A8。完成步驟S440后,由于連續(xù)數(shù)據(jù)段A8-All尚有未處理的數(shù)據(jù),因此進行步驟S450。步驟S450將r_size=l加入r—addr值中,以更新目前欲處理數(shù)據(jù)的地址 r一addr = OxOd + 1 = OxOe;將寄存器r — count的值減去r — size值,以更新 目前連續(xù)數(shù)據(jù)段中尚未處理的數(shù)據(jù)筆數(shù)r-count = 7-1 = 6;將r—bsz值減去 r —size值,以更新目前未處理數(shù)據(jù)的總筆數(shù)紀錄r—bsz = 4-1 = 3。接下來進行步驟S405,判斷總傳輸數(shù)據(jù)筆數(shù)r-bsz是否大于0(此時r—bsz =3)。因此,進行步驟S410。在步驟S410中,(r — bsz = 3) < (r —count = 6),因此設定X = r_bsz = 3。由于目前X = 3,因此進行步驟S435。步驟S435檢查寄存器r一addr的值(此時為0x0e)的最后2個位為r 10b J, 因此判斷寄存器r—addr的值落在半字符邊界,則來源地址與寬度產(chǎn)生器212 便在步驟S435設定寄存器r — size = HW = 2。步驟S440依據(jù)寄存器r—addr = OxOe與寄存器r —size-2來存取數(shù)據(jù)A9-A10。完成步驟S440后,由于連續(xù) 數(shù)據(jù)段A8 A11尚有未處理的數(shù)據(jù),因此進行步驟S450。步驟S450將r —size=2加入r一addr值中,以更新目前名大處理lt據(jù)的地址 r一addr - OxOe + 2 - 0x10;將寄存器r_count的值減去r — size值,以更新 目前連續(xù)數(shù)據(jù)段中尚未處理的數(shù)據(jù)筆數(shù)r —count = 6-2 = 4;將r-bsz值減去 r —size值,以更新目前未處理數(shù)據(jù)的總筆數(shù)紀錄r —bsz = 3-2 = 1。接下來進行步驟S405,判斷總傳輸數(shù)據(jù)筆數(shù)r-bsz是否大于0(此時r-bsz =1)。因此,進行步驟S410。在步驟S410中,(r-bsz = 1) < (r — count = 4),因此設定X = r—bsz = 1。由于目前X = 1,因此進行步驟S437。步驟 S437設定寄存器r —size=B=l。步驟S440依據(jù)寄存器r-addr = 0x10與寄存器r —size = 1來存取數(shù)據(jù) All。由于最后r_bsz會等于0,因此經(jīng)步驟S405判斷后會結束此次DMA操 作。此外,若有數(shù)據(jù)要寫入存儲器。在現(xiàn)有的技術中,若要使用于字符傳輸 模式寫入,則必須寫入字符邊界上。但在實際操作上,并非所有的數(shù)據(jù)皆位 于字符邊界。因此,為避免數(shù)據(jù)被覆寫,通常都是采用字節(jié)傳輸模式寫入。 然而,以字節(jié)傳輸才莫式寫入,則會浪費許多時間。若藉由本發(fā)明的不定邊界模式寫入存儲器,則可以依照數(shù)據(jù)地址選擇適當?shù)臄?shù)據(jù)寬度傳輸模式,不僅可以提高寫入效率,也可以避免覆寫的問題。 應用本發(fā)明者可以其它實施方式來實現(xiàn)本發(fā)明。例如,以下便是^f'務改上述實 施例所獲得的另一實施例。藉由修改上述實施例在不定邊界模式(nonaligned mode)讀取來源端的方式來做加強,使得在實施上可以更進一步加快傳輸效 率。請參照圖2,以不定邊界模式來說,對存儲器作讀取的動作并不會改變 存儲器內(nèi)容。依據(jù)現(xiàn)今標準,在總線中必須選擇「字節(jié)讀取J 、 「半字符讀 取J以及「字符讀取」三種之一。以圖1為例,若想讀取來源端220的數(shù)據(jù) Al-A7與數(shù)據(jù)B3-B4,直接存儲器存取控制器200可以用三次r字符讀取J來 讀取來源端220的數(shù)據(jù)。亦即,來源端220發(fā)送出的來源數(shù)據(jù)地址Sra與寬度Srs分別為(0x00, word)、 (0x04, word) 、 (0x08, word)。實際在來源地 址與寬度產(chǎn)生器212中所傳遞的數(shù)據(jù)地址與寬度是(0x02, halfword)、 (0x04, word)、 (0x08, 3 bytes)。其中3 bytes是較先前增加的另 一種數(shù)據(jù)寬度傳 輸模式,即每次以三個字節(jié)做為傳輸單位。因此,來源地址與寬度產(chǎn)生器212必需將其內(nèi)部所傳遞地址的最后兩個 位更改為OOb以輸出給來源端220,也就是全部對齊到字符邊界(所以0x02 -> 0x00, 0x04 -> 0x04, 0x08 -〉 0x08)。然后,來源端220與直接存儲器存 取控制器200之間一律以「字符讀取」來傳遞數(shù)據(jù),結果就會是(OxOO, word)、 (0x04, word)、 (0x08, word)。而在來源地址與寬度產(chǎn)生器212中實際傳遞 的是(0x02, halfword)、 (0x04, word) 、 (0x08, 3 bytes)。再以圖5讀取A8-All為例,在來源地址與寬度產(chǎn)生器212中所傳遞的是 (0x0d, 3 bytes) 、 (0x10, byte),然而在來源端總線220上所傳遞的來源數(shù) 據(jù)地址Sra與寬度Srs卻是(0x0c, word) 、 (0x10, word)。因此,這種實施 例是由來源地址與寬度產(chǎn)生器212丟出一個調(diào)整過后的來源翁:據(jù)地址Sra與 寬度Srs到來源端220中取得數(shù)據(jù),然后在來源地址與寬度產(chǎn)生器212內(nèi)部 根據(jù)真正的地址與寬度將真正需要的數(shù)據(jù)暫存到先進先出緩沖器216中。此 種方法只有在讀取的時候使用,在寫入數(shù)據(jù)至目的地端222時還是依據(jù)先前 所述實施例的動態(tài)調(diào)整方式來進行l(wèi)t據(jù)寫入。綜上所述,本發(fā)明依據(jù)傳輸數(shù)據(jù)的數(shù)據(jù)地址,以決定傳輸數(shù)據(jù)的數(shù)據(jù)寬 度傳輸模式。因此,本發(fā)明的動態(tài)調(diào)整傳輸數(shù)據(jù)寬度的方法與直接存儲器存 取控制器,可以使用最佳的數(shù)據(jù)寬度傳輸。藉此,不僅可以節(jié)省提高傳輸效 率,更可以符合實際上的需求。雖然本發(fā)明已以較佳實施例揭露如上,然其并非用于限定本發(fā)明,任何 熟習此技藝者,在不脫離本發(fā)明的精神和范圍內(nèi),當可作些許的更動與潤飾, 因此本發(fā)明的保護范圍當視本發(fā)明的申請專利范圍所界定者為準。
權利要求
1. 一種動態(tài)調(diào)整傳輸數(shù)據(jù)寬度的方法,包括檢測一傳輸數(shù)據(jù)的一數(shù)據(jù)筆數(shù);依據(jù)該傳輸數(shù)據(jù)的數(shù)據(jù)地址,以決定該傳輸數(shù)據(jù)的一數(shù)據(jù)寬度傳輸模式,其中,該數(shù)據(jù)寬度傳輸模式包括一第一傳輸模式以及一第二傳輸模式;以及依據(jù)該傳輸數(shù)據(jù)的數(shù)據(jù)地址、該數(shù)據(jù)寬度傳輸模式與該數(shù)據(jù)筆數(shù)以傳輸數(shù)據(jù)。
2. 如權利要求1所述的動態(tài)調(diào)整傳輸數(shù)據(jù)寬度的方法,其中,該數(shù)據(jù)筆 數(shù)至少包括一連續(xù)數(shù)據(jù)筆數(shù)。
3. 如權利要求1所述的動態(tài)調(diào)整傳輸數(shù)據(jù)寬度的方法,其中,該數(shù)據(jù)筆 數(shù)等于0,則表示該傳輸數(shù)據(jù)已完成傳輸。
4. 如權利要求1所述的動態(tài)調(diào)整傳輸數(shù)據(jù)寬度的方法,更包括設定多數(shù) 個參數(shù)的起始值,其中,該些參數(shù)包括該總數(shù)據(jù)筆數(shù)、連續(xù)數(shù)據(jù)筆數(shù)、相鄰 連續(xù)數(shù)據(jù)段起始地址之間的距離、 一傳輸數(shù)據(jù)的起始^t據(jù)地址以及一傳輸數(shù) 據(jù)的目的地數(shù)據(jù)地址。
5. 如權利要求1所述的動態(tài)調(diào)整傳輸數(shù)據(jù)寬度的方法,其中,該數(shù)據(jù)寬度傳輸模式更包括一第三傳輸模式。
6. 如權利要求5所述的動態(tài)調(diào)整傳輸數(shù)據(jù)寬度的方法,其中,該第一傳輸模式、該第二傳輸^^莫式與該第三傳輸模式分別為字符傳輸模式、半字符傳 輸模式以及字節(jié)傳輸模式。
7. 如權利要求6所述的動態(tài)調(diào)整傳輸數(shù)據(jù)寬度的方法,其中,決定該傳輸數(shù)據(jù)的數(shù)據(jù)寬度傳輸模式包括下列步驟當該傳輸數(shù)據(jù)的^L據(jù)地址位于字符邊界,則以字符傳輸模式為該數(shù)據(jù)寬 度傳輸模式;當該傳輸數(shù)據(jù)的數(shù)據(jù)地址位于半字符邊界,則以半字符傳輸模式為該數(shù) 據(jù)寬度傳輸模式;以及當該傳輸數(shù)據(jù)的數(shù)據(jù)地址位于字節(jié)邊界,則以字節(jié)傳輸模式為該數(shù)據(jù)寬 度傳輸模式。
8. 如權利要求1所述的動態(tài)調(diào)整傳輸數(shù)據(jù)寬度的方法,更包括4企測該連 續(xù)數(shù)據(jù)是否已完成傳輸。
9. 如權利要求8所述的動態(tài)調(diào)整傳輸數(shù)據(jù)寬度的方法,其中,若該連續(xù)數(shù)據(jù)還沒完成傳輸,則該傳輸數(shù)據(jù)的數(shù)據(jù):t也址加上上一筆已傳輸數(shù)據(jù)寬度;以及若該連續(xù)數(shù)據(jù)還沒完成傳輸,則該連續(xù)數(shù)據(jù)筆數(shù)和該總數(shù)據(jù)筆數(shù)分別減 去已傳輸數(shù)據(jù)寬度。
10. 如權利要求8所述的動態(tài)調(diào)整傳輸數(shù)據(jù)寬度的方法,其中, 若該連續(xù)數(shù)據(jù)已完成傳輸,則該傳輸數(shù)據(jù)的起始數(shù)據(jù)地址加上一相鄰連續(xù)數(shù)據(jù)段起始地址之間的距離,以傳輸下一連續(xù)數(shù)據(jù)革殳;若該連續(xù)數(shù)據(jù)已完成傳輸,則該傳輸數(shù)據(jù)的起始數(shù)據(jù)地址寫入傳輸數(shù)據(jù) 的數(shù)據(jù)地址,并重新設定連續(xù)數(shù)據(jù)筆數(shù);以及若該連續(xù)數(shù)據(jù)已完成傳輸,則該總數(shù)據(jù)筆數(shù)減去已傳輸數(shù)據(jù)寬度。
11. 一種計算機可讀取存儲媒體,用于存儲一計算才幾程序,該計算機程序 用于加載至一計算機系統(tǒng)中并且使得該計算機系統(tǒng)執(zhí)行如權利要求1所述的 方法。
12. —種具有動態(tài)調(diào)整傳輸數(shù)據(jù)寬度的直接存儲器存取控制器,包括一來源地址與寬度產(chǎn)生器,用于傳送包括一傳輸lt據(jù)的來源數(shù)據(jù)地址和 來源數(shù)據(jù)寬度;以及一目的地地址與寬度產(chǎn)生器,用于傳送包括一傳輸數(shù)據(jù)的目的地數(shù)據(jù)地 址和目的地數(shù)據(jù)寬度;以及一先進先出緩沖器,耦接至該來源地址與寬度產(chǎn)生器以及目的地地址與 寬度產(chǎn)生器,以暫時存放該傳輸數(shù)據(jù);其中,該傳輸數(shù)據(jù)的傳輸方式為依據(jù)該傳輸數(shù)據(jù)的凄t據(jù)地址,以決定該 傳輸數(shù)據(jù)的一數(shù)據(jù)寬度傳輸模式,其中,該數(shù)據(jù)寬度傳輸模式包括一第一傳 輸模式以及一 第二傳輸模式。
13. 如權利要求12所述的具有動態(tài)調(diào)整傳輸數(shù)據(jù)寬度的直接存儲器存取 控制器,更包括一信號控制模塊,耦接至該來源地址與寬度產(chǎn)生器和該目的 地地址與寬度產(chǎn)生器,用于將該傳輸數(shù)據(jù)的信息傳送至設定該來源地址與寬 度產(chǎn)生器和該目的地地址與寬度產(chǎn)生器。
14. 如權利要求12所述的具有動態(tài)調(diào)整傳輸數(shù)據(jù)寬度的直接存儲器存取 控制器,其中,該數(shù)據(jù)寬度傳輸模式更包括一第三傳輸模式。
15.如權利要求14所述的具有動態(tài)調(diào)整傳輸數(shù)據(jù)寬度的直接存儲器存取 控制器,其中,該第一傳輸模式、該第二傳輸模式與該第三傳輸模式分別為 字符傳輸模式、半字符傳輸模式以及字節(jié)傳輸模式。
全文摘要
一種動態(tài)調(diào)整傳輸數(shù)據(jù)寬度的方法,包括下列步驟。首先,檢測傳輸數(shù)據(jù)的數(shù)據(jù)筆數(shù)。依據(jù)傳輸數(shù)據(jù)的數(shù)據(jù)地址,以決定數(shù)據(jù)寬度傳輸模式。其中,數(shù)據(jù)寬度傳輸模式可以包括字符傳輸模式、半字符傳輸模式以及字節(jié)傳輸模式至少其中之一。依據(jù)傳輸數(shù)據(jù)的數(shù)據(jù)地址、數(shù)據(jù)寬度傳輸模式與數(shù)據(jù)筆數(shù)以傳輸數(shù)據(jù)。
文檔編號G06F13/28GK101276315SQ20071009190
公開日2008年10月1日 申請日期2007年3月30日 優(yōu)先權日2007年3月30日
發(fā)明者屠禎繼, 張展豪, 陳玉書 申請人:財團法人工業(yè)技術研究院
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會獲得點贊!
1