利用直接存储器存取介质传输数据的方法和装置 【技术领域】
本发明涉及一种用于存储数据的装置和方法,尤其涉及一种将存储在一个指定存储器中的数据传送到另一个存储区域的装置和方法。
背景技术
通常是响应一个来自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
控制寄存器
位数目 位名 作用 功能
11-13 移位计数器 决定设置移位的位数 移位计数器:0-7
10 移位方向 决定设置移位方向 0:右移位 1:左移位
9 移位使能 决定设置移位操作 0:移位操作 1:非移位操作
8 Endian 决定设置Endian转换操 作 0:非Endian转换操作 1:Endian转换操作
7 目标地址方向 决定设置目标地址增加/ 减少操作 0:增加 1:减少
6 源地址方向 决定设置源地址增加/减 少操作 0:增加 1:减少
5 目标地址定位 决定设置目标地址定位 0:增加或减少 1:固定
4 源地址定位 决定设置源地址定位 0:增加或减少 1:固定
2和3 传输数据大小 决定设置传输位的单 位 00:8位 01:16位 10:32位
1 DMA模式 决定设置DMA模式 0:S/W 1:H/W
0 激活DMA 决定激活DMA 0:非DMA操作 1:DMA操作
如表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-7
1 位0-6 位1-7 位7 位0
2 位0-5 位2-7 位6-7 位0-1
3 位0-4 位3-7 位5-7 位0-2
4 位0-3 位4-7 位4-7 位0-3
5 位0-2 位5-7 位3-7 位0-4
6 位0-1 位6和7 位2-7 位0-5
7 位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-7
1 位0 位7 位1-7 位0-6
2 位0和1 位6-7 位2和7 位0-5
3 位0-2 位4-7 位3-7 位0-4
4 位0-3 位3-7 位4-7 位0-3
5 位0-4 位2-7 位5-7 位0-2
6 位0-5 位1和7 位6和7 位0和1
7 位0-6 位6和7 位7 位0
表4示出了十六进制数据0-E和其二进制对应数据的关系。
表4
数据 二进制值 数据 二进制值
0 0000 8 1000
1 0001 9 1001
2 0010 A 1010
3 0011 B 1011
4 0100 C 1100
5 0101 D 1101
6 0110 E 1110
7 0111 F 1111
表5-8说明了在源地址中读取数据、执行移位操作和根据在目标地址的移位结果而写入数据的过程。表5分别对应传输位单位是8位(当控制寄存器位2和3的值是“00”时)和控制寄存器位4-10的值是“0”的情况。
参照表5,控制寄存器位11-13的值指示将被移位的位数是4。进而,在每一地址中存储8位数据,但是用户可以随意设置除了8位数据外的其它将被存储的位数。
表5
源地址 数据 目标地址 数据
00 12 40 U1
01 34 41 23
02 56 42 45
03 78 43 67
04 9A 44 89
05 BC 45 AB
06 DE 46 CD
07 F1 47 EF
08 23 48 12
09 45 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 7856341 40-43 674523U
04-07 F1DEBC9 44-47 EFCDAB8
08-09 XXXX452 48-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 40 23
01 34 41 45
02 56 42 67
03 78 43 89
04 9A 44 AB
05 BC 45 CD
06 DE 46 EF
07 F1 47 12
08 23 48 34
09 45 49 5U
如表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-03 7856341 40-43 8967452
04-07 F1DEBC9 44-47 12EFCDA
08-09 XXXX452 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.2 8836 269.2
尽管为了阐述本发明的目的而说明了本发明的优选实施例,但在不脱离本发明的范围内而进行的修改、添加和替换对本领域普通技术人员是显而易见的。因此,本发明并不局限于上述的实施例和附图。