DMA串转让专利

申请号 : CN200580020290.5

文献号 : CN101116065B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : M·亨森D·C·贝克

申请人 : 矽玛特有限责任公司

摘要 :

公开了一种提供直接存储器存取的系统和方法。在一个特定的实施例中,公开了一种直接存储器存取模块,该模块包括存储器、连接到处理器的第一接口以及连接到外围模块的第二接口。将从第一接口接收到的第一指令存储到存储器中。该第一指令包括许多将通过第二接口提供给外围模块的程序化的输入/输出字。该直接存储器存取模块还包括指令执行单元以处理第一指令。

权利要求 :

1.一种直接存储器存取模块,包括:

存储器;

耦合到处理器的第一接口;

耦合到多个外围模块的第一外围模块的第二接口;

从所述第一接口接收并存储到所述存储器中的第一指令,所述第一指令包括将通过所述第二接口提供给所述第一外围模块的第一数量的程序化的输入/输出字;以及用于处理所述第一指令的指令执行单元;

其中在多通道模式中,当在多通道模式中操作时直接存储器存取模块可操作地经由多个通道与所述多个外围模块通信;以及其中在锁定周期期间,响应于在所述第一指令中的锁定字段为真,所述直接存储器存取模块可操作地仅仅通过第一通道仅仅与所述第一外围模块通信,其中在所述锁定周期期间以比在多通道模式中较高的存取速率可存取所述第一外围模块。

2.权利要求1所述的直接存储器存取模块,其中所述第一指令为一串指令中的一个。

3.权利要求1所述的直接存储器存取模块,其中所述第一指令包括多个字段,所述多个字段中的至少一个表明与所述第一指令相关联的程序化的输入/输出字的第一数量。

4.权利要求1所述的直接存储器存取模块,其中所述指令执行单元为条件执行单元。

5.权利要求1所述的直接存储器存取模块,进一步包括:所述存储器还存储第二指令,所述第二指令包含第二数量的程序化的输入/输出字。

6.权利要求5所述的直接存储器存取模块,其中第二数量与第一数量不同。

7.权利要求5所述的直接存储器存取模块,进一步包括:传感器输入端;以及

存储于存储器中的一串指令,其中所述串指令包含第一指令和第二指令以及第三指令,并且其中第二指令或第三指令基于传感器输入被选择性地执行。

8.权利要求1所述的直接存储器存取模块,其中所述第一指令包含命令字段、第一指针字段以及数据字段。

9.权利要求8所述的直接存储器存取模块,其中所述第一指针字段指向第二指令,第二指令包含第二指针字段,且所述第二指针字段指向第三指令。

10.权利要求8所述的直接存储器存取模块,其中所述第一指令包含中断请求字段。

11.权利要求8所述的直接存储器存取模块,其中所述第一指令包含直接存储器存取(DMA)等待字段。

12.权利要求8所述的直接存储器存取模块,其中第一指令包含串字段。

13.权利要求8所述的直接存储器存取模块,其中从读取指令、写指令、不传送指令或分支指令组成的组中选择第一指令。

14.权利要求1所述的直接存储器存取模块,其中将第一数量的程序化的输入/输出字提供给外围模块的连续存储器地址处的外围模块。

15.权利要求14所述的直接存储器存取模块,其中将第一数量的程序化的输入/输出字的第一个提供给基地址处的外围模块。

16.一种具有直接存储器存取模块的集成电路,包括:处理器;

耦合到所述处理器的第一总线;

所述直接存储器存取模块,耦合到所述第一总线,所述直接存储器存取模块包括:其中存储有第一指令的存储器,所述第一指令包含多个与所述集成电路外部的第一装置相关联的程序化的输入/输出字;以及所述直接存储器存取模块中的指令执行单元,用于执行第一指令;

