專利名稱:利用直接存儲器存取介質傳輸數據的方法和裝置的制作方法
技術領域:
本發明涉及一種用于存儲數據的裝置和方法,尤其涉及一種將存儲在一個指定存儲器中的數據傳送到另一個存儲區域的裝置和方法。
背景技術:
通常是響應一個來自CPU(中央處理單元)的命令而傳送數據。CPU是控制整個系統的裝置。CPU控制著對從各種輸入單元接收到的數據的一組處理操作,以及將上述處理結果輸出到輸出單元的操作。當CPU接收并處理來自輸入單元的數據時,就給CPU一個很大的負載。為了減輕CPU的負載由另一處理程序執行CPU的部分功能。為了滿足這種需要,開發了DMA(直接存儲器存取)作為附加的CPU功能的一個例子,DMA處理程序執行讀取存儲在一個指定存儲器或者存儲區域的數據,并且將所讀取的數據傳送到另一存儲器或者存儲區域的功能。當CPU傳送來自特定存儲器的少量數據傳送給另一存儲器時,不會給CPU一個很大的負載。但是,如果響應CPU的指令把來自特定存儲器的大量數據或超過預定數據大小的數據傳送給另一存儲器時,就會給CPU一個很大的負載。當傳送較大的數據時,與DMA處理程序相關的數據傳送速率就會變得比與CPU相關的數據傳送速率高一些。通常預定數據大小大約是512字節。
圖1是使用傳統DMA的系統的方框圖。圖1中示出了由Advanced RISCMachines(ARM)Ltd公司生產的先進的微控制器總線架構(AMBA)。AMBA包括以可在高頻率下運行的先進的高性能總線(AHB)以及一個可在低頻下運行的先進的外設總線(APB)。AHB-APB橋108耦合在AHB和APB之間,以便高速率總線和低速率總線可以相互交換數據。下面看一下圖1中剩余的其它系統部件,AHB塊包括中央處理單元(CPU)100,第一存儲器單元102DMA裝置104和總線判定器106。APB塊包括以第二存儲單元110和輸入/輸出(I/O)單元112。I/O單元112除其它部件外,還包括通用串行總線(USB),輔助鍵盤,通用異步收發報機(UART)。為了將存儲在第一存儲單元102中的數據傳送到第二存儲單元110,由CPU100控制和處理所有的操作。當存儲在第一存儲單元102中的數據傳送到第二存儲單元110時,CPU100讀取存儲在第一存儲單元102中的數據。在被讀取的數據傳送到第二存儲單元110之前,CPU100執行必要的操作。但是,當將大量數據從第一存儲單元102傳送到第二存儲單元110時,CPU執行一組操作就變得很困難。問題在于除了數據傳輸操作外,CPU100還必須執行與系統有關的許多操作。為了解決所述問題,開發了DMA裝置。
圖1示出了單個DMA裝置104。當然,按照本系統可以配置許多DMA裝置。DMA裝置104可以將存儲在AHB塊中的數據傳送到APB塊中,或者將存儲在APB塊中的數據傳送到AHB塊中。在這種情況下,AHB塊和APB塊中包括了多個存儲單元。DMA裝置104響應由CPU100發出的控制命令或是外部控制命令將存儲在第一存儲單元102的數據傳送到第二存儲單元110。由DMA裝置104執行的的數據傳輸操作將參照圖3詳細說明。
圖2是圖1中的DMA裝置104的內部結構方框圖。如圖2所示,DMA裝置104除其它部件外,還包括控制寄存器,源地址寄存器(SAR),目標地址寄存器(DAR),傳輸計數寄存器(TCR),先進先出(FIFO)緩沖器,總線控制器和接口。SAR是一個用于指明初始源地址的寄存器,在所述地址讀取來自第一存儲器單元102的數據。DAR是一個用于指定初始目標地址的寄存器,在所述地址中將已讀取的來自于第一存儲器單元102的數據首次寫入到第二存儲器單元110中。TCR是一個寄存器,用于當DMA裝置104將來自第一存儲器單元102的數據寫入到第二存儲器單元110中時指定寫入操作的數目。進而,根據當讀取在第一存儲裝置102中的源地址中的數據時與讀取操作有關的地址值是否必須增加、減少或者固定來執行一個控制操作,隨后讀取下一個數據。更進一步,根據當寫入第一存儲裝置102中的源地址中的數據時與寫入操作有關的地址值是否必須增加、減少或者固定來執行一個寫入操作,隨后寫入下一個數據。當數據從第一存儲單元102傳送到第二存儲單元110時,控制寄存器執行用于一組能夠被一次傳輸的數據的控制操作。能夠一次傳輸的一組數據可以是一個字節(8位),半個字(16位),一個字(32位)或者其它可定義的值。寄存在寄存器中的值與來自CPU100的命令或者來自外部控制器的命令有關。
如果位于DMA裝置中的寄存器值如前述設置,那么從圖1中所示第一存儲單元102讀取數據并將其寫入到第二存儲器單元110中。
DMA裝置104僅執行將存儲在第一存儲單元的數據傳送到第二存儲器單元中的功能。但是,可以發出請求以便具有不同于存儲在第一存儲單元的數據形式類型的數據存儲在第二存儲器單元中。例如,發出請求以便存儲在第一存儲單元的數據移動預定的位數,并且所述移位的數據必須存儲在第二存儲器單元中。在這種情況下,DMA裝置通常僅執行用于傳送數據的控制操作而不執行數據移位操作,并且CPU通常將已傳送的數據移動預定的位數。CPU將數據移動預定的位數并將移位后的數據傳送到另一存儲單元,而不使用DMA裝置。在CPU將數據移動預定的位數并將移位后的數據傳送到另一存儲單元的情況下,傳輸速率比在DMA裝置傳送數據的情況下的速率要小。DMA執行CPU的部分功能以便減輕CPU的負載。然而,問題在于因為CPU直接執行移動指定位數的數據移位操作,所以CPU負載不能被減輕。由此,需要有一個在不考慮CPU的情況下用于移動數據指定位數并且傳送被移位數據的新方法。
發明內容
因此,考慮到上述問題提出了本發明的實施例,并且本發明的目的之一就是要提供一種當數據從第一存儲單元傳送到第二存儲單元時,能夠在不考慮CPU的情況下傳輸已被移動了指定位數的數據的方法和裝置。
本發明的另一目的是提供一種能夠減少處理時間上延遲的方法和裝置,所述延遲發生在當傳統CPU以指定的位數移位數據,并且傳送被移位的數據時。
為了實現本發明的上述和其它目的,提出了一種新型裝置。在所述新型裝置中,寄存器值在DMA裝置的控制寄存器內設置,以便決定將移位的指定的位數和移位的方向。如果寄存器值已被完全設定,那么從第一存儲單元讀取數據并將已讀取的數據存儲在DMA裝置的臨時存儲單元中。在讀取完存儲在DMA裝置的臨時存儲單元中的數據后,基于設定的位數和移位方向移位被讀取的數據,并且將被移位的數據存儲在第二存儲單元中。
為了實現本發明的上述和其它目的,提出了一種新型方法。在所述新型方法中,寄存器值在DMA裝置的控制寄存器內設置,以便決定將移位的指定的位數和移位的方向。如果寄存器值已被完全設定,那么從第一存儲單元讀取數據并將已讀取的數據存儲在DMA裝置的臨時存儲單元中。在讀取完存儲在DMA裝置的臨時存儲單元中的數據后,基于設定的位數和移位方向移位被讀取的數據,并且將被移位的數據存儲在第二存儲單元中。
本發明的上述和其它目的、特征和其它優點參照附圖和接下來的詳細說明將會更容易理解,其中圖1示出了傳統先進微控制器總線架構的方框圖。
圖2示出了傳統直接存儲器存取裝置結構的方框圖。
圖3是示出應用到本發明的一個實施例中的Endian轉換操作的視圖。
圖4是示出應用到本發明的一個實施例中的在傳送數據時執行的移位操作的視圖。
圖5是示出應用到本發明的一個實施例中的用于設置DMA裝置的控制寄存器的寄存器值的流程圖。
圖6是示出根據本發明的一個實施例將數據從第一存儲單元傳送到第二存儲單元的視圖。
圖7示出了根據本發明的一個實施例使用協議層移位數據的視圖。
具體實施例方式
下面參照附圖詳細說明本發明的某些優選實施例。在接下來的說明中,當某些包含在本發明中的已知功能和配置的詳細描述使得本發明的主題更加不清楚時,將忽略它們。
如前面在背景技術部分所述,圖2示出了傳統DMA裝置的配置。SAR、DAR、TCR和其它寄存器的值由CPU100或者外部控制裝置指定。但是,根據本發明的一個實施例,在傳送數據時由指定的移位數將一個特定值以及SAR、DAR、TCR和其它寄存器的值指定給移位數據。根據本發明的一個實施例,DMA裝置需要有附加的信息以便處理將被傳送的數據。DMA裝置通常需要用于處理數據的必要信息以及用于傳送所處理的數據的必要信息。所述必要信息項列于表1。用于本發明的一個實施例的控制寄存器的部件以及它們的作用將參照下述表1詳細說明。
表1
如表1所示,控制寄存器由14位組成。功能欄定義了每一位所在位置的功能,以及它相對于位值如何進行功能操作。本發明實施例的控制寄存器的功能將參照上述表1進行說明。每一位的值可以響應用戶的選擇而任意調整。控制寄存器的位0表明DMA裝置104是否必須傳送數據。如果位0的值是“0”,DMA裝置104不傳送數據。如果位0的值是“1”,DMA裝置104傳送數據。當數據量小時,CPU100執行數據傳輸操作。當數據量大時,DMA裝置104執行數據傳輸操作。如果位0的值是“1”,則檢查控制寄存器的位1。
控制寄存器的位1表明DMA裝置104的操作模式。DMA裝置104的操作模式表明DMA裝置104的操作是由硬件(H/W)或者軟件(S/W)執行。如果由軟件執行DMA裝置104的操作,DMA裝置104響應來自CPU100的控制命令執行傳輸操作。如果由硬件執行DMA裝置104的操作,DMA裝置104響應來自外部控制系統的控制命令執行傳輸操作。如果位1的值是“0”,由軟件執行DMA裝置104的操作。另一方面,如果位1的值是“1”,則由硬件執行DMA裝置104的操作。位2和3指示傳輸數據的大小。位2和3指示能夠一次被傳輸的數據位的單位。如果位2和3的值是“00”,數據傳輸操作以8位(一個字節)單位執行。如果位2和3的值是“01”,數據傳輸操作以16位(半個字)單位執行。進而,如果位2和3的值是“10”,數據傳輸操作以32位(一個字)單位執行。
控制寄存器位4指示是否給源地址定位(SAF)賦值。在讀取了存儲于圖2所示的由SAR賦值的地址中的數據之后,控制寄存器位4定義了將被讀取的下一個數據的源地址。根據位4的值,判斷是否增加/減少將被讀取的下一個數據的源地址的值,或者是否要重復讀取存儲在同一個源地址中的數據。如果位4的值是“0”,則增加/減少將被讀取的下一個數據的源地址的值。另一方面,如果位4的值是“1”,則讀取位于與前一源地址相同的地址中的數據,其中前一源地址中的數據已被讀取過。控制寄存器位5表明是否給目標地址定位(DAF)賦值。將在源地址中讀取的數據存儲于圖2所示的由DAR賦值的地址中之后,控制寄存器位5定義了將被存儲的下一個數據的下一個目標地址。根據位5的值,判斷是否增加/減少將被存儲的下一個數據的目標地址的值,或者下一個被讀取過的數據是否要重復地寫入到同一個目標地址中。如果位5的值是“0”,則在增加/減少將被讀取的下一個數據的目標地址的值之后存儲下一個被讀取的數據。但是,如果位5的值是“1”,則將下一個被讀取的數據寫入到與前一目標地址相同的地址中,其中前一目標地址中已被預先寫入過數據。
如果位4的值是“0”,則檢查控制寄存器位6。控制寄存器位6是指示是否必須增加/減少源地址值的源地址方向(SAD)位。如果必須增加將被讀取的數據的源地址值,則位6的值是“0”。反之,如果必須減少將被讀取的數據的源地址值,則位6的值是“1”。如果位5的值是“0”,則檢查控制寄存器位7。控制寄存器位7是指示是否必須增加/減少一個目標地址值的目標地址方向(DAD)位。那么,如果必須增加將被寫入的已讀取過的數據的目標地址值,則位7的值是“0”。反之,如果必須減少將被寫入的已讀取過的數據的目標地址值,則位7的值是“1”。
控制寄存器位8指示是否必須執行一個Endian轉換操作。只有當由控制寄存器位2和3將傳輸位單位設定為32位(一個字節)時,才使用Endian轉換操作。圖3說明了Endian轉換操作。在圖3中,傳輸位單位是32位(一個字)。一個字由4個字節組成。這4個字節分別設為A,B,C和D字節。最重要的字節是A字節。第二重要的字節是B字節。最不重要的字節是D字節。如果執行Endian轉換操作,每一個字節的重要度就會發生轉變。最重要的字節轉變為最不重要的字節。最不重要的字節轉變為最重要的字節。如果控制寄存器位8的值是“0”,則不執行Endian轉換操作。相反,如果控制寄存器位8的值是“1”,則執行Endian轉換操作。
控制寄存器位9指示是否必須根據本發明的一個實施例而執行移位操作。該移位操作是與設于DMA裝置中的FIFO緩沖器相關聯而執行的。在第一存儲單元的源地址中讀取的數據暫時存儲在FIFO緩沖器中。將存儲在FIFO緩沖器中的數據傳送到第二存儲單元。在這種情況下,執行數據移位操作。如果控制寄存器位9的值是“0”,則不執行移位操作。相反,如果控制寄存器位8的值是“1”,則執行移位操作。當根據位9的值而執行了移位操作時,則根據控制寄存器位10的值選擇移位方向。如果控制寄存器位10的值是“0”,則執行右移的移位操作。相反,如果控制寄存器位10的值是“1”,則執行左移的移位操作。
當根據位9的值執行移位操作時,檢查控制寄存器位11-13的值。控制寄存器位11-13的值定義了將被移位的位的數目。可移位的位的數目可以在0-7范圍內變化。當位的數目是“0”時,不執行移位操作。表2對應于當右移移位且在源地址(指示地址“01”)中讀取位0至7的數據的情況,接著將已讀取的數據存儲在目標地址(指示地址“41”和“42”)中。假設傳輸數據大小是8位,那么在地址“01”中已讀取的數據將會如表2所示順序地存儲在地址“41”和“42”中。
表2移位的位數已讀取的數據 將被存儲的數 已讀取的數據 將被存儲的數的位數(源地 據的位數(地 的位數(地址 據的位數(地址“01”) 址“41”) “01”) 址“42”)0 位0-7 位0-71 位0-6 位1-7 位7位02 位0-5 位2-7 位6-7 位0-13 位0-4 位3-7 位5-7 位0-24 位0-3 位4-7 位4-7 位0-35 位0-2 位5-7 位3-7 位0-46 位0-1 位6和7 位2-7 位0-57 位0 位7位1-7 位0-6表3對應于當左移移位且在源地址(指示地址“01”)中讀取位0至7數據,接著將已讀取的數據存儲在目標地址(指示地址“40”和“41”)中的情況。假設傳輸數據大小是8位,那么當在地址“01”中已讀取的數據未被移位時,所述已讀取的數據將會如表3所示存儲在地址“41”中。
表3移位的位數已讀取的數據 將被存儲的數 已讀取的數據 將被存儲的數的位數(源地 據的位數(地 的位數(地址 據的位數(地址“01”) 址“40”) “01”) 址“41”)0位0-7 位0-71 位0 位7位1-7 位0-62 位0和1 位6-7 位2和7 位0-53 位0-2 位4-7 位3-7 位0-44 位0-3 位3-7 位4-7 位0-35 位0-4 位2-7 位5-7 位0-26 位0-5 位1和7 位6和7 位0和17 位0-6 位6和7 位7 位0表4示出了十六進制數據0-E和其二進制對應數據的關系。
表4數據 二進制值 數據二進制值0 0000 8 10001 0001 9 10012 0010 A 10103 0011 B 10114 0100 C 11005 0101 D 11016 0110 E 11107 0111 F 1111表5-8說明了在源地址中讀取數據、執行移位操作和根據在目標地址的移位結果而寫入數據的過程。表5分別對應傳輸位單位是8位(當控制寄存器位2和3的值是“00”時)和控制寄存器位4-10的值是“0”的情況。
參照表5,控制寄存器位11-13的值指示將被移位的位數是4。進而,在每一地址中存儲8位數據,但是用戶可以隨意設置除了8位數據外的其它將被存儲的位數。
表5源地址數據 目標地址數據0012 40 U10134 41 230256 42 450378 43 67049A 44 8905BC 45 AB06DE 46 CD07F1 47 EF0823 48 120945 49 34如上所述,存儲在源地址的數據和存儲在目標地址的數據每個都是8位。在源地址或者目標地址中存儲兩個數據項(8位)。參照上述表4,一個數據值包括4位。當將存儲在源地址“00”中的數據項“1”和“2”存儲在目標地址中時,右移數據項4位并將移位過的數據存儲于目標地址中。因此,存儲于源地址“00”中的數據“1”就被寫入到目標地址“40”中。在這種情況下,存儲于源地址中的數據“1”就被作為由4位組成的后端數據寫入到目標地址“40”中。進而,將存儲于源地址“00”中的數據“2”右移4位,將移位后的數據寫入到目標地址“41”中。在這種情況下,數據“2”就被作為由4位組成的前端數據寫入到目標地址“41”中。存儲于目標地址“40”中的前端數據的4位可以填充任意值。存儲于源地址中的數據項“3”和“4”就分別被作為后端數據寫入到目標地址“41”中和前端數據而被寫入到目標地址“42”中。如表5所示,存儲于源地址中的數據值被傳送并寫入到了目標地址。
表6對應于當傳輸位單位是32位(此時控制寄存器位“2”和“3”的值是“10”)并且控制寄存器的位4-10的值分別是“0”的情況。按照表6,控制寄存器位11-13表明將被移位的位數是4。進而,盡管在每一地址中存儲了一個8位數據,但是用戶可以任意設置除了8位數據外的其它將被存儲的位數。
表6源地址數據 目標地址 數據00-03 785634140-43 674523U04-07 F1DEBC944-47 EFCDAB808-09 XXXX45248-49 UUUUUU1如表6所示,存儲于一組源地址的數據和存儲在一組目標地址的數據都是32位。在一組源地址和一組目標地址中存儲8個數據項。如表4所示,一個數據值包括4位。根據表6,由于每一個傳輸單位是32位,能夠被讀取的數據是同時存儲在4個地址中的數據。進而,如表5所示,將數據項“1”和“2”存儲在源地址“00”中,將數據項“3”和“4”存儲在源地址“01”中。存儲在剩余源地址中的數據值也如表5所示。在源地址“00”到“03”中讀取的數據項分別被移動4位。而被移位的數據項寫入到目標地址“40”和“44”中。存儲在目標地址“40”-“49”中的數據值如表5所示。
表7對應于當傳儲位單位是8位(此時控制寄存器位“2”和“3”的值是“00”)并且控制寄存器的位4-9的值分別是“0”的情況。按照表7,控制寄存器位10的值是“1”,而控制寄存器位11-13指示將被移位的位數是4。進而,盡管在每一地址中存儲了一個8位數據,但是用戶可以任意設置除了8位數據外的其它將被存儲的位數。
表7源地址 數據 目標地址 數據00 12 402301 34 414502 56 426703 78 438904 9A 44AB05 BC 45CD06 DE 46EF07 F1 471208 23 483409 45 495U如表7所示,存儲于源地址的數據和存儲在目標地址的數據都是8位。在源地址或者目標地址中存儲兩個數據項(8位)。如表4所示,一個數據值包括4位。將存儲在源地址“00”中的數據項“1”和“2”存儲在目標地址中,分別移動數據項4位,并將移位過的數據項存儲于目標地址中。因此,就不將存儲于源地址“00”中的數據“1”寫入到目標地址中。存儲于源地址“00”中的數據“2”就被作為由4位組成的前端數據寫入到目標地址“40”中。隨著存儲在源地址“01”中的數據“3”發生左移,被移位的數據就作為后端數據而被寫入到目標地址“40”中。隨著執行這一操作,存儲在源地址中的數據值就被寫入到如表7所示的目標地址中。
表8對應于當傳輸位單位是32位(此時控制寄存器位“2”和“3”的值是“00”)并且控制寄存器位4-9的值是“0”的情況。按照表8,控制寄存器位10的值是“0”控制寄存器位11和13指示將被移位的位數是4。進而,盡管在每一地址中存儲了一個8位數據,但是用戶可以任意設置除了8位數據外的其它將被存儲的位數。
表8
源地址 數據 目標地址 數據00-037856341 40-43 896745204-07F1DEBC9 44-47 12EFCDA08-09XXXX452 48-49 UUUUU53如表8所示,存儲于一組源地址的數據和存儲在一組目標地址的數據都是32位。在該組源地址或者該組目標地址中存儲8個數據項。如表4所示,一個數據值包括4位。根據表8,由于每一個傳輸單位是32位,能夠被讀取的數據是同時存儲在4個地址中的數據。進而,將數據項“1”和“2”存儲在源地址“00”中。如表5所示,將數據項“3”和“4”存儲在源地址“01”中。存儲在剩余源地址中的數據值也如表5所示。在源地址“00”到“03”中讀取的數據項分別向右被移動4位。而被移位的數據項寫入到目標地址“40”到“44”中。存儲在目標地址“40”-“49”中的數據值也如表7所示。
圖4是示出應用到本發明的一個實施例中的在傳送數據時執行的移位操作的視圖。圖4示出了參照表5和表8所描述的目標地址和源地址的內容。如圖4所示,將存儲在源地址中的數據項移動4位,并將已被移位的數據項作為目標地址寫入。將圖4中間所示的源地址中的數據項右移4位,并將已被移位的數據項寫入圖4頂端所示的目標地址中。進而,將圖4中間所示的源地址中的數據項左移4位,并將已被移位的數據項寫入圖4底端所示的目標地址中。
圖5是示出應用到本發明的一個實施例中的用于設置DMA裝置的控制寄存器的寄存器值的流程圖。在控制寄存器的設置程序中,響應于步驟500中的控制命令而設置DMA模式。如上所述,DMA模式包括硬件模式和軟件模式。響應于在控制寄存器設置程序的步驟502中的控制命令,設置傳輸數據的大小。響應于控制命令,判斷是否在控制寄存器設置程序的步驟504指定SAF/DAF。SAF/DAF指示是否必須在同一地址中重復讀取數據,或者是否必須在同一地址中重復寫入數據。
當確定了必須在步驟504的另一個源/目標地址中讀取并寫入數據時,判斷是否必須在控制寄存器設置程序的步驟506中增加或減少與讀/寫操作有關的地址值。接著,確定是否必須在控制寄存器設置程序的步驟508中執行一個Endian轉換操作。在控制寄存器設置程序的步驟510中,確定是否必須執行一個移位操作。如果決定在控制寄存器設置程序的上述步驟510中必須執行一個移位操作,那么將在步驟512和514決定移位方向和位數。上述步驟500-514每一步都可以分解為幾步,但通常是將它們作為一步執行的。如圖5所示,如果設置控制寄存器的位值并且根據控制寄存器位0的值驅動DMA裝置,那么就執行傳輸操作。
圖6是示出根據本發明的一個實施例將數據從第一存儲單元傳送到第二存儲單元的視圖。圖6示出了當如圖5所示設置控制寄存器的位值時讀取存儲在第一存儲單元102值的數據和將所述讀取的數據寫入到第二存儲單元110的程序。在執行傳輸操作前,必須設置與圖2中的SAR,DAR,TCR和其它寄存器有關的控制寄存器的值。如果設置了與圖2中的SAR,DAR,TCR和其它寄存器有關的控制寄存器的值,則執行數據傳輸操作。參照圖6所示配置,該配置包括第一存儲第一102,DMA裝置104,第二存儲單元110,總線判定器106和主機114。下面將參照圖6詳細描述將存儲于第一存儲單元102的數據傳送到第二存儲單元110的操作過程。在步驟600,主機讀取存儲于第二存儲單元110中的數據。因此,如果主機114將第二存儲單元110的一個存儲器清空,那么由主機114清空的存儲器將被從第一存儲單元104讀取的數據所填充。在步驟602,第二存儲單元110請求DMA裝置104提供數據以便填充所述空的存儲器。響應于來自第二存儲單元110的請求,DMA裝置104請求總線判定器106允許其訪問用于執行與第一存儲單元102的數據通信所必須的總線。總線每次只能由一個裝置使用,并且如果接收到來自多個裝置的多個對總線使用的請求,則總線判定器106將按預定的順序許可使用總線。圖6示出了一個單DMA裝置,但是也可以包括許多的DMA裝置104。這多個DMA裝置中的任何一個都可以請求使用總線。因此,總線判定器106將按預定的順序許可DMA裝置使用總線。
響應于DMA裝置104的請求,總線判定器106在步驟606提供可使用的總線。DMA裝置104在步驟608通過使用所提供的總線而讀取存儲于第一存儲單元的數據。所述被讀取的數據出現在DMA裝置104中并被存儲于任意的FIFO存儲器中。如圖2所示,利用布置于DMA裝置104中的SAR設置從第一存儲單元102中讀取的數據的地址。如果讀取了存儲于第一存儲單元102中的數據并且將所讀取的數據存儲于FIFO緩沖器中,則在步驟610中DMA裝置104請求總線判定器106提供用于執行與第二存儲單元110進行數據通信所必須的總線。步驟610和612與步驟604和606相同。如果總線判定器106允許DMA裝置使用總線,那么DMA裝置將存儲于FIFO緩沖器中的數據傳送到第二存儲單元110中。如圖2所示,由DAR設置將要被存儲的已讀取的數據。
DMA裝置104通過重復地執行步驟600-614,將存儲于第一存儲單元102的數據傳送到第二存儲單元110。如圖2所示,由TCR設定重復執行的次數。如果基于由TCR設定的重復執行次數而執行數據傳輸操作,就通知CPU或者外部控制裝置數據傳輸操作已經完成。
圖7是示出根據本發明實施例使用協議層移位數據的視圖。圖7示出了由無線連接控制(RLC)層或者介質訪問控制(MAC)層執行的數據傳輸操作。當RLC層或者MAC層想要將一個首標附加到數據時,將數據移位與首標對應的位數并且傳輸被移位的數據。如果根據本發明的一個實施例由DMA裝置而不是由CPU執行所述的移位操作,那么就可以提高處理速率。表9示出了在與CPU相關的數據處理速率和與DMA裝置相關的數據處理速率之間的比較結果。
表9數據大小緩存 由CPU處理 由CPU和DMA 由DMA裝置處裝置處理 理1k×16位驅動 872.2 1028 242.4非驅動8576.28836 269.2盡管為了闡述本發明的目的而說明了本發明的優選實施例,但在不脫離本發明的范圍內而進行的修改、添加和替換對本領域普通技術人員是顯而易見的。因此,本發明并不局限于上述的實施例和附圖。
權利要求
1.一種通過利用直接存儲器存取(DMA)介質而讀取和存儲數據的方法,包括下述步驟當請求時提前判斷將要進行移位的移位方向和移位位數,以便能夠處理從第一存儲介質中讀取的數據;以及在寄存器中順序地存儲配置已讀取數據的位串,在確定的方向按預定的位數移位所述的位串,并且將所述已經移位的位串傳送到第二存儲介質中。
2.如權利要求1所述的方法,其中將每一個配置已讀取的數據的位串配置為8位-串、16位-串或者32-位串之一。
3.如權利要求2所述的方法,其中要移位的位的數目是0-7中的一個值。
4.如權利要求3所述的方法,其中判斷移位方向和移位位數的步驟要根據由DMA介質設置的位值而確定。
5.如權利要求1所述的方法,其中進一步包括如下步驟將配置已讀取的數據的位串分為高位位串和低位位串;以及重新排列高位位串和低位位串,并根據所述的排列結果將已讀取的數據寫入到第二存儲介質中。
6.如權利要求5所述的方法,其中在重新排列高位位串和低位位串的步驟中將已讀取的數據以32位的形式配置。
7.如權利要求6所述的方法,其中基于由DMA裝置設置的位值而確定重新排列高位位串和低位位串的步驟。
8.一種通過利用直接存儲器存取(DMA)介質而讀取和存儲數據的裝置,包括第一存儲介質,用于存儲從源地址中讀取的數據;以及DMA裝置,用于當請求時提前判斷將要進行的移位的移位方向和移位位數,以便能夠處理已讀取的數據,在寄存器中順序地存儲配置已讀取的數據的位串,在確定的方向按預定的位數移位所述的位串,并且將所述已經移位的位串傳送到第二存儲介質中;以及第二存儲介質,用于存儲從DMA裝置傳送的數據。
9.如權利要求8所述的裝置,其中DMA介質讀取以8位串、16位串或者32位串其中之一而配置的已讀取的數據的每個位串。
10.如權利要求9所述的裝置,其中DMA介質根據移位值是0-7中的一個值而執行移位操作。
11.如權利要求10所述的裝置,其中DMA介質根據設置的位值而決定移位方向和移位位數。
12.如權利要求8所述的裝置,其中DMA介質將配置已讀取的數據的位串分為高位位串和低位位串,重新排列高位位串和低位位串,并根據所述的排列結果將已讀取的數據寫入到第二存儲介質中。
13.如權利要求12所述的裝置,其中當已讀取的數據以32位的形式配置時,DMA介質重新排列高位位串和低位位串。
14.如權利要求13所述的方法,其中DMA裝置基于設置的位值而確定重新排列高位位串和低位位串。
全文摘要
本發明涉及一種用于將存儲在一個存儲器中的數據傳送到另一個存儲器的裝置和方法,以及一種在傳送數據時將數據移動指定的位數,并且將移位后的數據傳送到另一存儲器中的方法和裝置。當讀取來自第一存儲器的數據時,傳統的直接存儲器訪問(DMA)裝置順序存儲來自存儲器地址的第一存儲區域的數據并將已讀取的數據存儲在第二存儲器中。在DMA控制寄存器中設置值,以便在傳送數據時將數據移動指定的位數并且根據所述方法傳送移位后的數據。根據在控制寄存器設置的預定值而將數據移位指定的位數并且將移位后的數據傳送到另一存儲器。
文檔編號G06F13/20GK1530844SQ20041000771
公開日2004年9月22日 申請日期2004年1月16日 優先權日2003年1月17日
發明者鄭文基, 樸晶湖 申請人:三星電子株式會社