其中当在多通道模式中操作时直接存储器存取模块可操作地经由多个通道与多个外部装置通信;以及其中在锁定周期期间,响应于在所述第一指令中的锁定字段为真,所述直接存储器存取模块可操作地仅仅通过第一通道仅仅与所述第一装置通信,其中在所述锁定周期期间以比在多通道模式中较高的存取速率可存取所述第一装置。

17.权利要求16所述的集成电路,进一步包括:第二总线,可存取集成电路外部的第一装置;以及

与第一总线和第二总线耦合的桥模块,其中所述直接存储器存取模块嵌入到桥模块中。

18.权利要求16所述的集成电路,其中所述第一指令为存储在链表数据结构中的一串指令中的一个。

19.权利要求16所述的集成电路,其中集成电路外部的第一装置存储运动图像专家组

3(MP3)文件。

20.权利要求16所述的集成电路,其中所述直接存储器存取模块包括中断模块,以响应于指令执行单元完成第一串指令而为处理器产生中断信号。

21.权利要求16所述的集成电路,其中所述直接存储器存取模块通过第一通道与第一外围设备进行通信并通过第二通道与第二外围设备进行通信。

22.权利要求21所述的集成电路,其中所述直接存储器存取模块响应于第一指令中锁定字段为真,在锁定周期期间只通过第一通道进行通信。

23.权利要求22所述的集成电路,其中在锁定周期结束后所述直接存储器存取模块与第一组外围设备中的不止一个进行通信。

24.权利要求21所述的集成电路,其中所述锁定周期在执行等待就绪命令之后结束。

25.权利要求23所述的集成电路,其中所述第一组外围设备包括多个NAND闪存模块。

26.一种处理存储器请求的方法,所述方法包括:在直接存储器存取模块中接收存储器请求;

在所述直接存储器存取模块存取第一指令,所述第一指令包含多个程序化的输入/输出字;

当在多通道模式中操作时,通过发送程序化的输入/输出字到多个外围单元来经由多个通道提供所述第一指令给所述多个外围单元;以及响应于在所述第一指令中的锁定字段为真,通道在锁定周期期间发送程序化的输入/输出字到第一外围单元,仅仅通过多个通道的第一通道提供第一指令仅仅给多个外围单元的所述第一外围单元,其中在所述锁定周期期间以比在多通道模式中较高的存取速率可存取所述第一外围单元。

27.权利要求26所述的方法,进一步包括存取第一指令以确定所述多个程序化的输入/输出字的数量。

28.权利要求26所述的方法,进一步包括:向外围单元提供信号以在发送所述多个程序化的输入/输出字到外围单元后开始处理。

29.权利要求26所述的方法,其中所述第一指令包括指针字段,并且进一步包括将与一串指令相关联的存储器地址存储到所述指针字段上。

说明书 :

DMA串

技术领域

[0001] 本发明一般涉及直接存储器存取系统及方法。

背景技术

[0002] 计算机处理器经常与外围模块一起协同工作。这些外围模块可以执行专门的任务,允许处理器执行其他任务。处理器能够监视外围模块的操作。更进一步地,在某些情况下外围模块可以要求访问存储器。提供对于存储器的访问可以由处理器来管理,但是这导致不希望的开销以及使用处理器的时间。因此,某些系统组合了直接存储器存取模块以允许外围模块直接访问存储器。虽然直接存储器存取模块减少了处理器的开销,处理器对于直接存储器存取模块的管理仍然要求一些可能更有利地用于其他任务的处理器时间。
[0003] 因此,需要一种用于提供直接存储器存取的改进的方法和系统。

附图说明

[0004] 图1是一个组合了直接存储器存取(DMA)模块的系统的特定实施例的方框图;
[0005] 图2是一个直接存储器存取(DMA)模块中所使用的数据结构的特定实施例的方框图;
[0006] 图3是示出在直接存储器存取模块处理指令的方法的流程图;
[0007] 图4是示出向直接存储器存取模块提供一串指令的方法的流程图。

具体实施方式

[0008] 公开了一种用于提供直接存储器存取的系统和方法。在一个特定的实施例中,公开的直接存储器存取模块包含存储器、连接到处理器的第一接口,以及连接到外围模块的第二接口。从第一接口接收的第一指令被存储到该存储器中。第一指令包含许多将通过第二接口提供给外围模块的程序化的输入/输出字。直接存储器存取模块还包括指令执行单元用于处理第一指令。在一个特定的实施例中,第一指令是一串指令的一部分。
[0009] 公开了一种集成电路。该集成电路包含处理器、连接到该处理器的第一总线以及连接到第一总线的直接存储器存取模块。该直接存储器存取模块包含一存储有第一指令的存储器。第一指令包含多个与集成电路外部的至少一个装置相关联的程序化的输入/输出(PIO)字。该集成电路还包含直接存储器存取模块中的用于执行第一指令的指令执行单元。
[0010] 公开了一种处理存储器请求的方法,且该方法包括在直接存储器存取模块接收存储器请求,在该直接存储器存取模块访问第一指令。该第一指令包含多个程序化的输入/输出(PIO)字。该方法还包括通过向外围单元传送PIO字而为外围单元提供指令。
[0011] 参考图1,示出了一组合了直接存储器存取(DMA)模块114的集成电路100。集成电路100包含处理器102,高性能总线104,桥模块(bridge module)106,存储器140以及外围总线108。存储器140存储有多个的指令,包括第一指令串120,第二指令串122,直到第N指令串123。集成电路100连接到第一NAND闪存模块110和第二NAND闪存模块112。集成电路100还连接到第一外围模块142和第二外围模块144。桥模块106包含DMA模块
114。DMA模块114包含处理器接口115,条件指令执行单元116,存储器118,以及外围接口
124。处理器接口114包含中断模块130。存储器118包含可以通过高性能总线104下载到DMA模块的第一指令串120。第一指令串120包含多个指令,例如第一指令150,第二指令152,以及第三指令153。第一指令150可能包含第一数量的程序化的输入/输出(PIO)字。第二指令152可能包含第二数量的PIO字。在一个特定实施例中,第一指令150中的PIO字的第一数量与第二指令152中的PIO字的第二数量不同。外围接口124包含传感器输入端126。如图所示NAND闪存模块110能够存储一运动图像专家组3(MP3)文件140。
[0012] 处理器102连接到高性能总线104并且高性能总线104进一步连接到桥模块106。桥模块106还连接到外围总线108。NAND闪存模块110和112以及其他所示出的外围模块
140和142每一个都连接外围总线108。关于DMA模块114,被结合在处理器接口115中的中断模块130连接到条件指令执行单元116。条件指令执行单元116进一步连接到存储器
118以及外围接口124。
[0013] 在操作过程中,处理器102通过高性能总线104向桥模块106传送指令。在一个特定的实施例中,处理器102向直接存储器存取模块114传送指令串。这些指令串被存储在存储器118中。这些指令串包含,例如,示出的第一指令串120。在一个特定的实施例中,第一指令串120包含多个以链表格式存储的指令。条件指令执行单元116能够处理第一指令串120。响应于第一指令串120中指令的至少一个子集的完成,条件指令执行单元116可以传送一个命令到中断模块130。相应地,中断模块130可以通过高性能总线104向处理器102传送一个中断信号。响应于该中断信号,处理器102将向DMA模块114传送另一串指令,例如第二指令串122。
[0014] 第一指令串120包括多个指令,例如第一指令150和第二指令152。第一指令150可以包括多个程序化的输入/输出(PIO)字。将该PIO字可以提供给NAND闪存模块110和112或提供给外围模块142和144以向模块提供指令。在一个特定的实施例中,第一个PIO字可以被提供给外围模块142的一个基地址。PIO字被提供给外围模块142从基地址开始的连续的存储器地址,基地址例如是零地址。
[0015] 在一个特定的实施例中,第一指令150可以包含一个命令字段。该命令字段可以由条件指令执行单元116执行。第一指令也可以包含一个数据字段。该数据字段可以包含将被传送给外围模块,例如NAND闪存模块110,的数据,或可以包含PIO字以向外部模块提供指令。第一指令还可以包含一个指针字段。该指针字段可以指向另一个指令,例如第二指令152。在一个特定的实施例中,第二指令152可以包含一个第二指针字段。该第二指针字段可以指向第三指令(未示出)。照这样,第一指令串120可以以链表格式存储许多指令。
[0016] 外围接口124包含可以由外围模块110,112,140和142中的一个或多个激活的传感器输入端126。响应于在传感器输入端126接收到的信号,条件指令执行单元116可以执行串中的不同指令。例如,响应于传感器输入端126的否定值,条件指令执行单元116将处理第二指令152,同时响应于传感器输入端126的肯定值,条件指令执行单元116将处理第三指令153。
[0017] 通过在条件指令执行单元116执行指令串,DMA模块114能够减少由处理器102服务的中断的次数。通过为指令150和152每个都提供一连串的PIO字可以进一步减少中断的次数。DMA模块114能够响应于来自外围模块110的存储器请求,处理该请求,通过提供一连串的PIO字向外围模块110传送进一步的指令,并且在向处理器102传送一中断以前,执行包含在第一指令串中的其他的任务。
[0018] 更进一步地,通过将DMA模块114放置在桥模块106中,用于管理外围模块110和112的主要总线为外围总线108。这允许处理器102将高性能总线104用于其他任务。
[0019] 在一个特定的实施例中,DMA模块114为一个多通道的DMA模块并且能够通过不同的通道与不同的外围设备进行通信。例如DMA模块114能够通过第一通道与NAND闪存模块110通信并且能够通过第二通道与NAND闪存模块112通信。在一个特定的实施例中,DMA模块114可以以循环复用的方式与NAND闪存模块110和112以及外围模块140和142进行通信。在一个特定的实施例中,第一指令串可以包括一个锁定字段。当将锁定字段置为真(assert)时,DMA模块114可以只通过一个通道进行通信。例如,如果一个NAND锁定字段被设置到第一指令串120中,则DMA模块在一个锁定周期内只可以和一个NAND闪存装置进行通信,例如通过第一通道与NAND闪存模块110进行通信。在将锁定字段置为假(deassert)后,锁定周期结束并且DMA模块可以通过相应的通道与任意的外围设备进行通信。在一个特定的实施例中,在锁定周期结束后,DMA模块与第一组中的不止一个外围设备进行通信。在一个特定的实施例中,锁定周期在执行了一个对就绪命令的等待之后结束。通过使用锁定字段,可以更频繁地通过DMA访问一个特定的NAND闪存装置,允许DMA和NAND闪存模块执行高优先权或时间密集的操作。
[0020] 参考图2,示出了一种包含于直接存储器存取指令串中的指令的数据结构。该数据指令包括多个字,包含字0(202),字1(204)以及字2(206)。该数据指令进一步包括字3-N(226)。字1包括多个字段,包括一个传送尺寸字段208,多个程序化的输入/输出(PIO)字的字段210,以及一个等待命令结束字段212。字1还包括一个信号量字段204,一个NAND等待就绪字段216,一个NAND锁定字段218以及一个完成时中断请求字段220。字1还包括一个串字段222以及一个命令字段224。在一个特定的实施例中,字0包括一个指向下一条指令的指针地址。在另一个特定的实施例中,字2包含一缓存地址字段并且字3-N包含数量可变的PIO数据字。该PIO数据226可以被提供给外围模块以为那些模块提供指令。
[0021] 在操作的过程中,指令单元可以访问并处理图2所示的数据结构。字1包含许多可以被指令执行单元读取的字段。根据每个字段的值,该指令执行单元可以执行特定的指令。例如,指令执行单元可以读取等待结束命令字段212。如果等待结束命令字段被设置为一个预设值(例如逻辑“1”),DMA模块就等待直到一个外围模块指示其已经完成了操作才处理下一个指令。如另一个实施例所示,如果完成时中断请求字段220被设置为一个预设值,该指令执行单元在该指令完成时指示DMA模块向处理器传送一个中断请求。如果串字段222被设置为一个预设值,该DMA模块的指令执行单元就响应于从外围模块接收到一个信号而转向另一个指令串。将由指令执行单元执行的特定指令可以包括读取指令,写指令,不传送指令,或转移指令。
[0022] 在一个特定的实施例中,传送尺寸字段208可以被用于指示由一个特定指令来设为有效的存储器的传送尺寸。PIO字数量字段210可以用于识别包含在该指令中的程序化输入/输出(PIO)字226的个数。这允许DMA模块处理可变长度的指令。在另一个特定的实施例中,可以将等待命令结束字段212置为真以指示DMA模块等待直到一个命令完成才执行另一条指令。
[0023] 在一个特定的实施例中,可以通过DMA模块读取信号量字段214。信号量字段214可以指示已经被加入指令串结尾的进一步的指令。
[0024] 在一个特定的实施例中,可以将NAND等待就绪字段216置为真以指示DMA模块不执行特定NAND闪存模块的进一步的操作直到该NAND闪存模块已经表明其对于进一步的操作已经准备就绪了。
[0025] 在另一个特定的实施例中,可以将NAND锁定字段置为真以指示DMA模块只与一个特定的NAND模块进行通信。可以允许该DMA模块与其他组的外围设备进行通信,但是禁止该DMA模块与所述为其将NAND锁定字段置为真的特定NAND闪存模块所在的相同外围设备组中的外围模块进行通信。
[0026] 串字段222可以被用于向DMA模块表明在该串中当前的指令之后还有另一条指令,或用于表明下一指令位于另一个指令串中。命令字段224可以用于向DMA模块提供进一步的命令,例如一转移命令。
[0027] 参考图3,示出了一种在DMA模块中处理指令的方法。在步骤302,在DMA模块中接收到一存储器请求。前进到步骤304,访问第一指令,并且,在判定步骤306,判断定否该指令包含许多PIO字。如果该指令中没有PIO字该方法进行到步骤316,并且执行下一个指令,或向一个外围单元提供信号以开始处理PIO字。如果该指令中包含PIO字,该方法进行到步骤308并且在第一PIO字的地址设置一个指针。前进到步骤310,将由指针指示的当前的PIO字传送到一外围单元。进行到步骤312,增加指针。在判定步骤314,判断是否该指针在可用PIO字的结尾处。如果指针在可用PIO字的结尾处,方法前进到步骤316。如果指针不在可用PIO字的结尾处,方法返回步骤310并继续直到每一个PIO字都被传送给外围单元为止。
[0028] 参考图4,示出了一种向DMA模块提供指令串的方法。该方法可以由处理器102执行。在步骤402,从DMA模块接收到一个中断。前进到步骤404,将第一串指令提供给DMA模块用于其执行。在步骤406,接收到一个外围设备访问存储器的请求。进行到步骤408,将第二串指令提供给DMA模块用于其执行。可以响应于从DMA模块接到的一个中断来提供第二串指令,在该DMA模块中响应于外围的存储器存生成该中断。
[0029] 上述公开的主要内容被认为是说明性的,而不是限制性的,并且希望附加的权利要求覆盖所有这些修改、增加以及其他不脱离本发明实质精神和范围的实施方式。因此,在法律允许的最大范围内,本发明的范围由对以下权利要求和其等同物的最大可允许的解释来确定,并且不被前面的详细描述所限制。